# Zalman HD135: device for IR receiver? (LIRC / IRTrans?)

## littlefish

Hi all,

I have just bought a Zalman HD135 case to build a MythTV box (Gentoo based, of course!)  The box comes with a remote - I understand the receiver to be built into the box.  (Product link for the case:  http://www.zalman.co.kr/eng/product/view.asp?idx=219&code=029)

I am trying to setup the remote using LIRC, following the Gentoo Wiki and information in the forums.  But the documentation requires that I already know what device the receiver is using.  The problem is, I don't even know what chipset the receiver is!  The other Zalman HTPC case (HD160) uses an IRTrans receiver, so I wonder whether this is also used in the HD135?  But some people on the web appear to have made it work as a "MS MCE" remote too...

The manual for the case is not helpful on this point - although it suggests the remote is an "NEC type".  I would really like to get this working if possible, but I don't even know where to start looking.  I can't find anything obviously relevant in the machine's logs.   I'm hopeless with hardware - can someone provide a tip on where to start?  Has anyone used one of these cases with Gentoo before?

thanks in advance!

EDIT:   Very odd.  The following command produces no output:

```
cat /dev/ttyUSB0
```

BUT if I try running the IRTrans program irserver first, that same command produces output as I push buttons on the remote, showing that the signals are received at some level.  However, the irserver command errors out, saying no IRTrans devices were detected???

----------

## Kaltsu

Any new information about this subject?

Tomi

----------

## littlefish

Not much good news, really.

Contacted Zalman, the manufacturer, asking what chipset the remote/receiver uses.  Their response was basically that "Linux isn't supported on this case".  Given that some input from the remote is accessible, I think it can be made to work, but I need help from someone smarter than me.....

I also still think that the IRTrans software is important - but I haven't got it to work yet.  In the meantime, I'm just controlling it with a wireless keyboard/mouse - but this isn't ideal.

Any tips would be appreciated.

----------

## freeke

I'm also trying to get a Zalman box to run MythTV, but an HD140. I'm having similar problems with IR. 

I think I got a bit further - here's what I did, FWIW:

1. I've got the following kernel settings to run a USB-Serial bridge:

```
CONFIG_USB_SERIAL=y

CONFIG_USB_SERIAL_GENERIC=y
```

2. lsusb -v yields the following:

```
Bus 002 Device 002: ID 0403:fc60 Future Technology Devices International, Ltd

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               1.10

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0

  bDeviceProtocol         0

  bMaxPacketSize0         8

  idVendor           0x0403 Future Technology Devices International, Ltd

  idProduct          0xfc60

  bcdDevice            4.00

  iManufacturer           1 MConsult

  iProduct                2 IRTrans USB

  iSerial                 3 MMUN0000

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           32

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0

    bmAttributes         0x80

    MaxPower               50mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass       255 Vendor Specific Class

      bInterfaceSubClass    255 Vendor Specific Subclass

      bInterfaceProtocol    255 Vendor Specific Protocol

      iInterface              2 IRTrans USB

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x02  EP 2 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               0

```

3. Downloaded the irtrans SW from the irtrans site & rebuilt it for 64-bit without CCF support - use the irserver_noccf target.

I'm running it with the following parameters:

```
irserver -daemon -netmask 127.0.0.1/32 -logfile /var/log/irserver.log /dev/ttyUSB0
```

To view IR inputs, this will do the trick:

```
irserver -loglevel 4 -debug_code /dev/ttyUSB0
```

4. Using the above IR input data, I built a 'remote' file for the irserver to map IR data to actual events. When you restart the server in debug mode, the output will actually consist of events you defined. The remote file content looks like this:

```
[REMOTE]

  [NAME]ZALMAN

[TIMING]

  [0][RC6]

[COMMANDS]

  [POWER][T]0[D]S11101010000000000011110000010000001100

  [STOP][T]0[D]S11101010000000000011110000010000011001

...
```

If you want to, I can send you the file...

5. Created a lircrc file to map the Zalman remote events to mythtv events.

6. The irtrans server creates a /dev/lircd socket for lircd-compliant apps to get their IR events from. This is where I'm stuck for now, so any and all tips & hints appreciated  :Smile: 

----------

## littlefish

Thanks for this - good to know I'm not the only one struggling with these cases.

My lsusb results look very similar to yours....but I'm not having much luck with the irserver software.  When I run irserver, I get the following output before it exits:

```

Error opening COM/USB Port / LAN Device

```

Can you explain in more detail what you did to build the irserver software (your step 3?)

Also, I would certainly appreciate a copy of your Zalman config file / lirc config file if you don't mind - that would be fantastic.

I'm excited that this may not be a lost cause just yet!

thanks again!

----------

## freeke

 *Quote:*   

> I'm excited that this may not be a lost cause just yet!

 

Not if I can help it  :Smile:  I want to use my investment too.

OK, to build irserver:

1. Download & unzip/untar the code from 

http://www.irtrans.de/download/Server/Linux/irserver-src.tar.gz

2. Check the makefile. I uncommented the -m32 CFLAG, as I run a no-multilib 64-bit system - depends on your system setup.

3. Make the irserver:

```
make irserver_noccf
```

That did it for me...

About the error: Do you have other ttyUSBx devices? Maybe the IR device is not on /dev/ttyUSB0? Judging from the 'cat' before/after test, irserver does perform the initialisation of the device, so it has to be out there somewhere... What exactly is the command you enter?

----------

## littlefish

Hello again - and happy new year!!

Tried irserver using the "noccf" target - still no joy.  It builds successfully but when running it I get the same error. Command used and output received are as follows:

```

# ./irserver -daemon -logfile /var/log/irserver.log /dev/ttyUSB0

Error opening COM/USB Port / LAN Device

```

Also tried the following - same error:

```

#./irserver -loglevel 4 -debug_code /dev/ttyUSB0

Error opening COM/USB Port / LAN Device

```

Also tried with a netmask parameter passed to irserver but doesn't appear to make a difference.

I'm sure that the IR device is at /dev/ttyUSB0  - it is the only ttyUSBx device, and the "cat" command can show button pushes on the remote - in the limited set of circumstances described above.   :Sad: 

Kernel settings:

```
CONFIG_USB_SERIAL=m     [modprobe'd]

CONFIG_USB_SERIAL_GENERIC=y
```

Edit:

Well, found the likely source of trouble - was going over things in more detail and noted that my results from lsusb aren't as similar to yours as I'd thought.  Specifically, mine doesn't mention IRTrans and yours does!   So maybe it's not an IRTrans device after all.  Still can't explain why I get some results from "cat /dev/ttyUSB0"  after running the irtrans software though......

----------

## freeke

So what 'brand' is the IR device then? Maybe post the output of lsusb?

----------

## littlefish

lsusb -v   produces the following:

```

Bus 002 Device 002: ID 046d:c505 Logitech, Inc. Cordless Mouse+Keyboard Receiver

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               1.10

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0         8

  idVendor           0x046d Logitech, Inc.

  idProduct          0xc505 Cordless Mouse+Keyboard Receiver

  bcdDevice           17.21

  iManufacturer           1 Logitech

  iProduct                2 USB Receiver

  iSerial                 0 

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           59

    bNumInterfaces          2

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0xa0

      Remote Wakeup

    MaxPower               98mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass         3 Human Interface Devices

      bInterfaceSubClass      1 Boot Interface Subclass

      bInterfaceProtocol      1 Keyboard

      iInterface              0 

        HID Device Descriptor:

          bLength                 9

          bDescriptorType        33

          bcdHID               1.10

          bCountryCode            0 Not supported

          bNumDescriptors         1

          bDescriptorType        34 Report

          wDescriptorLength      63

         Report Descriptors: 

           ** UNAVAILABLE **

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0008  1x 8 bytes

        bInterval              10

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        1

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass         3 Human Interface Devices

      bInterfaceSubClass      1 Boot Interface Subclass

      bInterfaceProtocol      2 Mouse

      iInterface              0 

        HID Device Descriptor:

          bLength                 9

          bDescriptorType        33

          bcdHID               1.10

          bCountryCode            0 Not supported

          bNumDescriptors         1

          bDescriptorType        34 Report

          wDescriptorLength     190

         Report Descriptors: 

           ** UNAVAILABLE **

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x82  EP 2 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0008  1x 8 bytes

        bInterval              10

Bus 002 Device 003: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0         8

  idVendor           0x0403 Future Technology Devices International, Ltd

  idProduct          0x6001 8-bit FIFO

  bcdDevice            6.00

  iManufacturer           1 FTDI

  iProduct                2 FT232R USB UART

  iSerial                 3 A5001n3l

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           32

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0xa0

      Remote Wakeup

    MaxPower               90mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           2

      bInterfaceClass       255 Vendor Specific Class

      bInterfaceSubClass    255 Vendor Specific Subclass

      bInterfaceProtocol    255 Vendor Specific Protocol

      iInterface              2 FT232R USB UART

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x02  EP 2 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               0

Bus 002 Device 001: ID 0000:0000  

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               1.10

  bDeviceClass            9 Hub

  bDeviceSubClass         0 Unused

  bDeviceProtocol         0 Full speed (or root) hub

  bMaxPacketSize0        64

  idVendor           0x0000 

  idProduct          0x0000 

  bcdDevice            2.06

  iManufacturer           3 Linux 2.6.18-gentoo-r3 ohci_hcd

  iProduct                2 OHCI Host Controller

  iSerial                 1 0000:00:02.0

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           25

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0xe0

      Self Powered

      Remote Wakeup

    MaxPower                0mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass         9 Hub

      bInterfaceSubClass      0 Unused

      bInterfaceProtocol      0 Full speed (or root) hub

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0002  1x 2 bytes

        bInterval             255

Hub Descriptor:

  bLength              11

  bDescriptorType      41

  nNbrPorts            10

  wHubCharacteristic 0x0012

    No power switching (usb 1.0)

    No overcurrent protection

  bPwrOn2PwrGood        1 * 2 milli seconds

  bHubContrCurrent      0 milli Ampere

  DeviceRemovable    0x8c 0x3d

  PortPwrCtrlMask    0x05  0x08 

 Hub Port Status:

   Port 1: 0000.0100 power

   Port 2: 0000.0303 lowspeed power enable connect

   Port 3: 0000.0100 power

   Port 4: 0000.0100 power

   Port 5: 0000.0100 power

   Port 6: 0000.0100 power

   Port 7: 0000.0100 power

   Port 8: 0000.0100 power

   Port 9: 0000.0103 power enable connect

   Port 10: 0000.0100 power

Bus 001 Device 001: ID 0000:0000  

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            9 Hub

  bDeviceSubClass         0 Unused

  bDeviceProtocol         1 Single TT

  bMaxPacketSize0        64

  idVendor           0x0000 

  idProduct          0x0000 

  bcdDevice            2.06

  iManufacturer           3 Linux 2.6.18-gentoo-r3 ehci_hcd

  iProduct                2 EHCI Host Controller

  iSerial                 1 0000:00:02.1

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           25

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0xe0

      Self Powered

      Remote Wakeup

    MaxPower                0mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           1

      bInterfaceClass         9 Hub

      bInterfaceSubClass      0 Unused

      bInterfaceProtocol      0 Full speed (or root) hub

      iInterface              0 

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x81  EP 1 IN

        bmAttributes            3

          Transfer Type            Interrupt

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0002  1x 2 bytes

        bInterval              12

Hub Descriptor:

  bLength              11

  bDescriptorType      41

  nNbrPorts            10

  wHubCharacteristic 0x000a

    No power switching (usb 1.0)

    Per-port overcurrent protection

    TT think time 8 FS bits

  bPwrOn2PwrGood       10 * 2 milli seconds

  bHubContrCurrent      0 milli Ampere

  DeviceRemovable    0x8c 0x3d

  PortPwrCtrlMask    0x05  0x08 

 Hub Port Status:

   Port 1: 0000.0100 power

   Port 2: 0000.0000

   Port 3: 0000.0100 power

   Port 4: 0000.0100 power

   Port 5: 0000.0100 power

   Port 6: 0000.0100 power

   Port 7: 0000.0100 power

   Port 8: 0000.0100 power

   Port 9: 0000.0000

   Port 10: 0000.0100 power

```

----------

## freeke

Hey littlefish

Sorry - I can't find anything on this new setup. 

If at all possible I'd try to get a look inside the box to see which device is being used. Maybe that'll get you further. The fact that the device does respond after starting irserver (even though it crashes) suggests that it's not a completely new design. With a bit of luck...

----------

## Kaltsu

Hey littlefish,

How about VFD? Have you managed to get it working?

Tomi

----------

## littlefish

freeke - hey, no worries!  I appreciate the help you provided and will be keeping an eye on your solution for the HD-160.  Did you get it all working at your end?   (I have squirreled the files you provided away for when I actually get this thing working!)   I did try looking inside the box - giant PITA as the device is difficult to access, located underneath the drive bay.  By removing the drive you can almost get a look at it, but I couldn't find any further clues.  (And I don't have enough experience with hardware to be comfortable taking it apart any further!)

