Habe eine wunderschöne Logitech MediaBoard Pro Bluetooth-Tastatur gekauft, die unter Ubuntu gut funktionierte. Nun habe ich aber mein System auf Debian Sid (Aptosid) umgestellt und die Benutzeroberfläche auf XBMC reduziert. (Richtig! Das soll jetzt ein HTPC sein!) Leider bietet XBMC keine Bluetooth-Dienste über deren Oberfläche an und so muss ich nun die Verbindung mit dem PC "von Hand" erledigen. Das habe ich folgendermaßen hinbekommen:
1. Bluetoothadapter aktivieren
Es scheint Bluetooth-Adapter zu geben, die nicht automatisch beim Einstecken oder nach dem Hochfahren "scharf" geschaltet werden. Zumindest ist meiner wohl einer davon. Wenn die Eingabe von
Code: Alles auswählen
hcitool dev
Code: Alles auswählen
hciconfig hci0 up
2. Gerätekennung herausbekommen
Gibt "hcitool dev" den Bluetooth-Adapter an, kann mittels
Code: Alles auswählen
hcitool scan
Code: Alles auswählen
00:07:61:F6:97:F7 Logitech Cordless MediaBoard Pro(TM)
Die Kopplung lässt sich nun durch Angabe des BT-Adapters, eines frei wählbaren vier- oder fünfstelligen PIN-Codes und der Gerätekennung des zu Koppelnden Gerätes durchführen
Code: Alles auswählen
bluetooth-agent --adapter hci0 1234 00:07:61:F6:97:F7
4. Gerät in Betrieb nehmen
Da die Kopplung nun erfolgreich durchgeführt und damit sicherheitstechnisch klar gestellt wurde, dass die BT-Tastatur die Erlaubnis hat, meinen Computer zu steuern, muss jetzt nur noch die BT-Tastatur mit dem BT-Adapter verbunden werden. Ab Bluez in der Version 4 müssen dazu eigentlich dbus-Befehle genutzt werden. Da ich bei dbus nicht durchblicke, habe ich das Paket bluez-compat installiert, dass es mir sehr einfach ermöglicht, die Verbindung mit nur einem einfachen Befehl zu vollziehen:
Code: Alles auswählen
hidd --connect 00:07:61:F6:97:F7
Jetzt aber kommen die Probleme:
Ist die BT-Tastatur einige Zeit nicht in Benutzung, trennt sie die Verbindung und schaltet auf Stromsparmodus. Will man sie wieder benutzen, kann sie sich nicht mehr mit dem Computer verbinden. Selbiges passiert nach einem Reboot. In Daten ausgedrückt sieht das so aus:
Code: Alles auswählen
:~# hcidump
HCI sniffer - Bluetooth packet analyzer ver 2.0
device: hci0 snap_len: 1028 filter: 0xffffffffffffffff
> HCI Event: Connect Request (0x04) plen 10
bdaddr 00:07:61:F6:97:F7 class 0x002540 type ACL
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
bdaddr 00:07:61:F6:97:F7 role 0x00
Role: Master
> HCI Event: Command Status (0x0f) plen 4
Accept Connection Request (0x01|0x0009) status 0x00 ncmd 1
> HCI Event: Role Change (0x12) plen 8
status 0x00 bdaddr 00:07:61:F6:97:F7 role 0x00
Role: Master
> HCI Event: Connect Complete (0x03) plen 11
status 0x00 handle 1 bdaddr 00:07:61:F6:97:F7 type ACL encrypt 0x00
> ACL data: handle 1 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 17 scid 0x0044
< HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2
handle 1
< ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0044 result 1 status 0
Connection pending - No futher information available
< ACL data: handle 1 flags 0x02 dlen 10
L2CAP(s): Info req: type 2
> HCI Event: Connection Packet Type Changed (0x1d) plen 5
status 0x00 handle 1 ptype 0x0018
Packet type: DM1 DH1
> HCI Event: Command Status (0x0f) plen 4
Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1
< HCI Command: Change Connection Packet Type (0x01|0x000f) plen 4
handle 1 ptype 0xcc18
Packet type: DM1 DM3 DM5 DH1 DH3 DH5
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Command Status (0x0f) plen 4
Change Connection Packet Type (0x01|0x000f) status 0x00 ncmd 1
> HCI Event: Connection Packet Type Changed (0x1d) plen 5
status 0x00 handle 1 ptype 0x0018
Packet type: DM1 DH1
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Read Remote Supported Features (0x0b) plen 11
status 0x00 handle 1
Features: 0xbc 0x02 0x04 0x38 0x08 0x00 0x00 0x00
< HCI Command: Remote Name Request (0x01|0x0019) plen 10
bdaddr 00:07:61:F6:97:F7 mode 2 clkoffset 0x0000
> HCI Event: Command Status (0x0f) plen 4
Remote Name Request (0x01|0x0019) status 0x00 ncmd 1
> ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Info rsp: type 2 result 0
Extended feature mask 0x0004
Bi-directional QoS
< ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0044 result 0 status 0
Connection successful
< ACL data: handle 1 flags 0x02 dlen 12
L2CAP(s): Config req: dcid 0x0044 flags 0x00 clen 0
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 185
< ACL data: handle 1 flags 0x02 dlen 18
L2CAP(s): Config rsp: scid 0x0044 flags 0x00 result 0 clen 4
MTU 185
> ACL data: handle 1 flags 0x02 dlen 18
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4
MTU 185
< ACL data: handle 1 flags 0x02 dlen 5
L2CAP(d): cid 0x0044 len 1 [psm 17]
HIDP: Control: Virtual cable unplug
< ACL data: handle 1 flags 0x02 dlen 12
L2CAP(s): Disconn req: dcid 0x0044 scid 0x0040
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> ACL data: handle 1 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 19 scid 0x0045
< ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0041 scid 0x0045 result 1 status 2
Connection pending - Authorization pending
< ACL data: handle 1 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0041 scid 0x0045 result 3 status 0
Connection refused - security block
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Remote Name Req Complete (0x07) plen 255
status 0x00 bdaddr 00:07:61:F6:97:F7 name 'Logitech Cordless MediaBoard Pro(TM)'
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 1 packets 1
> ACL data: handle 1 flags 0x02 dlen 12
L2CAP(s): Disconn rsp: dcid 0x0044 scid 0x0040
> HCI Event: Disconn Complete (0x05) plen 4
status 0x00 handle 1 reason 0x16
Reason: Connection Terminated by Local Host
Wäre dankbar, wenn mir jemand helfen könnte…
Grüße!