有沒有辦法知道哪個 USB 裝置檔案 (/dev/ttyUSB0) 與特定介面 (wwan0) 相關

有沒有辦法知道哪個 USB 裝置檔案 (/dev/ttyUSB0) 與特定介面 (wwan0) 相關

標題幾乎說明了一切,但這是我的場景,以防相關:

我正在嘗試在 USB 數據機首次插入時自動使其聯機。對應的數據機需要透過其設備檔案接收“AT^NDISDUP=1,1”命令才能上線。我編寫了一個 if-up 掛鉤,可以在其中存取新連接的介面名稱,但我不知道如何將它們連結到相應的裝置檔案。

如果這是不可能的或只是不是一個好的做事方式,我也願意聽取其他想法。非常感謝。

更新

根據卡米爾的建議,我深入研究了 sysfs。我找到了各種與裝置相關的條目(/sys/devices/platform/.../.../ttyUSB0)和與介面相關的條目(/sys/class/net/wwan0),但我仍然找不到一種利用一個來獲得另一個的方法。我正在使用 udevadm 從不同的條目中提取信息,但大多數時候我並不真正理解我在看什麼。

答案1

我使用 picocom v3 使用以下腳本來實現此目的:

#!/usr/bin/env bash

for tty in $(ls /dev/ttyUSB*); do
    echo "Checking $tty"
    picocom -qrX -b 9600 $tty
    sleep 1
    result=$(echo "AT&F" | picocom -qrix 1000 $tty)
    if [ "$result" = "AT&F" ]; then
        echo "Found AT compatible modem at $tty"
    else
        echo "No AT compatible modem at $tty"
    fi
done

您可以/dev/ttyUSB*用任何適合您的數據機設備的設備進行替換,但這一個非常通用並且應該可以工作。

相關內容