告诉 NetworkManager 忽略或者不探测 rfcomm0

告诉 NetworkManager 忽略或者不探测 rfcomm0

我正在尝试通过蓝牙远程连接到系统,但遇到了问题。以下是我正在尝试做的事情...

我希望在远程设备上运行以下操作: 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 设备的万能规则,因此如果您以后确实想将某个设备用作调制解调器,则必须再次禁用该规则。

相关内容