it-swarm-eu.dev

Kann ich meinen Computer als A2DP-Empfänger / Bluetooth-Lautsprecher verwenden?

Zunächst das Problem: Ich verwende einen Cowon MP3-Player als Hauptmusikplayer mit einfachen Ohrstöpseln.

Es bietet A2DP und ich möchte, dass mein Netbook (mit UNE 10.04) als Empfänger fungiert.

Einige Ressourcen im Web über a2dp, aber die meisten sind veraltet:

39

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 Hilfsprogramm 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 bearbeiten, können Sie die Unterstützung für a2dp-Senken aktivieren, indem Sie diese Zeile unter dem Abschnitt [General] 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 neu starten, indem Sie Sudo service bluetooth restart ausführen.

Wenn Sie zuvor Ihr Android Gerät und Ihren Ubuntu-Computer gekoppelt haben, während Sie diese Funktion nutzen, müssen Sie die Kopplung auf beiden Seiten löschen und erneut koppeln, um Android zu erhalten. um Ubuntu als verfügbares Audiogerät zu erkennen.

Sobald Sie dies getan haben, sollte das Gerät Android als Eingabegerät unter PulseAudio 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.

Ein halbautomatischer Weg , um die Loopback-Verbindung einzurichten - wenn Sie auch das GUI-Programm pavucontrol installiert haben - ist, einfach das Loopback-Modul zu laden und es zu konfigurieren mit Pavucontrol, 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 wir 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 mit der folgenden Methode einrichten:

 pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK

(Ersetzen Sie $BTSOURCE durch den von PulseAudio angezeigten Quellennamen für Ihr Bluetooth-Gerät, z. B. bluez_source.14_DA_E9_2A_D7_57, und ersetzen Sie $SINK durch den Namen des PulseAudio-Ausgangs, an den Sie den Audiostream senden möchten. Beispiel: alsa_output.pci-0000_00_1b.0.analog-stereo. Sie können das Argument sink ganz weglassen und auf eine aktive Senke zurückgreifen lassen und es später über pavucontrol ändern.)

  • Sie finden $SINK mit pactl list sinks, es wird nach Name: angezeigt
  • Ebenso können Sie den $BTSOURCE mit pactl list sources sehen
  • Das Argument source_dont_move 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.

So würde ein Beispiel aussehen (Denken Sie daran, den : durch _ in der Bluetooth-Adresse zu ersetzen!):

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 Argument source_dont_move=yes, 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 $BTSOURCE durch den Namen der 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:

  • Blogpost umreißt einige Details, wie dies in Ubuntu behoben wird.
46
slangasek

Ich verwende blueman, installiert vom Ubuntu Software Center. Klicken Sie mit der rechten Maustaste auf das Blueman-Symbol * -> "Lokale Dienste" -> Audio -> Aktivieren Sie das Kontrollkästchen "Erweiterter Audioempfang". Übrigens verwende ich es, um in meinem Ubuntu 11.10-Laptop zu hören, was ich auf meinem Android Telefon spiele.

* Das Blueman-Symbol wird in der rechten unteren Ecke von Gnome Shell + Ubuntu 11.10 angezeigt, das ist mein Fall. Ich hoffe, das ist irgendwie nützlich für Sie.

13
user47059

In Ubuntu 12.04 ist es jetzt wirklich einfach

Verbinden Sie Ihr Bluetooth-Gerät

Suchen Sie nach Ihrem Bluetooth-Gerät und notieren Sie sich die Quellennummer:

pactl list sources 

Erstellen Sie einen Loopback für das Bluetooth-Gerät:

pactl load-module module-loopback source=$SOURCE_NUMBER  

Dabei ist $ SOURCE_NUMBER die Nummer, die Sie zuvor notiert haben.

Ich habe beispielsweise Folgendes eingegeben, damit die Audiowiedergabe funktioniert:

$ pactl load-module module-loopback source=3  

Das ist es! Ich fand die Lösung in der oberen Antwort etwas kompliziert und vereinfachte sie auf diese Weise (viel weniger Tippen und Kopieren/Einfügen). Obwohl meine Lösung wahrscheinlich kaputt geht, wenn Sie alle Audiogeräte entfernen, die vor dem Bluetooth-Gerät mit pactl list sources aufgelistet wurden.

Vergessen Sie auch nicht, das Loopback-Modul zu entfernen, bevor Sie das Bluetooth-Gerät trennen:

Notieren Sie sich die Modulnummer des von Ihnen erstellten Loopback-Geräts:

pactl list short modules

Entfernen Sie das Loopback-Gerät:

pactl unload-module $MODULE_NUMBER

Die vorherigen Antworten wurden vor der Veröffentlichung von 12.04 geschrieben, daher bin ich sicher, dass sich einige Änderungen ergeben haben. Zum Beispiel musste ich die Verwendung von Bluetooth-Geräten als Audioquelle nicht manuell aktivieren (standardmäßig aktiviert). Manchmal muss ich jedoch das "Media Audio" -Profil in meinen Bluetooth-Einstellungen auf meinem Telefon umschalten (Samsung Captivate mit CyanogenMod 9.1.0).

Es gibt wahrscheinlich eine Möglichkeit, dbus-monitor mithilfe eines Shell-Skripts zu nutzen, um nach Bluetooth A2DP-Geräteverbindungen zu suchen und automatisch ein Loopback-Modul dafür zu laden, aber das geht mir ein bisschen über den Kopf.

Hoffentlich müssen wir dies in Ubuntu 12.10 nicht mehr manuell tun.

7
Toasty

Koppeln Sie für 13.04 Ihr Quellgerät mit dem Ubuntu-Laptop und es funktioniert einfach! Sehr cool zu finden, dass es jetzt so einfach war.

3
user184485

In Ubuntu 16.04 funktioniert dies sofort.

2
mniess

Noch einfachere Lösung als die Antwort.

Sie können einfach gehen

Sudo apt-get install pulseaudio*

Starten Sie dann neu. Stellen Sie nach dem Neustart eine Verbindung zu Ihrem Bluetooth her und spielen Sie einfach die Musik auf Ihrem Telefon ab. Alles wird auf Ihren Computer übertragen und über die Lautsprecher des Computers wiedergegeben.

Und ja! Bitte.