Cannot patch firmware of broadcom based bluetooth adapter

Questions about hardware, drivers and peripherals
Forum rules
Before you post read how to get help. Topics in this forum are automatically closed 6 months after creation.
Locked
eugnikolaev

Cannot patch firmware of broadcom based bluetooth adapter

Post by eugnikolaev »

Hello!

I bought:
- ASUS USB Adapter with Bluetooth (USB-BT400
- headset InterStep SBH-100

This hardware (both devices) works perfectly on Win7. HeadSet works like a charm with MacOS and iOS (sure with their own BT adapters).

My Linux Mint desktop:
Kernel:
3.16.0-38 (Then I updated it to 3.19, will write below)

Code: Select all

# some info skipped as not important
$ cat /etc/linuxmint/info
RELEASE=17.2
CODENAME=rafaela
EDITION="Cinnamon 64-bit"
DESCRIPTION="Linux Mint 17.2 Rafaela"
DESKTOP=Gnome
TOOLKIT=GTK
GRUB_TITLE=Linux Mint 17.2 Cinnamon 64-bit
I was only able link the headset by A2DP. I was able listen to music this way. But sure I have no mic.
I generally want to use the headset for skype voice chat. So I switched it to HFP/HSP mode.
It made qmmp hang (but it worked again when I switched to A2DP).
No test sound appeared when I used Preferences - Sound.

I started googling and I found that my ASUS BT400 adapter based on Broadcom chip which needs some additional firmware to be uploaded.
For example, I used this article (and many similar articles and posts):
http://plugable.com/2014/06/23/plugable ... s-on-linux

I used their firmwares, built my own hcd from a hex which I took from my Win7, but with no success.
There were no any lines at the logs (dmesg, syslog) as people who succeeded had.

Code: Select all

$ dmesg | grep -i blue
[    3.853033] Bluetooth: Core ver 2.20
[    3.853129] Bluetooth: HCI device and connection manager initialized
[    3.853132] Bluetooth: HCI socket layer initialized
[    3.853134] Bluetooth: L2CAP socket layer initialized
[    3.853138] Bluetooth: SCO socket layer initialized
[    5.656014] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.656017] Bluetooth: BNEP filters: protocol multicast
[    5.656020] Bluetooth: BNEP socket layer initialized
[    5.665394] Bluetooth: RFCOMM TTY layer initialized
[    5.665399] Bluetooth: RFCOMM socket layer initialized
[    5.665402] Bluetooth: RFCOMM ver 1.11

Code: Select all

$ dmesg | grep -i firmware
[    0.116475] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    4.333620] usb 1-10: r8712u: Loading firmware from "rtlwifi/rtl8712u.bin"
As you see - nothing, but there should be something like:

Code: Select all

[513973.825046] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=153a lmp_ver=06 lmp_subver=220e
[513974.598398] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=153a lmp_ver=06 lmp_subver=220e
And there is no even any error message...

Here you are my usb-devices:

Code: Select all

T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0b05 ProdID=17cb Rev=01.12
S:  Manufacturer=Broadcom Corp
S:  Product=BCM20702A0
S:  SerialNumber=5CF370687D71
C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #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)
This way I placed my .hcd file:

Code: Select all

$ ls -la /lib/firmware/brcm/
total 7744
drwxr-xr-x  2 root root   4096 Jul 22 09:41 .
drwxr-xr-x 62 root root  20480 Jul 22 09:34 ..
-rw-r--r--  1 root root  28690 Jul 21 23:27 BCM20702A0-0b05-17cb.hcd
-rw-r--r--  1 root root 269595 Nov 24  2014 bcm4329-fullmac-4.bin
-rw-r--r--  1 root root  96224 Dec  1  2014 bcm43xx-0.fw
-rw-r--r--  1 root root    180 Dec  1  2014 bcm43xx_hdr-0.fw
-rw-r--r--  1 root root 397312 Dec  1  2014 brcmfmac43143.bin
-rwxr-xr-x  1 root root 385067 Jul  2 22:44 brcmfmac43143-sdio.bin
-rw-r--r--  1 root root 348160 Nov 24  2014 brcmfmac43236b.bin
-rw-r--r--  1 root root 455745 Dec  1  2014 brcmfmac43241b0-sdio.bin
-rw-r--r--  1 root root 403855 Dec  1  2014 brcmfmac43241b4-sdio.bin
-rw-r--r--  1 root root 479232 Jun  2 15:18 brcmfmac43242a.bin
-rw-r--r--  1 root root 253748 Dec  1  2014 brcmfmac4329-sdio.bin
-rw-r--r--  1 root root 222126 Dec  1  2014 brcmfmac4330-sdio.bin
-rw-r--r--  1 root root 451566 Dec  1  2014 brcmfmac4334-sdio.bin
-rw-r--r--  1 root root 569291 Dec  1  2014 brcmfmac4335-sdio.bin
-rw-r--r--  1 root root 219557 Dec  1  2014 brcmfmac43362-sdio.bin
-rw-r--r--  1 root root 493599 Jun  2 15:18 brcmfmac4339-sdio.bin
-rw-r--r--  1 root root 507752 Jul  2 22:44 brcmfmac4354-sdio.bin
-rw-r--r--  1 root root 557056 Jun  2 15:18 brcmfmac43569.bin
-rw-r--r--  1 root root 550333 Jun  2 15:18 brcmfmac43570-pcie.bin
-rw-r--r--  1 root root 588940 Jun  2 15:18 brcmfmac43602-pcie.ap.bin
-rw-r--r--  1 root root 590544 Jun  2 15:18 brcmfmac43602-pcie.bin
Then I tried a python uploader script:
http://ubuntuforums.org/showthread.php?t=2231813

