使用 Bluetooth SPP 协议连接交换机 Console 口进行调试的完整配置过程,包含设备扫描、配对、RFCOMM 连接排错记录。

Bluetooth SPP Console 调试交换机 - 配置总结

1. 环境信息

项目
操作系统 Arch Linux (Kernel 7.1.9)
蓝牙适配器 XX:XX:XX:XX:XX:XX (Qualcomm)
蓝牙协议栈 BlueZ 5.87
目标设备 XY_SPP_XXXXVXXX
MAC 地址 AA:BB:CC:DD:EE:FF
SPP 波特率 9600 (蓝牙 SPP 不使用波特率,此为软件层配置)

2. 扫描发现的设备

MAC 名称 用途
AA:BB:CC:DD:EE:FF XY_SPP_XXXXVXXX ✅ 目标交换机 SPP Console
AA:BB:CC:DD:EE:01 XY_BLE_XXXXVXXX BLE 版本 (未使用)
AA:BB:CC:DD:EE:02 XXX的AirPods 无关
AA:BB:CC:DD:EE:03 LYWSD03MMC 温湿度传感器 (无关)

3. 已完成的步骤

3.1 设备配对 ✅

1
2
bluetoothctl pair AA:BB:CC:DD:EE:FF
bluetoothctl trust AA:BB:CC:DD:EE:FF
  • 状态: Paired=yes, Bonded=yes, Trusted=yes

3.2 RFCOMM 通道探测 ❌

1
python3 /tmp/bt_debug.py
  • 通道 1-30 全部返回 connect(): wrong format
  • 原因: 需要 sudo 加载 rfcomm 内核模块并安装 bluez-deprecated-tools

4. 当前阻塞问题

问题: RFCOMM 连接失败

1
OSError: connect(): wrong format

根本原因:

  1. rfcomm 模块已加载 (lsmod | grep rfcomm 显示已加载)
  2. 但缺少 /dev/rfcomm0 设备节点
  3. 需要安装 bluez-deprecated-tools 包提供 rfcomm CLI 工具

解决方案 (需要 sudo 权限)

1
2
3
4
5
6
7
8
9
10
11
# 1. 安装 deprecated tools
sudo pacman -S bluez-deprecated-tools

# 2. 绑定 RFCOMM 设备 (channel 需通过 SDP 查询确定)
sudo rfcomm bind /dev/rfcomm0 AA:BB:CC:DD:EE:FF 1

# 3. 验证设备节点
ls -la /dev/rfcomm0

# 4. 使用 minicom 连接
minicom -D /dev/rfcomm0 -b 9600

5. 替代方案 (无需 sudo)

方案 A: 使用 socat 桥接

1
2
3
4
5
# 需要先通过 bluetoothctl 连接
bluetoothctl connect AA:BB:CC:DD:EE:FF

# 使用 socat 创建 PTY
socat PTY,link=/tmp/bt_spp,raw,echo=0 TCP:localhost:RFCOMM_PORT

方案 B: Python RFCOMM 脚本 (待调试)

已创建脚本 /tmp/bt_spp_console.py,但需要修复 struct 打包问题。

6. 后续步骤

  1. 获取 sudo 权限 执行安装命令
  2. 查询 RFCOMM 通道号:
    1
    2
    # 安装后执行
    sdptool browse AA:BB:CC:DD:EE:FF | grep -A 10 "Serial Port"
  3. 绑定并连接:
    1
    2
    sudo rfcomm bind /dev/rfcomm0 AA:BB:CC:DD:EE:FF <CHANNEL>
    minicom -D /dev/rfcomm0 -b 9600

7. 工具和脚本位置

文件 说明
/tmp/bt_spp_console.py Python SPP 控制台桥接脚本
/tmp/bt_debug.py RFCOMM 连接调试脚本
/tmp/bt_spp_dbus.py D-Bus API 连接脚本

8. 参考命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 扫描蓝牙设备
bluetoothctl scan on

# 查看设备信息
bluetoothctl info AA:BB:CC:DD:EE:FF

# 配对和信任
bluetoothctl pair AA:BB:CC:DD:EE:FF
bluetoothctl trust AA:BB:CC:DD:EE:FF

# 连接设备
bluetoothctl connect AA:BB:CC:DD:EE:FF

# 查看已配对设备
bluetoothctl paired-devices

最后更新: 2026-09-08
状态: ⏳ 等待 sudo 权限完成安装

⬆︎TOP