Humax 4tune

I recently bought a Humax 4tune (hms1000t). I’m rather liking in so far: 4 tuners, a reasonable UI.

I would like to be able to get it to do a bit more, so I’ve started investigating it. It shows the following ports as being open:

Port Scan has started…

Port Scanning host: 10.0.1.30

	 Open TCP Port: 	21     		ftp
	 Open TCP Port: 	139    		netbios-ssn
	 Open TCP Port: 	445    		microsoft-ds
	 Open TCP Port: 	9000   		cslistener
	 Open TCP Port: 	9251
	 Open TCP Port: 	9252
	 Open TCP Port: 	36666
	 Open TCP Port: 	36667
	 Open TCP Port: 	48629
	 Open TCP Port: 	50001
	 Open TCP Port: 	55200
	 Open TCP Port: 	56789
	 Open TCP Port: 	56790
	 Open TCP Port: 	58816
	 Open TCP Port: 	60001

Port Scan has completed…

Obviously, I’ve turned on the FTP and Samba services.

Port 9000 appears to be an RTSP service:

$ curl http://<ip-address>:9000
RTSP

Ports 9251 and 9252 respond with:

{"errorCode": 404, "errorDescription":"Specified WID not found"}

The latter requires HTTPS, but uses a certificate for the domain name htvdev.humaxtvportal.com. The humaxtvportal.com domain is registered.

Port 36666 responds with:

RTSP/1.0 200 OK
CSeq: (null)
Apple-Jack-Status: connected; type=analog

Port 50001 responds with an XML document:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:dlna="urn:schemas-dlna-org:device-1-0" xmlns:hmx="urn:schemas-humax-co-kr:metadata-1-0"  >
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <device>
    <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
    <hmx:X_HMXCAP>TSR,MULTIVALUE,RCUTYPE_LIME,HX_N_ALL_P</hmx:X_HMXCAP>
    <dlna:X_DLNACAP xmlns:dlna="urn:schemas-dlna-org:device-1-0"></dlna:X_DLNACAP>
    <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMS-1.50</dlna:X_DLNADOC>
    <friendlyName>Lounge 10.0.1.30</friendlyName>
    <manufacturer>HUMAX</manufacturer>
    <manufacturerURL>www.humaxdigital.com</manufacturerURL>
    <modelDescription>HUMAX Set-Top Box OCTO2.0 Platform</modelDescription>
    <modelName>HMS1000T</modelName>
    <modelNumber>undefined</modelNumber>
    <modelURL>http://www.humaxdigital.com</modelURL>
    <serialNumber>None</serialNumber>
    <UDN>uuid:B38D5042-B86E-44F0-A758-F4F8BD6E3053</UDN>
    <icube:X_WOON_PAIRING xmlns:icube="urn:schemas-icube-co-kr:WoonDevice-1-0">hmx_base_08eb74e20b66</icube:X_WOON_PAIRING>
    <iconList>
      <icon>
        <mimetype>image/jpeg</mimetype>
        <width>48</width>
        <height>48</height>
        <depth>24</depth>
        <url>/icon/dms_48.jpg</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>48</width>
        <height>48</height>
        <depth>24</depth>
        <url>/icon/dms_48.png</url>
      </icon>
      <icon>
        <mimetype>image/jpeg</mimetype>
        <width>120</width>
        <height>120</height>
        <depth>24</depth>
        <url>/icon/dms_120.jpg</url>
      </icon>
      <icon>
        <mimetype>image/png</mimetype>
        <width>120</width>
        <height>120</height>
        <depth>24</depth>
        <url>/icon/dms_120.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
        <SCPDURL>ConnectionManager/scpd.xml</SCPDURL>
        <controlURL>ConnectionManager/control</controlURL>
        <eventSubURL>ConnectionManager/event</eventSubURL>
      </service>
      <service>
        <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
        <SCPDURL>ContentDirectory/scpd.xml</SCPDURL>
        <controlURL>ContentDirectory/control</controlURL>
        <eventSubURL>ContentDirectory/event</eventSubURL>
      </service>
    </serviceList>
  </device>
