资源下载链接:

bluez-4.95相关源码:http://download.csdn.net/detail/u011408697/8515323
RTL8723BU蓝牙驱动源码,不含dbus-1.10.0:http://download.csdn.net/detail/qqchangjianfei/9554279


一、交叉编译并移植bluez-4.95


实验室的项目需要在九鼎X210BV3开发板上移植蓝牙-WIFI二合一模块的驱动,模块的芯片型号是RTL8723BU,之前没有做过这方面的项目,于是开始在网上查资料。按照网上的流程做下来,碰到了一些问题,所以写下来,希望对大家有所帮助。

参考博客:http://blog.csdn.net/u011408697/article/details/44459239

代码之间依赖关系,请大家按顺序编译

bluez ─┬─ dbus ─── expat
     └─ glib
bluez-hcidump

prefix、host、with前面是两个减号,博客显示有问题,请大家注意

1、交叉编译 expat-2.0.1:

./configure –prefix=/usr/local/bluez-4.95 –host=arm-linux CC=arm-none-linux-gnueabi-gcc

make
make install
 

2、交叉编译 dbus-1.4.1:

./configure \
–prefix=/usr/local/bluez-4.95 \
–host=arm-linux \
–with-x=no \
–enable-abstract-sockets \
CC=arm-none-linux-gnueabi-gcc \
CFLAGS=-I/usr/local/bluez-4.95/include \
LDFLAGS=-L/usr/local/bluez-4.95/lib

make
make install

原博客交叉编译使用了dbus-1.4.1,但是我就一直编译不通过,试了试dbus-1.10.0,编译成功。

3、交叉编译 glib-2.16.2:

./configure \
–prefix=/usr/local/bluez-4.95 \
–host=arm-linux \
CC=arm-none-linux-gnueabi-gcc \
glib_cv_stack_grows=no \
glib_cv_uscore=yes \
glib_cv_have_qsort_r=yes \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes

make
make install
 

可能报错 1:

You must have either have gettext support in your C library, or use the
GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html)

解决:apt-get install gettext
 

可能报错 2:configure: error: Could not find a glib-genmarshal in your PATH

注:缺少命令 glib-genmarshal,去下个 dev 包

解决:apt-get install libglib2.0-dev
 

可能报错 3:(当使用 glib-2.16.0 时)

gtester.c: In function ‘launch_test_binary’:
gtester.c:276: error: ‘ARG_MAX’ undeclared (first use in this function)
gtester.c:276: error: (Each undeclared identifier is reported only once
gtester.c:276: error: for each function it appears in.)
gtester.c:276: warning: unused variable ‘argv’

注:这是 glib-2.16.2 以前的 bug,在官方 2.16.1 to 2.16.2 中 fix 了,所以推荐使用 glib-2.16.2.tar.gz
 

4、交叉编译 bluez-4.95:

export PKG_CONFIG_LIBDIR=/usr/local/bluez-4.95/lib/pkgconfig

./configure \
–prefix=/usr/local/bluez-4.95 \
–host=arm-linux \
–disable-audio \
–enable-network \
–enable-serial \
–enable-input \
–enable-service \
–enable-health \
–enable-usb \
–enable-tools \
–enable-bccmd \
–enable-hid2hci \
–enable-hidd \
–enable-pand \
–enable-cups \
–enable-test \
CC=arm-none-linux-gnueabi-gcc \
CFLAGS=-I/usr/local/bluez-4.95/include \
LDFLAGS=-L/usr/local/bluez-4.95/lib

make
make install

5、交叉编译 bluez-hcidump-2.5:

./configure –prefix=/usr/local/bluez-4.95 –host=arm-linux CC=arm-none-linux-gnueabi-gcc

make
make install


二、驱动移植


参考博客:http://blog.csdn.net/qqchangjianfei/article/details/51719108

1、从网上下载8723bu_bt驱动RTL8723BU.rar(蓝牙wifi驱动都有)

解压到:/home/linux/hyutong/qt_x210v3/kernel/drivers/Bluetooth,请根据自己实际路径进行修改。

修改Bluetooth下的Makefile

obj-$(CONFIG_BT_RTKBTUSB_CJF)   += rtk_btusb_cjf.ortk_btusb_cjf-y:= rtk_coex.o rtk_bt.o

和Bluetooth下的Kconfig

config BT_RTKBTUSB_CJFtristate "RTK HCI USB driver byCJF"depends on USBhelpRTK Bluetooth HCI USB driver by CJF

2、增加内核选项

(1)进入内核目录,输入menuconfig

(2)选择Networking support

(3)将Bluetooth subsystem support由<>变为<*>,然后进入Bluetooth subsystem support

(4)Bluetooth subsystem support内设置如下,然后进入Bluetooth device driver

(5)Bluetooth device driver内设置如下

3、将固件编译进内核

参考博客:http://www.cnblogs.com/lr-ting/archive/2012/07/05/2563326.html

这块卡了好几天,之前把上面的步骤都做完了,但是会报错,错误信息如下:

rtk_btusb: get_firmware start
[ 1333.730412] rtk_btusb: load_firmware start
[ 1333.734466] rtk_btusb: lmp_version = 0x8723
[ 1333.738607] rtk_btusb: config name is rtl8723bu_config
[ 1393.806571] rtk_btusb: fw name is rtl8723b_fw
[ 1453.931534] rtk_btusb: get_firmware failed!
[ 1453.934247] rtk_btusb: Rtk patch end -1
[ 1453.939233] rtk_btusb: btusb_open failed pm_usage_cnt(0x0)

