Bluetoothctl-Kommandos
|
Kommando |
Parameter |
Beschreibung |
|---|---|---|
|
|
– |
Anzeige der installierten Controller |
|
|
|
Information zum Controller |
|
|
|
Setzen des Default-Controllers |
|
|
– |
Liste der verfügbaren Geräte |
|
|
– |
Liste der gepaarten Geräte |
|
|
|
Stromversorgung des Controllers ein / aus |
|
|
|
Pairing-Modus des Controllers ein / aus |
|
|
|
Sichtbarkeit ein/aus |
|
|
|
Agent ein / aus / mit vorgegebener Fähigkeit ein |
|
|
– |
setzt aktuellen Agenten als Standard |
|
|
|
Scan nach Geräten ein / aus |
|
|
|
Informationen zum Gerät |
|
|
|
Pairing mit dem Gerät einleiten |
|
|
|
dem Gerät vertrauen |
|
|
|
dem Gerät nicht mehr vertrauen |
|
|
|
das Gerät blockieren |
|
|
|
blockiertes Gerät freigeben |
|
|
|
Gerät komplett entfernen |
|
|
|
Low-Level-Verbindung mit dem Gerät herstellen |
|
|
|
Verbindung trennen |
|
|
– |
Version anzeigen |
|
|
– |
Programmende |

Abbildung 2: Die Bluetooth-Schnittstelle lässt sich in Raspbian mit Bluetoothctl komplett im Terminal managen.
Die Kommandos list und show zeigen die lokalen Bluetooth-Geräte, beim RasPi 3 also den eingebauten Broadcom-Chip. Das Show-Kommando führt zudem die unterstützten Profile und somit die gebotenen Funktionen auf. Sichtbare Fremdgeräte dagegen listet das Kommando devices auf. Wie in Abbildung 2 zu sehen, setzt das einen aktiven Scan-Vorgang voraus, den Sie mit scan on anstoßen. Analog schaltet das Kommando scan off die Suchfunktion wieder aus.
Die interaktive Bluetoothctl-Shell unterstützt die üblichen Funktionen der Bash, also das Blättern und Suchen in der Kommandohistorie, das Vervollständigen per [Tab] und das Editieren von Kommandos. Mit help gibt die Shell eine Übersicht der verfügbaren Kommandos. Die Tab-Vervollständigung erleichtert insbesondere beim Eingeben der kryptischen Bluetooth-Adressen für die Geräte das Leben.
Bluetooth-Geräte koppeln
Unter dem Begriff Pairing (deutsch: paaren) versteht man den Prozess, mit dem sich Bluetooth-Geräte finden, verbinden und vertrauen. Dafür muss das eigene Bluetooth-Gerät für andere sichtbar sein. Das aktivieren Sie mit dem Bluetoothctl-Befehl discoverable on. Danach erscheint der RasPi solange beim Suchen anderer Geräte, bis Sie die Funktion wieder deaktivieren. In der Konfigurationsdatei /etc/bluetooth/main.conf lässt sich jedoch auch eine Zeitdauer vorgeben. Mit pairable on erlauben Sie das Pairen von Fremdgeräten aus. Weiterhin benötigen Sie für das Pairing ein Programm, das die Verbindung tatsächlich entgegennimmt. Dies erledigt ein in Bluetoothctl eingebautes Tool, der sogenannte Agent.
Die beiden Befehle agent on und default-agent starten den Agenten und konfigurieren ihn als Standardagent, der für alle Verbindungen verantwortlich zeichnet. Damit steht alles für die Verbindungsaufnahme bereit, Sie müssen nur noch das beteiligte Gerät sichtbar schalten. Smartphones besitzen dafür ein spezielles Menü. Bei aktuellen Android-Geräten genügt es in der Regel, unter Einstellungen den Dialog Bluetooth zu öffnen, damit das Device automatisch das Pairing aktiviert. Im Test kam auch eine Bluetooth-Tastatur mit Mousepad von 1byone (Modell ODE00-0713) zum Einsatz. Hier schaltet die Tastenkombination [Fn]+[C] das Pairing ein (Abbildung 3).

