Posso usare il mio computer come ricevitore A2DP / altoparlante bluetooth?


40

Innanzitutto, il problema: sto usando un lettore MP3 Cowon come mio lettore musicale principale con tappi per le orecchie di base.

Offre A2DP e vorrei che il mio netbook (in esecuzione UNE 10.04) fungesse da ricevitore.

Alcune risorse sul web su a2dp, ma la maggior parte sono obsolete:

Risposte:


47

Per usare la tua macchina Ubuntu come dispositivo Bluetooth a2dp, devi prima configurarla per registrarti come endpoint "a2dp sink".

Il pacchetto bluez in Ubuntu (10.04 e versioni successive) include un'utilità chiamata sdptool che può essere utilizzata per verificare se un dispositivo Bluetooth è configurato come sink a2dp o meno. Ecco l'output di sdptool eseguito sul mio auricolare Bluetooth (l'indirizzo viene preso dalla finestra di dialogo "Impostazioni Bluetooth" nel centro di controllo gnome):

$ 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

$

ed ecco l'output quando eseguito contro la mia macchina Ubuntu locale:

$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$

Ciò dimostra che la macchina Ubuntu non sta pubblicizzando se stessa come un sink a2dp. Si sta pubblicizzando come fonte a2dp:

$ 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

Ciò consente alla macchina Ubuntu di accoppiarsi correttamente con l'auricolare come sorgente audio, ma non consente di utilizzare la macchina Ubuntu come uscita (sink) per l'audio Bluetooth.

Se modifichi /etc/bluetooth/audio.conf, puoi abilitare il supporto del sink a2dp aggiungendo questa riga sotto la [General]sezione:

  Enable=Source

Questo nome è entrambi controintuitivamente - poiché ciò che stiamo aggiungendo qui è il supporto del sink Bluetooth, non il supporto del sorgente - e in contraddizione con il commento in questo file che afferma che tutti i servizi implementati sono abilitati per impostazione predefinita. :(

Dopo aver apportato questa modifica, dovrai riavviare bluetoothd eseguendo sudo service bluetooth restart.

Se hai già abbinato il tuo dispositivo Android e il tuo computer Ubuntu durante il tentativo di ottenere questo lavoro, dovrai eliminare l'associazione su entrambi i lati e ricollegarli per consentire ad Android di riconoscere Ubuntu come dispositivo audio disponibile.

Una volta fatto questo, il dispositivo Android dovrebbe apparire come dispositivo di input in PulseAudio. Se PulseAudio non rileva la nuova sorgente audio Bluetooth, potrebbe essere necessario installare e caricare il modulo Bluetooth, dalla riga di comando:

 sudo apt-get install pulseaudio-module-bluetooth
 pactl load-module module-bluetooth-discover

Quindi devi dire a PulseAudio di instradare questo ingresso audio all'uscita / al lavandino (come i tuoi altoparlanti o una cuffia Bluetooth) usando una connessione loopback (una linea retta da una sorgente a un lavandino).

Le versioni successive di PulseAudio potrebbero includere la politica del modulo bluetooth inclusa e potrebbe aver già impostato un dispositivo di loopback per te, ma questo non sembra essere il caso più comune.

Un modo semi-automatico per impostare la connessione loopback - se hai anche installato il programma GUI pavucontrol - è semplicemente caricare il modulo loopback e configurarlo usando pavucontrol, poiché PulseAudio ricorderà le impostazioni. Il caricamento del modulo viene eseguito dal comando utilizzando pactl:

 pactl load-module module-loopback

Non temere se non senti ancora nulla o se ricevi strani effetti di feedback, dobbiamo dire al dispositivo appena creato da quale sorgente ricevere input e da quale sink inviare prima l'output.

Apri pavucontrol e apri la sua scheda Configurazione. Assicurati che il tuo dispositivo Bluetooth venga visualizzato qui (dopo aver eseguito l'associazione con blueman-manager o un altro strumento Bluetooth) e che il profilo sia impostato su A2DP. Passa alla scheda Dispositivi di input e assicurati che anche il tuo dispositivo venga visualizzato qui e non sia disattivato. Ora passa alla scheda Registrazione e fai in modo che la connessione di loopback appena creata utilizzi il tuo dispositivo come sorgente con la casella di selezione accanto al pulsante Disattiva. Passare alla scheda Riproduzione per selezionare il sink che la connessione di loopback dovrebbe usare allo stesso modo. Se il dispositivo di loopback non viene visualizzato nelle schede, assicurarsi che tutti gli stream siano visualizzati utilizzando la casella di selezione nella parte inferiore di ciascuna scheda.

Ora dovresti ascoltare l'audio dal tuo dispositivo, se è in riproduzione, negli altoparlanti o in qualsiasi sink di uscita selezionato. Quando il dispositivo viene disconnesso, il dispositivo di loopback tornerà a un sink e a una sorgente disponibili, il che potrebbe non essere desiderabile, quindi assicurati di disattivare il dispositivo di loopback fino a quando non è necessario. La connessione loopback ripristinerà lo stesso sink / source alla successiva connessione dello stesso dispositivo Bluetooth grazie al modulo - * - moduli di ripristino.

Se non funziona o se non hai installato pavucontrol, puoi invece impostare il loopback usando il seguente metodo:

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

(Sostituisci $BTSOURCEcon il nome della sorgente per il tuo dispositivo Bluetooth come visto da PulseAudio, ad esempio bluez_source.14_DA_E9_2A_D7_57; e sostituisci $SINKcon il nome dell'uscita PulseAudio a cui desideri inviare il flusso audio, ad esempio:. alsa_output.pci-0000_00_1b.0.analog-stereoPuoi tralasciare completamente l'argomento sink e farlo fallback in un lavandino attivo e cambiarlo successivamente tramite pavucontrol.)

  • Puoi trovarlo $SINKcon pactl list sinks, è mostrato dopoName:
  • Allo stesso modo puoi vedere il $BTSOURCEconpactl list sources
  • L' source_dont_moveargomento impedisce alla connessione di loopback di ricadere su un'altra sorgente audio quando il dispositivo Bluetooth è disconnesso. Viene invece rimosso e dovrai ripristinarlo la prossima volta.

Ecco come sarebbe un esempio (ricordati di sostituire il :con _nell'indirizzo Bluetooth!):

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

Se il caricamento del modulo fallback non riesce, provare a rimuovere l' source_dont_move=yesargomento, è stato reso disponibile prima nella versione 1.0. Quindi fai attenzione a rimuovere questa connessione di loopback prima di eliminare questo audio o, ad esempio, se il microfono del tuo laptop è disattivato, potresti ricevere un feedback molto negativo. Per interrompere manualmente questa connessione di loopback al termine, eseguire:

pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)

Ancora una volta, sostituisci $BTSOURCEcon il nome della sorgente PulseAudio che si riferisce al tuo dispositivo Bluetooth. È inoltre possibile scaricare il modulo utilizzando l'id restituito dal comando load-module:

$ 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

Riferimenti:

  • Post di blog che delinea alcuni dettagli su come questo problema viene risolto in Ubuntu.

possiamo cambiare la mappa dei canali per un particolare sink di dispositivo
Prakash V Holkar,

ciao e grazie per la guida dettagliata. Il comando pactl load-module module-bluethooth-discovernon riesce in Ubuntu Studio 14.04. Quindi non vedo alcuna bluezfonte pulseaudio, anche se il mio telefono vede correttamente il PC come un sink audio. Qualche idea?
nass

se pactl list sources shortnon mostra la sorgente bluez per te, ho trovato due possibili soluzioni: chiama gdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connectwhere (il percorso include l'indirizzo BD del dispositivo e il percorso dell'adattatore con cui puoi ottenere gdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter). Oppure usa d-feet come spiegato qui . Altrimenti connettiti dal lato del telefono e inizia a giocare qualcosa.
Treviño,

Continuo a non vedere alcuna fonte di Bluez comparire. Linux Mint 17.3 "Rosa" qui.
donquixote,

1
Wow! con modifiche minime (/etc/bluetooth/main.conf invece di audio.conf) funziona su Rasbian. Grazie! (Non è necessaria alcuna configurazione di loopback in quel sistema operativo)
jamie,

13

Uso blueman, installato dal centro software Ubuntu. Fare clic con il tasto destro sull'icona blueman * -> "servizi locali" -> audio-> Controllare che la "ricezione audio avanzata" sia capovolta. Tra l'altro lo uso per ascoltare sul mio computer portatile Ubuntu 11.10 quello che suono sul mio telefono Android.

* L'icona blueman è mostrata nell'angolo in basso a destra in gnome shell + ubuntu 11.10, questo è il mio caso. Spero che questo ti sia utile in qualche modo.


L'interfaccia di configurazione blueman per l'audio imposta solo il valore Enable = Source in /etc/bluetooth/audio.conf, quindi non vedo come ciò consentirebbe ad Android di utilizzare un computer come uscita audio.
slangasek,

ok, quindi se lo imposto in audio.conf e quindi disaccoppiamento da entrambi i lati della connessione, questo sembra essere sufficiente per consentire ad Android di vedere il computer come un sink audio dopo tutto ...
slangasek

L'ho provato e non sono riuscito a riconoscerlo come il sink audio. : - /
Jorge Castro

blueman ha funzionato per me in 12.04 con zero problemi oltre al fatto che ho finito con due icone bluetooth nella mia applet indicatore.
HDave

7

È davvero semplice ora in Ubuntu 12.04

Collega il tuo dispositivo bluetooth

Cerca il tuo dispositivo bluetooth e prendi nota del numero sorgente:

pactl list sources 

Crea un loopback per il dispositivo bluetooth:

pactl load-module module-loopback source=$SOURCE_NUMBER  

Dove $ SOURCE_NUMBER è il numero di cui in precedenza hai preso nota.

Ad esempio, ho inserito quanto segue per far funzionare la riproduzione audio:

$ pactl load-module module-loopback source=3  

Questo è tutto! Ho trovato la soluzione nella risposta in alto un po 'complicata, quindi l'ho semplificata in questo modo (molto meno digitando e copiando / incollando). Anche se la mia soluzione probabilmente si interromperà se si rimuovono tutti i dispositivi audio elencati prima del dispositivo Bluetooth pactl list sources.

Inoltre, non dimenticare di rimuovere il modulo loopback prima di scollegare il dispositivo bluetooth:

Prendi nota del numero di modulo del dispositivo loopback che hai creato:

pactl list short modules

Rimuovere il dispositivo di loopback:

pactl unload-module $MODULE_NUMBER

Le risposte precedenti erano state scritte prima della versione di 12.04, quindi sono sicuro che ci fossero alcune modifiche. Ad esempio, non ho dovuto abilitare manualmente l'utilizzo dei dispositivi Bluetooth come sorgente audio (era abilitato per impostazione predefinita). Tuttavia, a volte devo attivare o disattivare il profilo "Media Audio" nelle mie impostazioni bluetooth sul mio telefono (Samsung Captivate con CyanogenMod 9.1.0).

Probabilmente c'è un modo per sfruttare il dbus-monitor usando uno script shell per controllare le connessioni del dispositivo A2DP bluetooth e caricare automaticamente un modulo loopback per questo, ma è un po 'sopra la mia testa.

Speriamo che non avremo più bisogno di farlo manualmente in Ubuntu 12.10.


Dopo aver caricato il loopback del modulo per particolari sink, possiamo cambiare la mappa dei canali del loopback del modulo di un dispositivo particolare a sinistra o a destra
Prakash V Holkar,

3

Per 13.04, abbina il tuo dispositivo sorgente al laptop Ubuntu e funziona! Molto bello scoprire che ora è stato così facile.



0

Soluzione ancora più semplice della risposta.

Puoi semplicemente andare

sudo apt-get install pulseaudio*

Quindi riavviare. Dopo il riavvio, connettiti al tuo Bluetooth e riproduci semplicemente la musica sul tuo telefono. Tutto verrà trasmesso al tuo computer e riprodotto dagli altoparlanti del computer.

E sì! prego.


apt-getusa espressioni regolari, non caratteri jolly. Quindi non hai idea di cosa verrà installato usando pulseaudio*(suggerimento: non sono solo i pacchetti che iniziano con pulseaudi). E PulseAudio fa già parte dell'installazione predefinita di Ubuntu.
Muru,

Sì! Ma questo funzionerà per tutte le persone pigre che vogliono far funzionare le cose all'istante.
Adel Abula - MageBinary
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.