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 蓝牙功能已经具备稳定运行能力,为后续无线功能完善和系统整体适配提供了基础。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