BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法
作者:秋忆
出处: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下的驱动方法的更多相关文章
- Ubuntu 14.04 下搭建SVN服务器 svn://
Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下 ...
- Ubuntu 14.04下安装功能强大的屏幕截图软件 Shutter
[注释]试用了一下,果然很强大,牛逼 一款功能强大的屏幕截图软件——Shutter,Shutter最基本的就是截图功能了,在设计上可以自由选定区域,同时选定之 后依然可以通过上下左右四个地方来改变选区 ...
- 解决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 ...
- Ubuntu 14.04下java开发环境的搭建--3--Tomcat及MySQL的安装
前面两篇文章,已经说明了JDK和Eclipse 的安装方法,下面简单说一下,Tomcat及MySQL的安装方法. Tomcat的安装. 在合适的地方解压apache-tomcat-6.0.39.tar ...
- Ubuntu 14.04 下手动安装Firefox的Flash插件
有时候我们不得不採用手动安装一些软件. Ubuntu 14.04 下手动安装Firefox的Flash插件有下面几步 1. 下载Flash插件 下载地址为http://get.adobe.com/cn ...
- 分布式进阶(二)Ubuntu 14.04下安装Dockr图文教程(一)
当前,完全硬件虚拟化技术(KVM.Xen.Hyper-V 等)能在一个物理主机上很好地运行多个互相独立的操作系统,但这也带来一些问题:性能不佳,资源浪费,系统反应迟缓等.有时候对用户来说,完全的硬件虚 ...
- Ubuntu 14.04 下安装 OpenCV
参考: Installation in Linux Error compiling OpenCV, fatal error: stdlib.h: No such file or directory 图 ...
- 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 ...
- Ubuntu 14.04下如何更换更新源(更新为163源)
之前的安装ubuntu桌面版的之后安装yum,vim等会遇到一些问题, 比如:Ubuntu 14.04下如何更换更新源(更新为163源) 解决: http://jingyan.baidu.com/ar ...
随机推荐
- Hadoop安装及配置
一.系统及软件环境 1.操作系统 CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 master.fansik.com:192.168.83. ...
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
- 笔记 进程(processes)
进程:a program in execution(执行中的程序) 进程包括通过程序计数器(program counter)的值和处理器寄存器(processor's registers)的内容来表示 ...
- BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Sta ...
- kbengine里如何使用git快速下载项目?
项目有两个镜像,github[https://github.com/kbengine/kbengine.git] ,osc开源中国[https://git.oschina.net/likecg/kbe ...
- (转)LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION
LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION Wed 21st Dec 2016 Neural Networks these days are th ...
- Hyper-V端口映射
有时候我们为了让局域网或外网用户直接远程访问或访问虚拟机里的服务,可以将实机端口直接映射到Hyper-V的虚拟机里面,省去很多麻烦. 下面是hyper-v共享IP端口映射一些常用命令共享IP端口映射一 ...
- 关于在DataGrid.RowDetailsTemplate中的控件查找不到的问题
DataGrid.RowDetailsTemplate中的控件需要显示出来才能查找,可以尝试在MouseLeftButtonUp等事件中处理.
- angular2开发01
// */ // ]]> angular2开发01 1. angular2 开发准备 1.1. 安装node 1.2. 安装npm 1.3. 运行qickStart 1 angular2 开发准 ...
- mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...