@xnor:

Naming rule of the firmware has been changed for some historical
reasons...

* In 14.04, it is "/lib/firmware/brcm/fw-<VID>_<PID>.hcd". ( 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/trusty/tree/drivers/bluetooth/btusb.c#n1410
 )
* In 16.04, it is "/lib/firmware/brcm/<CHIP_NAME>.hcd". ( 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/tree/drivers/bluetooth/btbcm.c#n323
 )
* In 18.04, it is either "/lib/firmware/brcm/<CHIP_NAME>.hcd" or 
"/lib/firmware/brcm/<CHIP_NAME>-<VID>-<PID>.hcd". ( 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic/tree/drivers/bluetooth/btbcm.c#n478
 and 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic/tree/drivers/bluetooth/btbcm.c#n499
 )

Unfortunately because of its incompatible license, we're not able to
include the firmware in linux-firmware package. Even in the linux-
firmware upstream, there are only a very small amount of such bluebooth
firmware files and those should already be included in 18.04 linux-
firmware package. (
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-
firmware.git/tree/brcm )

If it used to work on 14.04 but stops working after upgrade, you may
already have "/lib/firmware/brcm/fw-<VID>_<PID>.hcd" in your 14.04
installation (maybe either from a preload Ubuntu system or it was
downloaded from somewhere). Filename of the firmware needs to be changed
after upgrade so that driver can find it. In this case:

$ sudo mv /lib/firmware/brcm/fw-0a5c_21e6.hcd
/lib/firmware/brcm/BCM20702A1-0a5c-21e6.hcd

If you wiped the whole system before installing 18.04, you have to find
the file elsewhere though.

If you are not sure what the correct hcd filename is, please check the
output of dmesg and you'll see the driver complaining about missing
firmware.

$ dmesg

-----

For converting the hex formatted firmware to hcd, hex2hcd is included in
newer bluez. In 18.04, simply install bluez then you'll have the tool:

$ sudo apt-get install bluez

Still you can use dmesg to determine the hcd filename to use:

$ dmesg

You'll have to find the hex firmware in Windows driver provided by
laptop vendors, then convert it and place the output to the right place.
For example:

$ sudo hex2hcd -o /lib/firmware/brcm/BCM20702A1-0a5c-21e6.hcd
<HEX_FILENAME>


Hope this helps.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1065400

Title:
  Support for loading Broadcom bluetooth firmware

Status in linux package in Ubuntu:
  Fix Released
Status in linux source package in Precise:
  Fix Released
Status in linux source package in Quantal:
  Fix Released
Status in linux source package in Raring:
  Fix Released
Status in linux source package in Saucy:
  Fix Released
Status in linux source package in Trusty:
  Confirmed

Bug description:
  Broadcom bluetooth chips require a tool called patchram uploader [1]
  to load firmware. This applies to at least BCM20702 and BCM43142.
  Although some of the devices have an OTPROM that contains required
  firmware, but it is found that these devices would not have HFP/HSP
  support unless a upgraded firmware is loaded via patchram uploader.

  This tool requires hci device to do the firmware loading, but this may
  cause some race condition between patchram tool and bluetoothd or
  something that also works on hci interface.

  Also it needs some hooks to make firmware loads after bootup, s3,  s4,
  rfkill, and device hotplug events. Implement this loader in kernel
  module would make things more easier.

  [1] http://marc.info/?l=linux-bluetooth&m=132039175324993&w=2

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1065400/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to