基本上我想使用蓝牙设备的串行接口。在我的特定示例中,它是meshtastic 矩阵中继通过串行/蓝牙连接到 RAK4631(基于 NRF52)设备。该应用程序需要一个串行接口,就像/dev/ttyUSB0
USB 串行连接一样。
我研究过,过去通过将设备与设备配对bluetoothctl
,然后使用命令rfcomm bind 0 00:11:22:33:44:55 1
将其用作/dev/rfcomm0
其他应用程序的串行接口,这种方法是可行的。到目前为止,这种方法在使用内核 5.10.0-23-amd64 和 bluez 5.55-3.1 的 Debian11/bullseye 中有效但:没有应用程序能够使用该/dev/rfcomm0
接口。
我尝试了以下提示/建议,但仍然无法使用任何应用程序/dev/rfcomm0
:
- 无法连接 RFCOMM 套接字:主机已关闭
- 是否可以使用bluetoothctl write命令发送串行数据?
- 如何将原始串行终端连接到蓝牙连接?
- 蓝牙 RFCOMM 不再工作
- 通过蓝牙串行 - Raspberry Pi 项目
- Raspberry Pi 3 einrichten 上的蓝牙(第 2 部分)(德语)
- 将 BLE 设备与 RASPBERRY PI 结合使用
- 在 Linux 中设置蓝牙设备以用于串行通信
最后引用的链接讨论了sdptool
但使用这个我无法浏览任何配对的蓝牙设备(要知道 rfcomm 通道,如果出于任何原因它不是1
),一个例子:
# sdptool browse F4:46:DC:C5:A2:12
Failed to connect to SDP server on F4:46:DC:C5:A2:12: Host is down
在不同论坛的几个旧线程中,人们建议使用,bluetoothd --compat
但这也没有帮助。
有些人说 rfcomm(与其他蓝牙实用程序相邻)已被弃用,但我既找不到证据证明这一点,也找不到替代方案或任何关于当今应如何完成此操作的解释。
(需要明确的是,蓝牙设备根本没有任何问题,因为我可以通过智能手机上的 meshtastic 应用程序通过蓝牙完美地使用它)