[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