Hi, all, I’ve got a quirky little USB keyboard/touchpad combo that doesn’t work correctly on 9legacy or 9front on a Raspberry Pi 3. The device does work under Linux, and I am able to use my Kinesis Advantage, an old Das, and a Logitech G502 with the Pi, so I do think it’s a software issue.
I’ve done most of my testing using Richard Miller’s 9legacy image from May. After disabling autodetection for keyboards and mice with *echo noauto kb >/dev/usbdctl; echo noauto ptr >/dev/usbdctl*, I plug in the keyboard and see it appear in /dev/usb. I then run *usb/kb -d -k /dev/usb/ep9.0* (or whatever endpoint number it appears as), and I get > usb/kb: startdevs: opening #0 /dev/usb/ep9.0 > usb/kb: opendev 0x26f68 /dev/usb/ep9.0 > usb/kb: /dev/usb/ep9.0 csp hid.1.1 vid 0x911 did 0x2188 refs 1 > Hantick USB Keyboard none > conf: cval 1 attrib a0 100 mA > iface csp hid.1.1 > alt 0 attr 3 ival 4 > ep id 1 addr 129 dir in type intr itype 0 maxpkt 8 ntds 1 > iface csp hid.1.2 > alt 0 attr 3 ival 4 > ep id 2 addr 130 dir in type intr itype 0 maxpt 8 ntds 1 > dev desc 21[9]: 09 21 01 01 00 01 22 41 00 > dev desc 21[9]: 09 21 01 01 00 01 22 f6 00 > kb: main: dev /dev/usb/ep9.0 ref 1 > usb/kb: opendev 0x281a8 /dev/usb/ep9.1 > usb/kb: /dev/usb/ep9.1: maxpkt 8 > usb/kb: /dev/usb/ep9.1: ntds 1 > setting boot protocol At this point, however, the *kb* binary *read*(2)s from /dev/usb/ep9.1/data, and no data ever come, even when I type on the keyboard. If I unplug the keyboard, the *read*(2) finally returns, and I get > kb: /dev/usb/ep9.1: read: i/o error > kb: exiting > usb/kb: closedev 0x281a8 /dev/usb/ep9.1 So I have a USB device that can be enumerated, its descriptors look fine, and the kernel knows enough to give it an error when you unplug it…but it doesn’t want to talk to anybody. My first thought was that there might be some device-specific initialization missing from *9pi2* or from *usb*, but I grepped the Linux tree for quirks, and I don’t think that’s the case. Linux does list a HID-over-I²C quirk for Hantick devices (*I2C_HID_QUIRK_NO_IRQ_AFTER_RESET*), but given that this is speaking USB rather than I²C, I think that’s probably irrelevant. The only other Linux-related lead that I have is that *lsusb -v* seems to tickle the device in a way it doesn’t like (it gets *EAGAIN* for at least one ioctl that it tries to send), but even so, the keyboard still works. How would you recommend I debug this further? Thanks in advance, Benjamin ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T045e1837b682fbc1-M95adc1d6bdebf0d31af3bec0 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
