Debian - 如何辨識具有相似 /dev/tty* 文件的 USB 設備
在我的嵌入式機器上,兩個 USB 設備安裝在一個類似的 /dev 文件上:/dev/ttyACMx. 設備是POS設備;另一個是列印機。
我不知道哪個設備將是 ttyACM0 或 ttyACM1:我的猜測是我無法假設特定的順序。
那麼,一旦檢測到 ttyACM0 和 ttyACM1 的存在,我如何知道哪個 USB 設備與 tty* 文件相關聯?
我檢查了lsusb和usb-device但我無法連接資訊。
謝謝
以 root 身份, 的輸出
udevadm info -q all -a -n /dev/ttyACM0
將輸出所有可用於辨識/dev/ttyACM0
設備的屬性。還可以嘗試省略該-a
選項以查看可能由現有 udev 規則生成的環境變數,以防這些規則對設備進行某種主動探測。如果 和 的輸出存在差異
/dev/ttyACM0
,/dev/ttyACM1
則可以使用該差異來辨識哪個是哪個。請注意,這
/dev/ttyACM*
可能表明這些設備最初是 RS-232 串列設備,僅添加了通用 USB 到串列轉換器晶片以使其與 USB 兼容。如果是這樣,可用資訊的數量取決於轉換器晶片如何配置以將設備呈現給 USB 匯流排。在最好的情況下,可能有一個屬性來標識每個設備的類型,並且可能已經有一個自動生成的別名/dev/serial/by-id/*
最壞的情況是,轉換器晶片上可能沒有任何獨特的東西(甚至沒有序列號),您可能必須通過向設備發送一些辨識請求並檢查結果答案來實現某種進行主動探測的 udev 規則,或為每種類型的設備指定一個特定的 USB 埠,並通過 USB 埠的 sysfs 路徑辨識它們。在這種情況下,請檢查
/dev/serial/by-path/*
:可能已經有一個您可以使用的自動生成的設備別名。一旦您找到可用於區分設備的屬性或探測結果,您就可以設置一個 udev 規則,該規則將為各個
/dev/ttyACM*
設備分配特定類型的別名,例如/dev/POS
POS 設備,和/dev/receipt
/或適當的東西對於列印機。這些將是指向實際設備名稱的符號連結,但您的應用程序將能夠像使用真實設備一樣使用它們。