ThinkPad E430 蓝牙驱动 BCM43142A0

最近我意外发现公司的 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 内核源码并编译:

  1. 切换到超级管理员

    sudo su -
    
  2. 创建临时文件夹

    mkdir kernel
    cd kernel
    
  3. 下载 linux 内核源码

    apt-get build-dep linux-image-`uname -r`
    apt-get source linux-image-`uname -r`
    
  4. 修改源码加入 105b:e065

    cd linux-3.13.0/drivers/bluetooth
    vi btusb.c
    

    编辑源代码文件 btusb.c 找到 BCM43142A0 的设备编号代码,结果发现 3.13 的源码中已经存在 105b:e065 的驱动信息了:

    /* Broadcom BCM43142A0 */
    { USB_DEVICE(0x04ca, 0x2007), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM },
  5. 好吧,直接编译 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--.hcd, 比如 BCM-105b-e065.hcd. 参见 [2]

重新加载内核模块:

sudo modprobe -r btusb
sudo modprobe btusb

这个时候我发现我右上角的那个蓝牙图标终于可以发现蓝牙设备了,Yeah!
ThinkPad E430 蓝牙驱动 BCM43142A0_第1张图片

参考资料

[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 下的驱动方法

你可能感兴趣的:(Linux-驱动开发,BCM43142A0,蓝牙)