最近我意外发现公司的 ThinkPad E430 笔记本竟然是带有蓝牙的 :D
查看蓝牙设备标识 ID
利用 lsusb
命令找到蓝牙模块信息
Bus 001 Device 004: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module
其中 105b:e065 代表的是厂商标识:产品标识 (VendorID:ProductID),后面接着的是厂商描述 Foxconn International, Inc.,再后面代表的是模块名称 BCM43142A0 蓝牙模块。这样我们就得到了所需的最重要的 VID:PID 了,接下来把内核源代码下载下来修改更新即可。
更新内核模块
Ubuntu 14.04
使用的是 3.13 的 linux 内核版本,我们可以使用 apt-get
命令获取 linux 内核源码并编译:
切换到超级管理员
sudo su -
创建临时文件夹
mkdir kernel
cd kernel
下载 linux 内核源码
apt-get build-dep linux-image-`uname -r`
apt-get source linux-image-`uname -r`
修改源码加入 105b:e065
cd linux-3.13.0/drivers/bluetooth
vi btusb.c
编辑源代码文件 btusb.c
找到 BCM43142A0 的设备编号代码,结果发现 3.13 的源码中已经存在 105b:e065 的驱动信息了:
{ USB_DEVICE(0x04ca, 0x2007), .driver_info = BTUSB_BCM_PATCHRAM },
{ USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM },
好吧,直接编译 btusb
模块:
make -C /lib/modules/`uname -r`/build M=`pwd` modules
编译完成之后,会生成 btusb.ko
文件。 更新到自己的操作系统内核里去:
mv /lib/modules/`uname -r`/kernel/drivers/bluetooth/btusb.ko /
cp btusb.ko /lib/modules/`uname -r`/kernel/drivers/bluetooth/
depmod
更新蓝牙设备的固件
我认为我在更新蓝牙设备驱动这件事上还算是比较幸运的,参考 BCM94352HMB 蓝牙 BCM20702A0 在 Ubuntu 14.04 下的驱动方法 及 askubuntu 网站的 Bluetooth not working on ubuntu 14.04 with dell inspiron 15-3521 这两篇文章的说法,我在 Windows 7 的 C:\Windows\System32\drivers
目录下面(因为我在 ThinkPad E430 上面安装的是双系统)找到了 BCM43142A0_001.001.011.0084.0092.hex 文件,按照步骤:
sudo apt-get install git
git clone git://github.com/jessesung/hex2hcd.git
cd hex2hcd
make
./hex2hcd BCM43142A0_001.001.011.0084.0092.hex fw-105b_e065.hcd
sudo cp fw* /lib/firmware
关于生成的文件名命名规则,必须以 fw-<4位产商编号十六进制>_<4位产品编号十六进制>.hcd 格式,全部小写。
延伸阅读:4.2+ 内核需要命名成 BCM.hcd
, 4.8+ 内核需要命名成 BCM-<VID>-<PID>.hcd
, 比如 BCM-105b-e065.hcd
. 参见 [2]
重新加载内核模块:
sudo modprobe -r btusb
sudo modprobe btusb
这个时候我发现我右上角的那个蓝牙图标终于可以发现蓝牙设备了,Yeah!
参考资料
[1] Bluetooth not working on ubuntu 14.04 with dell inspiron 15-3521
[2] Bluetooth Broadcom 43142 isn’t working
[3] BCM94352HMB 蓝牙 BCM20702A0 在 Ubuntu 14.04 下的驱动方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)