</root>

This appears to be DLNA-related.

Likewise with port 55200:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <device>
    <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
    <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
    <friendlyName>Lounge</friendlyName>
    <manufacturer>HUMAX</manufacturer>
    <manufacturerURL>http://www.humaxdigital.com</manufacturerURL>
    <modelDescription>HUMAX Set-Top Box OCTO2.0 Platform</modelDescription>
    <modelName>HMS1000T</modelName>
    <modelNumber>undefined</modelNumber>
    <modelURL>http://www.humaxdigital.com</modelURL>
    <serialNumber>[redacted]</serialNumber>
    <UDN>uuid:B38D5042-B86E-44F0-A758-F4F8BD6E3053</UDN>
    <serviceList>
      <service>
        <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
        <SCPDURL>AVTransport/scpd.xml</SCPDURL>
        <controlURL>AVTransport/control</controlURL>
        <eventSubURL>AVTransport/event</eventSubURL>
      </service>
      <service>
        <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
        <SCPDURL>ConnectionManager/scpd.xml</SCPDURL>
        <controlURL>ConnectionManager/control</controlURL>
        <eventSubURL>ConnectionManager/event</eventSubURL>
      </service>
      <service>
        <serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
        <serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
        <SCPDURL>RenderingControl/scpd.xml</SCPDURL>
        <controlURL>RenderingControl/control</controlURL>
        <eventSubURL>RenderingControl/event</eventSubURL>
      </service>
    </serviceList>
  </device>
</root>

Port 56789 returns a 404: I’m guessing we can figure out a path that might work.

Port 56790 is a “DIAL SERVER”:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:r="urn:restful-tv-org:schemas:upnp-dd">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <device>
    <deviceType>urn:schemas-upnp-org:device:tvdevice:1</deviceType>
    <friendlyName>HMS1000T - DIAL SERVER:10.0.1.30</friendlyName>
    <manufacturer>HUMAX</manufacturer>
    <manufacturerURL>http://www.humaxdigital.com</manufacturerURL>
    <modelDescription>HUMAX Set-Top Box OCTO2.0 Platform</modelDescription>
    <modelName>HMS1000T</modelName>
    <modelNumber>undefined</modelNumber>
    <modelURL>http://www.humaxdigital.com</modelURL>
    <serialNumber>[redacted]</serialNumber>
    <UDN>uuid:B38D5042-B86E-44F0-A758-F4F8BD6E3053</UDN>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dialControl</serviceId>
        <SCPDURL>dial/scpd.xml</SCPDURL>
        <controlURL/>
        <eventSubURL/>
      </service>
    </serviceList>
  </device>
</root>

Port 58816 rejects connections, but port 60001 is an interesting one:

$ telnet [address] 60001
Trying [address]...
Connected to [address].
Escape character is '^]'.
root:> help
* help [root:]
** registered process list
    corsair                     homma                       prism                       obama
    sama                        ipepg
** helpall : display all command set
root:> helpall
* help all
[corsair]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [RLIB]
     print_rsc        :  print Resource Info
  [OAPI]
     oapi_output_vid  :  oapi_output_video debug api call
     oapi_output_hdm  :  oapi_output_hdmi debug api call
[homma]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [RLIB]
     print_rsc        :  print Resource Info
[prism]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [ONDK]
     hello            :  help..
     vkcmd            :  vkcmd [mem/sem/task/timer]
     timerlist        :  timerlist
     gwmlist          :  gwmlist
  [OAPI]
     oapi_output_hdm  :  oapi_output_hdmi debug api call
[obama]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [pal_hdmi]
     hdcp_enable      :  HDCP on/off
     status           :  Print HDMI status.
     capa             :  Print HDMI TV capability.
     hdcp_event       :  Send HDCP event to appkit
     output           :  Enable/Disable HDMI output.
     avinfo           :  Set AVI infoframe.
  [OM]
     om_output_hdmi   :  om_output_hdmi debug api call
     om_output_video  :  om_output_video debug api call
  [PAL]
     pal_scl          :  pal scaler debug api call
     pal_scart        :  pal scart debug api call
     pal_out          :  pal out debug api call
     pal_video        :  pal video debug api call
     pal_audio        :  pal audio debug api call
  [RLIB]
     print_rsc        :  print Resource Info
  [SVC]
     svc_av           :  tv service /AV debug api call
     svc_out          :  svc out debug api call