Abbildung 3: Bei manchen Bluetooth-Tastaturen lässt sich der Pairing-Modus über eine Funktionstaste aktivieren.
Mit pair Bluetooth-Adresse leitet der RasPi das Pairing ein. Die Tastatur generiert daraufhin eine Einmal-PIN und sendet sie an den Rechner, wo der Agent sie anzeigt. Eingegeben wird die PIN aber auf der Tastatur – das stellt sicher, dass beide Geräte unter Ihrer Kontrolle stehen. Ein nachfolgendes trust Bluetooth-Adresse speichert die Verbindung dauerhaft. Listing 2 zeigt den gesamten Ablauf.
Nach einem Neustart verbinden sich beide Geräte wieder automatisch, sobald sie in Reichweite kommen – den hier beschriebenen Vorgang müssen Sie also nur einmal durchlaufen. Manchmal ist aber etwas Geduld gefragt, denn der RasPi 3 bootet so schnell, dass Bluetooth nicht mitkommt. Zurücksetzen (löschen) können Sie die gespeicherte Verbindung über remove MAC-Adresse.
Listing 2
$ bluetoothctl
[NEW] Controller B8:27:EB:DC:B4:BC raspberrypi [default]
# discoverable on
Changing discoverable on succeeded
[CHG] Controller B8:27:EB:DC:B4:BC Discoverable: yes
# pairable on
Changing pairable on succeeded
# agent on
Agent registered
# default-agent
Default agent request successful
[NEW] Device 6F:81:25:93:AC:3E 6F-81-25-93-AC-3E
# scan on
Discovery started
[CHG] Controller B8:27:EB:DC:B4:BC Discovering: yes
[NEW] Device C4:3A:BE:06:98:8A XperiaZ3
# pair C4:3A:BE:06:98:8A
Attempting to pair with C4:3A:BE:06:98:8A
[CHG] Device C4:3A:BE:06:98:8A Connected: yes
[agent] Confirm passkey 782895 (yes/no): yes
[CHG] Device C4:3A:BE:06:98:8A Modalias: usb:v0FCEp01BAd0010
[CHG] Device C4:3A:BE:06:98:8A UUIDs:
00001101-0000-1000-8000-00805f9b34fb
00001105-0000-1000-8000-00805f9b34fb
[...]
[CHG] Device C4:3A:BE:06:98:8A Paired: yes
[CHG] Device C4:3A:BE:06:98:8A Connected: no
[CHG] Controller B8:27:EB:DC:B4:BC Discoverable: no
# trust C4:3A:BE:06:98:8A
[CHG] Device C4:3A:BE:06:98:8A Trusted: yes
Changing C4:3A:BE:06:98:8A trust succeeded
Mehr Komfort per GUI
Das hier beschriebene Verfahren stellt die einzige Möglichkeit dar, bei RasPis ohne (dauerhaften) Monitoranschluss ein Bluetooth-Gerät mit dem Mini-Rechner zu verbinden. Betreiben Sie den Mini-Rechner hingegen mit angeschlossenem Monitor und grafischer Oberfläche, dann bringt eine GUI etwas mehr Komfort. Das dafür nötige Paket blueman finden Sie in den Paketquellen von Raspbian (Listing 3).
Listing 3
$ sudo apt update $ sudo apt install blueman
Falls Sie kein Headless-System betreiben, dann lohnt sich der Einsatz von Blueman auf alle Fälle. Es gilt zwar nicht als völlig stabil und ausgereift, erfüllt aber in der Regel seinen Zweck sehr gut. Im Testalltag traten keine Abstürze auf, lediglich das Pairing über die Oberfläche funktionierte nicht immer zuverlässig.
Nach der Installation finden Sie den grafischen Bluetooth-Manager im Menü und in der Taskleiste ein Applet für den schnellen Zugriff. Über das Programm entdecken Sie die vorhandenen Geräte in der Umgebung sowie deren Status (pairing, trust, etc.). Außerdem lassen sich diverse Einstellungen modifizieren und die Sichtbarkeit des Bluetooth-Adapters ändern (Abbildung 4). Möchten Sie auf die Schnelle eine Datei an ein angeschlossenes Gerät senden, können Sie auch das über die Oberfläche initiieren – auf der Kommandozeile glückte es dem Autor nicht.
Virtuelles BT-Keyboard
Das Steuern eines RasPi über eine Bluetooth-Tastatur ist sehr nützlich, versagt aber bei Systemen ohne Bildschirm: Die Tastatur hängt hier analog zu einer kabelgebundenen Tastatur lokal am Rechner. Bei Headless-Systemen erfolgt jedoch normalerweise der Zugriff über das Netzwerk. Bluetooth eröffnet hier aber eine Alternative, denn es stellt auch einen seriellen Port bereit.
Serielle Ports gibt es seit den Urzeiten des Computers. Damals waren Rechner noch über Wählleitungen an die Welt angeschlossen, auf der anderen Seite der Leitung stand ein Terminal. Beide Seiten existieren noch heute, aber inzwischen virtualisiert und meist völlig transparent für den Benutzer. Für eine serielle Leitung über Bluetooth bedarf es jedoch einiger Eingriffe.
Zuerst kopieren Sie die Service-Definition (Listing 4) und passen sie gemäß Listing 5 an. Die Änderung besteht darin, den Bluetooth-Daemon in Zeile 8 mit dem Parameter -C (Kompatibilitätsmodus) aufzurufen und die Zeile 9 einzufügen. Diese teilt dem Bluetooth-Stack mit, dass ab jetzt auch serielle Verbindungen möglich sein sollen.
Das Tool für serielle Bluetooth-Verbindungen heißt Rfcomm, für den automatischen Start sorgt die Service-Definition in Listing 6. Die Zeilen des Listings kopieren Sie in eine neue Datei /etc/systemd/system/rfcomm.service und führen dann das Kommando sudo systemctl enable rfcomm aus.






