NetworkManager接続に物理USBモデムを割り当てる方法

NetworkManager接続に物理USBモデムを割り当てる方法

私はデュアルスタンドアロンモデムデバイス(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-wdmMACアドレスまたはそれに対応する永続属性がありますか?たとえば、を実行すると、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とても満足しています;)

関連情報