wifi/BT芯片RTL8723DS驱动移植和测试之二蓝牙篇

news/2024/11/24 13:48:52/

目录

1、根文件系统添加库和蓝牙工具

2、内核配置

(1)自带串口驱动不可选

(2)增加RFCOMM和ble的支持

(3)User level driver support

(4)HID driver

3、测试

4、报错说明

(1)Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead

(2)D-Bus setup failed: Name already in use

(3)Failed to connect: org.bluez.Error.Failed

文档参照  


该文直接介绍蓝牙的移植,移植buildroot如何由busybox改为systemd初始化系统,以及怎样编译移植busybox到根文件系统中,我会另起两篇博客单独讲解。

使用systemd启动方式制作buildroot根文件系统_汉尼拔勇闯天涯的博客-CSDN博客

编译移植busybox软件包_汉尼拔勇闯天涯的博客-CSDN博客

1、根文件系统添加库和蓝牙工具

ncurses

hciconfig命令由Buildroot中的 BR2_PACKAGE_BLUEZ5_UTILS 生成

BR2_TOOLCHAIN_EXTERNAL_LOCALE
BR2_TOOLCHAIN_EXTERNAL_WCHAR
BR2_USE_WCHAR
BR2_STATIC_LIBS    //不能选
BR2_PACKAGE_SCONESERVER
BR2_PACKAGE_SCONESERVER_BLUETOOTH
BR2_PACKAGE_BLUEZ5_UTILS
bluez
bluez-tools
我把bluez-utils 5.x下的所有子选项都选中了。

BR2_PACKAGE_DBUS

BR2_PACKAGE_DBUS_GLIB


buildroot 中要添加 libiconv 库支持:

Toolchain-->Copy gconv libraries


2、内核配置


(1)自带串口驱动不可选

正基和海华的模块都使用内核的默认 CONFIG_BT_HCIUART 驱动,而Realtek使用自己的hci uart驱动,
源码目录为: external\rkwifibt\realtek\bluetooth_uart_driver , 且使用ko方式加载,所以使
用Realtek时一定要把内核的CONFIG_BT_HCIUART配置去掉!
正点没有提供蓝牙源码,我是从瑞芯微开发板中找到的。


(2)增加RFCOMM和ble的支持

Networking support-->Bluetooth subsystem support-->Bluetooth Classic (BR/EDR) features-->RFCOMM protocol support-->RFCOMM TTY support-->BNEP protocol support、-->Multicast filter support-->Protocol filter support-->HIDP protocol support-->Bluetooth High Speed (HS) features-->Bluetooth Low Energy (LE) features


(3)User level driver support

Device Drivers -->Input device support -->Miscellaneous devices-->User level driver support


(4)HID driver

Device Drivers -->HID support-->Generic HID driver

3、测试


复制正点提供的两个文件rtl8723d_config和rtl8723d_fw到路径lib/firmware/rtlbt(新建路径)下

cd /home/
lsmod
insmod cfg80211.ko
insmod 8723ds.ko
insmod hci_uart.ko
lsmod
hciconfig -a  //此时能看到hci0
./atk-bluetooth-init.sh
hciconfig
hciconfig hci0 up
hciconfig -a
hciconfig hci0 leadv 3   //设置为低功耗广播模式
hciconfig hci0 name "hannibal"
hciconfig hci0 piscan  //设置蓝牙设备可被发现
export $(dbus-launch)
mkdir /home/ble_rcv/
/usr/libexec/bluetooth/obexd -r /home/ble_rcv/ -a -d &  //指定蓝牙的接收路径
bluetoothctl  //使用交互工具power onagent onscan onscan offdevicespair   DC:21:48:9F:D9:8A  //配对connect  DC:21:48:9F:D9:8A  //其实配对成功了,就不用connect了trust  DC:21:48:9F:D9:8A

4、报错说明


(1)Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead

/usr/libexec/bluetooth/obexd -r /home/ble_rcv/ -a -d &