Kaltsu - Sorry, VFD is not working (well, that's not accurate - it's displaying a standard Zalman logo or something, so it's functioning, but not controlled by MythTV/Linux).  But I suspect if I can get irserver working, the VFD will be good to go.

To be honest, I have not had any time to work on this recently.  Further digging is still on my TODO list......as always, further tips appreciated from anyone out there who is further along than I am!

----------

## freeke

 *Quote:*   

> Did you get it all working at your end?

 

Yes  :Smile:  IR is working, VFD is working as well. VFD is driven from MythTV, so it even displays relevant info... 

One happy camper over here.

----------

## Kaltsu

I removed the VFD assembly and the inner board has NEC chip D16314AGJ-011 that controls VFD display. Manual and manufacturers web page indicates that this case has HD44780 compatible display. There is at least some support for controlling HD44780 compatible display via usb as you can see from www.usblcd.de and lcdproc also has some support for usblcd and HD44780 too.

I quess you have already looked this link http://www.vlsys.co.kr/English/product_mplayblast.php

Kaltsu

----------

## Vergo

Any new progress with the display or ir receiver?

I don't own one (yet?) but based on what I've found about the VLSystem M-Play it seems that it's essentially an upgraded version of the older LIS 2 (that only contains the display). Trying with the lcdproc lis2 module might give some results if the interface has been kept the same.

 *littlefish wrote:*   

> I'm sure that the IR device is at /dev/ttyUSB0 - it is the only ttyUSBx device, and the "cat" command can show button pushes on the remote - in the limited set of circumstances described above.

 

Have you or someone tried if lirc is able to understand those button pushes using uirt2, uirt2_raw or usb-uirt as driver?

----------

## straylight

Hi guys

I know it's a little late down the line but I've found another post on this (I'll post the ref once I dig it out) but the controller is a VLsys MR 300 OEM device, which you can see in all its glory here:

http://vlsys.co.kr/English/oem_mr300.php

Getting any more info on the device is a little tricky though; VLsys I don't think are much happy to help.

However, in the thread I lost, there were rumblings about the device using a variation of the LIS2 protocol that lirc supports.

If I ever get any free time, I'm going to have a bash at this myself   :Surprised: 

----------

## royw

Hey guys, looks like there is now a new driver in lirc CVS to support the VLSys mplay Blast:

http://www.nabble.com/New-driver-for-Vlsys-mplay-(the-one-in-Zalman-Hd135-case)-td14282379.html

Have fun,

Roy

----------

