2026山东大学软件学院创新项目实训(团队——8)
MUSEPaper2 蓝牙功能适配阶段性进展——完成 RTL8852BS 蓝牙链路打通
在完成摄像头功能适配后,团队继续推进 MUSEPaper2 平台无线功能适配工作。本阶段主要围绕蓝牙模块展开,目标是实现 OpenHarmony 系统下蓝牙功能完整运行。
前期调试过程中,系统已经具备蓝牙相关服务和基础配置,但蓝牙功能仍无法稳定完成初始化,表现为蓝牙开关能够显示,但是无法正常完成设备扫描。
针对这一问题,团队对蓝牙整体通信链路进行了重新梳理,并从硬件连接、系统服务、Vendor 层以及 HCI 通信流程多个方向进行排查,最终完成 RTL8852BS 蓝牙模块适配。
本阶段主要完成:
-
蓝牙硬件通信链路确认;
-
UART 节点配置调整;
-
Realtek Vendor 蓝牙库适配;
-
固件加载路径修正;
-
蓝牙权限配置;
-
HCI 通信链路修复;
-
系统蓝牙功能验证。
最终实现蓝牙服务正常启动,Controller 初始化完成,并能够正常扫描周围蓝牙设备。
一、蓝牙硬件链路分析与确认
MUSEPaper2 使用 RTL8852BS 无线组合芯片,同时包含 Wi-Fi 和 Bluetooth 功能。
虽然两者属于同一颗芯片,但是主机侧通信方式不同:
-
Wi-Fi 通过 SDIO 通信;
-
Bluetooth 通过 UART 通信。
因此 Wi-Fi 功能正常并不能说明蓝牙链路正常,需要单独确认蓝牙部分。
经过检查,MUSEPaper2 蓝牙模块对应 UART2:
RTL8852BS Bluetooth
↓
UART2
↓
/dev/ttyS2
同时确认 UART 配置包含 TX、RX 以及硬件流控 CTS/RTS。
硬件流控对于蓝牙初始化过程非常重要,因为 RTL8852BS 在启动过程中需要完成:
-
Controller 上电;
-
UART 初始化;
-
波特率切换;
-
固件加载;
-
HCI 通信建立。
任何一步配置不一致都会导致蓝牙初始化失败。
二、完成系统蓝牙配置适配
在进一步分析 OpenHarmony 蓝牙启动流程后发现,蓝牙功能并不是应用直接访问 UART,而是经过完整的软件链路:
Bluetooth 应用
↓
bluetooth_service
↓
HCI HDI
↓
Vendor Interface
↓
Realtek 蓝牙库
↓
UART
↓
RTL8852BS
因此适配过程中需要保证每一层配置一致。
首先对 Realtek Vendor 配置进行调整。
原配置中的蓝牙设备节点与 MUSEPaper2 实际硬件不匹配,导致 Vendor 层无法正确打开蓝牙串口。
根据实际板级配置,将蓝牙设备节点调整为:
/dev/ttyS2
使 Vendor 层能够访问真实蓝牙 UART。
同时补充系统权限配置,确保 blue_host 服务能够访问:
-
蓝牙 rfkill 控制节点;
-
UART 设备节点;
-
蓝牙相关设备接口。
完成后,系统具备控制蓝牙上下电以及访问底层通信接口的能力。
三、解决 RTL8852BS 固件加载问题
RTL8852BS 蓝牙 Controller 在启动阶段需要加载对应 firmware patch 和配置文件。
调试过程中发现,固件文件虽然已经包含在工程源码中,但是实际运行环境中的查找路径存在差异。
也就是说:
源码中存在固件;
↓
构建系统完成打包;
↓
设备运行时无法找到。
针对该问题,团队重新检查:
-
GN 构建规则;
-
vendor 镜像安装路径;
-
Vendor 代码中的固件搜索路径。
最终统一固件安装位置,使设备运行时能够正确加载:
/vendor/etc/firmware/
完成后,蓝牙初始化流程可以正常进入 Controller 固件加载阶段。
四、HCI 通信链路修复
完成 UART 和固件适配后,蓝牙已经能够进入初始化流程,但是仍存在初始化不稳定的问题。
此时问题已经不是硬件连接,而是 OpenHarmony 蓝牙 HCI 层的数据交互。
蓝牙 Host 与 Controller 之间通过 HCI 协议通信,其中:
-
Host 发送 HCI Command;
-
Controller 返回 HCI Event。
为了保证异步事件能够正常返回,系统需要持续监听 HCI 通道。
在分析过程中发现,HCI 通道建立后,事件监听模块初始化存在问题,导致 Controller 返回的数据无法正确传递到上层服务。
针对该问题,团队结合 OpenHarmony HCI HDI 代码流程进行了分析,并调整 HCI 监听逻辑,使:
Controller
↓
UART H5
↓
Realtek Vendor
↓
HCI Channel
↓
Bluetooth Service
这一整条链路能够正常工作。
修复后,系统能够收到 Controller 返回的扫描事件,说明蓝牙底层通信已经真正建立。
五、蓝牙协议通信验证
RTL8852BS 使用 UART + H5 方式进行 HCI 数据传输。
H5 协议相比简单 UART 传输增加了:
-
数据确认;
-
序号管理;
-
错误恢复。
因此蓝牙启动过程中不仅需要 UART 正常,还需要 Vendor 层完成 H5 协议处理。
完成适配后,通过系统日志可以看到蓝牙扫描相关事件正常返回。
例如:
ExAdvertisingReport
说明:
-
Controller 初始化完成;
-
扫描命令成功发送;
-
周围 BLE 广播数据成功返回。
这代表蓝牙已经从“服务存在”进入到“完整功能运行”。
六、编译部署与最终验证
完成代码修改后,对蓝牙相关模块重新编译,并部署到 MUSEPaper2 设备。
验证内容包括:
-
BluetoothHost 服务状态;
-
blue_host 进程运行状态;
-
UART 节点访问;
-
rfkill 状态;
-
蓝牙扫描结果。
检查:
hidumper -ls | grep bluetooth
可以看到蓝牙服务正常存在。
同时:
ps -A | grep blue_host
确认蓝牙相关进程正常运行。
最终测试结果:
-
蓝牙开关正常;
-
Controller 初始化成功;
-
固件加载成功;
-
蓝牙扫描正常;
-
可以发现周围 BLE 设备。
总结
本阶段蓝牙适配工作涉及的不只是单一驱动修改,而是完整无线通信链路的协同:
OpenHarmony Framework
↓
Bluetooth Service
↓
HCI HDI
↓
Vendor Library
↓
UART
↓
RTL8852BS Controller
通过本次适配,团队完成了 MUSEPaper2 平台蓝牙功能从基础服务运行到实际通信链路打通的过程。
同时也进一步认识到,在 OpenHarmony 设备适配过程中,一个功能是否可用并不取决于单个模块,而需要硬件配置、系统服务、驱动接口以及应用层之间保持一致。
目前 MUSEPaper2 蓝牙功能已经具备稳定运行能力,为后续无线功能完善和系统整体适配提供了基础。
更多推荐
所有评论(0)