Bluetooth HCI 驱动架构与源码总览

Bluetooth HCI 驱动架构与源码总览

1. 分层

1
2
3
4
5
6
7
bluetoothd / mgmt / AF_BLUETOOTH sockets

net/bluetooth HCI Core
│ struct hci_dev
drivers/bluetooth transport driver
│ USB / UART / SDIO / SMD / Virtio
Bluetooth controller firmware

本目录实现 HCI设备和主机之间的 transport,不实现 L2CAP、RFCOMM、SMP、BNEP等上层协议。

2. HCI driver contract

Transport分配 hci_dev并设置:

  • bus;
  • open/close/flush;
  • send;
  • setup/configure;
  • shutdown;
  • set_bdaddr/set_diag等可选回调;
  • quirks和 capabilities。

hci_register_dev()后HCI Core负责命令、事件、连接、mgmt和用户接口。

3. TX

1
2
3
4
HCI Core skb
-> hdev->send
-> transport queue/URB/serial write
-> controller

skb packet type区分 command、ACL、SCO、ISO、vendor diag。

4. RX

1
2
3
4
USB completion/UART parser/SDIO IRQ
-> assemble complete HCI frame
-> hci_recv_frame
-> HCI event/ACL/SCO/ISO dispatch

Framing错误、长度错误和USB status更新统计并触发重组/恢复。

5. Firmware

Intel/Broadcom/Realtek/QCA/MediaTek/Marvell helpers在 setup阶段识别芯片、下载 patch/config、设置地址和特性。固件路径及格式是厂商相关的。

6. RK3588

RK3588没有SoC内部 Bluetooth controller,常配 Wi-Fi/BT combo module:

-Bluetooth多走 UART;
-Wi-Fi多走 PCIe/SDIO;
-共享电源/32.768kHz clock;
-BT reset、host-wake、device-wake GPIO;
-RTS pin在休眠时可切GPIO。

厂商板型使用 bluetooth-platdata,并非标准 Broadcom/Realtek UART child binding。

7. 安全边界

Controller firmware、HCI raw socket、VHCI和debug接口均有高权限风险。量产应限制 CAP_NET_ADMIN/CAP_NET_RAW、固件来源和 /dev/vhci访问。

文章互动

阅读 --

留言

0 条留言

正在加载留言…