疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04

文章目录

        • 1. 问题描述
        • 2. 问题症结
        • 3. 解决办法
        • References

1. 问题描述

打开蓝牙搜索设备无果

2. 问题症结

终端下输入命令

dmesg | grep -i blue

疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第1张图片
BCM: Patch brcm/BCM.hcd not found
提示缺少BCM.hcd文件

3. 解决办法

  • 安装相关软件包

    sudo apt-get install bluez*
    
  • 输入lsusb查看蓝牙设备信息
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第2张图片

  • 搜索并下载相应cab包
    https://github.com/winterheart/broadcom-bt-firmware
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第3张图片
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第4张图片
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第5张图片
    也可以用命令进行下载

    wget http://download.windowsupdate.com/d/msdownload/update/driver/drvs/2015/10/200006644_5f769d5f45e68840195d3bb24ef9d1ae2c791272.cab
    
  • 安装cab解压工具

    sudo apt install cabextract
    
  • 解压下载好的cab包
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第6张图片
    解压后文件有很多,需要根据具体情况选择,我的固件是BCM43142A0,这里我选了BCM43142A0_001.001.011.0311.0327.hex
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第7张图片
    你可能会问了,这么多hex文件,你怎么就知道要用那一个呢。其实我这里用了0311.0327.hex这个文件,是因为这个文件名和我的电脑在windows下用到的一致,实际上直接拿windwos下的也可以。

    https://reasonw.github.io/blog/2017/02/13/Ubuntu-Bluetooth/
    在这里插入图片描述

  • 选择正确的hex文件
    上面通过Windows查看以确定需要的hex文件的方法比较麻烦,这里介绍另一种选择hex文件的方法。
    https://askubuntu.com/questions/632336/bluetooth-broadcom-43142-isnt-working/632348#632348

    在解压cab包之后,会有一堆的hex文件和其它的一些文件,其中有一个文件bcbtums.inf是我们要用到的。在bcbtums.inf文件中搜索RAMUSB21D7.CopyList,你将会看到你所需要的hex文件,如图:
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第8张图片

    INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。

  • 下载hex2hcd
    有了对应固件的hex文件后,需要将该hex文件转成hcd文件

    git clone https://github.com/jessesung/hex2hcd.git
    

    编译生成可执行文件

    cd hex2hcd
    make
    
  • 将hex文件转成xxx.hcd
    疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第9张图片
    放到firmware文件夹下

    sudo mv BCM43142A0_001.001.011.0311.0327.hcd /lib/firmware/brcm/BCM.hcd
    

    这里因为缺少BCM.hcd,所以命名为BCM.hcd

  • 重新加载模块

    sudo modprobe -r btusb
    sudo modprobe btusb
    

    然后就可以在蓝牙的设备里发现其他设备了。

疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第10张图片
疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第11张图片
疑难杂症 解决Ubuntu16.04 蓝牙搜索不到附近设备 适用于18.04_第12张图片

References

https://github.com/winterheart/broadcom-bt-firmware
https://reasonw.github.io/blog/2017/02/13/Ubuntu-Bluetooth/
https://askubuntu.com/questions/632336/bluetooth-broadcom-43142-isnt-working/632348#632348

你可能感兴趣的:(Linux)