Aus Raspberry Pi Geek 04/2016

Bluetooth auf dem Raspberry Pi 3 einrichten (Seite 2)

Bluetoothctl-Kommandos

Kommando

Parameter

Beschreibung

list

Anzeige der installierten Controller

show [ctrl]

Bluetooth-Adresse

Information zum Controller

select

Bluetooth-Adresse

Setzen des Default-Controllers

devices

Liste der verfügbaren Geräte

paired-devices

Liste der gepaarten Geräte

power

on / off

Stromversorgung des Controllers ein / aus

pairable

on / off

Pairing-Modus des Controllers ein / aus

discoverable

on / off

Sichtbarkeit ein/aus

agent

on / off / capability

Agent ein / aus / mit vorgegebener Fähigkeit ein

default-agent

setzt aktuellen Agenten als Standard

scan

on / off

Scan nach Geräten ein / aus

info

Bluetooth-Adresse

Informationen zum Gerät

pair

Bluetooth-Adresse

Pairing mit dem Gerät einleiten

trust

Bluetooth-Adresse

dem Gerät vertrauen

untrust

Bluetooth-Adresse

dem Gerät nicht mehr vertrauen

block

Bluetooth-Adresse

das Gerät blockieren

unblock

Bluetooth-Adresse

blockiertes Gerät freigeben

remove

Bluetooth-Adresse

Gerät komplett entfernen

connect

Bluetooth-Adresse

Low-Level-Verbindung mit dem Gerät herstellen

disconnect

Bluetooth-Adresse

Verbindung trennen

version

Version anzeigen

quit

Programmende

Abbildung 2: Die Bluetooth-Schnittstelle lässt sich in Raspbian mit Bluetoothctl komplett im Terminal managen.

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.

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.

Abbildung 4: Mit Blueman verwalten Sie die Bluetooth-Funktionen über eine grafische Oberfläche.

Abbildung 4: Mit Blueman verwalten Sie die Bluetooth-Funktionen über eine grafische Oberfläche.

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben