作者:秋忆

出处: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. pthread_cond_wait()函数的理解(摘录)

    /************pthread_cond_wait()的使用方法**********/pthread_mutex_lock(&qlock);    /*lock*/pthread_c ...

  2. 为maven插件设置参数的三种方法

    很多的maven插件都提供了丰富的可选参数,用户可以通过设置特定的参数值来控制maven插件的行为.设置插件参数的方法主要有三种,分别是命令行设置,POM文件中为插件设置全局参数和POM文件中为插件设 ...

  3. 实验1_IPv6地址配置

    IPv6地址配置 实验任务 (1)掌握如何在路由器及PC上配置IPv6地址 (2)掌握如何用IPv6 ping命令进行IPv6地址可达性检查 (3)掌握如何用命令来查看IPv6地址配置 实验过程 在R ...

  4. LeetCode-Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  5. Python初学的易犯错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  6. hdu 1010 深搜+剪枝

    深度搜索 剪枝 还不是很理解 贴上众神代码 //http://blog.csdn.net/vsooda/article/details/7884772#include<iostream> ...

  7. sqldeveloper

    阅读文档:e12152-08 preferences 首选项,参数 panes 窗格 tabs 标签,选项卡 pin 别针,钉住 detach,move,dock 分离,移动,停靠 find data ...

  8. 游戏AI框架

  9. 为毛无法创建文本文件COM1.txt

    是的,windows系统下,右键,新建文本文件,将文件名编辑为COM1.txt,确认,保存……THEN....你会发现无论如何也无法创建一个文本文件,名为COM1.txt. 猜是COM1被作为了IO设 ...

  10. [综] Sparse Representation 稀疏表示 压缩感知

    稀疏表示 分为 2个过程:1. 获得字典(训练优化字典:直接给出字典),其中字典学习又分为2个步骤:Sparse Coding和Dictionary Update:2. 用得到超完备字典后,对测试数据 ...