Non HID Bluetooth keyboard. Success!

glownan glownan at member.fsf.org
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  http://www.handhelds.org/moin/moin.cgi/kbdd 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 
http://www.dealextreme.com/details.dx/sku.6443 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
http://www.angstrom-distribution.org/feeds/2008/ipk/glibc/armv4t/base/kbdd_0.12+svn20061019-r0.1_armv4t.ipk

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.

#!/bin/sh

# Change this to suit your keyboard. 
KBADDRESS=00:11:22:33:44:55
KBPIN=0000
KBTYPE=btfoldable
RFCOMMPORT=0

KBDDPID=`pidof kbdd`

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

Hope it helps someone.

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



-- 
View this message in context: http://n2.nabble.com/Non-HID-Bluetooth-keyboard.-Success%21-tp1496389p1496389.html
Sent from the Openmoko Community mailing list archive at Nabble.com.





More information about the community mailing list