Console

告訴 NetworkManager 忽略或不探測 rfcomm0

  • November 12, 2017

我正在嘗試通過藍牙遠端連接到系統,但遇到了問題。這就是我想要做的……

在遠端設備上,我希望執行以下內容: 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 comamnd

問題

那麼,有沒有辦法告訴 NetworkManager 忽略/dev/rfcomm或告訴它不要探測設備?

這是一個非常古老的問題,但如果有人最終通過Google來到這裡,一個對我有用的簡單解決方案是創建一個/etc/udev/rules.d/99-rfcomm.rules包含以下內容的文件:

# ignore rfcomm0 device for now
KERNEL=="rfcomm0", ENV{ID_MM_DEVICE_IGNORE}="1"

ModemManager 將來會忽略該設備。注意:這是一條可以匹配任何 rfcomm 設備的包羅萬象的規則,因此如果您將來真的想將其用作調製解調器,則必須再次禁用該規則。

引用自:https://serverfault.com/questions/461962