【2017/08/23】博通蓝牙使用反馈(已解决)
Tofloor
poster avatar
nocode
deepin
2017-08-24 03:52
Author
本帖最后由 nocode 于 2017-8-24 10:54 编辑

双系统用户,从Windows系统切回Deepin蓝牙就不可用了。
日志已上传,求解决方案。

感谢3楼提供思路,Google找到了解决办法。


第一步:
  1. sudo dmesg | grep -i blue
Copy the Code
输出里找到类型信息:
  1. bluetooth hci0: firmware: direct-loading firmware brcm/BCM20702A1-0489-e07a.hcd
Copy the Code
记住这里的 BCM20702A1-0489-e07a.hcd


第二步
https://github.com/winterheart/broadcom-bt-firmware/tree/master/brcm
下载对应的hcd文件


第三步
  1. sudo cp BCMxxxxxx /lib/firmware/brcm
Copy the Code


第四步
重启电脑,验证蓝牙是否已经能够使用。




Reply Favorite View the author
All Replies
avatar
nocode
deepin
2017-08-24 03:54
#1
Reply View the author
avatar
wangqizai1918
deepin
2017-08-24 06:08
#2
[    4.304564] bluetooth hci0: firmware: failed to load brcm/BCM20702A1-0489-e07a.hcd (-2)
[    4.304570] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0489-e07a.hcd failed with error -2
[    4.304574] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0489-e07a.hcd not found
在你的dmesg 里找到以上这几行,
感觉你可以参考Ubuntu论坛里的这个回答先试试
                                                         ——来自同样被博通蓝牙整的很惨的我

You need to install firmware.

Distribution of Broadcom firmware is not allowed by Broadcom license. So you need to get it yourself. It is a bit complex, but there is no other legal way.

    Download Broadcom Windows 8 driver or FROM HERE. I found the latest drivers at Broadcom site. The homepage for the drivers is HERE in case they change the link.

    Open this file by Archive Manager and find there bcbtums-win8x86-brcm.inf file. Name of the file may differ in some drivers. It can be bcbtums.inf located at Win32 or Win64 directory. It does not matter 32 or 64 bit to download.

    Search this file for VID_0A5C&ID_21D7. These numbers are from your lsusb output

    0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0.

Comment: Some devices are not recognized as Broadcom BT in lsusb. If you are unsure which one is your BT device, run usb-devices command, it will give more detailed information. There you can find product and vendor IDs.

You will see some line ending with RAMUSB21D7

Search this file for RAMUSB21D7. You will find a section there like that:

    [RAMUSB21D7.CopyList]
    bcbtums.sys
    btwampfl.sys
    BCM43142A0_001.001.011.0122.0126.hex

That's what we are looking for. Name of the firmware file. BCM43142A0_001.001.011.0122.0126.hex

    Now extract that firmware from the same cab file.

    Then you need to convert this file from hex to hcd format.

    Download the tool for that

    git clone git://github.com/jessesung/hex2hcd.git
    cd hex2hcd
    make

    You will get hex2hcd folder in your home directory.

    Place the firmware file to your home folder and run

    ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd

    You see that 0a5c-21d7 is id of your adapter from lsusb.

Important: For kernels 4.2+ you call this file as BCM.hcd instead.

   ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd

For kernels 4.8+ name of the file should be BCM--<ID>.hcd, like BCM-0a5c-21d7.

    Now just copy BCM43142A0-0a5c-21d7.hcd, or another file according to the kernel version to /lib/firmware/brcm directory by

    sudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm

For kernels 4.2+

    sudo cp ~/BCM.hcd /lib/firmware/brcm

For kernels 4.8+

    sudo cp ~/BCM-0a5c-21d7.hcd  /lib/firmware/brcm

You can always check if the file name is correct by running dmesg | grep -i blue. There will be an error message if the file is not found.

    Turn your computer off and on again. Not just reboot!

    Your adapter will get firmware and bluetooth should work.

All this looks complicated, but it is Broadcom lawyers to blame for that. Most of other vendors allow to re-distribute firmware under condition that it is done acompanied with the license.

That allows linux maintainers to include firmware in distributions.

But not in case of Broadcom. That's why it is not done an easy way.

Many people could convert all hex files to hcd and make them available. Or just add them to linux-firmware package of Ubuntu.

But it is not legal :-((
Reply View the author
avatar
jingle
deepin
2017-08-24 16:49
#3

已经反馈了
Reply View the author
avatar
yanbowen
deepin
Community Developer
2017-08-24 17:36
#4
贴一下 'sudo rfkill list' 和 'sudo hciconfig' 的输出, 或者回到win把蓝牙关闭再打开一下
Reply View the author
avatar
nocode
deepin
2017-08-24 18:20
#5
  1. ~$ sudo rfkill list
  2. [sudo] nocode 的密码:
  3. 0: hci0: Bluetooth
  4.         Soft blocked: no
  5.         Hard blocked: no
  6. 1: phy0: Wireless LAN
  7.         Soft blocked: no
  8.         Hard blocked: no
Copy the Code


  1. $ sudo hciconfig
  2. hci0:        Type: Primary  Bus: USB
  3.         BD Address: 48:E2:44:E2:88:66  ACL MTU: 1021:8  SCO MTU: 64:1
  4.         UP RUNNING INQUIRY
  5.         RX bytes:91651 acl:0 sco:0 events:16532 errors:0
  6.         TX bytes:105034 acl:0 sco:0 commands:13785 errors:0
Copy the Code
Reply View the author
avatar
yangbo
deepin
2017-08-24 19:23
#6
...
broadcom bluetooth的firmware还没打包吗? 记得很早之前给张爽还是刘剑锋说过的, 还有nouveau的firmware
Reply View the author
avatar
nocode
deepin
2017-08-24 19:26
#7
https://bbs.deepin.org/post/144592
...
broadcom bluetooth的firmware还没打包吗? 记得很早之前给张爽还是刘剑锋说过的, 还有nouveau的firmwa ...

估计...没打包全?
Reply View the author
avatar
Island
deepin
2017-08-24 23:17
#8
nouveau-fw 仓库已经有了。
Reply View the author
avatar
ailick
deepin
2017-08-25 07:17
#9
邪教用户有AUR提供固件,由于固件太旧,于是我选择了自己打包,目前正常
Reply View the author
avatar
wangqizai1918
deepin
2017-08-25 08:01
#10
直接上4.12.8吧,这个内核似乎对硬件支持很好
Reply View the author
avatar
nocode
deepin
2017-08-25 18:35
#11
https://bbs.deepin.org/post/144592
直接上4.12.8吧,这个内核似乎对硬件支持很好

不知道对外接显示器如何,我现外接显示器就很卡,估计显卡问题。我只有集显。
Reply View the author