作者:秋忆

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

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

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

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

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

  %AzBtModule.DeviceDesc%=RAMUSB3404,         USB\VID_13D3&PID_3404

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

    [RAMUSB3404.CopyList]

    bcbtums.sys

    btwampfl.sys

    BCM20702A1_001.002.014.1443.1479.hex

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

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

  把“.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下的驱动方法的更多相关文章

  1. Ubuntu 14.04 下搭建SVN服务器 svn://

    Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下 ...

  2. Ubuntu 14.04下安装功能强大的屏幕截图软件 Shutter

    [注释]试用了一下,果然很强大,牛逼 一款功能强大的屏幕截图软件——Shutter,Shutter最基本的就是截图功能了,在设计上可以自由选定区域,同时选定之 后依然可以通过上下左右四个地方来改变选区 ...

  3. 解决ubuntu 14.04 下eclipse 3.7.2 不能启动,报Could not detect registered XULRunner to use 或 org.eclipse.swt.SWTError: XPCOM 等问题的处理

    对于eclipse 3.7.2在ubuntu 14.04下不能启动,需要在 eclipse/configuration 目录下的config.ini文件内增加一行org.eclipse.swt.bro ...

  4. Ubuntu 14.04下java开发环境的搭建--3--Tomcat及MySQL的安装

    前面两篇文章,已经说明了JDK和Eclipse 的安装方法,下面简单说一下,Tomcat及MySQL的安装方法. Tomcat的安装. 在合适的地方解压apache-tomcat-6.0.39.tar ...

  5. Ubuntu 14.04 下手动安装Firefox的Flash插件

    有时候我们不得不採用手动安装一些软件. Ubuntu 14.04 下手动安装Firefox的Flash插件有下面几步 1. 下载Flash插件 下载地址为http://get.adobe.com/cn ...

  6. 分布式进阶(二)Ubuntu 14.04下安装Dockr图文教程(一)

    当前,完全硬件虚拟化技术(KVM.Xen.Hyper-V 等)能在一个物理主机上很好地运行多个互相独立的操作系统,但这也带来一些问题:性能不佳,资源浪费,系统反应迟缓等.有时候对用户来说,完全的硬件虚 ...

  7. Ubuntu 14.04 下安装 OpenCV

    参考: Installation in Linux Error compiling OpenCV, fatal error: stdlib.h: No such file or directory 图 ...

  8. Ubuntu 14.04 下搭建SVN服务器 (转载自 http://www.linuxidc.com/Linux/2015-01/111956.htm)-------------我所用到是红色字体

    http://www.linuxidc.com/Linux/2015-01/111956.htm Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get i ...

  9. Ubuntu 14.04下如何更换更新源(更新为163源)

    之前的安装ubuntu桌面版的之后安装yum,vim等会遇到一些问题, 比如:Ubuntu 14.04下如何更换更新源(更新为163源) 解决: http://jingyan.baidu.com/ar ...

随机推荐

  1. js在IE和FF下的兼容性问题

    本文出自前端档案,以作学习参考之用.自己也补充了一些内容 长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此 ...

  2. java获得某个月的天数

    /*** 方法一*/ String strDate = "2012-02"; SimpleDateFormat format = new SimpleDateFormat(&quo ...

  3. AI(一):概念与资讯

    AI: Artificial Intelligence(人工智能),它是研究.开发用于模拟和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学,上个世纪50年代一次学术讨论会议上,下图中几位著 ...

  4. SQL Server Analysis Services SSAS Processing Error Configurations

    转载:https://www.mssqltips.com/sqlservertip/3476/sql-server-analysis-services-ssas-processing-error-co ...

  5. 有wsdl地址生成客户端调用

    新建Java Project 1.项目名称:HelloWorldClient 2.建好的项目 3.生成客户端 选择HelloWorldClient 填写wsdl地址(参考:myeclipse构建web ...

  6. javascript冒泡排序一些新实现

    一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放在前面: 如 var arr = [7, 3, 10, 1, 8, 4, 2 ...

  7. AJAX-创建XMLHttpRequest对象

    AJAX-创建XMLHttpRequest对象 1.XMLHttpRequest是AJAX的基础,所有现在浏览器都支持,用于在后台与服务器交换数据,也就意味着可以在不加载整个页面的情况下对整个页面进  ...

  8. css 文本显示点点点

    今天有这个需求,百度获取到这个效果,记录下来. text-overflow :ellipsis; //让截断的文字显示为点点.还有一个值是clip意思是截断不显示点点 white-space : no ...

  9. 使用Ajax实现的批量删除操作(C#)

    今天做了一个简单的批量删除操作,虽然简单,但是很多问题出现,终究还是技术不够熟练. 现在在这里跟大家分享一下.仅供学习... 1.在前台获取用户点击的信息id,把这里id封装到一个数组里面:(rows ...

  10. 使用sql语句创建修改SQL Server标识列(即自动增长列)

    一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...