Bug 98021 - Broadcom 43341 sdio bluetooth module is not recognized.
Summary: Broadcom 43341 sdio bluetooth module is not recognized.
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: 2015-05-09 16:20 UTC by Francesco Bonanno
Modified: 2016-06-16 15:21 UTC (History)
5 users (show)

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


Attachments
lsmod + dmesg + hciconfig (1.12 KB, text/plain)
2015-05-09 16:20 UTC, Francesco Bonanno
Details

Description Francesco Bonanno 2015-05-09 16:20:27 UTC
Created attachment 176311 [details]
lsmod + dmesg + hciconfig

Running a linux distribution (ubuntu this time), on an Asus Transformer Book T200TA. It is provided of a Broadcom 43341 wireless 2.4/5GHz, bluetooth, nfc and fm chipset.

The issue is that the btsdio module is loaded, and it is revealed as an hci device (hci0). Anyway, btsdio does not allow to charge the needed bluetooth firmware for the device, so the device is not usable. 

I believe that btsdio should permit the loading of the firmware or the writing of a new module ad-hoc for the bcm43341 bluetooth part of the chipset that also permits the loading of the firmware on the device.

Feel free to ask anything that will be needed to fix the issue.
Comment 1 Arend van Spriel 2015-05-09 19:14:09 UTC
The bluetooth part is probably hooked up to the system through uart. I suspect btsdio is bound to function #3 of the device because it finds some hint of information in sdio control registers, but it really needs to be access through uart.
Comment 2 Francesco Bonanno 2015-05-09 21:29:06 UTC
Studying how it works on intel edison (it should use the same chipset), intel guys have had included this module to get it working (ext4 partition mounted under /mnt just as it is comfortable to inspect).

filename:       /mnt/lib/modules/3.10.17-yocto-standard-r2/kernel/drivers/misc/bcm-lpm/bcm_bt_lpm.ko
license:        GPL
author:         Jaikumar Ganesh <jaikumar@google.com>
description:    bcm43xx_bluetooth
alias:          platform:bcm43xx
depends:        
intree:         Y
vermagic:       3.10.17-yocto-standard-r2 SMP preempt mod_unload ATOM

And it seems that they are using brcm_patchram_plus to load the firmware (I have compiled a copy of the utility for x86_64). https://software.intel.com/en-us/articles/intel-edison-board-getting-started-with-bluetooth Here there is the documentation for the intel edison board : https://communities.intel.com/community/makers/edison/documentation .
Comment 3 Arend van Spriel 2015-07-10 21:22:46 UTC
Interesting that it seems to be coming from google. That driver provides low-power mode when device is idle so similar to runtime pm. In latest kernel support has been added to deal with firmware load in kernel, ie. no need to use brcm_patchram_plus.
Comment 4 Francesco Bonanno 2016-06-16 15:21:11 UTC
Hello, after some time I have started to work again with the my asus t200ta. I have the bluetooth module working now!

https://github.com/LGSInnovations/edison-yocto-image/raw/master/edison-image-edison-ext4/etc/firmware/bcm43341.hcd this is the firmware used to get it working (I've originally unpacked it from the intel edison image, anyway I have found this repository where it is pushed already, so you can take the firmware here for tests)

After I have discovered that the bcm43341 (at least on my t200ta and with linux 4.7rc3) is seen as a bcm43341B0 on /dev/ttyS4

[ 1251.074780] Bluetooth: hci1: BCM: chip id 82
[ 1251.074792] Bluetooth: hci1: BCM43341B0 (002.001.014) build 0000

So I have put the firmware under /lib/firmware/brcm/BCM43341B0.hcd where btattach is looking for it and after I have launched it with:

"btattach --bredr /dev/ttyS4 -P bcm" as root, and it is working without issues!

I have put the command under /etc/rc.local as workaround, however I imagine that you will find a better solution to have it recognised automatically by the kernel. 

I hope all this will be usefull!

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