So laden Sie automatisch eine neue VID&PID in das Modul usb_serial

So laden Sie automatisch eine neue VID&PID in das Modul usb_serial

Ich habe ein 4G-Modul, das ich ausführen muss

echo '03f0 581d' > /sys/bus/usb-serial/drivers/generic/new_id

nach jedem Start/Fortsetzen, um das Modem sichtbar zu machen. Wie kann ich das automatisieren?

  • Fügen Sie VID&PID zu den USB-Seriell-Quellen hinzu und kompilieren Sie neu
  • Erstellen Sie ein Skript, das beim Start/Fortsetzen ausgeführt wird und sie dynamisch hinzufügt
  • Eine Art Udev-Regel?

Was wäre der beste Ansatz? Ich denke, dieser udevAnsatz klingt am vernünftigsten. Ich nehme an, das würde auch über Suspend/Resume funktionieren?

Das Modem ist ein HP lt4112 LTE/HSPA+ Gobi 4G-Modem (Huawei ME906E).

Bonusfrage: Warum muss der Befehl nach einem Suspend/Resume-Zyklus erneut ausgeführt werden? Wird das Kernelmodul entladen oder irgendwie zurückgesetzt, wenn der Laptop in den RAM-Suspend-Modus versetzt wird?

Antwort1

Vorausgesetzt, die Hersteller- und Produkt-IDs Ihres Geräts sind wie oben konfiguriert, d. h. 03f0bzw. 581d, können Sie einudevRegel, die das Gerät automatisch initialisiert und bindet anlibqmi, Wie nachfolgend dargestellt:

file /etc/udev/rules.d/98-modem-rules.rules

Erstellen Sie die Datei mit Ihrem bevorzugten Texteditor (entsprechende Berechtigungen sudosind erforderlich) mit dem folgenden Inhalt:

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"

Auf Ihrem Computer müssen Sie außerdem die entsprechenden Pakete installieren:

Vorausgesetzt, es handelt sich um Ubuntu (da keine Distributionsinformationen angegeben wurden), führen Sie Folgendes aus:

sudo apt install libqmi libqmi-utils

Wenn Sie fertig sind, aktivieren Sie die neue Udev-Regel:

sudo udevadm control --reload-rules
sudo udevadm trigger

Vielleicht finden Sie auchModem-Manager, ein GUI-Frontend zum Anzeigen von Modemstatistiken wie Netzwerksignalstärke usw., das von Nutzen sein kann.

Die Installation erfolgt über:

sudo apt install modem-manager-gui

Nach dem Einlegen einer SIM-Karte ist ein Kaltstart erforderlich.

Aktualisieren:

Eine Alternative hierzu wäre, das Paket zu installieren usb-modeswitch-data(das auch einbeziehtUSB-Modusschalterals Abhängigkeit).

Das Paket enthält udev-Regeln, die es usb-modeswitch ermöglichen, das Gerät korrekt zu initialisieren, mit mehreren Einträgen für mehrere Geräte. Siehe die Änderungsprotokolle auf derselbenHier.

Die udev-Regeln im Paket werden in einer Datei namens gespeichert 40-usb_modeswitch.rules. Für Ihre spezielle Hardware lautet sie in Zeile 32-33:

# HP hs4112
ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", RUN+="usb_modeswitch '/%k'"

Nach der Installation usb-modeswitchmüssen usb-modeswitch-dataSie einen Neustart durchführen, auch nach dem Neuladen der Udev-Regeln, bevor die SIM-Karte erkannt wird.

verwandte Informationen