如何重新启动/释放 rfcomm 以进行蓝牙通信?
Posted
技术标签:
【中文标题】如何重新启动/释放 rfcomm 以进行蓝牙通信?【英文标题】:How to restart/release rfcomm for bluetooth communication? 【发布时间】:2022-01-17 13:33:27 【问题描述】:我正在尝试将树莓派连接到我的 Galaxy Note 以将其用于串行通信。我在这方面取得了一定的成功。
首先我通过bluetoothctl
配对并信任它。然后我运行sudo rfcomm watch hci0
并以cat /dev/rfcomm
打开。我能够使用蓝牙终端连接到树莓派(只有这个应用程序,其他所有应用程序都失败了)并且从银河发送的字符串将显示在cat
窗口中。
我后来不知何故搞砸了,现在运行sudo rfcomm watch hci0
给了我Can't bind RFCOMM socket: Address already in use
。我不能用sudo rfcomm release hci0
或sudo rfcomm release 0
释放它,因为它给了我不能释放设备:没有这样的设备。同样cat /dev/rfcomm0
现在也给我没有这样的文件或目录。
我杀死了sudo lsof | grep /dev/rfcomm0
列出的进程,这对我使用RFCOMM 的能力没有影响。使用systemctl daemon-reload
重新加载并使用service bluetooth restart
重新启动也没有效果。
我仍然可以扫描其他蓝牙设备,并且可以使用蓝牙终端连接到树莓派,但似乎rfcomm
不见了。我知道重新启动可以解决这个问题,但如果可能的话,我想以编程方式执行此操作,而不必诉诸电源循环。
感谢您的帮助。
【问题讨论】:
【参考方案1】:将设备与树莓派配对..
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
【讨论】:
以上是关于如何重新启动/释放 rfcomm 以进行蓝牙通信?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止Android蓝牙RFCOMM连接在.connect()之后立即死亡?
如何将 Android 应用程序正确连接到支持蓝牙的 Arduino 微控制器上的 RFCOMM 插座?