解决Ubuntu蓝牙搜索不到附近设备的问题
针对 Ubuntu 蓝牙搜索不到附近设备的问题,本文通过分析发现是因为缺失 BCM.hcd 文件导致的,然后给出了相应的解决方案。
解决Ubuntu蓝牙搜索不到附近设备的问题
出现的问题
打开蓝牙搜索设备无果
原因分析
终端下输入命令
1 | dmesg | grep -i blue |
BCM: Patch brcm/BCM.hcd not found
提示缺少 BCM.hcd文件
解决步骤
实测该解决方法适用于 Ubuntu 16.04 和 18.04,其它版本未测试。
安装相关软件包
1
sudo apt-get install bluez*
输入
lsusb
查看蓝牙设备信息搜索并下载相应 cab 包
https://github.com/winterheart/broadcom-bt-firmware
也可以用命令进行下载
1
wget http://download.windowsupdate.com/d/msdownload/update/driver/drvs/2015/10/200006644_5f769d5f45e68840195d3bb24ef9d1ae2c791272.cab
安装 cab 解压工具
1
sudo apt install cabextract
解压下载好的 cab 包
解压后文件有很多,需要根据具体情况选择,我的固件是
BCM43142A0
,这里我选了BCM43142A0_001.001.011.0311.0327.hex
这里我用了
0311.0327.hex
这个文件,是因为这个文件名和我的电脑在 windows 下用到的一致,实际上直接拿 windwos 下的也可以。可以在自己电脑 windows 里面的
C:Windows/System32/drivers
文件夹下搜索.hex
文件,然后放到 Ubuntu 下面编译成.hcd
文件。选择正确的 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 文件,如图:INF 是 Device INFormation File 的英文缩写,是 Microsoft 公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF 文件中包含硬件设备的信息或脚本以控制硬件操作。在 INF 文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过 INF 文件,正是 INF 的功劳才使得 Windows 可以找到这些硬件设备的驱动并正确安装。
下载hex2hcd
有了对应固件的 hex 文件后,需要将该 hex 文件转成 hcd 文件
1
git clone https://github.com/jessesung/hex2hcd.git
编译生成可执行文件
1
2cd hex2hcd
make将 hex 文件转成 xxx.hcd
放到 firmware 文件夹下
1
sudo mv BCM43142A0_001.001.011.0311.0327.hcd /lib/firmware/brcm/BCM.hcd
这里因为缺少BCM.hcd,所以命名为BCM.hcd
重新加载模块
1
2sudo modprobe -r btusb
sudo modprobe btusb然后就可以在蓝牙的设置里搜索到其他设备了。
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
-
2019-06-08
Paragon ExtFS for Windows 拥有简洁美观的界面,能够实现 Windows 下读写 Linux 系统文件,读写 ext 文件系统的文件。
-
2019-11-10
tmux 是一个终端复用器(terminal multiplexer),它使你能够轻松地在多个终端程序之间来回切换,同时你还可以脱离它们(它们将在后台继续运行),然后在另一个终端窗口重新连接它们。
tmux 提升工作效率的两个主要功能:
窗口分割。在一个终端窗口中,可以随意进行水平或垂直分割,让你在一个窗口中运行多个独立的终端实例,这样你就无需打开多个终端窗口了。通过简单的组合键,你可以轻松在多个独立运行的终端实例间进行切换。
基于会话的访问控制。在使用 SSH 工作的情况下,tmux 能避免工作现场丢失。假设在你执行某条命令的过程中,因为某些不可抗的因素(如网络问题)导致连接断开,这时你可能很难确定刚才的命令是否执行成功;又或者当你处一个较深层次的目录位置时,若 SSH 连接断开,你不得不重新进入到之前的工作目录。如果使用了 tmux,就可以在 SSH 重新连接后,连接到 tmux 之前的 session,这样就可以回到原来的工作环境。
-
2019-06-08
Deepin Screenshot,一个简洁易用的截图工具。
-
2019-06-01
解决 Ubuntu 18.04 下字体显示异常的问题。