Um auch über den Raspberry eine Bluetooth-Verbindung herstellen zu können, habe ich mir einen einfachen USB Bluetooth® 4.0 USB Mini Adapter von CSL besorgt. Die Installation und Einrichtung unter Raspbian ist relativ einfach und mit folgenden Schritten durchzuführen.

1. Installation der notwendigen Pakete

Bluez ist der offizielle Linux-Bluetooth-Protokollstack. Diese Pakete sind Open-Source und werden aktuell unter der GNU General Public License (GPL) verteilt.

sudo apt-get install bluetooth bluez-utils 

Optional können noch folgende Pakete installiert werden

sudo apt-get install blueman bluez-alsa

blueman: Blueman ist eine GTK+-Bluetooth-Verwaltung mit Bluez-D-Bus-Backend.
bluez-alsa: Dieses Paket enthält einen Treiber für die Anwendung der ALSA-Softwaresammlung.

Hinweis: Raspbian – Jessie

Hier steht das Paket „bluez-utils“ nicht mehr zur Verfügung. Es wird empfohlen das Paket „bluez“ zu installieren.

sudo apt-get install bluez

Zu beachten ist, dass dann auch die Befehle „bluez-simple-agent“ oder „bluez-test-input“ nicht mehr funktionierten.
Anstelle dieser Befehle kann dann die „bluetoothctl“-Anwendung verwendet werden.
Diese kann mit folgenden Befehl gestartet werden.

sudo bluetoothctl

2. Bluetooth Service prüfen

Es muss der entsprechende Service gestartet sein. Dies kann folgendermaßen geprüft werden

sudo service bluetooth status 

Sollte der Dienst nicht laufen, muss dieser gestartet werden.

sudo service bluetooth start

3. Benutzer der Gruppe „bluetooth“ hinzufügen

Damit ein Benutzer die Bluetooth-Funktionen benutzen kann, muss dieser in der entsprechenden Gruppe aufgenommen werden.

sudo gpasswd -a pi bluetooth 

(Benutzername „pi“ muss natürlich ggf. angepasst werden.)

Welche Benutzer sich in der Gruppe „bluetooth“ befinden, kann mittels folgenden Befehl geprüft werden.

cat /etc/group | grep bluetooth

4. Prüfen ob Bluetooth-Gerät erkannt wurde

Um sicherzustellen, dass das Bluetooth-Gerät erfolgreich erkannt wurde, sollte dies geprüft werden.

lsusb | grep -i bluetooth

Als Ausgabe sollte der Name des Gerätes erscheinen.

Bus 001 Device 004: ID 0b13:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Die Installation des Dongles ist dann hiermit abgeschlossen und es kann mit der Einrichtung der Bluetooth-Verbindung begonnen werden.

5. Bluetooth-Geräte suchen und Verbindung prüfen

Um alle Bluetooth-Geräte die sich in Reichweite befinden zu suchen, muss ein Scan durchgeführt werden.

sudo hcitool scan

Als Ergebnis sollten die Mac-Adressen der Bluetooth-Geräte aufgelistet werden.

Scanning ...
      AB:12:CD:45:EF:67       BTS-06

Soll nach Bluetooth Low Energy (LE) kurz BLE Geräten gesucht werden, gibt es hierfür einen eigenen Befehl

sudo hcitool lescan

Alternative unter „bluetoothctl“

„bluetoothctl“-Anwenung mit folgendem Befehl starten

sudo bluetoothctl

und nach Geräte scannen

scan on

Um zu prüfen, ob die Verbindung zu einem Gerät problemlos funktioniert, kann dies durch einen Ping an die Mac-Adresse sichergestellt werden.

sudo l2ping -c 1 AB:12:CD:45:EF:67

Ausgabe:

Ping: AB:12:CD:45:EF:67 from 00:1A:33:BC:31:1C (data size 44) ...
      0 bytes from AB:12:CD:45:EF:67 id 0 time 10.79ms
      1 sent, 1 received, 0% loss

6. Paarung der Geräte (Pairing)

Um das Pairing für die beiden Bluetooth-Geräte durchzuführen, wird neben der MAC-Adresse auch noch die Bluetooth-Adapter-Nummer (z. B. hci0) benötigt.

Diese kann wie folgt ausgelesen werden

hciconfig

Bevor die Paarung durchgeführt werden kann, muss sich das entsprechende Geräte im „Paarungsmodus“ bzw. „Pairing-Mode“ befinden.

Dann kann die Paarung wie folgt durchgeführt werden

bluez-simple-agent hci0 AB:12:CD:45:EF:67

Hier muss natürlich die entsprechende Mac-Adresse und Bluetooth-Adapter-Nummer angepasst werden.

Ist zur Herstellung eine Pin-Nummer notwendig, werden Sie aufgefordert diese einzugeben. Oft wird hier einfach „0000“ verwendet.

Sobald eine Aufforderung zur Bestätigung für den Passkey erscheint, muss „yes“ eingegeben und mit Enter bestätigt werden.

Hinweis: Dieser Schritt muss nur einmalig durchgeführt werden.

Alternative unter „bluetoothctl“

pair AB:12:CD:45:EF:67

Zur Prüfung, ob die Paarung erfolgreich durchgeführt wurde, kann dies durch die Auflistung der gepaarten Geräte getan werden.

bluez-test-device list

Alternative unter „bluetoothctl“

info AB:12:CD:45:EF:67

Fehlerbehebung

Bei diesem Schritt kommt es leider öfters zu Problemen. Im vielen Fällen sind diese Fehler aber einfach zu beheben.

