usb_serial モジュールに新しい VID と PID を自動的にロードする方法

usb_serial モジュールに新しい VID と PID を自動的にロードする方法

4Gモジュールを実行する必要があります

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

起動/再開のたびにモデムが表示されるようにします。これを自動化するにはどうすればよいでしょうか?

  • USBシリアルソースにVIDとPIDを追加して再コンパイルします
  • 起動/再開時に実行され、動的に追加するスクリプトを作成します。
  • 何らかの udev ルールでしょうか?

最善のアプローチは何でしょうか。udevアプローチが最も合理的だと思います。 一時停止/再開よりも機能すると思いますか?

モデムは、HP lt4112 LTE/HSPA+ Gobi 4G モデム (Huawei ME906E) です。

ボーナス質問: サスペンド/再開サイクルの後にコマンドを再実行する必要があるのはなぜですか。ラップトップが RAM にサスペンドされると、カーネル モジュールはアンロードされるか、何らかの方法でリセットされますか?

答え1

デバイスのベンダーIDと製品IDが上記のように設定されていると仮定すると、それぞれ03f0581dユーデブデバイスを自動的に初期化し、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

また、モデムマネージャネットワーク信号強度などのモデム統計情報を表示するための GUI フロントエンドが役立ちます。

以下の方法でインストールできます:

sudo apt install modem-manager-gui

SIM カードを挿入した後はコールド スタートが必要になります。

アップデート:

これに代わる方法としては、パッケージをインストールすることですusb-modeswitch-data(これにより、USB モードスイッチ依存関係として)。

パッケージには、複数のデバイスに対して複数のエントリを持つデバイスを正しく初期化するための、usb-modeswitch を許可する udev ルールが含まれています。同じパッケージの変更ログを参照してください。ここ

パッケージ内の udev ルールは というファイルに保存されます40-usb_modeswitch.rules。特定のハードウェアの場合、そのファイルは 32-33 行目にあります。

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

usb-modeswitchおよびをインストールした後usb-modeswitch-data、SIM カードが認識される前に udev ルールを再ロードした後でも再起動する必要があります。

関連情報