[libhid-discuss] error sending control message

Brent Bushnell brent at uwink.com
Tue Feb 3 20:25:39 UTC 2009


Thanks for the feedback Charles.    I'll start snooping the stream in  
a Windows environment.

For what it's worth, we're having the same issue with a magnetic  
stripe reader from ID Innovations.    Of special interest also, is  
that the report descriptors are unavailable.

I'll post the results of the same commands in case it's helpful to  
anyone in a similar position.   If I'm understanding you correctly, it  
sounds like the real solution is for the manufacturer to make changes  
to the firmware?

Some information on the MSR exists here:
http://idinnovations.com/downloads.html

I can't seem to find their HID manual on that page, so I've posted it  
here:
http://brent.izolo.com/tmp/HID.pdf

==> lsusb result:

Bus 002 Device 008: ID 154a:0004
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               1.10
   bDeviceClass            0 (Defined at Interface level)
   bDeviceSubClass         0
   bDeviceProtocol         0
   bMaxPacketSize0         8
   idVendor           0x154a
   idProduct          0x0004
   bcdDevice            1.06
   iManufacturer           1 ID Innovations Inc.
   iProduct                2 Magnetic Card Reader
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength           59
     bNumInterfaces          2
     bConfigurationValue     1
     iConfiguration          4 Input Device
     bmAttributes         0x80
     MaxPower              100mA
     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              5 HID Keyboard Interface
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.00
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      59
          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      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              6 Serial Interface
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.00
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      97
          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


==> libhid test:

  NOTICE: hid_init(): libhid 0.2.15+20060325.0.0 is being initialized.
   TRACE: hid_init(): initialising USB subsystem...
   TRACE: hid_init(): scanning for USB busses...
   TRACE: hid_init(): scanning for USB devices...
  NOTICE: hid_init(): successfully initialised HID library.
   TRACE: hid_new_HIDInterface(): creating a new HIDInterface  
instance...
   TRACE: hid_force_open(): forcefully opening a device interface  
according to matching criteria...
   TRACE: hid_get_usb_handle(): acquiring handle for a USB device...
   TRACE: hid_find_usb_device(): enumerating USB busses...
   TRACE: hid_find_usb_device(): enumerating USB devices on bus 001...
   TRACE: hid_find_usb_device(): inspecting USB device 001/001[0]...
   TRACE: hid_compare_usb_device(): comparing match specifications to  
USB device...
   TRACE: hid_compare_usb_device(): inspecting vendor ID...
   TRACE: hid_compare_usb_device(): no match on vendor ID.
   TRACE: hid_compare_usb_device(): inspecting product ID...
   TRACE: hid_compare_usb_device(): no match on product ID.
   TRACE: hid_compare_usb_device(): no custom matching function  
supplied.
  NOTICE: hid_find_usb_device(): vendor 0x0000 of USB device  
001/001[0] does not match 0x154a.
   TRACE: hid_find_usb_device(): enumerating USB devices on bus 003...
   TRACE: hid_find_usb_device(): inspecting USB device 003/001[0]...
   TRACE: hid_compare_usb_device(): comparing match specifications to  
USB device...
   TRACE: hid_compare_usb_device(): inspecting vendor ID...
   TRACE: hid_compare_usb_device(): no match on vendor ID.
   TRACE: hid_compare_usb_device(): inspecting product ID...
   TRACE: hid_compare_usb_device(): no match on product ID.
   TRACE: hid_compare_usb_device(): no custom matching function  
supplied.
  NOTICE: hid_find_usb_device(): vendor 0x0000 of USB device  
003/001[0] does not match 0x154a.
   TRACE: hid_find_usb_device(): enumerating USB devices on bus 002...
   TRACE: hid_find_usb_device(): inspecting USB device 002/007[0]...
   TRACE: hid_compare_usb_device(): comparing match specifications to  
USB device...
   TRACE: hid_compare_usb_device(): inspecting vendor ID...
   TRACE: hid_compare_usb_device(): match on vendor ID: 0x154a.
   TRACE: hid_compare_usb_device(): inspecting product ID...
   TRACE: hid_compare_usb_device(): match on product ID: 0x0004.
   TRACE: hid_compare_usb_device(): no custom matching function  
supplied.
  NOTICE: hid_find_usb_device(): found a matching USB device 002/007[0].
   TRACE: hid_force_open(): claiming USB device 002/007[0].
   TRACE: hid_os_force_claim(): failed to claim USB device 002/007[0],  