看上去是固件加载失败,按照网上的说法将:rtl8723b_fw 、rtl8723bu_config放到/lib/firmware下,发现还是报错,直到有一天看到:

就打算尝试一下将固件编译进内核,步骤如下:

(1)将rtl8723b_fw 、rtl8723bu_config放到:

(2)依旧是在kernel下输入make menuconfig,图片略

(3)进入Device Drivers

(4)进入Generic Driver Options

(5)Generic Driver Options内设置如下:

内核的修改算是完成了,接着将修改过的内核烧录进开发板,进行最后的使用步骤。


三、使用方法


参考博客依旧是:http://blog.csdn.net/u011408697/article/details/44459239

1、把交叉编译好的 bluez-4.95 复制到开发板上,比如放在 /usr/local/ 下

2、开发板上,vi /etc/passwd,在最后添加messagebus:x:500:500::/home/messagebus:/bin/sh,保存

3、添加环境变量:

export PATH=/usr/local/bluez-4.95/bin:$PATH
export PATH=/usr/local/bluez-4.95/sbin:$PATH
export LD_LIBRARY_PATH=/usr/local/bluez-4.95/lib:$LD_LIBRARY_PATH

4、输入命令:

    hciconfighciconfig hci0 uphcitool scan

成功扫描到蓝牙设备!

小白ARM平台移植 USB 蓝牙、交叉编译 bluez-4.95相关推荐

  1. ARM USB蓝牙,Bluez 移植。

    标题:USB 蓝牙适配器在ARM 开发板下的使用: 关键字: dbus,bluez-lib, bluez-utils, USB 蓝牙,ARM 正文: 1.我的操作环境是 主机:xp + VMware ...

  2. 如何在arm平台移植ubuntu系统(转)

    linux查看内核版本和发行版本号: https://www.cnblogs.com/guiyishanren/articles/8638921.html 华为开源镜像网站:含有不同平台架构的系统资源 ...

  3. [TI TDA4 J721E]基于TDA4平台 FFmpeg / X264 的ARM平台移植

            大家好,首先感谢阅读,如果您也对TDA4相关的开发感兴趣,可以私信联系博主,我们这边有个学习交流群,可以入群和大家一起交流学习.         也可以加博主WX :AIR_12 我会 ...

  4. Zynq移植USB触摸屏

    Zynq平台移植USB触摸屏的实现(Qt5.7) 使用的环境: 1. CPU type:ARM CortexA9(Xilinx zynq7000)(使用的是黑金AX7021开发板) 2. Kernel ...

  5. 【华为云技术分享】为什么越来越多企业正在往ARM平台迁移?

    架构变迁 说到CPU架构,我们可能必然会提到CISC(复杂指令集,比如桌面端采用的X86系列)和RISC(精简指令集,比如移动端广泛采用的ARM系列).理论上,RISC 相比于 CISC(Intel ...

  6. ARM平台上蓝牙协议栈Bluez的移植使用和配置

    版权所有,转载请注明出处http://blog.csdn.net/gatieme/article/details/48751743 参考 http://blog.csdn.net/lizzywu/ar ...

  7. mysql 客户端 交叉编译_移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台 MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.ph ...

  8. 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板

    经过几天的努力,终于交叉编译出了arm平台所需Qt/E的MySQL插件(驱动),其中顺便把MySQL也移植到了mini2410的开发板上. 编译器:arm-linux-gcc(4.3.2) Pc平台: ...

  9. 移植mysql到嵌入式ARM平台

    移植MySQL到嵌入式ARM平台    MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space ...

  10. mysql在单片机移植_移植MySQL到嵌入式ARM平台

    因为MySQL5.5之后,编译是用的cmake不再使用./configure,因此,只好倒回支持./configure的版本来用,这里使用了文档上的5.1.51版本.进行如下步骤完成移植: 1) 下载 ...

最新文章

  1. mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充
  2. sublime text 的小细节设置,让你的代码更优美
  3. mysql--字段--索引的增删改查
  4. 弹性碰撞后速度方向_高三期中考后分析,不得不知道的重难点
  5. keras中的神经网络为什么需要多次epoch
  6. Nginx 笔记与总结(13)Nginx 的 gzip 压缩
  7. 用了Dapper之后通篇还是SqlConnection,真的看不下去了
  8. 操作系统【四】分页存储管理
  9. python unittest断言_python unittest之断言及示例
  10. iPhone 12s Pro渲染图曝光:屏幕和相机将成升级重点
  11. gdb对应vc调试命令
  12. 电商销售数据分析(Python)
  13. UWP应用解除网络限制
  14. hdu 4747(区间更新)
  15. java反射学习---(框架设计的灵魂,你不收藏都后悔)
  16. TMS570LS1224PWM的生成及捕获
  17. Fabric Block区块结构解析
  18. Java 微服务实践
  19. 银行数字化的两难:安全还是效率?
  20. 《Kubernetes证书篇:使用TLS bootstrapping简化kubelet证书制作》

热门文章

  1. OFDM学习笔记(十)(MIMO-OFDM技术)
  2. 2021年12月四六级考试成绩批量查询Java
  3. Android uses-sdk tools:overrideLibrary
  4. 【Nginx 源码学习】平滑重启,源码追踪
  5. xp计算机无法正常启动,修复XP系统无法正常启动进入不了计算机的解决办法
  6. 计算机技术在生物学中的应用鲁东大学,生物科学与技术学院
  7. java常量 修改_Java 自定义常量
  8. 高斯日记python实现
  9. php 怎么使用sql server 2000,Linux下PHP支持MSSQL(SQL Server2000)
  10. 3GPP协议下载地址