Restart/Release 用于蓝牙通信的 rfcomm

Restart/Release rfcomm for bluetooth communication

我正在尝试将 raspberry pi 连接到我的 galaxy note 以将其用于串行通信。我在这方面取得了一些成功。

首先我将它配对并通过 bluetoothctl 信任。然后我运行sudo rfcomm watch hci0cat /dev/rfcomm打开。我能够使用蓝牙终端连接到 raspberry pi(只有这个应用程序,所有其他应用程序都失败了)并且从 galaxy 发送的字符串将显示在 cat window.

我后来不知何故搞砸了,现在 运行ning sudo rfcomm watch hci0 给了我 Can't bind RFCOMM socket: Address already in use。我无法使用 sudo rfcomm release hci0sudo rfcomm release 0 释放它,因为它会给我无法释放设备:没有这样的设备。同样 cat /dev/rfcomm0 现在也没有这样的文件或目录。

我终止了 sudo lsof | grep /dev/rfcomm0 列出的进程,这对我使用 RFCOMM 的能力没有影响。使用 systemctl daemon-reload 重新加载并使用 service bluetooth restart 重新启动也没有任何效果。

我仍然可以扫描其他蓝牙设备,我可以用蓝牙终端连接到 raspberry pi,但似乎 rfcomm 不见了。我知道重新启动可以解决这个问题,但我想尽可能以编程方式执行此操作,而不必诉诸电源循环。

感谢您的帮助。

将设备与 raspberry pi..

配对

bluetoothctl

scan on

pair XX:XX:XX:XX:XX:XX

trust XX:XX:XX:XX:XX:XX

agent-on

配置蓝牙设备

hciconfig

在 pi 上创建序列号,/dev/rfcomm

sudo rfcomm watch hci0

sudo hciconfig hci0 piscan

sudo sdptool add sp

sudo rfcomm watch hci0