trying 2 more time(s)...
   TRACE: hid_os_force_claim(): detaching kernel driver from USB  
device 002/007[0]...
   TRACE: hid_os_force_claim(): trying again to claim USB device  
002/007[0]...
  NOTICE: hid_force_open(): successfully claimed USB device 002/007[0].
   TRACE: hid_init_parser(): initialising the HID parser for USB  
Device 002/007[0]...
   TRACE: hid_init_parser(): allocating space for HIDData structure...
   TRACE: hid_init_parser(): successfully allocated memory for HIDData  
strcture.
   TRACE: hid_init_parser(): allocating space for HIDParser structure...
   TRACE: hid_init_parser(): successfully allocated memory for  
HIDParser strcture.
  NOTICE: hid_init_parser(): successfully initialised the HID parser  
for USB Device 002/007[0].
   TRACE: hid_prepare_hid_descriptor(): initialising the HID  
descriptor for USB device 002/007[0]...
   TRACE: hid_prepare_hid_descriptor(): retrieving HID descriptor for  
USB device 002/007[0]...
  NOTICE: hid_prepare_hid_descriptor(): successfully initialised HID  
descriptor for USB device 002/007[0] (59 bytes).
   TRACE: hid_prepare_report_descriptor(): initialising the report  
descriptor for USB device 002/007[0]...
   TRACE: hid_prepare_report_descriptor(): retrieving report  
descriptor for USB device 002/007[0]...
  NOTICE: hid_prepare_report_descriptor(): successfully initialised  
report descriptor for USB device 002/007[0].
   TRACE: hid_prepare_parser(): setting up the HID parser for USB  
device 002/007[0]...
   TRACE: hid_reset_parser(): resetting the HID parser for USB device  
002/007[0]...
   TRACE: hid_prepare_parser(): dumping the raw report descriptor
   TRACE: hid_prepare_parser(): 0x000: 0x05 0x01 0x09 0x06 0xa1 0x01  
0x85 0x01
   TRACE: hid_prepare_parser(): 0x008: 0x05 0x07 0x19 0xe0 0x29 0xe7  
0x15 0x00
   TRACE: hid_prepare_parser(): 0x010: 0x25 0x01 0x75 0x01 0x95 0x08  
0x81 0x02
   TRACE: hid_prepare_parser(): 0x018: 0x05 0x08 0x19 0x01 0x29 0x05  
0x75 0x01
   TRACE: hid_prepare_parser(): 0x020: 0x95 0x05 0x91 0x02 0x75 0x03  
0x95 0x01
   TRACE: hid_prepare_parser(): 0x028: 0x91 0x01 0x75 0x08 0x95 0x06  
0x15 0x00
   TRACE: hid_prepare_parser(): 0x030: 0x25 0x68 0x05 0x07 0x19 0x00  
0x29 0x68
   TRACE: hid_prepare_parser(): 0x038: 0x81 0x00 0xc0
   TRACE: hid_prepare_parser(): parsing the HID tree of USB device  
002/007[0]...
  NOTICE: hid_prepare_parser(): successfully set up the HID parser for  
USB device 002/007[0].
  NOTICE: hid_force_open(): successfully opened USB device 002/007[0].
device identification of HIDInterface 002/007[0]:
   dev_handle:    0x093ac5b8
   device:        0x093b51e0
   location:      002/007
   manufacturer:  ID Innovations Inc.
   product:       Magnetic Card Reader
   TRACE: hid_reset_parser(): resetting the HID parser for USB device  
002/007[0]...
   TRACE: hid_dump_tree(): iterating the parse tree for USB device  
002/007[0]...
parse tree of HIDInterface 002/007[0]:
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x90
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   path: 0x00010006.0x00000000; type: 0x80
   TRACE: hid_reset_parser(): resetting the HID parser for USB device  
002/007[0]...
   TRACE: hid_close(): closing USB device 002/007[0]...
   TRACE: hid_close(): closing handle of USB device 002/007[0]...
  NOTICE: hid_close(): successfully closed USB device 002/007[0].
   TRACE: hid_reset_parser(): resetting the HID parser for USB device  
002/007[0]...
   TRACE: hid_close(): freeing memory allocated for HID parser...
   TRACE: hid_close(): resetting HIDInterface...
  NOTICE: hid_cleanup(): successfully deinitialised HID library.





More information about the libhid-discuss mailing list