Bluetooth HSP / HFP не работает, но A2DP

5

У меня есть встроенный Bluetooth-адаптер Broadcom. Это модель BCM20702A0 ( Vendor=0a5c ProdID=21e1 Rev=01.12 ) Я могу использовать функцию A2DP, но не режим HSP / HFP. Я пробовал разные прошивки, а также разные конфиги под /etc/bluetooth/audio.conf , но не повезло. Кто-нибудь знает, что я могу сделать? Я искал и искал google и пробовал разные вещи, продолжающиеся два часа. Думал, что я дам вам гуру. Ниже приведены данные моей системы, пожалуйста, дайте мне знать, если вам нужно что-нибудь еще.

[email protected]:~$ 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


[email protected]:~$ 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)


[email protected]:~$ 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


[email protected]:~$ 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
    
задан Dylan 15.06.2015 в 06:00
источник

2 ответа

5

Я бы попробовал это:

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

Затем проверьте dmesg | tail для любой информации:

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

Посмотрите, работает ли он

После обновления ядра вы потеряете HSP / HFP. Когда это произойдет, вы должны сделать:

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
    
ответ дан Jeremy31 16.06.2015 в 02:26
источник
1

Я предполагаю, что это проблема профиля bt с pulseaudio, если только это не является чем-то более проблематичным.

Установите и запустите pavucontrol ( apt-get install pavucontrol ) и перейдите к последней странице (конфигурации), проверьте, существует ли профиль Bluetooth, и попробуйте изменить его.

My bt audio conf по умолчанию не имеет никаких изменений (ubuntu 14.04) /etc/bluetooth/audio.conf

Теперь, просто протестировали эти шаги с помощью bt-гарнитуры (a2dp и hsp capabel) и заставили ее работать. Не лучший способ, но работал.

  1. Пара bt-устройства
  2. Проверьте с pavucontrol , что профиль HSP на странице конфигурации.
  3. Начать skype (я знаю, но с ним легко проверить)
  4. Запустить скрипт movesink.sh
  5. Запустить тестовый вызов службы тестирования скайпа
  6. Выберите вкладку записи из pavucontrol и выберите «Skype-вход от» для соответствия вашему Bluetooth-устройству.
  7. Говорите и посмотрите, перемещается ли строка объема.
  8. Если проблема, снова запустите вызов и запустите movesink.sh во время тестового вызова

a) Проверьте имя bt-устройства:

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

b) Запустите moveinks.sh с этим именем

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

И вот скрипт moveink.sh, который я создал. Он перемещает ваш программный звук, выводимый на ваше устройство bt (это не приводит к автоматическому перемещению микрофона из встроенного в bt-гарнитуру):

#!/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

Надеемся, это подтвердит вашу работу. (Я использовал привязку клавиш, которая спаривала bt-гарнитуру, перемещала входные данные на это, а когда я использовал его снова, он вернул эту настройку.)

Вы должны вернуть свой основной звук по умолчанию:

./movesink.sh alsa_output.pci-0000_00_1b.0.analog-stereo
# or
./movesink.sh alsa_output.pci-0000_00_1b.0
    
ответ дан Manwe 24.06.2015 в 20:51