我正在尝试通过蓝牙远程连接到系统,但遇到了问题。以下是我正在尝试做的事情...
我希望在远程设备上运行以下操作: rfcomm -r watch 0 3 getty -L {} 9600
其作用是:在蓝牙设备“0”上监视通道 3 上的 rfcomm 连接。当出现连接时,运行getty -L {} 9600
并将“{}”替换为创建的设备。(通常/dev/rfcomm0
在这种情况下)
然后我应该能够通过在我的笔记本电脑上运行来连接到远程设备:( rfcomm connect 0 11:22:33:44:55:66 3
告诉它使用设备“0”连接到通道 3 上的蓝牙地址“11:22:33:44:55:66”)然后我应该通过键入在远程设备上获取串行控制台screen /dev/rfcomm0
。
问题...
一切都应该正常工作,只是我的笔记本电脑上的 NetworkManager 不知怎么“看到”了连接,并试图探测它,就好像它是调制解调器一样。它发送AT+GCAP
字符串,~x�~
但远端正在运行 getty 并等待登录凭据。
我可以先建立 rfcomm0 连接来使其工作:
remote$ rfcomm -r watch 0 3
laptop$ rfcomm connect 0 11:22:33:44:55:66 3
等待大约 60 秒,让 NetworkManger 停止探测/dev/rfcomm0
remote$ getty -L rfcomm0 9600
laptop$ screen /dev/rfcomm0 9600
但是,为了做到这一点,我已经需要有对远程设备的控制台访问权限才能运行 getty 命令
问题
那么,有什么方法可以告诉 NetworkManager 忽略/dev/rfcomm
或告诉它不要探测该设备?
答案1
这是一个非常古老的问题,但如果有人通过谷歌找到这里,一个对我有用的简单解决方案是创建一个/etc/udev/rules.d/99-rfcomm.rules
包含以下内容的文件:
# ignore rfcomm0 device for now
KERNEL=="rfcomm0", ENV{ID_MM_DEVICE_IGNORE}="1"
ModemManager 以后会忽略该设备。注意:这是一条匹配任何 rfcomm 设备的万能规则,因此如果您以后确实想将某个设备用作调制解调器,则必须再次禁用该规则。