BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法

摘要:
博通的大多数蓝牙设备都需要制造商的固件补丁,在Linux下称为固件,BCM20702A0也不例外。类似“BCM20702A1_001.002.0141.443.1479”的文件。hex”可以在计算机提供商提供的Windows驱动程序安装包中找到。它是一个固件内存补丁。它包含十六进制文本,可以打开查看。现在重新启动并进入Ubuntu 14.04操作系统……Ubuntu下的操作主要基于命令。

作者:秋忆

出处:http://www.cnblogs.com/qiuyi21/p/bcm20702a0_ubuntu.html

  先确认蓝牙的产商编号(idVendor)和产品编号(idProduct),Linux下可通过lsusb或usb-devices命令查看,Windows下在设备管理里查看,如下图所示。我的蓝牙idVendor为0x13d3,idProduct为0x3404

 BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法第1张

  Broadcom的大部分蓝牙设备都需要一个产商的固件补丁(RAM patch file),Linux下叫firmware,BCM20702A0也不例外。在电脑提供商提供的Windows驱动安装包里可以找到类似“BCM20702A1_001.002.014.1443.1479.hex”这样的文件,就是固件内存补丁了,里面保存着十六进制的文本,可以打开来看。

  怎么找到自己的蓝牙设备的固件内存补丁文件呢?

  方法一、在Windows驱动安装包里找到驱动的信息文件(.inf),如我的是“bcbtums-win8x64-brcm.inf”。打开查找“USBVID_13D3&PID_3404”( 产商编号和产品编号按自己的),找到类似如下信息:

  %AzBtModule.DeviceDesc%=RAMUSB3404,         USBVID_13D3&PID_3404

  然后再查找“[RAMUSB3404”,会找到类似如下信息:

    [RAMUSB3404.CopyList]

    bcbtums.sys

    btwampfl.sys

    BCM20702A1_001.002.014.1443.1479.hex

  看到“.hex”的文件名了吧,就是它了。

  方法二、在Windows的设备管理器里查看,如下图所示。

BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法第2张 

  把“.hex”文件保存起来,等下会用到。现在重启进入Ubuntu 14.04操作系统……

  Ubuntu下的操作以命令为主。

  第一步,修改内核,以kernel 3.13为例。

    cd ~

    mkdir kernel

    cd kernel

    apt-get build-dep linux-image-`uname -r`

    apt-get source linux-image-`uname -r`

    cd linux-3.13.0/drivers/bluetooth/

  然后编辑代码文件btusb.c,找到BCM20702A0的设备编号代码,把

    /* Broadcom BCM20702A0 */

    { USB_DEVICE(0x0b05, 0x17b5) },

    { USB_DEVICE(0x0b05, 0x17cb) },

    { USB_DEVICE(0x04ca, 0x2003) },

    { USB_DEVICE(0x0489, 0xe042) },

    { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x413c, 0x8143), .driver_info = BTUSB_BCM_PATCHRAM },

  改为

    /* Broadcom BCM20702A0 */

    { USB_DEVICE(0x13d3, 0x3404), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x0b05, 0x17b5) },

    { USB_DEVICE(0x0b05, 0x17cb) },

    { USB_DEVICE(0x04ca, 0x2003) },

    { USB_DEVICE(0x0489, 0xe042) },

    { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM },

    { USB_DEVICE(0x413c, 0x8143), .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

  第二步,生成蓝牙设备的固件(firmware)。

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

    cd hex2hcd

    make

    ./hex2hcd BCM20702A1_001.002.014.1443.1479.hex fw-13d3_3404.hcd

  注意生成的文件名必须以“fw-<4位产商编号十六进制>_<4位产品编号十六进制>.hcd”格式,全部小写。

  然后复制固件文件到指定的目录:

    cp fw-13d3_3404.hcd /lib/firmware/

    chown root:root /lib/firmware/fw-13d3_3404.hcd

  OK,完成。可以执行“rmmod btusb; modprobe btusb”或重启操作系统看蓝牙正常驱动没有。如果正常,执行命令“rfkill list”可以看到hci0,然后执行“hciconfig hci0 up”可以让蓝牙开启,“hcitool dev”可以看到蓝牙设备,“hcitool scan”可以扫描周围的蓝牙信号。如果不正常,执行dmesg查看日志进行排查。

  注意,由于修改了内核模块,如果操作系统升级内核将会令蓝牙驱动失效,需要在新内核下重新编译安装btusb模块。

免责声明:文章转载自《BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在C#中什么时候用分号?C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinCE串口蓝牙的实现 .

此篇文章用于说明如何在WinCE系统上实现串口蓝牙,希望给想在CE上实现这个功能的“新手”朋友一个帮助。    先说一下我的硬件环境:CSR BC4 ROM蓝牙芯片,S3C6410,WinCE6.0系统。     硬件连接:把蓝牙的RX,TX,CTS,RTS和板子上的相应口连接,注意是交叉连接,我这里连接的是UART1。还有就是给蓝牙供电,地,天线等。  ...

Android 蓝牙开发(2)——低功耗蓝牙

低功耗蓝牙官方文档 本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。 官网地址:https://developer.android.com/guide/topics/connectivity/bluetooth-le Android 4.3 (API 18 )引入了低功耗蓝牙,应用可以查询周围设备、查询...

Win10下 Yoga 3 Pro蓝牙鼠标失灵解决办法

环境:学校正版Windows 10 (WIN_EDU_10_64BIT_ChnSimp)升级到1607 现象:系统启动后很长时间后蓝牙无线鼠标无法使用。 解决: 联想官网下载相应版本的蓝牙驱动程序 BlueTooth_Win10 并安装。 Win+R 输入 services.msc 将Bluetooth Handsfree Service 设...

蓝牙BLE控制芯片(6) : 博通BCM20732

北京,2013年6月4日 - 全球有线和无线通信半导体创新解决方案的领导者博通(Broadcom)公司(Nasdaq:BRCM)宣布,推出一款新的蓝牙智能SoC,以推动更广范围的低成本、低功耗外围设备与安卓智能手机和平板电脑配合工作。该公司同时还公布了为安卓开源项目(AOSP)所开发的蓝牙软件栈,其中包括经典蓝牙和蓝牙智能(前身为蓝牙低功耗)技术。博通新推...

蓝牙简介

1.蓝牙速率 V1.1   1MbpsV2.0   3MbpsV3.0   54MbpsV4.0   0.3Mbps 低功耗 2.目前主流版本是4.2 3.蓝牙5.0与蓝牙4.2的区别相较于目前的普遍使用的蓝牙4.2,蓝牙5.0的主要优势在于传输速度更快、传输距离更远以及使用功耗更低。(1)更快的传输速度蓝牙5.0的传输速度上限为2Mbps,是之前4.2L...

NRF52805低功耗小体积BLE5.0系统级芯片

  nRF52805是NORDIC广受欢迎且经过验证的nRF52系列的第七款产品,支持蓝牙5.0,相当于nRF52810的costdown版本。  nRF52805带有具有出色能效(65 CoreMark/mA)并且功能强大(144 CoreMark)的64MHz 32位Arm® Cortex®-M4处理器,以及192KB闪存和24KB RAM。其多协议(...