Fehler:
Creating device failed: org.bluez.Error.ConnectionAttemptFailed: Page Timeout
Lösung:
Prüfen ob sich das Gerät auch wirklich im Pairing-Mode befindet und einfach noch mal versuchen.

Fehler:
Creating device failed: org.bluez.Error.AuthenticationRejected: Authentication Rejected
Lösung:
Wenn dieser Fehler auftritt, kann es an einem kleinen Fehler (Bug) im bluez-simple-agent Script liegen. Hier muss eine Anpassung vorgenommen werden, damit eine Ja/Nein Abfrage auf der Kommandozeile ausgegeben wird.

Vorab sollte sichergestellt werden, dass die falsche Einstellung „KeyboardDisplay“ vorliegt.

grep KeyboardDisplay /usr/bin/bluez-simple-agent 

Die Ausgabe sollte capability = „KeyboardDisplay“ sein.

Das Python-Script kann dann mit folgenden Befehlen angepasst werden.

sudo perl -i -pe 's/KeyboardDisplay/DisplayYesNo/' /usr/bin/bluez-simple-agent

Jetzt kann der vorherige Befehl zur Prüfung nochmals ausgeführt werden.
Dieser sollte jetzt capability = „DisplayYesNo“ ausgeben.

Die Schritt zur Paarung können jetzt erneut (erfolgreich) ausgeführt werden.

7. Verbindung herstellen

Je nachdem um welche Art von Gerät es sich handelt, muss eine Verbindung mit unterschiedlichen Befehlen durchgeführt werden.

Tastatur:

bluez-test-input connect AB:12:CD:45:EF:67

Lautsprecher:

bluez-test-audio connect AB:12:CD:45:EF:67

Hinweis: Es sollten ein paar Töne ausgegeben werden, wenn die Verbindung hergestellt wird.

Alternative unter „bluetoothctl“

connect AB:12:CD:45:EF:67

8. Gerät als „vertrauenswürdig“ (trusted device) einstellen

Um die Verbindung zu diesem Gerät nicht jedes Mal manuell durchführen zu müssen (z. B. nach einem Neustart), kann das Gerät als „vertrauenswürdig“ eingestellt werden.

bluez-test-device trusted AB:12:CD:45:EF:67 yes

Alternative unter „bluetoothctl“

trust AB:12:CD:45:EF:67

Zur Abfrage des „Trusted“ Status kann folgender Befehl verwendet werden.

bluez-test-device trusted AB:12:CD:45:EF:67

9. Gerät trennen und entfernen (unpair)

Die Trennung eines Gerätes kann mit diesem Befehl durchgeführt werden.

bluez-test-device disconnect AB:12:CD:45:EF:67

Alternative unter „bluetoothctl“

disconnect AB:12:CD:45:EF:67

Soll das Gerät komplett entfernt werden, kann folgender Befehl verwendet werden.

bluez-test-device remove AB:12:CD:45:EF:67

Manchmal kann es dann vorkommen, dass ein erneute Paarung fehlschlägt. Eventuell liegt es daran, dass sich im Ordner /var/lib/bluetooth noch eine Datei befindet, die genau so benannt ist wie die Mac-Adresse.

Diese muss dann manuell entfernt werden.

sudo rm -f /var/lib/bluetooth/AB:12:CD:45:EF:67

Alternative unter „bluetoothctl“

remove AB:12:CD:45:EF:67

Bluetooth Adapter (Dongle) am Raspberry Pi einrichten und Verbindung (Pairing) herstellen

3 Gedanken zu „Bluetooth Adapter (Dongle) am Raspberry Pi einrichten und Verbindung (Pairing) herstellen

  • Hi erst mal vielen Dank für das super ausführliche Tut. Ich bekomme es leider nicht hin. Soweit alles erfolgreich befolgt. Bei dem Befehl: „bluez-test-audio connect xx:xx:xx:xx:xx:xx“ piepst mein Bose Soundlink auch tatsächlich kurz bevor folgende Fehlermeldeung auftaucht: “

    File „/usr/bin/bluez-test-audio“, line 40, in
    audio.Connect()
    File „/usr/lib/python2.7/dist-packages/dbus/proxies.py“, line 70, in __call__
    return self._proxy_method(*args, **keywords)
    File „/usr/lib/python2.7/dist-packages/dbus/proxies.py“, line 145, in __call__
    **keywords)
    File „/usr/lib/python2.7/dist-packages/dbus/connection.py“, line 651, in call_blocking
    message, timeout)
    dbus.exceptions.DBusException: org.bluez.Error.Failed: Connect Failed

    Ich weiß leider nicht mehr weiter. Bin auch war das Rasp angeht totaler anfänger. Benutze auch nicht wie sie Raspbian sonder Musicbox. Hoffe sie können mir weiter helfen.

    Gruß Sascha

  • Hallo,
    kann dir leider nicht wirklich konkret weiterhelfen. Das Paring hat geklappt?
    Würde empfehlen mal die Log-Dateien zu prüfen, eventuell steht dort mehr an Informationen drin.
    Schau dochmal ob folgender Befehl etwas an Infos bringt
    dmsg | grep -i bluetooth

  • Morgen, vielen Dank für Ihre schnelle Antwort. Habe das Projekt Bluetooth mangels Zeit erst mal auf Eis gelegt. Über Klinke funktioniert es ja perfekt.
    Wünsche auf jeden Fall mal ein gutes Wochenende und bedanke mich für den tollen Blog.

    Gruß

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert