Howto: Logitech Bluetooth Maus M535 an Thinkpad T470 mit FreeBSD 13.1

fbsd470

Member
Wertes Forum,

ich habe mich hier extra angemeldet um mein kleines Howto zum erfolgreichen, dauerhaften Koppeln einer Logitech Bluetooth Maus M535 an ein Thinkpad T470 vorzustellen. Der ganze Prozess hatte mich etliche Stunden Probieren und viel Online Recherche gekostet, da das Koppeln an sich zwar recht zügig geklappt hat, aber immer nur bis zur ersten Unterbrechung der Verbindung. Sprich nach einem Neustart des Rechners bzw. Aus- und Einschalten der Maus war jedes Mal ein erneutes Pairing fällig - eher suboptimal.

Hier also meine Anleitung, vielleicht spart es ja dem ein oder anderen etwas Zeit. Wichtig: alle Schritte als root ausführen:

1) Infos mit pciconf zur Hardware suchen:
Code:
# pciconf -lv

iwm0@pci0:4:0:0:    class=0x028000 rev=0x3a hdr=0x00 vendor=0x8086 device=0x24f3 subvendor=0x8086 subdevice=0x1010
    vendor     = 'Intel Corporation'
    device     = 'Wireless 8260'
    class      = network

2) für die Intel 8260 Karte wird Firmware benötigt (Bug 237083):
Code:
# pkg install iwmbt-firmware

3) Benötigte Bluetooth Dienste in /etc/rc.conf eintragen:
Code:
sysrc hcsecd_enable="YES"
sysrc bthidd_enable="YES"
sysrc sdpd_enable="YES"

Laut Handuch soll ng_ubt_load="YES" in die /boot/loader.conf, das Modul wird jedoch automatisch gestartet und dieser Schritt kann entfallen.

4) Rechner neu starten, Bluetooth Adapter (device name) mit dmesg suchen (hier ubt0):
Code:
# dmesg | grep bt
ubt0 on uhub0
ubt0: <vendor 0x8087 product 0x0a2b, class 224/1, rev 2.00/0.01, addr 2> on usbus0

5) Bluetooth Adresse der Maus ermitteln, dazu zunächst den Bluetooth Dienst (neu) starten:
Code:
# service bluetooth restart ubt0
Tipp: Befehl ein zweites Mal wiederholen, falls folgender Fehler angezeigt wird:
/etc/rc.d/bluetooth: ERROR: Unable to setup Bluetooth stack for device ubt0

Anschließend die Maus in den Koppelmodus versetzen (blaue LED blinkt schnell), dann die Abfrage starten:
Code:
# hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
    BD_ADDR: 00:1f:20:f8:90:2f
    Page Scan Rep. Mode: 0x1
    Page Scan Period Mode: 00
    Page Scan Mode: 00
    Class: 00:25:80
    Clock offset: 0x29f8
Inquiry complete. Status: No error [00]

6) Bluetooth Adresse (für meine Maus ist das die 00:1f:20:f8:90:2f) in /etc/bluetooth/hosts eintragen, beliebigen Namen vergeben. (Dieser kann anschließend anstelle der Hex-Adresse verwendet werden.):
Code:
00:1f:20:f8:90:2f       M535

7) Nun die Daten der Maus zum Koppeln in /etc/bluetooth/hcsecd.conf eintragen, bdaddr wie oben, name beliebig.
Code:
device {
        bdaddr  00:1f:20:f8:90:2f;
        name    "M535";
        key     nokey;
        pin     "0000";
}

8) Jetzt kann gekoppelt werden, sicherheitshalber den Bluetooth Dienst nochmal neu starten
Code:
# service bluetooth restart ubt0
falls Fehler angezeigt wird, s. Punkt 5)

Die Maus erneut in den Koppelmodus versetzen (blaue LED blinkt schnell)

