私はデュアルスタンドアロンモデムデバイス(yoctoベース)を開発しています。それぞれを別のNM接続に割り当てたいと思います。 cmdを使って登録します。
nmcli c add type gsm ifname cdc-wdm[0|1] con-name mdm1orange apn internet
効果がある問題は、cdc-wdm
サフィックスがデバイス登録/電源オンシーケンスから出てくることです。 USBポート(他の携帯電話会社のSIM、APN、設定などを使用)と接続したいので、udevルールを作成します。
SUBSYSTEM=="usbmisc", SUBSYSTEMS=="usb", KERNELS=="1-1.3:1.4", SYMLINK+="modem2", TAG+="systemd"
SUBSYSTEM=="usbmisc", SUBSYSTEMS=="usb", KERNELS=="1-1.4:1.4", SYMLINK+="modem1", TAG+="systemd"
動作します。登録/dev/modem1
中ですが、/dev/modem2
以下を呼び出します。
nmcli c add type gsm ifname modem[1|2] con-name mdm1orange apn internet
ただ失敗しました。 NMは、接続にどのデバイスを使用したいのかわかりません。
もしそうなら、シンボリックリンクの代わりにモデムネットワークインターフェイスにUSBポートベースのエイリアスまたはインデックス(udevまたは他のエントリを使用)をどのように割り当てますか/dev/
? WWAN インターフェイスのエイリアスも作成することをお勧めします。
ありがとうございます!
答え1
ネットワークインターフェイスの名前はデバイスノードではなく名前だけであるため、シンボリックリンクはネットワークデバイスを指すことはできません。 udev ルールは、ネットワークインタフェースの代わりに usbmisc デバイスを指すシンボリックリンクを生成するため、これは機能しません。
ネットワークデバイスにcdc-wdm
MACアドレスまたはそれに対応する永続属性がありますか?たとえば、を実行すると、ethtool --show-permaddr cdc-wdm0
あるモデムで次のモデムの電源を入れるまで同じままの一意の識別子が得られますか?またはを実行すると、オンudevadm info -q all -p /sys/class/net/cdc-wdm0
になっているモデムから次のモデムまで持続し、単一のモデムに固有のプロパティが表示されますか?
yoctoベースのデバイスに存在する場合は、ファイルを使用してモデムに永続的なネットワークインターフェイス名を割り当てるsystemd-udevd
ことができます。/etc/systemd/network/*.link
私は最近、4G(LTE)USBモデム/モバイルWiFiアクセスポイントであるZyxel WAH7601を使用しました。 USBで接続するとrndis_host
ネットワークドライバを使用し、開くたびに、新しいMACアドレスが表示されます。。 NetworkManagerが起動するたびにこれを「新しい」接続として検出するので、私のラップトップではこれが迷惑なことだと思います。
この問題を解決する最初のステップは、問題の永続的なネットワークデバイス名を作成することです。上記udevadm info
のコマンドは、デバイスにID_SERIAL_SHORT=xxxxxxxxxxxx
シリアル番号属性があることを示します(実際のシリアル番号はプライバシーのために変更されました)。そしてそれモデムを再起動しても変更されていません(デバイスのシリアル番号に基づいて期待されます)。そのため、次のようなファイルを作成しました/etc/systemd/network/72-zyxel.link
。
[Match]
Driver=rndis_host
Property=ID_SERIAL_SHORT=xxxxxxxxxxxx
[Link]
Description=Zyxel WAH7601
NamePolicy=
Name=zyxelmodem0
これにより、モデムの永続的なネットワークインターフェイス名が提供され、モデムのシリアル番号がロックされます。このProperty=
行は、udevadm info ...
リンクされたファイルを実際のネットワークデバイスと一致させる上記のコマンド出力の属性を示します。 Nullは、NamePolicy=
このデバイスのシステム全体のデフォルトNamePolicyのみを抑制するため、重要です。このName=
行は、必要なデバイス名のみを指定します(NamePolicyがnullの場合、またはより「標準的な」名前を生成できない場合にのみ適用されます)。
私のための解決策の2番目の部分は、モデムへのNetworkManager接続を作成し、(モデムごとに異なるため、MACアドレスの代わりに)デバイス名のみを使用して特定のデバイスに接続をバインドするように変更することでした。
<creating a connection using NetworkManager GUI>
nmcli c mod ZyxelModem connection.interface-name zyxelmodem0
nmcli c mod ZyxelModem 802-3-ethernet.mac-address ""
答え2
したがって、確認後にudev
ネットワークインターフェイスの名前のみを変更します。あなたできないフォルダ内のファイル名を変更する/dev/
にはエイリアス/シンボルリンク/タグなど。
これら(シンボルリンクまたは新しいネットワーク開発名)は、ModemManagerおよびNetwork Managerには適用されません。 MMの場合、特殊文字を使用できます。udevルールCLI でモデムを識別します。ただし、これはDBusインターフェースでは機能しません。そしてNMでは動作しません。
ここに引っ越してきましたが、qmicli
とても満足しています;)