[sama]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [RLIB]
     print_rsc        :  print Resource Info
  [SamaCmd]
     print_systime    :  print system time
     print_rpc        :  print SAMA rpc
     print_slot       :  print SAMA slot status
     print_sch        :  print SAMA Schedules
     print_timer      :  print SAMA Timer
     make_sch         :  make SAMA Schedule
     del_sch          :  delete SAMA Schedule
     make_ransch      :  make SAMA Schedule (TBR)
     del_sch_all      :  delete ALL SAMA Schedule
[ipepg]
  [mem]
     printmem         :  print memory usage to outputfile
     memconf          :  configuration of printmem
     memcheck         :  check memory corruption - if corrupted, log in corrupted.log
     currsec          :  print the current second from the boot
  [RLIB]
     print_rsc        :  print Resource Info
root:>

Oh my. More to come, I suspect…

How Crap is Vista Media Centre?

Short Answer: Very.

Yesterday was the first time I really got to use Vista properly. And the whole OS is crap. Stuff is not consistent across contexts, which means it is really hard to figure out what to do when. Trying to find data is troublesome, trying to find applications is even worse. It is like the whole operating system is conspiring to just leave your data all over the place so you can’t find it when you need it.

So, I had a few jobs to do for my Father-In-Law, after he had bought his new Acer laptop. I should have just refused to provide support since he didn’t buy a Mac, but I’ll let that slide. The things he needed to do were set up his HP printer/fax/scanner, which can be connected to a network wirelessly or via ethernet in addition to being USB connectable; and get his TV tuner card working properly.

The printer turned out to be a bit of an issue - the driver that it came with didn’t work with Vista, so we had to download a 160MB file, which shouldn’t be too much of a concern, but 3’s “7Mb/s” connection is closer to around dialup speeds. And I’m not talking 56k, either. We had to wait over 3 hours for this file to download. After that, it looked to be pretty easy. Except that because the 3 USB thingy was the default network route, I had to disconnect it to then get the PC to even look on the Wireless network (802.11g) to find the printer. After it was connected once it seems to work fine, although just in case I gave the printer a static IP address (or more correctly, a reserved dynamic IP address).

Getting Windows Media Centre to display TV guide data was a bit more hard work. For starters, they have totally fucked up the interface - it is really trying to do too much, and the interface just isn’t logical at all. It is “designed” so it can be used with a remote, apparently, but can still be controlled with a mouse. Except the buttons sometimes act strangely. There is a “back” button, and just next to it is one with the windows logo. But the operation of this button varies according to context. So sometimes that loads the menu up, other times it appears to work similar to the back button. And sometimes the menu that appears takes up the full screen, other times it doesn’t. Fucking crazy. Sometimes you need to double-click on a menu item to activate it, other times a single click does the trick. There are so many options on each of the menu items that you can’t see them all until you scroll through them, but when you hover over one, clicking it doesn’t activate it, it moves it to the active position, where you must click it again to activate it. Which means, using the mouse, you then need to move back and click. And sometimes there is a “more” arrow that appears over the item, and you accidentally click that instead…

If you are using a scroll mouse, things are even worse. If you use the scroller, then it scrolls, but if you then move the mouse even just a little bit, it selects the stuff under the pointer. Meaning it jumps around and makes it very hard to scroll through a large list. Scrolling also sometimes selects items outside of the active widget. For instance, I had the channel list being scanned, and if you scroll with the pointer over this, you can scroll outside of the list, and choose the buttons above and below the list box. But once you are out of it, you can’t just scroll back into the list box. Another trick I use is to scroll hard to the “end” of a list box if I know I need to choose the last item. You can’t do this, as it jumps out of the box. And then can’t get back it. And it resets the list box to display the top items anyway!

