Ok, I'll provide SeaBIOS log later, but for now look at "lsusb -v" log from Linux:
"""" Bus 001 Device 004: ID 7777:7778 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x7777 idProduct 0x7778 bcdDevice 0.01 iManufacturer 1 KEY-IKB-MKB iProduct 2 WWW.KEY-TEK.CN iSerial 3 17177 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.10 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 73 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 0x0020 1x 32 bytes bInterval 10 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 2 Mouse iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.10 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 52 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 0x0020 1x 32 bytes bInterval 10 Device Status: 0x0000 (Bus Powered) """"
As you can see both mouse and keyboard in this device support "Boot Interface Subclass", but "wMaxPacketSize=0x0020 1x 32 bytes" in their endpoints. So this already wouldn't work, cause in file "src\hw\usb-hid.c" in function " usb_kbd_setup" check "(epdesc->wMaxPacketSize != 8)" wouldn't pass.
-----Original Message----- From: Kevin O'Connor [mailto:kevin@koconnor.net] Sent: Monday, October 30, 2017 10:42 PM To: Аладышев Константин Cc: seabios@seabios.org Subject: Re: K-TEK-M275TP-FN-BL-ML USB keyboard support
On Mon, Oct 30, 2017 at 04:00:17PM +0300, Аладышев Константин wrote:
Hello! I'm having problems with K-TEK-M275TP-FN-BL-ML keyboard (http://www.key-tek.cn/Productview.asp?id=777). It is USB device with keyboard and touchpad combined. It works in OS correctly, but doesn't work in SeaBIOS.
If you're experiencing a problem with SeaBIOS, please send the full debug log to the mailing list as described at: https://www.seabios.org/Debugging
I've tried to debug this issue and found that "usb_kbd_setup" function fails on "(epdesc->wMaxPacketSize != 8)" check, cause "epdesc->wMaxPacketSize" is actually 32. I've modified this "if" statement to pass 32 value also and now function completes successfully. But it didn't help to solve my issue. There are no interrupts from keyboard, "ehci_poll_intr" always returns -1 on check:
if (token & QTD_STS_ACTIVE) { // No intrs found. return -1; }
I don't know what to do now. What should I check next?
Does SeaBIOS support USB keyboard+touchpad devices at all?
SeaBIOS should support any USB keyboard (or mouse) that supports the "USB HID boot protocol".
-Kevin