7.2.9 蓝牙初始化说明
本章节介绍开发板蓝牙功能的初始化流程和使用方法。
概述
开发板支持通过 USB 或 UART 接口连接蓝牙模块。系统启动时,hobot-bluetooth 服务会自动检测并初始化蓝牙设备。
支持的蓝牙类型
| 类型 | 接口 | 说明 |
|---|---|---|
| USB 蓝牙 | USB 接口 | 通过 USB 接口连接的蓝牙适配器 |
| UART 蓝牙 | UART 串口 | 通过 UART 串口连接的蓝牙模块(如 CYW55560) |
系统服务
hobot-bluetooth 服务
蓝牙初始化由 hobot-bluetooth.service 系统服务管理,该服务在系统启动时自动运行。
服务配置文件位置: /lib/systemd/system/hobot-bluetooth.service
[Unit]
Description=Hobot init Bluetooth
Before=getty.target system-getty.slice
After=hobot-loadko.service
StartLimitIntervalSec=60
StartLimitBurst=5
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/hobot-bluetooth start
ExecStop=/usr/bin/hciconfig hci0 down > /dev/null 2>&1
TimeoutStartSec=1min
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
服务管理命令
# 查看服务状态
systemctl status hobot-bluetooth
# 手动启动服务
sudo systemctl start hobot-bluetooth
# 手动停止服务
sudo systemctl stop hobot-bluetooth
# 启用开机自启
sudo systemctl enable hobot-bluetooth
# 禁用开机自启
sudo systemctl disable hobot-bluetooth
初始化脚本说明
初始化流程
蓝牙初始化脚本 /usr/bin/startbt.sh 会按以下顺序检测和初始化蓝牙设备:
┌─────────────────────────────┐
│ 蓝牙 初始化开始 │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ 检测 USB 蓝牙设备 │
│ (lsusb -t | grep btusb) │
└──────────────┬──────────────┘
│
┌───────┴───────┐
│ │
▼ ▼
检测到 USB 未检测到 USB
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ 加载 btusb │ │ 检测 UART 蓝牙 │
│ 驱动模块 │ │ (/dev/ttyS1) │
└──────┬───────┘ └────────┬─────────┘
│ │
│ ┌───────┴───────┐
│ │ │
│ ▼ ▼
│ 检测到 UART 未检测到 UART
│ │ │
│ ▼ ▼
│ ┌──────────────┐ ┌──────────────┐
│ │ GPIO 控制 │ │ 报错退出 │
│ │ 固件下载 │ │ │
│ │ hciattach │ │ │
│ └──────┬───────┘ └──────────────┘
│ │
└─────┬─────┘
│
▼
┌──────────────────┐
│ hciconfig hci0 up │
│ hciconfig piscan │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 初始化完成 │
└──────────────────┘
USB 蓝牙初始化
当检测到 USB 蓝牙设备时,初始化流程如下:
# 1. 加载 btusb 驱动模块
modprobe btusb
# 2. 等待固件加载完成
sleep 3
# 3. 启用蓝牙设备
hciconfig hci0 up
sleep 2
hciconfig hci0 piscan