So the interface is fairly fucked. The logic of the layout also doesn’t make sense. Why should you go into “Guide” to change the channels. And I’m not talking about which guide is attached to which channel, I’m talking about which channels are active. And attempting to do anything often required going into a menu three layers deep, then going back, then going down through three other menus, and so on. Very frustrating.

The most annoying thing is that it will not use the program guide data that is broadcast with the DVB signal. You have to use an external EPG system in order to see what is on. Every station in Australia broadcasts some guide data, or will in the very near future. I use IceTV with my eyeTV, but I’m hoping at some stage not to have to any longer. $13/month is just crazy. I can buy the newspaper for $2/week with the TV guide in a less useful form. I should be able to access this data for free - it adds value to the TV signal. But Windows Media Centre will not access the broadcast signal at all. Which means if you are away from the internet for any period of time, you might not be able to see what is on TV. I love the internet and all, but having the internet shouldn’t be a requirement to be able to watch TV effectively.

I’m not saying eyeTV is perfect, but it certainly shits all over WMC. Even if it only plays TV programs.

Media Centre Workflows

I have some tasks that I repeat lots on my Media Centre, and sometimes it is a bit trying. I’ll discuss a couple of them here, and perhaps discuss how I overcame them, or in later posts as I do.

Firstly, I’m currently using EyeTV to watch and record TV, and Front Row to watch stuff I already have.

Editing out the advertisements and fixing the start and end of a program is a little challenging at times. Because my Mac Mini is keyboardless, then I have to either use Synergy (or -alike) and use my laptop mouse/keyboard/trackpad, or go the whole hog and use VNC, or Screen Sharing as Leopard calls it.

It would be nice to be able to do the editing on a remote machine, but I can see how this would be challenging, since there is an awful amount of data that needs to be transferred. But perhaps not as much as is being transferred via VNC, anyway.

I’d also love to be able to run the application on my laptop for editing schedules. Basically, you have all of the functionality of the software, but the recording (and encoding, etc) is done on the remote machine. It would also allow me to schedule and so on without interrupting the display on the TV.

The biggest issue I am having is with transfer of data from torrents and EyeTV into iTunes. I’ve put in most of the pre-existing stuff I have, but there are a couple of issues. If I export to iTunes (AppleTV, I think it is called in EyeTV), then the data gets put into the iTunes library location. Which is bad, since that is on a small disk, whereas the library files are all on external, and much larger, disks. If I import a torrent file into iTunes, I need to do the following:

  • If the file is not a .mov or .mp4, then open the file in Quicktime and Save a Reference Movie. Which cannot be automated under the new quicktime, for some reason. Add this file that is created to iTunes.

  • Edit the file, and make sure the Video Type flag is set to the right type (Movie or TV Show). This could be automated, as could the TV Series, Season Number and so on. With a heap of files I had I did automate this, since I had meticulously renamed and located the files into a tree structure. Of course, I created throwaway scripts for this, since they were all slightly different for each programme.

I think I could automate the process a bit more if I export the files to mp4 files, rather than trying to make reference movies. Since I now have one of those Elgato Turbo 264 thingies, I might do that.

I think a few of the problems would be solved if I could make the Mac Mini think it had two monitors, and I could just ‘connect’ to one of those. That would then enable me to do stuff while the TV was still being watched. However, I have noticed some jumpiness when things are happening and you are trying to watch TV sometimes. I also need to get up on my roof and adjust my aerial to try to improve my reception of some channels.

Oh, and to allow me to record two programs at once, I’ve ordered another EyeTV for DTT stick. Handily, my amplifying splitter has three outputs, so that’s cool.

Finally, I’ve tried out a couple of alternative systems, MediaCentral, XHub and CenterStage. None of them really do what I want them to do. XHub gets close with it’s integration with EyeTV, but you can’t access EyeTV’s menus. What would be great was if EyeTV had the ability to access other media files (which it can, from the menubar, you can open movies!), or if it were better integrated with Front Row. MediaCentral got close there, with their other program, which was a fair bit crapper than EyeTV. Never mind that you can’t play HD tv through their software, at least in Australia, since we use AC3 audio, which it can’t handle.