On Wed, 2010-10-13 at 13:33 -0400, Alan Stern wrote: > On Wed, 13 Oct 2010, Florian Echtler wrote: > > On Wed, 2010-10-13 at 10:07 -0400, Alan Stern wrote: > > > On Wed, 13 Oct 2010, Florian Echtler wrote: > > > > Interestingly, however, there's a > > > > significant delay when loading the driver: > > > > > > > > [ 895.253903] ntrig 0003:1B96:0001.0003: hidraw2: USB HID v1.10 Device > > > > [N-trig DuoSense] on usb-0000:00:1d.0-1.8/input0 > > > > [ 895.254142] ntrig 0003:1B96:0001.0003: Firmware version: 4.8.15.20.7 > > > > (2108 8fe2) > > > > [ 895.255956] /build/buildd/linux-2.6.35/drivers/hid/usbhid/hid-core.c: > > > > submitting ctrl urb: Get_Report wValue=0x0101 wIndex=0x0001 wLength=10 > > > > [ 905.228517] /build/buildd/linux-2.6.35/drivers/hid/usbhid/hid-core.c: > > > > timeout waiting for ctrl or out queue to clear > > > > [ 905.228719] /build/buildd/linux-2.6.35/drivers/hid/usbhid/hid-core.c: > > > > submitting ctrl urb: Get_Report wValue=0x0103 wIndex=0x0001 wLength=94 > > > > [ 905.228732] /build/buildd/linux-2.6.35/drivers/hid/usbhid/hid-core.c: > > > > usb_submit_urb(ctrl) failed > > > > [ 905.228754] ntrig 0003:1B96:0001.0004: timeout initializing reports > > > Just guessing, this may indicate that the device needs to have the > > > HID_QUIRK_NOGET quirk. > > I've tried "options usbhid quirks=0x1b96:0x0001:0x0008", but without any > > noticeable effect... > > Perhaps this is caused by the following lines near the end of > ntrig_probe(), added by Stephane (commit 6549981bc): > > /* This is needed for devices with more recent firmware versions */ > report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[0x0a]; > if (report) > usbhid_submit_report(hdev, report, USB_DIR_OUT); > > You can see that this doesn't check for the NOGET quirk. Thanks for the hint - that did the trick. I've commented this block out and rebuilt the driver, with the result that everything seems to work fine now. I have still added the NOGET quirk to usbhid - will check later if this is actually necessary with the removed firmware check. A background question here: why should a report with USB_DIR_OUT check for the NOGET quirk, though? > usbmon might provide some helpful information. For example, why does > the usb_submit_urb(ctrl) failure occur? I've attached a Wireshark trace of loading the unpatched driver. Not sure what to make of this... hope it helps. Florian -- 0666 - Filemode of the Beast
Attachment:
ntrig.pcap
Description: Binary data