如何自動載入新的 VID&PID 到模組 usb_serial
我有一個需要我執行的 4G 模組
echo '03f0 581d' > /sys/bus/usb-serial/drivers/generic/new_id
在每次啟動/恢復後使調製解調器可見。我應該如何使這個自動化?
- 將 VID&PID 添加到 usb-serial 源並重新編譯
- 創建在啟動/恢復時執行的腳本,動態添加它們
- 某種 udev 規則?
什麼是最好的方法。我認為這種
udev
方法聽起來最合理。我認為這也適用於暫停/恢復?調製解調器是 HP lt4112 LTE/HSPA+ Gobi 4G 調製解調器(華為 ME906E)。
獎勵問題:為什麼在掛起/恢復週期後需要重新執行命令。當筆記型電腦暫停到 RAM 時,核心模組是否會被解除安裝或以某種方式重置?
假設你的設備的 vendor 和 product ID 是如上配置的,即
03f0
和581d
分別,你可以創建一個udev規則來自動初始化設備並綁定到libqmi,如下圖:
file /etc/udev/rules.d/98-modem-rules.rules
使用您喜歡的文本編輯器(並且需要適當的權限
sudo
)創建包含以下內容的文件:ACTION!="add|change", GOTO="mbim_to_qmi_rules_end" SUBSYSTEM!="usb|drivers", GOTO="mbim_to_qmi_rules_end" # load qmi_wwan module SUBSYSTEM=="usb", \ ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \ RUN+="/sbin/modprobe -b qmi_wwan" # Initialize the LTE lt112 module to operational status: SUBSYSTEM=="usb", \ ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \ ATTR{bConfigurationValue}="3" # add the new id in the qmi_wwan driver SUBSYSTEM=="drivers", \ ENV{DEVPATH}=="/bus/usb/drivers/qmi_wwan", \ ATTR{new_id}="03f0 581d" # load qcserial module SUBSYSTEM=="usb", \ ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \ RUN+="/sbin/modprobe -b qcserial" # add the new id in the qcserial driver SUBSYSTEM=="drivers", \ ENV{DEVPATH}=="/bus/usb-serial/drivers/qcserial", \ ATTR{new_id}="03f0 581d" LABEL="mbim_to_qmi_rules_end"
在您的機器上,您還需要安裝適當的軟體包:
假設 Ubuntu(因為沒有給出分發資訊),執行:
sudo apt install libqmi libqmi-utils
完成後,啟動新的 udev 規則:
sudo udevadm control --reload-rules sudo udevadm trigger
您還可以找到modem-manager,這是一個 GUI 前端,用於查看調製解調器統計資訊,例如網路信號強度等,非常有用。
它可以通過以下方式安裝:
sudo apt install modem-manager-gui
插入 SIM 卡後需要冷啟動。
更新:
另一種方法是安裝包
usb-modeswitch-data
(它也將引入 usb-modeswitch作為依賴項)。該軟體包包含允許 usb-modeswitch 正確初始化設備的 udev 規則,其中包含多個設備的多個條目。在此處查看相同的更改日誌。
軟體包中的 udev 規則儲存在一個名為
40-usb_modeswitch.rules
. 對於您的特定硬體,它位於第 32-33 行:# HP hs4112 ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", RUN+="usb_modeswitch '/%k'"
安裝
usb-modeswitch
and後usb-modeswitch-data
,您需要重新啟動,即使在辨識 SIM 卡之前重新載入 udev 規則後也是如此。