Posso usar meu computador como um receptor A2DP / alto-falante bluetooth?

36

Primeiro, o problema: estou usando um tocador de MP3 Cowon como meu player de música principal com protetores de ouvido básicos.

Oferece A2DP & amp; Eu gostaria de ter meu netbook (executando o UNE 10.04) atuando como receptor.

Alguns recursos na web sobre o a2dp, mas a maioria está desatualizada:

por Pierre-Yves Gillier 18.08.2010 / 12:48

6 respostas

43

Para usar sua máquina Ubuntu como um dispositivo Bluetooth a2dp, você deve primeiro configurá-lo para se registrar como um ponto de extremidade "a2dp sink".

O pacote bluez no Ubuntu (10.04 e acima) inclui um utilitário chamado sdptool que pode ser usado para verificar se um dispositivo Bluetooth está configurado como um coletor a2dp ou não. Aqui está a saída do sdptool executado contra o meu fone de ouvido Bluetooth (o endereço está tirando da caixa de diálogo "Bluetooth settings" no 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

$

e aqui está a saída quando executado contra minha máquina Ubuntu local:

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

Isso mostra que a máquina Ubuntu não está se anunciando como um coletor a2dp. No entanto, está se anunciando como uma fonte do 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

Isso permite que a máquina Ubuntu seja emparelhada corretamente com o fone de ouvido como uma fonte de áudio, mas não permite usar a máquina Ubuntu como saída (dissipador) para áudio Bluetooth.

Se você editar /etc/bluetooth/audio.conf , poderá ativar o suporte a dissipador a2dp adicionando esta linha abaixo da seção [General] :

  Enable=Source

Isso é chamado de contra-intuitivamente - já que o que estamos adicionando aqui é suporte a coletor de Bluetooth, não suporte de fonte - e em contradição com o comentário neste arquivo que afirma que todos os serviços implementados estão habilitados por padrão. : (

Depois de fazer essa alteração, você precisará reiniciar o bluetoothd executando sudo service bluetooth restart .

Se você já fez o emparelhamento do seu dispositivo Android e Ubuntu enquanto tenta fazer isso funcionar, você precisará excluir o emparelhamento dos dois lados e re-emparelhá-los para que o Android reconheça o Ubuntu como um dispositivo de áudio disponível.

Depois de fazer isso, o dispositivo Android deve aparecer como um dispositivo de entrada no PulseAudio. Se o PulseAudio não detectar a nova fonte de áudio Bluetooth, talvez seja necessário instalar e carregar o módulo Bluetooth, na linha de comando:

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

Em seguida, você precisa informar ao PulseAudio para direcionar essa entrada de áudio para sua saída / coletor (como os alto-falantes ou um fone de ouvido Bluetooth) usando uma conexão de loopback (uma linha reta de uma fonte a um coletor).

As versões posteriores do PulseAudio podem ter a política do módulo-bluetooth incluída e talvez já tenha configurado um dispositivo de loopback para você, mas esse não parece ser o caso mais comum.

Uma forma semi-automática para configurar a conexão de loopback - se você também tem o programa GUI pavucontrol instalado - é simplesmente carregar o módulo de loopback e configurá-lo usando pavucontrol, já que o PulseAudio se lembrará do configurações. Carregando o módulo é feito a partir do comando usando pactl:

 pactl load-module module-loopback

Não se preocupe se você ainda não ouviu nada ou se obtiver efeitos de feedback estranhos, precisamos informar ao dispositivo recém-criado de qual fonte obter entrada e qual afundar para enviar a saída para primeiro.

Abra o pavucontrol e abra sua guia Configuração. Verifique se o seu dispositivo Bluetooth aparece aqui (depois de emparelhar com ele usando o blueman-manager ou outra ferramenta Bluetooth) e o perfil está definido como A2DP. Mude para o separador Dispositivos de entrada e certifique-se de que o seu dispositivo aparece aqui também e não está sem som. Agora mude para a guia Gravação e faça com que a conexão de loopback recém-criada use seu dispositivo como uma fonte com a caixa de seleção ao lado do botão sem áudio. Alterne para a guia Reprodução para selecionar o coletor que a conexão de loopback deve usar da mesma maneira. Se o dispositivo de loopback não aparecer nas guias, verifique se todos os fluxos são exibidos usando a caixa de seleção na parte inferior de cada guia.

Agora você deve ouvir o áudio do seu dispositivo, se ele estiver tocando, nos alto-falantes ou no coletor de saída selecionado. Quando o dispositivo é desconectado, o dispositivo de loopback alterna para um coletor e fonte disponíveis, o que pode não ser desejável, portanto, certifique-se de desativar o dispositivo de loopback até precisar dele. A conexão de loopback restaurará o mesmo coletor / fonte na próxima vez que o mesmo dispositivo Bluetooth for conectado graças aos módulos de restauração do módulo - * -.

Se isso não funcionar , ou você não tiver o pavucontrol instalado, você pode configurar o loopback usando o seguinte método:

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

(Substitua $BTSOURCE pelo nome da origem do seu dispositivo Bluetooth como visto por PulseAudio, por exemplo, bluez_source.14_DA_E9_2A_D7_57 ; e substitua $SINK pelo nome da saída do PulseAudio para o qual deseja enviar o fluxo de áudio, por exemplo: alsa_output.pci-0000_00_1b.0.analog-stereo . Você pode deixar o argumento do coletor totalmente de lado e tê-lo em reserva para um coletor ativo e alterá-lo posteriormente via pavucontrol.)

  • Você pode encontrar $SINK com pactl list sinks , exibido depois de Name:
  • Da mesma forma, você pode ver o $BTSOURCE com pactl list sources
  • O argumento source_dont_move impede que a conexão de loopback retorne a outra fonte de áudio quando o dispositivo Bluetooth é desconectado. Em vez disso, ele é removido e você terá que configurá-lo novamente na próxima vez.

Veja como seria um exemplo de um (Lembre-se de substituir o : por _ no endereço 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 o carregamento do módulo de fallback falhar, tente remover o argumento source_dont_move=yes , ele foi disponibilizado primeiro na versão 1.0. Em seguida, tenha cuidado, no entanto, para remover essa conexão de loopback antes de soltar esse áudio ou, se, por exemplo, o microfone do seu laptop estiver ligado, você poderá receber um feedback muito ruim. Para descartar essa conexão de loopback manualmente quando terminar, execute:

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

Novamente, substitua $BTSOURCE pelo nome da origem PulseAudio referente ao seu dispositivo Bluetooth. Você também pode descarregar o módulo usando o id retornado pelo 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

Referências:

  • Postagem do blog descrevendo alguns detalhes sobre como está sendo corrigido no Ubuntu.
por slangasek 02.03.2012 / 23:22
11

Eu uso o blueman, instalado a partir do Ubuntu software center. Clicar com o botão direito do mouse no ícone do blueman * - & gt; "serviços locais" - & gt; áudio & gt; Verifique se há "recepção de áudio avançada". Btw eu uso para ouvir no meu Ubuntu 11.10 laptop o que eu jogo no meu telefone Android.

* O ícone do blueman é mostrado no canto inferior direito do gnome shell + ubuntu 11.10, esse é o meu caso. Espero que isso seja útil de alguma forma para você.

    
por user47059 02.03.2012 / 22:20
7

É muito simples agora no Ubuntu 12.04

Conecte seu dispositivo bluetooth

Pesquise seu dispositivo bluetooth e anote seu número de origem:

pactl list sources 

Faça um loopback para o dispositivo bluetooth:

pactl load-module module-loopback source=$SOURCE_NUMBER  

Em que $ SOURCE_NUMBER é o número que você anotou anteriormente.

Por exemplo, eu digitei o seguinte para fazer a reprodução de áudio funcionar:

$ pactl load-module module-loopback source=3  

É isso! Eu achei a solução na resposta top um pouco complicada, então eu simplifiquei dessa forma (muito menos digitando e copiando / colando). Embora minha solução provavelmente seja interrompida se você remover qualquer dispositivo de áudio listado antes do dispositivo bluetooth por pactl list sources .

Além disso, não esqueça de remover o módulo de loopback antes de desconectar o dispositivo bluetooth:

Anote o número do módulo do dispositivo de loopback que você criou:

pactl list short modules

Remova o dispositivo de loopback:

pactl unload-module $MODULE_NUMBER

As respostas anteriores foram escritas antes do lançamento do 12.04, então tenho certeza que houve algumas mudanças. Por exemplo, não precisei ativar manualmente o uso de dispositivos bluetooth como uma fonte de áudio (ela foi ativada por padrão). No entanto, às vezes eu tenho que alternar o perfil "Media Audio" em minhas configurações de bluetooth no meu telefone (o Samsung Captivate executando o CyanogenMod 9.1.0).

Provavelmente, há uma maneira de aproveitar o dbus-monitor usando um script de shell para observar as conexões do dispositivo bluetooth A2DP e carregar automaticamente um módulo de loopback para ele, mas isso é um pouco demais.

Espero que não precisemos mais fazer isso manualmente no Ubuntu 12.10.

    
por Toasty 29.08.2012 / 17:09
3

Para o 13.04, emparelhe seu dispositivo de origem com o laptop ubuntu e ele simplesmente funciona! Muito legal descobrir que era assim tão fácil agora.

    
por user184485 16.08.2013 / 02:14
1

No Ubuntu 16.04 isso funciona de maneira simples.

    
por mniess 17.08.2016 / 23:39
0

Solução ainda mais fácil que a resposta.

Você pode simplesmente ir

sudo apt-get install pulseaudio*

Em seguida, reinicie. Após a reinicialização, conecte-se ao seu Bluetooth e simplesmente reproduza a música no seu telefone. Tudo será transmitido para o seu computador e reproduzido nos alto-falantes do computador.

E sim! de nada.

    
por Adel Abula - MageBinary 24.12.2014 / 05:52

Tags