Support for Bluetooth Keyboards?

Maksim Yevmenkin maksim.yevmenkin at savvis.net
Mon Nov 27 15:49:56 PST 2006


Eric Anderson wrote:
> 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



beetle% fetch http://users.centtech.com/~anderson/freebsd/bt-mouse-dump.raw
fetch: http://users.centtech.com/~anderson/freebsd/bt-mouse-dump.raw: 
Forbidden

:(

max

> 
> 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
> 
> 
> 
> 



More information about the freebsd-bluetooth mailing list