Support for Bluetooth Keyboards?
Eric Anderson
anderson at centtech.com
Mon Nov 27 13:01:55 PST 2006
On 11/27/06 14:20, Maksim Yevmenkin wrote:
> Eric Anderson wrote:
>> On 11/27/06 12:06, Maksim Yevmenkin wrote:
>>> Alexandre "Sunny" Kovalenko wrote:
>>>> On Sun, 2006-11-26 at 00:54 +0100, Jona Joachim wrote:
>>>>> Hi!
>>>>> I wanted to know if Bluetooth keyboards are likely to work on FreeBSD.
>>>>> I'm looking at this marvellous object to be precise:
>>>>> http://www.thinkgeek.com/computing/input/8193/
>>>>>
>>>>> They say that they "were able to get the Bluetooth Virtual Laser
>>>>> Keyboard to work with Mac OSX using the built-in bluetooth support in
>>>>> the OS."
>>> then it should work in releng_6 and -current.
>>>
>>>> I am running Apple Bluetooth keyboard on -CURRENT. I order to accomplish
>>>> that, I have followed steps outlined by Eric Anderson here
>>>>
>>>> http://destari.blogspot.com/2006/01/setting-up-bluetooth-mouse-on-freebsd.html
>>>>
>>>>
>>>> There seems to be a quirk in the bthidd which causes it reattach
>>>> keyboard every couple of minutes, so I am accustomed to seeing vkbd
>>>>> 10000 being attached but these seem to be harmless enough. YMMV,
>>>> though.
>>> hmmm... i'd like to get more information on this. does this happen
>>> when you type on the keyboard? or when keyboard is idle?
>>>
>>> if this happens when the keyboard is idle, then, i'd guess, the
>>> keyboard simply kills the bluetooth connection to conserve battery. if
>>> bluetooth connection was in fact killed then bthidd(8) will close
>>> vkbd(4) device and it will, in turn, detach vkbd(4) keyboard.
>>>
>>> in any case, could you please get an hci dump (binary) when this
>>> happens and sent it to me? or could you please tell me how to
>>> reproduce this locally?
>> I see something like this too, but with mice. I use a microsoft
>> bluetooth explorer mouse, and when it disconnects and goes into battery
>> sleep mode, and then comes back, it registers a new vkbd device. Here's
>> some snippets:
>
> [...]
>
> hmm... could you please post hid descriptor from your microsoft
> bluetooth explorer mouse?
# bthidcontrol -a msmouse dump
Collection page=Generic_Desktop usage=Mouse
Collection page=Generic_Desktop usage=Pointer
Input id=2 size=1 count=1 page=Button usage=Button_1 Variable, logical
range 0..1
Input id=2 size=1 count=1 page=Button usage=Button_2 Variable, logical
range 0..1
Input id=2 size=1 count=1 page=Button usage=Button_3 Variable, logical
range 0..1
Input id=2 size=1 count=1 page=Button usage=Button_4 Variable, logical
range 0..1
Input id=2 size=1 count=1 page=Button usage=Button_5 Variable, logical
range 0..1
Input id=2 size=3 count=1 page=0x0000 usage=0x0000 Const, logical
range 0..1
Input id=2 size=8 count=1 page=Generic_Desktop usage=X Variable
Relative, logical range -127..127
Input id=2 size=8 count=1 page=Generic_Desktop usage=Y Variable
Relative, logical range -127..127
Input id=2 size=8 count=1 page=Generic_Desktop usage=Wheel Variable
Relative, logical range -127..127
Input id=2 size=8 count=1 page=Consumer usage=AC_Pan Variable
Relative, logical range -127..127
End collection
Feature id=2 size=1 count=1 page=Generic_Desktop usage=0x004b Variable,
logical range 0..1
Feature id=2 size=7 count=1 page=0x0000 usage=0x0000 Const, logical
range 0..1
End collection
Collection page=Consumer usage=Consumer_Control
Collection page=Generic_Desktop usage=Mouse
Input id=3 size=2 count=1 page=Microsoft usage=0xfe01 Variable,
logical range 0..3
Input id=3 size=1 count=1 page=Microsoft usage=0xfe00 Variable,
logical range 0..1
Input id=3 size=5 count=1 page=0x0000 usage=0x0000 Const, logical
range 0..1
End collection
End collection
Collection page=Consumer usage=Consumer_Control
Collection page=Generic_Desktop usage=Mouse
Input id=4 size=8 count=1 page=Consumer usage=AC_Pan Variable
Relative, logical range -127..127
Feature id=4 size=1 count=1 page=Microsoft usage=0xff04 Variable,
logical range 0..1
Feature id=4 size=1 count=1 page=Microsoft usage=0xff06 Variable,
logical range 0..1
Feature id=4 size=1 count=6 page=0x0000 usage=0x0000 Const, logical
range 0..1
End collection
End collection
# bthidcontrol -a msmouse query
device {
bdaddr 00:50:f2:e9:a1:f1;
control_psm 0x11;
interrupt_psm 0x13;
reconnect_initiate true;
battery_power true;
normally_connectable false;
hid_descriptor {
0x05 0x01 0x09 0x02 0xa1 0x01 0x85 0x02
0x09 0x01 0xa1 0x00 0x05 0x09 0x19 0x01
0x29 0x05 0x15 0x00 0x25 0x01 0x75 0x01
0x95 0x05 0x81 0x02 0x75 0x03 0x95 0x01
0x81 0x01 0x05 0x01 0x09 0x30 0x09 0x31
0x09 0x38 0x15 0x81 0x25 0x7f 0x75 0x08
0x95 0x03 0x81 0x06 0x05 0x0c 0x0a 0x38
0x02 0x95 0x01 0x81 0x06 0xc0 0x05 0x01
0x09 0x4b 0x15 0x00 0x25 0x01 0x75 0x01
0xb1 0x02 0x75 0x07 0xb1 0x01 0xc0 0x05
0x0c 0x09 0x01 0xa1 0x01 0x85 0x03 0x05
0x01 0x09 0x02 0xa1 0x02 0x06 0x00 0xff
0x15 0x00 0x25 0x03 0x75 0x02 0x95 0x01
0x0a 0x01 0xfe 0x81 0x02 0x25 0x01 0x75
0x01 0x0a 0x00 0xfe 0x81 0x02 0x75 0x05
0x81 0x01 0xc0 0xc0 0x05 0x0c 0x09 0x01
0xa1 0x01 0x85 0x04 0x05 0x01 0x09 0x02
0xa1 0x02 0x05 0x0c 0x0a 0x38 0x02 0x75
0x08 0x95 0x01 0x15 0x81 0x25 0x7f 0x81
0x06 0x06 0x00 0xff 0x0a 0x04 0xff 0x0a
0x06 0xff 0x15 0x00 0x25 0x01 0x75 0x01
0x95 0x02 0xb1 0x02 0x95 0x06 0xb1 0x01
0xc0 0xc0
};
}
> also, binary hci dump (that captures detach/reattach event) would be nice.
Here:
http://users.centtech.com/~anderson/freebsd/bt-mouse-dump.raw
and corresponding log messages:
Nov 27 14:45:44 neutrino bthidd[833]: Remote device 00:50:f2:e9:a1:f1
has closed interrupt connection
Nov 27 14:47:31 neutrino kernel: kbd1 at vkbd9
Nov 27 14:47:31 neutrino bthidd[833]: Accepted control connection from
00:50:f2:e9:a1:f1
Nov 27 14:47:31 neutrino bthidd[833]: Accepted interrupt connection from
00:50:f2:e9:a1:f1
Eric
--
------------------------------------------------------------------------
Eric Anderson Sr. Systems Administrator Centaur Technology
An undefined problem has an infinite number of solutions.
------------------------------------------------------------------------
More information about the freebsd-bluetooth
mailing list