Opened 11 years ago

Closed 10 years ago

Last modified 10 years ago

#2253 closed enhancement (fixed)

usb_hid should support composite devices and non-boot protocol keyboards

Reported by: mmlr Owned by: mmlr
Priority: normal Milestone: R1
Component: Drivers/Keyboard/USB Version: R1/pre-alpha1
Keywords: Cc:
Blocked By: Blocking: #3573, #3936
Has a Patch: no Platform: All


Composite devices that combine multiple HID devices in one USB device like most wireless mouse/keyboard dongles are not currently supported by our usb_hid. Also usb_hid does only implement the boot protocol for keyboards which is only a basic operational model for keyboards which limits the functionality (i.e. "multimedia" keys not working).

I am opening this ticket since issues with composite HID devices were reported to me multiple times already and to indicate that I'm going to work on the usb_hid driver in that regard.

Change History (11)

comment:1 Changed 11 years ago by mmlr

Status: newassigned

comment:2 Changed 11 years ago by axeld

That's great news! I do have a Microsoft natural keyboard in case you want to have it for testing.

comment:3 in reply to:  2 Changed 11 years ago by mmlr

Replying to axeld:

That's great news! I do have a Microsoft natural keyboard in case you want to have it for testing.

I do too ;-). Those keyboards have the dual configuration of a simple boot-protocol interface that does not support the multimedia keys and a full HID interface. So getting that going will enable those keys. But after they are enable we have to devise a plan as to what to do with them. SpicyKeys comes to mind, maybe we should integrate this kind of functionality.

comment:4 Changed 11 years ago by mmlr

Composite devices should be supported as of hrev25657.

comment:5 Changed 10 years ago by mmlr

Blocking: 3573 added

(In #3573) This is a "duplicate" of #2253. The reason for these keys not to work is that the keyboards are used with the boot protocol, which usually is limited to only basic functionality.

comment:6 Changed 10 years ago by mmlr

Blocking: 3936 added

(In #3936) Looks fine. The very first device listed is a Microsoft HID device. It has two interfaces of which the first one is the keyboard supporting the boot protocol. The second interface could very well be the mouse, or a combined mouse/keyboard interface. Since the second one doesn't work with the boot protocol (as it can't when providing more flexible input), it isn't recognized by the Haiku usb_hid, as this one currently still lacks generic HID support. Support for that is tracked in #2253, so closing this as a duplicate.

comment:7 Changed 10 years ago by franxico

In my case I can't boot at all since Haiku doesn't like my USB wireless Logitech mouse+keyboard. IMHO, this bug is a critical one. What can I do to avoid this for the time being? My Vostro 410 doesn't have a PS/2 port and USB parameters in BIOS are very limited.

comment:8 Changed 10 years ago by stippi

Interesting. I also have a composite device which prevents Haiku from booting if attached. It's a Cherry Wireless keyboard/mouse combo ("Baracuda"?). I though it was just a pecularity and didn't give it much thought, since I don't usually need it.

comment:9 Changed 10 years ago by mmlr

In what way exactly do those devices prevent booting? Like an interrupt storm on controller initialization that freezes the boot process or more like a crash or panic? In any case, please create a new bug report and attach details to it. A screenshot of the last page of on-screen debug output for example. This enhancement ticket is really only about adding support for generic hid devices to usb_hid.

comment:10 Changed 10 years ago by mmlr

Resolution: fixed
Status: assignedclosed

Full generic HID support is finally added in hrev31790. Please report bugs with that new implementation in bug reports.

comment:11 Changed 10 years ago by fano

I've tried the last version hrev32448... and nothing... My wireless Microsoft Keyboard continues to work but Microsoft Cordless mouse NOT!

So nothing changed, sorry...

Note: See TracTickets for help on using tickets.