刚拿到RK3588开发板时,我对这个AP6275S蓝牙模块还挺好奇的。实测下来,这个组合在物联网和边缘计算场景中特别实用。RK3588作为瑞芯微的旗舰级处理器,搭配AP6275S这个支持蓝牙5.0的双模模块,能轻松搞定SPP这种经典蓝牙串口协议。
先说说硬件连接。AP6275S通常通过SDIO接口与RK3588通信,板子上会有明确的丝印标识。我第一次使用时犯了个低级错误——忘记给模块供电。后来发现开发板上的VCC跳线帽没接,导致hciconfig死活找不到设备。这里提醒大家务必检查:
软件层面需要确认内核配置。我建议直接使用瑞芯微官方SDK,里面已经做好了基础配置。关键是要检查这几个内核选项是否启用:
bash复制CONFIG_BT=y
CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=y
CONFIG_BT_HIDP=y
如果遇到RFCOMM不可用的情况,大概率是CONFIG_BT_RFCOMM_TTY没开。这时需要重新编译内核,我踩过的坑是编译前没执行make oldconfig,导致配置被覆盖。建议用这个命令保存配置:
bash复制make menuconfig
make savedefconfig
cp defconfig arch/arm64/configs/your_config
很多人以为bluetoothctl只能配对设备,其实它隐藏了不少实用功能。我最喜欢它的交互式自动补全,按Tab键能快速调出命令提示。分享几个高频使用场景:
设备发现与连接:
bash复制[bluetooth]# scan on # 开启扫描
[NEW] Device 11:22:33:44:55:66 MyPhone
[bluetooth]# pair 11:22:33:44:55:66
[bluetooth]# connect 11:22:33:44:55:66
信任设备避免重复配对:
bash复制[bluetooth]# trust 11:22:33:44:55:66
查看服务UUID:
bash复制[bluetooth]# info 11:22:33:44:55:66
这个命令的权限管理特别有用。遇到过蓝牙设备突然不可见的情况吗?试试这个组合拳:
bash复制sudo hciconfig hci0 down
sudo hciconfig hci0 reset
sudo hciconfig hci0 up
sudo hciconfig hci0 piscan
其中piscan参数同时开启可发现和可连接状态,比单纯的iscan更实用。还有个冷门但好用的功能是修改蓝牙MAC地址:
bash复制sudo hciconfig hci0 bdaddr 00:11:22:33:44:55
添加SPP服务时,很多人直接照搬sdptool add SP。其实可以定制服务名称和通道号:
bash复制sudo sdptool add --channel=22 --name="Custom_SPP" SP
查看服务详情时,如果遇到SDP服务器连接失败,先确认蓝牙服务是否以兼容模式运行:
bash复制sudo vim /lib/systemd/system/bluetooth.service
# 修改为:ExecStart=/usr/lib/bluez5/bluetooth/bluetoothd -C
sudo systemctl restart bluetooth
完整的SPP服务搭建需要三步走:
bash复制sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan
bash复制sudo sdptool add --channel=22 SP
bash复制sudo rfcomm watch hci0 22 /sbin/agetty rfcomm0 115200 linux
这里有个细节:rfcomm watch会持续监听连接,非常适合服务端场景。如果想测试单次连接,可以用:
bash复制sudo rfcomm bind /dev/rfcomm0 11:22:33:44:55:66 22
Linux手机连接示例:
bash复制rfcomm connect /dev/rfcomm0 11:22:33:44:55:66 22
Windows连接技巧:
建立连接后,可以像操作普通串口一样测试:
bash复制# 服务端
cat /dev/rfcomm0 # 接收数据
echo "hello" > /dev/rfcomm0 # 发送数据
# 客户端
screen /dev/rfcomm0 115200 # Linux
# 或使用Putty等工具连接COM口
报错信息:
code复制RFCOMM TTY support not available
解决方法:
CONFIG_BT_RFCOMM_TTY=ybash复制lsmod | grep rfcomm
sudo modprobe rfcomm
报错信息:
code复制Can't create RFCOMM TTY: Address already in use
快速解决:
bash复制rfcomm release 0 # 释放指定通道
rfcomm release all # 释放所有通道
Windows连接时经常出现的坑:
00001101-0000-1000-8000-00805F9B34FB安卓手机的注意事项:
默认配置下SPP的吞吐量可能不理想,可以通过这些调整优化:
bash复制sudo hcitool cmd 0x08 0x0007 1000 # 设置ACL MTU
bash复制sudo rfcomm -a -z 4096 # 增大缓冲区
bash复制sudo hciconfig hci0 noencrypt # 关闭加密
开机自启动服务脚本:
bash复制#!/bin/bash
hciconfig hci0 up
hciconfig hci0 piscan
sdptool add SP
rfcomm watch hci0 22 /sbin/agetty rfcomm0 115200 linux &
当需要连接多个SPP设备时,可以采用多通道绑定:
bash复制rfcomm bind 0 11:22:33:44:55:66 1 # 设备1使用通道1
rfcomm bind 1 22:33:44:55:66:77 2 # 设备2使用通道2
对应的设备节点会是/dev/rfcomm0和/dev/rfcomm1。