Den entscheidenden Befehl absetzen, nur mit Authentifizierung wird die Verbindung nach einem Reboot erneut aufgebaut:
Code:
# hccontrol -n ubt0hci write_authentication_enable 1

Verbindung zur Maus aufbauen:
Code:
# hccontrol -n ubt0hci create_connection 00:1f:20:f8:90:2f
BD_ADDR: M535
Connection handle: 256
Encryption mode: Disabled [0]

Danach die Bluetooth HID daemon Konfigurationsdatei erzeugen:
Code:
# bthidcontrol -a 00:1f:20:f8:90:2f query >> /etc/bluetooth/bthidd.conf

Datei /etc/bluetooth/bthidd.conf kontrollieren, diese sollte in etwa so aussehen:
Code:
device {
    bdaddr            00:1f:20:f8:90:2f;
    name            "Bluetooth Mouse M336/M337/M535";
    vendor_id        0x046d;
    product_id        0xb014;
    version            0x1200;
    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 
                ...
    };
}

Nun die eigentliche Kopplung durch einen Neustart dieser beiden Dienste initiieren:
Code:
# service hcsecd restart
# service bthidd restart

Jetzt sollte nach einigen Sekunden das Blinken in ein Dauerlicht übergehen und die Maus funktionieren. Ein paar Sekunden später geht die LED dann ganz aus. Falls das nicht beim ersten Versuch klappt, erneut eine Verbindung aufbauen:
Code:
# hccontrol -n ubt0hci create_connection 00:1f:20:f8:90:2f
BD_ADDR: M535
Connection handle: 256
Encryption mode: Disabled [0]

und nochmal den Dienst hcsecd neu starten:
Code:
# service hcsecd restart

ggf. diese Prozedur mehrfach wiederholen... Bei mir hat es beim ersten Versuch nicht geklappt.

Nach einem erfolgreichen Koppelprozess finden sich unter /var/db zwei Dateien. bthidd.hids enthält die Bluetooth Adresse der bekannten HIDs. hcsecd.keys enhält die Link-Keys der gekoppelten Geräte.
Letztere sollte in etwa wie folgt aussehen:
Code:
00:1f:20:f8:90:2f cf6fc48842b49542af7fc2a4ced9b009

Wenn die Datei leer ist, klappt bei der Logitech M535 eine erneute Verbindung nach einem Reboot bzw. nach dem Aus- und erneuten
Einschalten der Maus nicht mehr. Die LED blinkt dann langsamer als beim Koppeln und das Pairing muss erneut vorgenommen werden.

Sollten die Schritte bis Punkt 8 geklappt haben, aber partout kein Pairing zustande kommen will, kann der Prozess wie folgt zurückgesetzt und neu gestartet werden (vorher die Maus erneut in den Kopplungsmodus versetzen):
Code:
# rm -f /var/db/bthidd.hids /var/db/hcsecd.keys
# service bluetooth restart ubt0
# service hcsecd restart
# service bthidd restart


Hier noch die Links die mich zum Ziel geführt haben. Vielen Dank an die Verfasser:

https://people.freebsd.org/~rodrigc/doc/handbook/network-bluetooth.html
https://www.davidschlachter.com/misc/freebsd-intel-8265-bluetooth
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237083
https://notebook.niklaas.eu/freebsd-bluetooth-keyboard/
https://forums.freebsd.org/threads/logitech-k810-bluetooth-keyboard-updated-5-11-2014.39679/
 

fbsd470

Member
kleine Korrektur: der Befehl hccontrol -n ubt0hci write_authentication_enable 1 darf wohl erst nach dem Erzeugen der Datei /etc/bluetooth/bthidd.conf ausgeführt werden.
Hält man sich an die Reihenfolge wie unter 8) beschrieben, kann keine Verbindung aufgebaut werden und das Auslesen klappt auch nicht. Hab's eben nochmal nach einer Neuinstallation ausprobiert. Sorry für die Verwirrung...
 
Oben