Um Ihren Ubuntu-Rechner als a2dp-Bluetooth-Gerät zu verwenden, müssen Sie ihn zunächst so konfigurieren, dass er sich als "a2dp sink" -Endpunkt registriert.
Das Paket bluez in Ubuntu (10.04 und höher) enthält ein Dienstprogramm namens sdptool , mit dem überprüft werden kann, ob ein Bluetooth-Gerät als a2dp-Senke konfiguriert ist oder nicht. Hier ist die Ausgabe von sdptool, die mit meinem Bluetooth-Headset ausgeführt wird (die Adresse stammt aus dem Dialogfeld "Bluetooth-Einstellungen" im Gnome-Control-Center):
$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
"Audio Sink" (0x110b)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
$
und hier ist die Ausgabe, wenn sie auf meinem lokalen Ubuntu-Rechner ausgeführt wird:
$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$
Dies zeigt, dass der Ubuntu-Rechner sich nicht als a2dp-Senke bewirbt. Es wirbt jedoch selbst als a2dp-Quelle:
$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x102
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0102
Auf diese Weise kann das Ubuntu-Gerät ordnungsgemäß mit dem Headset als Audioquelle gekoppelt werden. Die Verwendung des Ubuntu-Geräts als Ausgabe (Senke) für Bluetooth-Audio ist jedoch nicht möglich.
Wenn Sie /etc/bluetooth/audio.conf
Änderungen vornehmen, können Sie die Unterstützung von a2dp sink aktivieren, indem Sie diese Zeile unterhalb des [General]
Abschnitts einfügen :
Enable=Source
Dies wird beide falsch benannt - da wir hier die Unterstützung für Bluetooth-Senken und nicht die Unterstützung für Quellen hinzufügen - und widerspricht dem Kommentar in dieser Datei, der besagt, dass alle implementierten Dienste standardmäßig aktiviert sind. :(
Nachdem Sie diese Änderung vorgenommen haben, müssen Sie bluetoothd durch Ausführen neu starten sudo service bluetooth restart
.
Wenn Sie Ihr Android-Gerät und Ihren Ubuntu-Computer zuvor gekoppelt haben, während Sie diese Funktion nutzen, müssen Sie die Kopplung auf beiden Seiten löschen und erneut koppeln, damit Android Ubuntu als verfügbares Audiogerät erkennt.
Sobald Sie dies getan haben, sollte das Android-Gerät unter PulseAudio als Eingabegerät angezeigt werden. Wenn PulseAudio die neue Bluetooth-Audioquelle nicht erkennt, müssen Sie möglicherweise das Bluetooth-Modul über die Befehlszeile installieren und laden:
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover
Dann müssen Sie PulseAudio anweisen, diesen Audioeingang über eine Loopback-Verbindung (eine gerade Linie von einer Quelle zu einer Senke) zu Ihrem Ausgang / Ihrer Senke (wie Ihren Lautsprechern oder einem Bluetooth-Headset) zu leiten.
In späteren Versionen von PulseAudio ist möglicherweise eine Modul-Bluetooth-Richtlinie enthalten, und es wurde möglicherweise bereits ein Loopback-Gerät für Sie eingerichtet. Dies scheint jedoch nicht der häufigste Fall zu sein.
Eine halbautomatische Methode zum Einrichten der Loopback-Verbindung - wenn Sie auch das GUI-Programm pavucontrol installiert haben - besteht darin, das Loopback-Modul zu laden und mit pavucontrol zu konfigurieren, da PulseAudio die Einstellungen speichert. Das Laden des Moduls erfolgt über den Befehl mit pactl:
pactl load-module module-loopback
Keine Angst, wenn Sie noch nichts hören oder merkwürdige Rückkopplungseffekte erhalten, müssen Sie dem neu erstellten Gerät mitteilen, von welcher Quelle die Eingabe stammt und von welcher Senke die Ausgabe zuerst gesendet werden soll.
Öffnen Sie pavucontrol und öffnen Sie die Registerkarte Konfiguration. Stellen Sie sicher, dass Ihr Bluetooth-Gerät hier angezeigt wird (nachdem Sie es mit blueman-manager oder einem anderen Bluetooth-Tool gekoppelt haben) und das Profil auf A2DP eingestellt ist. Wechseln Sie zur Registerkarte Eingabegeräte und stellen Sie sicher, dass Ihr Gerät auch hier angezeigt wird und nicht stummgeschaltet ist. Wechseln Sie nun zur Registerkarte Aufnahme, und stellen Sie sicher, dass die neu erstellte Loopback-Verbindung Ihr Gerät als Quelle verwendet. Aktivieren Sie dazu das Kontrollkästchen neben der Schaltfläche zum Stummschalten. Wechseln Sie zur Registerkarte Wiedergabe, um die Senke auszuwählen, die die Loopback-Verbindung auf dieselbe Weise verwenden soll. Wenn das Loopback-Gerät nicht in den Registerkarten angezeigt wird, stellen Sie sicher, dass alle Streams mithilfe des Auswahlfelds am unteren Rand jeder Registerkarte angezeigt werden.
Sie sollten jetzt das Audio von Ihrem Gerät, wenn es abgespielt wird, über Ihre Lautsprecher oder über die von Ihnen ausgewählte Ausgabesenke hören. Wenn Ihr Gerät nicht angeschlossen ist, greift das Loopback-Gerät auf eine verfügbare Senke und Quelle zurück, was möglicherweise nicht wünschenswert ist. Stellen Sie daher sicher, dass Sie das Loopback-Gerät stumm schalten, bis Sie es benötigen. Die Loopback-Verbindung stellt die gleiche Senke / Quelle wieder her, wenn das gleiche Bluetooth-Gerät das nächste Mal verbunden wird, dank des Moduls - * - Module wiederherstellen.
Wenn dies nicht funktioniert oder Sie pavucontrol nicht installiert haben, können Sie den Loopback stattdessen wie folgt einrichten:
pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK
(Ersetzen $BTSOURCE
mit dem Quellnamen für das Bluetooth - Gerät , wie durch Pulseaudio zu sehen, zum Beispiel bluez_source.14_DA_E9_2A_D7_57
, und ersetzen $SINK
mit dem Namen der Pulseaudio Ausgabe , die Sie wollen , um den Audio - Stream senden, zum Beispiel: alsa_output.pci-0000_00_1b.0.analog-stereo
Sie können ganz das Waschbecken Argument auslassen und haben es Rückfall. auf ein aktives Waschbecken und ändern Sie es später über pavucontrol.)
- Sie können finden
$SINK
mit pactl list sinks
, es wird nach einerName:
- Ebenso sieht man das
$BTSOURCE
mitpactl list sources
- Das
source_dont_move
Argument verhindert, dass die Loopback-Verbindung zu einer anderen Audioquelle zurückfällt, wenn das Bluetooth-Gerät getrennt wird. Es wird stattdessen entfernt und muss beim nächsten Mal erneut eingerichtet werden.
Hier ist , was ein Beispiel einer aussehen würde (Denken Sie daran , das zu ersetzen , :
mit _
der Bluetooth - Adresse!):
pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
Wenn das Laden des Fallback-Moduls fehlschlägt, entfernen Sie das source_dont_move=yes
Argument, das zuerst in Version 1.0 verfügbar gemacht wurde. Achten Sie jedoch darauf, diese Loopback-Verbindung zu entfernen, bevor Sie das Audio beenden. Wenn beispielsweise das Mikrofon Ihres Laptops nicht stummgeschaltet ist, erhalten Sie möglicherweise ein sehr schlechtes Feedback. Führen Sie Folgendes aus, um diese Loopback-Verbindung manuell zu beenden, wenn Sie fertig sind:
pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)
Ersetzen Sie erneut $BTSOURCE
den Namen für die PulseAudio-Quelle, die sich auf Ihr Bluetooth-Gerät bezieht. Sie können das Modul auch mit der vom Befehl load-module zurückgegebenen ID entladen:
$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15
Verweise:
- Blog-Beitrag , der einige Details zur Behebung dieses Problems in Ubuntu enthält.