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

Reply via email to