example program kills hiddev device node

Tino Keitel <[email protected]>
Newsgroups gmane.linux.usb.devel,gmane.comp.lib.libhid.general
Message-ID <[email protected]>
Hi folks,

I tried to use a tool called hidmon to control man TFT over USB. That
worked a few times, but now I noticed that the hiddev device node in
/dev/usb/ went away. I didn't kow why. I rebooted the computer, changed
from Linux 2.6.23.1 to 2.6.22, powercycled the TFT, without luck. As
soon as I use hidmon, the device node is gone.

Now I compiled the libhid test program test_libhid.c and got the same
effect. It seems like hid_force_open() kills the device, as udev
receives a remote udevent. Here is what I did:

$ ls -l /dev/usb
total 0
crw-rw---- 1 root root 180, 96 Nov 11 20:27 hiddev0
crw-rw---- 1 root root 180, 97 Nov 11 21:50 hiddev1
crw-rw---- 1 root lp   180,  0 Nov 11 21:30 lp0

$ sudo ./test_libhid
 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/056[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: 0x056d.
  TRACE: hid_compare_usb_device(): inspecting product ID...
  TRACE: hid_compare_usb_device(): match on product ID: 0x0002.
  TRACE: hid_compare_usb_device(): no custom matching function
  supplied.
 NOTICE: hid_find_usb_device(): found a matching USB device 001/056[0].
  TRACE: hid_force_open(): claiming USB device 001/056[0].
  TRACE: hid_os_force_claim(): failed to claim USB device 001/056[0],
  trying 2 more time(s)...
  TRACE: hid_os_force_claim(): detaching kernel driver from USB device
  001/056[0]...
  TRACE: hid_os_force_claim(): trying again to claim USB device
  001/056[0]...
 NOTICE: hid_force_open(): successfully claimed USB device 001/056[0].
  TRACE: hid_init_parser(): initialising the HID parser for USB Device
001/056[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 001/056[0].
  TRACE: hid_prepare_hid_descriptor(): initialising the HID descriptor
for USB device 001/056[0]...
  TRACE: hid_prepare_hid_descriptor(): retrieving HID descriptor for
USB device 001/056[0]...
WARNING: hid_prepare_hid_descriptor(): failed to get HID descriptor for
USB device 001/056[0]
  TRACE: hid_close(): closing USB device 001/056[0]...
  TRACE: hid_close(): closing handle of USB device 001/056[0]...
 NOTICE: hid_close(): successfully closed USB device 001/056[0].
  TRACE: hid_reset_parser(): resetting the HID parser for USB device
001/056[0]...
  TRACE: hid_close(): freeing memory allocated for HID parser...
  TRACE: hid_close(): resetting HIDInterface...
hid_force_open failed with return code 13

$ ls -l /dev/usb
total 0
crw-rw---- 1 root root 180, 96 Nov 11 20:27 hiddev0
crw-rw---- 1 root lp   180,  0 Nov 11 21:30 lp0

While i was doing the above, I also had udevmonitor running:

$ sudo udevmonitor --kernel
udevmonitor will print the received events for:
UEVENT the kernel uevent

UEVENT[1194814320.814394] remove
/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1.3/1-1.3:1.0/usb/hiddev1
(usb)
UEVENT[1194814320.814458] remove
/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1.3/1-1.3:1.0/usb_endpoint/usbdev1.56_ep81
(usb_endpoint)
UEVENT[1194814320.814477] add
/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1.3/1-1.3:1.0/usb_endpoint/usbdev1.56_ep81
(usb_endpoint)
UEVENT[1194814320.814494] remove
/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1.3/1-1.3:1.0/usb_endpoint/usbdev1.56_ep81
(usb_endpoint)
UEVENT[1194814320.814511] add
/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1.3/1-1.3:1.0/usb_endpoint/usbdev1.56_ep81
(usb_endpoint)

Anyone knows what's going on here, and how to fix it?

Please CC: me on replies to the list, as I'm not subscribed.

Regards,
Tino

-------------------------------------------------------------------------
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.