trying to "reverse engineer" protocol from USB Ir dongle

[email protected]
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
I'm a newbie here, and don't really know if I have the right list.  I
apologize if I am screwing up.

----------------------------------------------------------------------------
I have an infrared remote control and an accompanying USB connected
receiver.  It's a small box on the end of a cable, which I suppose is
called a dongle?

lsusb gives me this:

Bus 001 Device 005: ID 0609:031d SMK Manufacturing, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        16
  idVendor           0x0609 SMK Manufacturing, Inc.
  idProduct          0x031d 
  bcdDevice            0.00
  iManufacturer           1 SMK
  iProduct                2 eHome Infrared Transceiver
  iSerial                 3 SM003J61
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    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
...


I haven't been able to find a driver for it.  I've seen screen-shots of
Windows systems call it a HID device, but, as far as I can tell, Linux
does not recognize it as such.  From what I can gather, the device's
protocol hasn't been disclosed.  (from above: Vendor Specific Protocol)

I hacked up the usb-skeleton driver so that it binds to this device, and
so that I can read from it in user-space.  My little user-space program
then prints a hex dump, one byte byte at a time and one line for each
complete read() call.  Here's an example of the output:

(start reading...  then I quickly press and release button #1:)

84 b6 10 8b 07 
84 8a 07 8b 10 
84 8a 10 9c 10 
84 8a 08 8a 07 
84 8b 07 8a 08 
84 8a 07 8a 08 
84 8a 07 8a 08 84 8a 08 89 08 
84 93 08 89 08 
84 8a 08 8a 10 
84 8a 08 89 08 84 8a 08 8a 08 
84 92 11 89 08 
84 8a 08 8a 08 84 89 08 8a 08 
84 89 08 8a 08 
84 8a 08 92 7f 
84 7f 7f 7f 7f 
84 7f 7f 7f 7f 
84 7f 7f 7f 7f 
83 7f 7f 5f 9f 01 01 9f 15 00 00 80 


I've been looking at the device output for couple days and, while I have
found some (obvious) patterns, I haven't found anything in the output
that I can use to reliably determine which button has been pressed.

I hope someone out there might have experience figuring out this sort of
thing, because I don't and I could use some help/guidence.

Thanks,

- Chris


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.