題 華為USB 3G調製解調器和tty編號


我有一台華為E353調製解調器,我正在使用Raspberry Pi。

當我插入它時,我得到三個TTY - ttyUSB0,ttyUSB1和ttyUSB2。

但有時調製解調器接口(你可以發出Hayes類型的AT命令)在ttyUSB0上,有時它在ttyUSB1上。

我無法發現任何影響差異的共同因素。而且我不確定,但似乎它總是在同一個Pi上做同樣的事情(或者也許是相同的加密狗 - 我有幾個並且沒有機會嘗試不同的組合太多) 。

任何人都可以建議什麼影響tty編號?


2
2018-04-07 17:39


起源




答案:


您遇到的問題並不是華為設備所獨有的(如果您從標題中刪除它,可能會得到更好的響應)。

該問題與設備檢測以及系統認為已安裝的內容有關。解決方案是製定適當的UDEV規則,以確保設備始終被識別為特定的硬件並分配相同的接口。

具體細節因分佈而略有不同,但通常意味著使用lsusb查找設備的唯一屬性,然後編碼一行以匹配udev配置文件中的這些屬性。谷歌是你的朋友 - 谷歌搜索udev嘗試規則[發布]應該給你你需要的細節。


1
2018-04-08 18:58



我想你錯過了這一點。我知道當我插入USB tty設備時,編號將不可靠。但這裡的重點是這些 三 ttys for the 相同 USB設備。 lsusb 不會將它們顯示為具有單獨ID的單獨設備。我不太確定如何通過udev來區分它們。 - Tom


所有 設備編號(harddisk,tty,whatever)必須被認為是不可靠的並且不是一致的壓力靴,因為它可以以隨機順序發生。

看著 lsusb 和 dmesg 找出如何創建tty的細節,然後寫出合適的 udev 使用可以依賴的常量名稱的符號鏈接的規則。

編輯

是的,我完全理解這是一個由單個驅動程序處理的設備,它產生三個tty。你無法在輸出中區分它們 lsusb (但您可以看到供應商/設備ID,您需要確定正在發生的事情 dmesg),但我很確定你可以找到區別的udev屬性。

如果根本沒有任何東西 dmesg (不太可能),使用

udevadm info -a -p  $(udevadm info -q path -n /dev/ttyUSB0)

走向設備路徑並查看屬性,以及

udevadm monitor --udev --property

了解什麼 udev 當你插入設備時,我認為它正在做。


1
2018-04-08 16:04



根據您的發行情況,這可能不正確。 - davidgo
@davidgo:我仍然需要看到一個非古老的分佈,這是不正確的。注意詳細說明?至少對於任何使用的發行版 udev,這不是不正確的。 - dirkt
抱歉。你的帖子的第一行讓我失望 - 因為現代操作系統編寫了相當少的設備來獲取運行時的固定地址(基於udev) - 以太網讓人想起一個開始,但也有uuid或分區名稱驅動的驅動器很多其他的。儘管如此,你制定udev規則的解決方案仍然存在。 - davidgo
@davidgo:請注意,即使是新式的網絡接口名稱也不總是可靠地運行 - 在stackexchange上有一些與此相關的問題。因此,如果您出於某種原因需要識別特定設備,請不要依賴它們。 - dirkt
至於另一個答案,你似乎錯過了這一點。這些不是單獨的設備,而是由一個驅動程序處理的一個USB設備(huawei_cdc_ncm)提出三個ttys。我不確定如何區分輸出中的ttys lsusb  - 特別是因為設備似乎沒有提供標準的usbserial接口(所有接口都是USB Mass Storage類或255類 - Vendor Specific)。 - Tom