报错:  Using X11 for dbus-daemon autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead
先执行这个 export $(dbus-launch),上述的报错便没有了。


(2)D-Bus setup failed: Name already in use

运行过了export $(dbus-launch) 和 /usr/libexec/bluetooth/obexd -r /home/ble_rcv/ -a -d &

/usr/libexec/bluetooth/bluetoothd -d -C -n &


D-Bus setup failed: Name already in use
这个错误没管它,一开始是以为buildroot中勾选的dbus不能用呢,后来硬件重启之后,这个错误就不存在了。


(3)Failed to connect: org.bluez.Error.Failed

bluetoothctl中执行connect 某个mac 报错  Failed to connect: org.bluez.Error.Failed
bluetoothctl执行pair配对就行了,不用执行connect。
如果执行其他命令也有上述报错,可以先移除设备
remove DC:21:48:9F:D9:8A
再重新操作。

文档参照  


https://blog.csdn.net/li_huaqingfeng/article/details/118528639
https://blog.csdn.net/li_huaqingfeng/article/details/119007397
《Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf》
《【正点原子】STM32MP1嵌入式Linux驱动开发指南V2.0.pdf》
《【正点原子】STM32MP157快速体验V1.6.pdf》


http://www.ppmy.cn/news/47377.html

相关文章

艾瑞报告:预计2023年家用智能照明市场规模过百亿,Yeelight易来引领行业发展

照明是家居的主要部分,以智能化控制技术光环境设计为核心的智能照明成为智能家居重要的子系统与子应用,智能照明通过精准的设计,将单品链接成系统,通过算法和云平台实现智能化,针对不同的空间适配不同的灯光&#xff0…

面试被经常问的SQL窗口函数

面试题 有一张“学生成绩表”,包含4个字段:班级id、学生id、课程id、成绩。 问题1: 求出每个学生成绩最高的三条记录 问题2: 找出每门课程都高于班级课程平均分的学生 技术提升 技术要学会分享、交流,不建议闭门造…

书写我的人生回忆录-这应该是给父母最好的礼物

作为一个业余的软件开发爱好者,我又捣鼓了一个有意思的小东西 ,使用完全免费哈 《书写我的人生回忆录》是一款软件,其中包含70个问题,涵盖了父母的个人喜好、家庭、工作、人生经历和态度等方面。通过回答这些问题,您的…

使用Cubic 自定义 Ubuntu Live ISO

使用Cubic 自定义 Ubuntu Live ISO 需要使用原始镜像文件,比如使用 systemback 备份系统生成的 ISO 有时候 systemback 生成的 ISO 无法启动,可以用 Cubic 修复 使用 Cubic 安装 sudo apt-add-repository ppa:cubic-wizard/release sudo apt-key ad…

java 线程唤醒于阻塞的常用方法

1.分类描述 1.sleep() 休眠2.suspend() 暂停和 resume() 继续3.yield() 让步 就是我放弃本次执行,但继续排队,下一次有机会在执行。 4.wait() 和 notify() notifyAll() 注:这两个方法,属于Object类,而不属于Thread…

启动 Ethereum(上海) 主网全节点

问题描述 采用最新的geth版本之后,按照之前的方法启动geth主网节点会出现如下问题: Post-merge network, but no beacon client seen. Please launch one to follow the chain!问题原因 The above message is emitted when Geth is run without a conse…

在Windows10中安装WSL2(Ubuntu 22.04.2 LTS)

WSL1 和 WSL2 WSL 1 于 2016 首次发布,在 windows 系统中可以使用linux系统。 但是WSL1的缺点有: 文件 I/O 慢,尤其是在大量IO操作时,例如使用 git 克隆仓库;不支持内核程序; WSL 2 针对以上两个缺点进…

Tc2xx知识点(二) :AURIX单片机基础概念记录

目录 1、概述 2、通用寄存器文件 3、Overlay 4、cache 5、英飞凌Tc275的Eray 6、内存分析(手册)