Startseite>Bluetooth auf dem Raspberry Pi 3 einrichten
Aus Raspberry Pi Geek 04/2016

Bluetooth auf dem Raspberry Pi 3 einrichten

© Shane White, 123RF

Blueberry

Bernhard Bablok

Raspbian unterstützte schon immer Bluetooth. Dank günstiger USB-Dongles war es nie ein Problem, einen RasPi aufzurüsten. Der RasPi 3 beherrscht die Technik bereits ab Werk. Damit fällt die letzte Hürde, diesen Funkstandard zu nutzen.

Obwohl WLAN beim Einrichten einigen Aufwand erfordert, hat es sich als Funktechnik zum Übertragen größerer Datenmengen durchgesetzt. Im Nahbereich besitzt Bluetooth hingegen einige Vorteile. Obwohl Linux die Technik schon seit Langem unterstützt, fristete sie im Alltag eher ein Schattendasein. Dieser Artikel gibt eine Einführung in die Bluetooth-Architektur und erklärt, wie Linux den Standard unterstützt. Außerdem zeigen wir, welche Programme Sie für die Einrichtung benötigen. Einige Praxisbeispiele demonstrieren, dass der RasPi mithilfe von Bluetooth weitere Anwendungsgebiete abdeckt.

“Bluetooth” (englisch für Blauzahn) war der Codename eines Standardisierungsprojekts für den Nahfunk, der letztlich auch bei der Veröffentlichung der Technik erhalten blieb. Der Name ist eine Reverenz an den dänischen König Harald Blauzahn, der durch seine Kommunikationsfähigkeiten die verfeindeten Teile von Norwegen und Dänemark einte. Bei der Namenswahl spielte sicher eine Rolle, dass die Firmen Ericsson und Nokia maßgeblich an der Entwicklung des Standards beteiligt waren. Auch das aus den altnorwegischen Runen H und B bestehende Bluetooth-Logo erinnert an den Namensgeber.

Blau ist alle Theorie

Historisch gesehen entstand Bluetooth, um die Probleme von Infrarot-Verbindungen (IrDA) zu überwinden, die Sichtkontakt benötigen. Einsatzziel war die Kommunikation von Peripheriegeräten mit einem PC. Dementsprechend gering fiel die ursprünglich notwendige und vom Standard vorgegebene Datenrate aus: In der ersten Version betrug das theoretische Maximum 732,2 kbit/s. Heute liegt das Limit (seit BT 2.0 + EDR) bei 2,1 Mbit/s. Das Bluetooth-Modul auf dem Raspberry Pi 3 (Abbildung 1) arbeitet nach dem Standard Bluetooth 4.1 Low Energy.

Abbildung 1: Das Antennenmodul des Raspberry Pi 3 liegt zwischen GPIO und Display-Schnittstelle.

Abbildung 1: Das Antennenmodul des Raspberry Pi 3 liegt zwischen GPIO und Display-Schnittstelle.

Bluetooth funkt im 2,4 MHz-Band in 79 Kanälen von 2,402 bis 2,480 MHz. Bekannte Störer in diesem Bereich sind WLAN und die Mikrowelle, während DECT in Europa ein anderes Funkband nutzt. Diverse Techniken (Kanalspringen, Korrekturcodes) erhöhen die Robustheit und den Datendurchsatz, selbst wenn andere Geräte auf denselben Frequenzen funken.

Obwohl technisch meist für Punkt-zu-Punkt Verbindungen eingesetzt, spannen Bluetooth-Geräte ein kleines Netz mit bis zu acht Teilnehmern auf (die Adresse umfasst 3 Bit). Außerdem gibt es einen Parkmodus mit 8-Bit-Adresse, über den insgesamt 255 Geräte die Synchronisation untereinander aufrechterhalten. Es gibt einen Master, der den Slaves Zeitscheiben für die Kommunikation zuteilt. Geräte dürfen gleichzeitig an mehreren Pico-Netzen teilnehmen, aber nur einmal als Master.

Bluetooth stellt zwei physikalische Datenkanäle bereit, einmal für die synchrone Kommunikation (Sprache) und einmal für paketvermittelte Synchronisation (Daten). Beides passiert auch quasi gleichzeitig: So übertragen Headsets die Befehle für die Lautstärkeregelung über den Datenkanal parallel zur Sprachverbindung.

Diese und weitere technische Details, zum Beispiel zur Weiterentwicklung des Protokolls oder zur Verbindungsaufnahme und Sicherheit, lassen sich etwa im Wikipedia-Artikel [1] zum Thema vertiefen. Die oben beschriebenen Möglichkeiten der Bluetooth-Hardware müssen zusätzlich aber auch von der Software unterstützt werden, dem sogenannten Bluetooth-Stack.

Bluetooth für Linux

Unter Linux entwickelt das Projekt Bluez [2] den Software-Stack für das Bluetooth-Protokoll. Da Linux auch die Basis von Android stellt, gilt der Stack als gut gepflegt. Allerdings stellen die Low-Level-Funktionen nur die halbe Miete dar. Da Bluetooth nicht die Art und Weise festlegt, wie die Komponenten miteinander kommunizieren, gibt es auch Protokolle (im Bluetooth-Jargon: “Profile”), die auf Anwendungsseite die Kommunikation regeln. Als Beispiel sei ein Headset genannt: Es muss sowohl Audio-Streams entgegennehmen als auch Telefonfunktionen unterstützen.

Im Rahmen des Bluez-Projekts pflegen die Entwickler auch grundlegende Profile [3]. Nicht jedes Profil schafft es jedoch in den Bluez-Kern [4]. Die Dateitransferprofile etwa stellt obexd bereit, die A2DP- und HFS-Profile benötigen hingegen PulseAudio. Für den praktischen Einsatz bedeutet all das, dass Sie für den vollen Funktionsumfang von Bluetooth eine Reihe von Softwarepaketen installieren müssen. Raspbian wäre aber nicht Raspbian, wenn das Standard-Image nicht schon das meiste erledigt hätte.

Blaufunk auf dem RasPi

Als Grundlage dieses Artikels dient das Raspbian-Image vom 18.03.2016. Das “Jessie”-Image ist ein Muss für den RasPi 3, aber auch ältere Modelle profitieren von dem aktualisierten Bluetooth-Stack. Nach dem Start und der grundsätzlichen Einrichtung von Raspbian prüfen Sie, ob Bluetooth tatsächlich läuft (Listing 1).

Die Fehlermeldung bezüglich des Sap-Treibers können Sie ignorieren. Hier handelt es sich nicht um fehlende Software der deutschen Softwareschmiede, sondern um eine Bluetooth-Komponente für den Zugriff auf SIM-Karten. Mit dem Zusatz --noplugin=sap am Ende der Zeile ExecStart=/usr/lib/bluetooth/bluetoothd in der Konfigurationsdatei /lib/systemd/system/bluetooth.service ließe sich das Laden dieser Komponente deaktivieren [5].

Neben der Statusabfrage steuern Sie analog zum gezeigten Systemctl-Kommando den im Hintergrund aktiven Bluetooth-Dienst. Dazu ersetzen Sie status durch start, stop beziehungsweise restart.

Ganz stabil läuft Bluetooth auf dem Pi noch nicht: Während der Arbeiten an diesem Artikel verabschiedete sich sogar die Bluetooth-Hardware komplett, ein Neustart war fällig. Neben dem Bluetooth-Service bringt “Jessie” noch eine Reihe von Kommandos mit, die Sie zum Steuern und Verwalten von Bluetooth-Verbindungen benötigen. Es gibt auch eine grafische Oberfläche, auf die wir später noch im Detail eingehen.

Listing 1

 

$ sudo systemctl status bluetooth
* bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled)
   Active: active (running) since Tue 2016-05-03 12:40:01 UTC; 5s ago
     Docs: man:bluetoothd(8)
 Main PID: 8554 (bluetoothd)
   Status: "Running"
   CGroup: /system.slice/bluetooth.service
           |-8554 /usr/lib/bluetooth/bluetoothd
May 03 12:40:01 raspberrypi bluetoothd[8554]: Bluetooth daemon 5.23
May 03 12:40:01 raspberrypi systemd[1]: Started Bluetooth service.
May 03 12:40:01 raspberrypi bluetoothd[8554]: Starting SDP server
May 03 12:40:01 raspberrypi bluetoothd[8554]: Bluetooth management interface 1.9 initialized
May 03 12:40:01 raspberrypi bluetoothd[8554]: Sap driver initialization failed
May 03 12:40:01 raspberrypi bluetoothd[8554]: sap-server: Operation not permitted (1)>

Unter Kontrolle

Das Tool der Wahl für das Verwalten des Bluetooth-Stacks unter “Jessie” ist Bluetoothctl. Es handelt sich dabei nicht nur um ein einfaches Kommandozeilenprogramm, sondern um eine eigene Kommandoshell. Aus ihr heraus setzen Sie die Kommandos für Statusabfragen, Scans, Pairings und so weiter ab. Die Tabelle “Bluetoothctl-Kommandos” stellt die verfügbaren Kommandos in einer Übersicht zusammen, die Abbildung 2 zeigt die Ausgabe einiger Statusabfragen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland