Bluetooth HSP / HFP não funciona, mas o A2DP é

5

Eu tenho um adaptador Bluetooth interno da Broadcom. É o modelo BCM20702A0 ( Vendor=0a5c ProdID=21e1 Rev=01.12 ) Eu consigo operar a função A2DP, mas não o modo HSP / HFP. Eu tentei firmware diferente e também configurações diferentes em /etc/bluetooth/audio.conf , mas não tive sorte. Alguém tem alguma ideia do que eu posso fazer? Eu procurei e pesquisei no google e tentei várias coisas em duas horas. Pensei em te dar uma chance aos gurus. Abaixo estão os detalhes do meu sistema, por favor, deixe-me saber se você precisar de mais alguma coisa.

dylan@laptop:~$ uname -a
Linux laptop 3.19.0-20-generic #20-Ubuntu SMP Fri May 29 10:10:47 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


dylan@laptop:~$ dmesg | grep Bluetooth
[    4.179038] Bluetooth: Core ver 2.20
[    4.179051] Bluetooth: HCI device and connection manager initialized
[    4.179054] Bluetooth: HCI socket layer initialized
[    4.179056] Bluetooth: L2CAP socket layer initialized
[    4.179060] Bluetooth: SCO socket layer initialized
[    5.501272] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.501275] Bluetooth: BNEP filters: protocol multicast
[    5.501281] Bluetooth: BNEP socket layer initialized
[    5.508181] Bluetooth: RFCOMM TTY layer initialized
[    5.508188] Bluetooth: RFCOMM socket layer initialized
[    5.508193] Bluetooth: RFCOMM ver 1.11

USB-DEVICES...
T:  Bus=04 Lev=02 Prnt=02 Port=05 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a5c ProdID=21e1 Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM20702A0
S:  SerialNumber=083E8E9B280C
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)


dylan@laptop:~$ dkms status; uname -a
bcmwl, 6.30.223.248+bdcom, 3.19.0-16-generic, x86_64: installed
bcmwl, 6.30.223.248+bdcom, 3.19.0-18-generic, x86_64: installed
bcmwl, 6.30.223.248+bdcom, 3.19.0-20-generic, x86_64: installed
bcmwl, 6.30.223.248+bdcom, 3.19.0-21-generic, x86_64: installed
vboxhost, 4.3.28, 3.19.0-16-generic, x86_64: installed
vboxhost, 4.3.28, 3.19.0-18-generic, x86_64: installed
vboxhost, 4.3.28, 3.19.0-20-generic, x86_64: installed
vboxhost, 4.3.28, 3.19.0-21-generic, x86_64: installed
Linux laptop 3.19.0-21-generic #21-Ubuntu SMP Sun Jun 14 18:31:11 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


dylan@laptop:~$ dmesg | grep -i bluetooth; dmesg | grep firmware
[    4.085160] Bluetooth: Core ver 2.20
[    4.085171] Bluetooth: HCI device and connection manager initialized
[    4.085175] Bluetooth: HCI socket layer initialized
[    4.085176] Bluetooth: L2CAP socket layer initialized
[    4.085181] Bluetooth: SCO socket layer initialized
[    4.109764] bluetooth hci0: Direct firmware load for brcm/BCM20702A0-0a5c-21e1.hcd failed with error -2
[    4.109773] Bluetooth: hci0: BCM: patch brcm/BCM20702A0-0a5c-21e1.hcd not found
[    5.332794] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.332797] Bluetooth: BNEP filters: protocol multicast
[    5.332803] Bluetooth: BNEP socket layer initialized
[    5.346411] Bluetooth: RFCOMM TTY layer initialized
[    5.346419] Bluetooth: RFCOMM socket layer initialized
[    5.346425] Bluetooth: RFCOMM ver 1.11
[    4.109764] bluetooth hci0: Direct firmware load for brcm/BCM20702A0-0a5c-21e1.hcd failed with error -2
    
por Dylan 15.06.2015 / 06:00

2 respostas

5

Eu tentaria isso:

wget https://www.dropbox.com/s/owropuric6iz898/BCM20702A0-05ac-21e1.hcd
sudo cp BCM20702A0-05ac-21e1.hcd /lib/firmware/brcm/BCM20702A0-0a5c-21e1.hcd
sudo modprobe -r btusb
sudo modprobe btusb

Em seguida, verifique dmesg | tail para qualquer informação:

sudo apt-get install linux-headers-$(uname -r) build-essential
wget https://www.dropbox.com/s/xu80svavlazttaf/bluetooth-3.19.tar.gz
tar xpvf bluetooth-3.19.tar.gz
cd bluetooth
cp /boot/config-$(uname -r) .config
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$PWD modules
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe -r btusb
sudo modprobe btusb

Veja se funciona

Você perderá o HSP / HFP após uma atualização do kernel. Quando isso acontece, você deve fazer:

cd bluetooth
make -C /lib/modules/$(uname -r)/build M=$PWD clean
cp /boot/config-$(uname -r) .config
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$PWD modules
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe -r btusb
sudo modprobe btusb
    
por Jeremy31 16.06.2015 / 02:26
1

Meu palpite é que é um problema de perfil bt com pulseaudio, a menos que seja algo mais problemático.

Instale e execute o pavucontrol ( apt-get install pavucontrol ) e vá para a última página (configuração) para verificar se o perfil do bluetooth está lá e tente alterá-lo.

Meu bt audio conf é padrão com todas as alterações (ubuntu 14.04) /etc/bluetooth/audio.conf

Agora, apenas testamos essas etapas com um fone de ouvido bt (a2dp e hsp capabel) e o colocamos em funcionamento. Não é o melhor caminho, mas funcionou.

  1. Parear dispositivo bt
  2. Verifique com pavucontrol esse perfil é HSP na página de configuração.
  3. Iniciar skype (eu sei, mas é fácil testá-lo)
  4. Executar movesink.sh script
  5. Iniciar chamada de teste para o serviço de testes do Skype
  6. Selecione a guia de gravação em pavucontrol e selecione "Entrada de Skype de" para corresponder ao seu dispositivo Bluetooth.
  7. Fale e veja se a barra de volume se move.
  8. Se forem probles, inicie a chamada novamente e execute movesink.sh durante a chamada de teste

a) Verifique o nome do dispositivo bt:

pactl list sinks|grep Name
# or
pactl list sinks|grep card:

b) Execute o movesinks.sh com esse nome

./movesink.sh bluez_sink.48_C1_AC_C1_C3_85.hsp
# or
./movesink.sh bluez_sink.48_C1_AC_C1_C3_85

E aqui está o script movesink.sh que eu fiz. Move o som do seu programa para o seu dispositivo bt (isto não move o microfone automaticamente do bt-headset integrado):

#!/bin/bash 
echo "Setting default sink to: ";
# where new pa should output sound for new programs
pacmd set-default-sink 
# get "active" programs and with while read
pactl list sink-inputs short |cut -f1 | while read line    
do
echo "Moving input: ";
echo $line
#| cut -f2 -d' ';
echo "to sink: ";
#  move audio to the newly assigned output.
pacmd move-sink-input 'echo $line | cut -f2 -d' '' 

done

Espero que isso verifique se sua configuração funciona. (Eu costumava ter um atalho de teclado, que emparelhava o fone de ouvido bt, movia entradas para isso e quando eu o usava novamente, ele reverteu essa configuração.)

Você deve retornar o áudio principal ao padrão com:

./movesink.sh alsa_output.pci-0000_00_1b.0.analog-stereo
# or
./movesink.sh alsa_output.pci-0000_00_1b.0
    
por Manwe 24.06.2015 / 20:51