wake-up-neo.net

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

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:

39

Per utilizzare la macchina Ubuntu come dispositivo Bluetooth a2dp, è necessario prima configurarlo per la registrazione 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 un 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 sezione [General]:

  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 in precedenza hai accoppiato il tuo dispositivo Android e il computer Ubuntu durante il tentativo di ottenere questo lavoro, dovrai eliminare l'associazione su entrambi i lati e ricollegarli per ottenere Android 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).

Nelle versioni successive di PulseAudio potrebbe essere inclusa la politica del modulo bluetooth e potrebbe già aver 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 usi il tuo dispositivo come sorgente con la casella di selezione accanto al pulsante di disattivazione dell'audio. 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 $BTSOURCE con il nome della sorgente per il tuo dispositivo Bluetooth visto da PulseAudio, ad esempio bluez_source.14_DA_E9_2A_D7_57; e sostituisci $SINK con il nome dell'uscita PulseAudio a cui desideri inviare il flusso audio, ad esempio: alsa_output.pci-0000_00_1b.0.analog-stereo. È possibile tralasciare completamente l'argomento sink e farlo ricadere in un sink attivo e modificarlo in seguito tramite pavucontrol.)

  • Puoi trovare $SINK con pactl list sinks, viene visualizzato dopo Name:
  • Allo stesso modo puoi vedere $BTSOURCE con pactl list sources
  • L'argomento source_dont_move 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 : 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'argomento source_dont_move=yes, è stato reso disponibile per primo 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, sostituire $BTSOURCE con il nome della sorgente PulseAudio che si riferisce al 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 delineando alcuni dettagli su come questo problema viene risolto in Ubuntu.
46
slangasek

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 laptop 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.

13
user47059

È 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 rimuovi tutti i dispositivi audio elencati prima del dispositivo bluetooth da 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, ma è un po 'sopra la mia testa.

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

7
Toasty

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

3
user184485

In Ubuntu 16.04 funziona immediatamente.

2
mniess

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.