Hintergrund: Ich verwende mein Bluetooth-Headset als Audioausgang. Ich habe es durch die lange Liste von Anweisungen in der Dokumentation der BluetoothHeadset-Community zum Funktionieren gebracht und den Prozess der Aktivierung des Headsets als Standardaudioausgabe in einem Skript dank einer weiteren Frage automatisiert .
Da ich das Bluetooth-Headset jedoch sowohl mit meinem Telefon als auch mit meinem Computer verwende (und das Headset zwei Eingabeverbindungen nicht unterstützt), damit das Telefon die Verbindung nicht "stiehlt", wenn das Mobilteil eingeschaltet ist, zwinge ich das Headset in eine Erkennungsmodus, wenn eine Verbindung zum Computer hergestellt wird (das Telefon kann automatisch eine Verbindung herstellen).
Obwohl das Headset in Ordnung gepaart ist und sich in einem "normalen" Szenario automatisch verbinden würde, muss ich immer das kleine Bluetooth-Symbol im Infobereich verwenden, um eine Verbindung zu meinem Gerät herzustellen (siehe Screenshot).
Was ich vermeiden möchte: Diese GUI für die Verbindung zu einem bekannten und gekoppelten Bluetooth-Gerät:
Was ich stattdessen möchte: Ich möchte, dass Bluetooth genau das macht, was das Klicken auf das Verbindungselement in der GUI bewirkt, nur über die Befehlszeile. Ich möchte die Befehlszeile verwenden, um eine einzelne Tastenkombination für die Aktion zu erstellen, und muss nicht jedes Mal in der Benutzeroberfläche navigieren, wenn ich eine Verbindung zum Gerät herstellen möchte.
Die Frage: Wie kann ich versuchen, über die Befehlszeile eine Verbindung zu einem bestimmten, bekannten und gekoppelten Bluetooth-Gerät herzustellen ?
Weitere Frage: Wie kann ich feststellen, ob die Verbindung erfolgreich war oder nicht?
quelle
Antworten:
Bluetooth-Daemon
In der Standardinstallation wird im Hintergrund ein Daemon ( bluetoothd ) ausgeführt (aus der Datei ausgeführt
/etc/init.d/bluetooth
). Dieser Daemon kümmert sich um das Erkennen und Herstellen einer Verbindung zu bekannten Bluetooth-Geräten und kann mit Konfigurationsdateien in konfiguriert werden/etc/bluetooth
. Zum automatischen Verbinden eines Headsets sollte der folgende Eingang nicht kommentiertaudio.conf
sein (Entfernen#
):So starten Sie den Daemon - Typ
sudo /etc/init.d/bluetooth restart
.Anmerkung: Die Verwendung des Befehlszeilentools
sudo hcitool cc <MAC-Adress>
führte hier nicht zu einer stabilen Verbindung zu einem bekannten Gerät in der Testumgebung, als der Dämon ausgeführt wurde.DBus
Um ein getrenntes, aber physisch vorhandenes und gekoppeltes Headset anzuschließen, können Sie den D-Bus aus einem Skript verwenden. Hier ist ein Beispiel in Python:
Falls wir mehr als ein Bluetooth-Gerät haben, müssen wir das
devicePath
natürlich entsprechend anpassen . Das obige Beispiel verbindet aHeadset
. Ändern Sie die Schnittstelle auf ein anderes Protokoll für einen anderen Dienst (zAudioSink
. B. ).Pulseaudio
Wenn Sie die MAC-Adresse Ihres Bluetooth-Geräts kennen, können Sie es wie folgt als Ausgangssenke für pulseaudio verbinden:
Dabei ist xx_xx_xx_xx_xx_xx die MAC-Adresse (ersetzen Sie ':' durch '_', damit pulseaudio sie erkennt).
Siehe auch diese Antwort für weitere Details.
quelle
Sink bluez_sink.xx_xx_xx_xx_xx_xx does not exist.
Versucht sowohl Groß- als auch Kleinbuchstaben.bt
oderblue
ist in aufgeführtpacmd list-sinks
. (Es meldet nur 1 Waschbecken zur Verfügung.)Mit diesem Skript verbinde ich mein Bluetooth-Audiogerät. Wenn Ihr Headset bereits gekoppelt ist, sollten Sie in der Lage sein, das Headset auf die gleiche Weise mit org.bluez.Headset.Connect / Disconnect anstelle von org.bluez.Audiosink.Connect / Disconnect anzuschließen .
HTH!
quelle
16.04
, danke! andere, vergessen Sie nicht, dieon
Option an das Skript zu übergeben!Ich verwende i3 als Fenstermanager, daher ist das Bluetooth-Symbol in der Taskleiste nicht verfügbar. Aus irgendeinem Grund ist das Kontrollkästchen in den Einstellungen für die Einheit nicht empfindlich. Daher muss ich dies von Zeit zu Zeit tun, wenn meine Kopfhörer keine Verbindung herstellen.
Es scheint, dass ihre Dbus-API geändert
bluez
hat . Die Antwort unter Verwendung von scheint nicht mehr zu funktionieren. Stattdessen wird empfohlen, zu verwenden .org.bluez.Manager
ObjectManager
Hier ist ein aktualisiertes Python-Skript, das das erste nicht verbundene Bluetooth-Headset verbindet, das es findet (vermutlich enthält die Liste alle gekoppelten Geräte?):
Dieses Beispiel verwendet, wie das andere Beispiel in diesem Thread, das
dbus
Python-Paket. Auf Ubuntu 16.04 habe ich dies durch installiertapt-get install python-dbus
.Wenn Sie andere Kriterien erfüllen möchten, wird in diesem Dokument eine Liste der Eigenschaften angezeigt, die über dbus abgefragt werden können.
Ich habe dieses Skript in
~/.local/bin/bt-connect-headset
meinem gespeichert,PATH
damit ich es über den i3-Launcher ausführen kann. Machen Sie es ausführbar (chmod +x bt-connect-headset
), wenn Sie es als Befehl verwenden möchten.Dieses Skript wurde nur auf einem aktuellen Ubuntu 16.04 vom 28.09.2008 getestet.
quelle
2360344
anstelle von verwendet0x240404
.Disconnect()
Methode. Ich habe es nicht ausprobiert, aber es ist wahrscheinlich eine sichere Wette;).first unconnected bluetooth headset
: Wird das Headset (sofern es mit Strom versorgt wird) immer vor anderen Geräten wie Bluetooth-Lautsprechern verwendet (unabhängig von der Position in der Liste)? Das passiert in meinem Fall. - Auch, um die Verbindung zu trennen, kann ich es nicht tun, indem ich nur die letzte Zeile aufadapter.Disconnect()
Nachdem ich einige der oben genannten Dinge ausprobiert hatte (Skripte funktionierten bei mir nicht), fand ich die folgende Lösung.
Ermitteln Sie zunächst die MAC-Adresse des Geräts, zu dem Sie eine Verbindung herstellen möchten
Dies öffnet eine Shell und listet alle verfügbaren Geräte mit Adresse auf. ("Beenden", um die Shell zu verlassen und zur Eingabeaufforderung zurückzukehren)
Stellen Sie dann eine Verbindung zu einem XX: XX: XX: XX: XX: XX-Bluetooth-Gerät her:
trennen
habe eine ganze Weile danach gesucht - nichts schien zu funktionieren, fühlte sich so erleichtert, als ich es herausfand. Dachten, andere möchten vielleicht auch davon erfahren. :))
quelle
~$ bluetoothctl Agent registered [UE BOOM 2]#
. Danndisconnect "UE BOOM 2" Device UE BOOM 2 not available
.bluetoothctl
? Sie müssen die Befehle mit der MAC-Adresse des Geräts versorgen - das ist die Kombination von HEX-Werten im Format XX: XX: XX: XX: XX: XX: XX, wobei X entweder ein Buchstabe oder eine Zahl ist.echo -e 'connect CC:AF:78:AF:59:03' | bluetoothctl
ich zu bekommen:Agent registered [bluetooth]# connect CC:AF:78:AF:59:03 Device CC:AF:78:AF:59:03 not available