HID implementation for the BlueZ stack |
|
| by Marcel Holtmann |
The Bluetooth specification defines the HID profile for connecting human interface device over a Bluetooth link. The Bluetooth HID profile is based on the USB HID specification and Peter Klausler has done some work in January 2003 to make the Microsoft Optical Desktop for Bluetooth working under Linux. He improved his implementation six times and it should now work fine with any HID compatible Bluetooth device. Because of his fake.o kernel driver and his own SDP implementation the code never makes it into the BlueZ utilities. Another thing is that the USB kernel subsystem already has a full working and stable HID parser and it is not needed to do this work twice. This reimplementation of the HID profile from scratch has the goal to fix the current problems and come up with a complete and fully integrated implementation of the HID profile for Linux. Most of the new code is ready for testing.
Starting with the Linux kernel 2.6.6 and patch-2.6.6-mh1 it is possible to use the new Bluetooth Human Interface Device Protocol (HIDP) implementation. With the hidp kernel module and the hidd program from the bluez-utils package the Bluetooth HID support gets into new dimensions. With kernel 2.6.8-rc1 the HIDP module with boot protocol support is official part of the stable Linux kernel series. The HIDP support is fully supported by the bluez-utils-2.8 package.
Right now the following HID devices are known to work perfectly together with this implementation and actually every other new device should work, too.
|
To use a Bluetooth mouse or keyboard with Linux you need at least the Linux kernel 2.6.6-mh1. This means you have to install a vanilla 2.6 kernel with one of the latest Bluetooth patches. To enable the HIDP module the kernel option CONFIG_BT_HIDP must be selected. If this is done your new kernel includes full Bluetooth HID support.
linux:~# modinfo hidp author: Marcel Holtmann <marcel@holtmann.org> description: Bluetooth HIDP ver 0.2 version: 0.2 86C71232C213B652CB1A62D license: GPL alias: bt-proto-6 vermagic: 2.6.6-mh2 preempt PENTIUM4 gcc-3.3 depends: bluetooth,l2cap |
It seems that every Bluetooth HID implementation has its own characteristics. Even if they are based on standard implementations from CSR and Broadcom every device is different. The following pages gives some clues about the device specific behaviours.
Logitech cordless presenter and diNovo media desktop
Microsoft optical desktop and IntelliMouse
Apple wireless keyboard and mouse
EPoX Barton desktop and presenter
FrogPad Bluetooth iFrog
BlueTake and Higoto mouse
Broadcom dongles
Wiimote devices
Besides these devices there are also other Bluetooth HID products were nothing about is known at the moment. However they may work or may not work. These links point to the manufacturer websites.
Stowaway Bluetooth Wireless Keyboard
Nokia Wireless Keyboard
USB HID information and related specifications
Microsoft related HID documentation
HID questions and answers
The HID Page by Jan Axelson
| Copyright © 2003-2004 Marcel Holtmann | Created on September 7, 2003 Last modification on May 15, 2004 |