Bluetooth-Gerät per Kommandozeile koppeln
Achtung!
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Hinweis:
Diese Howto-Anleitung wurde zuletzt von Newman68 am 25.03.2021 unter Ubuntu Mate 20.10 und Ubuntu Budgie 20.10 erfolgreich getestet.
Die Kopplung eines Ubuntu-Desktop-Rechners mit einem Bluetooth-Gerät kann normalerweise durch Bedienung in der GUI erfolgen, beispielsweise beim Gnome-Desktop im System-Menü (rechts oben) per Einstellungen → Bluetooth.
In diesem Howto wird am Beispiel des Bluetooth-Lautsprechers Yamaha YAS-106 ein alternativer Weg über die Kommandozeile beschrieben.
Anleitung¶
Diese Anleitung beruht auf im Internet gefundenen Blog-Einträgen.
Eine Kopplung zweier Bluetooth-Geräte erfordert immer drei Schritte:
Pairing: Die beiden Kommunikationspartner müssen wechselseitig die Bluetooth-Adresse der Gegenstelle kennen.
Trust: Sie müssen sich auch gegenseitig vertrauen. Dazu kann optional der Austausch von Passworten (PINs) vereinbart werden. Dies wird aber in diesem Howto nicht besprochen.
Connect: Es muss eine Verbindung aufgebaut werden. Ein Schließen dieser Verbindung bedeutet nicht Verlust des Vertrauens oder Vergessen der Adresse; somit kann später die Verbindung ohne die beiden ersten Schritte wieder hergestellt werden.
Voraussetzungen¶
Die Bluetooth-Schnittstelle muss natürlich eingeschaltet sein. Dies kann auf der Kommandozeile mit dem Befehl rfkill überprüft und ggf. auch geändert werden:
rfkill list rfkill unblock bluetooth
Bei manchen Desktop-Varianten muss man rfkill
als root ausführen, z.B. durch ein voran gestelltes sudo.
Die Aufhebung einer Blockierung auf Hardware-Ebene erfordert die Betätigung des Hardware-Schalters am Gerät.
Erstmalige Kopplung¶
Danach kann man mit dem Befehl
bluetoothctl
in den interaktiven Modus von bluetoothctl
wechseln, Rückmeldung bei Erfolg wie:
Agent registered [CHG] Controller C0:E4:34:2C:D1:C2 Pairable: yes
Innerhalb des Programms dann
[bluetooth]# scan on
eingeben - die Erfolgsmeldung lautet z.B. (mit einer Liste an gefundenen Bluetooth-Devices, angeführt vom eigenen Controller CHG):
Discovery started [CHG] Controller C0:E4:34:2C:D1:C2 Discovering: yes [NEW] Device 78:BD:BC:5F:57:58 [TV] UE48JU6450 [NEW] Device C8:84:47:3E:94:86 YAS-106 Yamaha [NEW] Device C8:B2:1E:58:64:2F SANITAS SBF70 [CHG] Device 78:BD:BC:5F:57:58 LegacyPairing: yes [NEW] Device 10:ED:0D:C8:01:BA 10-ED-0D-C8-01-BA [DEL] Device 10:ED:0D:C8:01:BA 10-ED-0D-C8-01-BA [NEW] Device 10:ED:0D:C8:01:BA 10-ED-0D-C8-01-BA ...
Mögliche Fehler¶
Ist der Bluetooth-Controller aus (z.B. wenn in /etc/bluetooth/main.conf der Controller durch den Befehl AutoEnable=false) defaultmäßig deaktiviert oder im Flugmodus, folgt eine Fehlermeldung (hier für den Flugmodus):
Failed to start discovery: org.bluez.Error.NotReady
Das Device ist bereits mit einem anderen Controller verbunden. Dann steht es diesem Rechner nicht zur Verfügung!
Wird das gesuchte Device aufgelistet, das fortlaufende Scannen mit dem Befehl
[bluetoooth]# scan off
stoppen, die Adresse des gesuchten Devices mit der Maus markieren & in de Zwischenablage kopieren Strg + ⇧ + C .
Mit
[bluetooth]# pairable on
den Controller bereit machen, sich einem Device als Controller anzubieten - Erfolgsmeldung lautet:
Changing pairable on succeeded
Dann tatsächlich den Controller dem gewünschten Device anbieten (pairing):
[bluetooth]# pair C8:84:47:3E:94:86
(Adresse aus der Zwischenablage einfügen mit Strg + ⇧ + V .)
Meldung:
Attempting to pair with C8:84:47:3E:94:86 [CHG] Device C8:84:47:3E:94:86 Connected: yes [CHG] Device C8:84:47:3E:94:86 UUIDs: 00001101-0000-1000-8000-00805f9b34fb [CHG] Device C8:84:47:3E:94:86 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device C8:84:47:3E:94:86 UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device C8:84:47:3E:94:86 ServicesResolved: yes [CHG] Device C8:84:47:3E:94:86 Paired: yes Pairing successful [DEL] Device 65:A7:98:66:90:98 65-A7-98-66-90-98 [DEL] Device E0:4F:43:A6:70:09 AbilityBT_A0HBKC001514 [DEL] Device 10:ED:0D:C8:01:BA 10-ED-0D-C8-01-BA [CHG] Device C8:84:47:3E:94:86 ServicesResolved: no [CHG] Device C8:84:47:3E:94:86 Connected: no [DEL] Device 78:BD:BC:5F:57:58 [TV] UE48JU6450 [DEL] Device C8:B2:1E:58:64:2F SANITAS SBF70
Das Device in die Liste der vertrauenswürdigen Geräte aufnehmen:
[bluetooth]# trust C8:84:47:3E:94:86
[CHG] Device C8:84:47:3E:94:86 Trusted: yes Changing C8:84:47:3E:94:86 trust succeeded
und schließlich die benutzbare Verbindung herstellen:
[bluetooth]# connect C8:84:47:3E:94:86
Attempting to connect to C8:84:47:3E:94:86 [CHG] Device C8:84:47:3E:94:86 Connected: yes Connection successful [CHG] Device C8:84:47:3E:94:86 ServicesResolved: yes
Nun sollte das Device systemweit benutzbar sein. Das Programm mit
[bluetooth]# exit
verlassen.
im Falle eines Lautsprechers sollte dieser jetzt als PulseAudio-Ausgabe aufgelistet werden:
pactl list sinks short
Wiederherstellung der Kopplung¶
Nach Abbau der Verbindung, z.B. nach einem Neustart muss die Bluetooth-Verbindung entweder
über den Bluetooth-Manager
oder über die Konsole mit
bluetoothctl [bluetooth]# connect C8:84:47:3E:94:86
erneuert werden. Pairing und Trust bleiben erhalten, bis man es explizit widerruft.
Links¶
Bluetooth-Konfiguration im Terminal mit bluetoothctl 🇩🇪 – im Blog von Michael Kofler (2016)
https://computingforgeeks.com/connect-to-bluetooth-device-from-linux-terminal/ 🇬🇧
https://www.makeuseof.com/manage-bluetooth-linux-with-bluetoothctl/ 🇬🇧