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







