Non HID Bluetooth keyboard. Success!

glownan glownan at
Fri Nov 14 01:25:19 CET 2008

Hi list,

I recently bought a bluetooth keyboard that is not HID (I didn't even know
there was such a think. I thought all of them used the HID protocol). Then I
read on the wiki that kbdd 
could be useful for this, but didn't find anyone saying it works.

I have tried it and it works for me, so I'll let you know what I did in case
someone else wants to use this non standard keyboards. Mine is a MSI bk100  (you can find it
cheap on ebay) but I think it should work with others as well, as kbdd
support several keyboards.

1. I found an ipkg package for kbdd in angstrom so I used it instead of
compiling the source.

~#opkg install

2. Get the address of the keyboard 
~#hcitool scan
Scanning ...
	00:0F:F6:00:D9:05	BT-FoldableKB

3. Use rfcomm to bind the keyboard
~#rfcomm bind 0 00:0F:F6:00:D9:05

4. Load uinput module
~#modprobe uinput

5. Run passkey-agent in the background
~#passkey-agent 0000 00:0F:F6:00:D9:05 

6. Run kbdd in the background (you can specify a different type of keyboard
with the -t option, mine works well with btfoldable)
~#kbdd -p /dev/rfcomm0 -t btfoldable &

And that's all, you should be able to use your keyboard.

I also attach a small script I wrote to connect and disconnect the keyboard,
it have to be modified to suit your keyboard. An icon on the desktop to run
it is very handy, you just press the connect key of your keyboard and click
it to connect, and click it again when you want to disconnect the keyboard.


# Change this to suit your keyboard. 

KBDDPID=`pidof kbdd`

if [ -z "$KBDDPID" ] ; then
	modprobe uinput
	passkey-agent $KBPIN $KBADDRESS &
	kbdd -p /dev/rfcomm$RFCOMMPORT -t $KBTYPE &
	kill $KBDDPID
	PKAGENTID=`pidof passkey-agent`
	if [ ! -z "$PKAGENTID" ] ; then
	rfcomm release $RFCOMMPORT
	rmmod uinput

Hope it helps someone.

P.S. Make sure bluetooth is enabled, otherwise nothing of this is going to
work ;)

View this message in context:
Sent from the Openmoko Community mailing list archive at

More information about the community mailing list