Bug 199459 - Bluetooth on BCM43228 with firmware loaded only works with disabled Wi-Fi
Summary: Bluetooth on BCM43228 with firmware loaded only works with disabled Wi-Fi
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Bluetooth (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: linux-bluetooth@vger.kernel.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-21 22:45 UTC by Nikita Krupenko
Modified: 2018-04-21 22:45 UTC (History)
0 users

See Also:
Kernel Version: 4.14.34
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Nikita Krupenko 2018-04-21 22:45:41 UTC
I have a laptop with the Broadcom BCM43228 Wi-Fi + Bluetooth and I use the b43 driver for it.

I found, that when I connected a bluetooth speaker (with a microphone), it works fine in A2DP mode, but in HFP/HSP mode neither playback nor recording works, though speaker indicates, that it's in HFP/HSP mode. I use a PulseAudio mixer to switch modes.

I found information, that Broadcom bluetooth chips requires firmware to work in HFP/HSP mode. And indeed, in the dmesg output I see the following:

bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0489-e046.hcd failed with error -2
Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0489-e046.hcd not found

That firmware file should be placed to the /lib/firmware/brcm/ It can be extracted from a Windows driver and converted using the hex2hcd utility. Also, ready firmware available here: https://github.com/winterheart/broadcom-bt-firmware I tried both and they are the same.

With the firmware both A2DP and HFP/HSP mode works, but more serious issue arises: when I enable Wi-Fi, Bluetooth fails to connect to speaker (and to other devices) and cannot even find it during scan. Once I disable the Wi-Fi, Bluetooth starts to work. Without the firmware they are work fine simultaneously, only the HFP/HSP support is missing.

I also discovered, the once I copy the firmware an enable the Bluetooth, it seems like the firmware loaded into the device memory and stay there even after  reboot. So if I delete the firmware file and reboot my laptop, Bluetooth still works like the firmware loaded. The only thing that helps to get rid of that is to suspend my laptop and to resume it back, that seems to load the default firmware.

With "loaded" firmware I see this in dmesg:

Bluetooth: hci0: Acer Laptop
Bluetooth: hci0: BCM20702A1 (001.002.014) build 1465

After I suspend/resume my laptop, I see thin in dmesg:

Bluetooth: hci0: BCM20702A
Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000

Additional information:

Laptop: Acer Aspire V5-552G
Distribution: Mageia Cauldron x86_64
Kernel: 4.14.34-desktop-1.mga7
Output of `lspci -vv` for the device:

04:00.0 Network controller: Broadcom Limited BCM43228 802.11a/b/g/n
        Subsystem: Foxconn International, Inc. Device e04b
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 17
        Region 0: Memory at f0000000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>
        Kernel driver in use: bcma-pci-bridge
        Kernel modules: bcma

Note You need to log in before you can comment on or make changes to this bug.