It worked with no error messages and disconnected the BT adapter. When I connected it again - result was the same.

Then I updated the kernel:

Code: Select all

Linux lin-pc 3.19.8-031908-generic #201505110938 SMP Mon May 11 13:39:59 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
But the result is the same.

What I am doing wrong? Why it does not even try to upload the firmware?
Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
eugnikolaev

Re: Cannot patch firmware of broadcom based bluetooth adapte

Post by eugnikolaev »

I think of another BT adapter as a last resort. Could you please recommend me one which works with HFP/HSP out-of-box?
JeremyB
Level 21
Level 21
Posts: 13880
Joined: Fri Feb 21, 2014 8:17 am

Re: Cannot patch firmware of broadcom based bluetooth adapte

Post by JeremyB »

Delete the hcd file and reboot, then look for a firmware loading error in dmesg
eugnikolaev

Re: Cannot patch firmware of broadcom based bluetooth adapte

Post by eugnikolaev »

Thank you for attention.

Unfortunately, nothing has changed:

Code: Select all

$ dmesg | grep -i firm
[    0.115890] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    4.210191] usb 1-10: r8712u: Loading firmware from "rtlwifi/rtl8712u.bin"
$ dmesg | grep -i blue
[    4.021372] Bluetooth: Core ver 2.20
[    4.021414] Bluetooth: HCI device and connection manager initialized
[    4.021659] Bluetooth: HCI socket layer initialized
[    4.021662] Bluetooth: L2CAP socket layer initialized
[    4.021667] Bluetooth: SCO socket layer initialized
[    4.037029] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.037032] Bluetooth: BNEP filters: protocol multicast
[    4.037035] Bluetooth: BNEP socket layer initialized
[    4.043089] Bluetooth: RFCOMM TTY layer initialized
[    4.043095] Bluetooth: RFCOMM socket layer initialized
[    4.043098] Bluetooth: RFCOMM ver 1.11
JeremyB
Level 21
Level 21
Posts: 13880
Joined: Fri Feb 21, 2014 8:17 am

Re: Cannot patch firmware of broadcom based bluetooth adapte

Post by JeremyB »

This will only work for the 3.19 kernel you have

Code: Select all

wget https://www.dropbox.com/s/xu80svavlazttaf/bluetooth-3.19.tar.gz

Code: Select all

tar -zxvf bluetooth-3.19.tar.gz

Code: Select all

sudo apt-get install build-essential linux-headers-$(uname -r)

Code: Select all

cd bluetooth

Code: Select all

make -C /lib/modules/$(uname -r)/build M=$PWD modules

Code: Select all

sudo modprobe -r btusb

Code: Select all

sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/btusb.ko
Then copy your hcd firmware file back into /lib/firmware/brcm

Code: Select all

sudo modprobe btusb
And see if HFP/HSP works
eugnikolaev

Re: Cannot patch firmware of broadcom based bluetooth adapte

Post by eugnikolaev »

Got the following lines!

Code: Select all

$ dmesg | grep -i blue
[    4.021372] Bluetooth: Core ver 2.20
[    4.021414] Bluetooth: HCI device and connection manager initialized
[    4.021659] Bluetooth: HCI socket layer initialized
[    4.021662] Bluetooth: L2CAP socket layer initialized
[    4.021667] Bluetooth: SCO socket layer initialized
[    4.037029] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.037032] Bluetooth: BNEP filters: protocol multicast
[    4.037035] Bluetooth: BNEP socket layer initialized
[    4.043089] Bluetooth: RFCOMM TTY layer initialized
[    4.043095] Bluetooth: RFCOMM socket layer initialized
[    4.043098] Bluetooth: RFCOMM ver 1.11
[ 5747.586036] Bluetooth: hci0 urb ffff8800d1fb1600 failed to resubmit (2)
[ 5945.172578] Bluetooth: hci0: BCM: patching hci_ver=06 hci_rev=1000 lmp_ver=06 lmp_subver=220e
[ 5945.727065] Bluetooth: hci0: BCM: firmware hci_ver=06 hci_rev=13a0 lmp_ver=06 lmp_subver=220e
And I was able to call to my colleague!
It works! Thank you very much!!!
Locked

Return to “Hardware Support”