私はUSB Wi-FiドングルとWi-Fiキーを仮想マシン(QEmu / KVM仮想化)に自動的に追加するbashスクリプトを作業しています。
[編集]仮想マシンは現在Debian バスターリリースバージョン[/編集]
ホストコンピュータでTP-Link TL-WN823N USBドングルを接続すると、次のインタフェースが追加されます。
user@host:~$ ip -o link | grep wlx
57: wlx123456789012: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000\ link/ether 2a:51:d5:12:34:56 brd ff:ff:ff:ff:ff:ff
USB デバイスを一覧表示すると、次の結果が表示されます。
user@host:~$ lsusb | grep TP-Link
Bus 002 Device 009: ID 2357:0109 TP-Link TL WN823N RTL8192EU
したがって、次のように認識されます。wlx123456789012インターフェース、サプライヤー:製品IDは次のとおりです。2357:0109装備です#9USBバス#2.*
インターフェイス名だけを知っている場合は、ベンダー:製品IDをどのように確認できますか?
@meuh 提案
user@host:~$ ls --format=commas /sys/class/net/wlx123456789012/device
authorized, bAlternateSetting, bInterfaceClass, bInterfaceNumber,
bInterfaceProtocol, bInterfaceSubClass, bNumEndpoints, driver,
ep_01, ep_02, ep_03, ep_04, ep_05, ep_06, ep_81, ieee80211, leds,
modalias, net, power, subsystem, supports_autosuspend, uevent
だからいいえ行商人...でもない装備ファイルをこの場所に直接保存します(これによれば、これはテストにオンボードWi-Fiが含まれているためです)。
しかし、それが私にインスピレーションを与えたので、私は次のように試しました。
user@host:~$ grep -iEr "2357|0109" /sys/class/net/wlx123456789012/device
...
/sys/class/net/wlx123456789012/device/modalias:usb:v2357p0109d0101dc00dsc00dp00icFFiscFFipFFin00
/sys/class/net/wlx123456789012/device/uevent:PRODUCT=2357/0109/101
/sys/class/net/wlx123456789012/device/uevent:MODALIAS=usb:v2357p0109d0101dc00dsc00dp00icFFiscFFipFFin00
だから/sys/class/net/wlx123456789012/device、持っている:
モードエイリアス:usb:v2357血0109d0101dc00dsc00dp00icFFiscFFipFFin00
ueevent:製品=2357/0109/ 101
だから私は追跡を見つけましたが、@meuhが別のローカライゼーションを提供したという事実が解決策を疑うようにします(特にdistroのバージョンを変更したり、distroのみを変更したりする場合)。
@Tom Yanが提案しました。
user@host:~$ udevadm info /sys/class/net/wlx123456789012 \
| sort -r | awk '/ID_(VENDOR|MODEL)_ID/'
E: ID_VENDOR_ID=2357
E: ID_MODEL_ID=0109
注:ここではPRODUCTの代わりにMODELを使用します。ソート -rMODEL 行の前に VENDOR 行をソートするために使用されます。
ベストアンサー1
Ralink RT5370ワイヤレスアダプタをDebian 10システムに接続しました。
デフォルトではネットワークデバイスとして表示されますwlxc83a35c4a44b
。
/sys/class/*
これは基本的に、葉が主に枝のシンボリックリンクであるディレクトリサブツリーであることを覚えておく必要があります/sys/devices/*
。
# realpath /sys/class/net/wlxc83a35c4a44b
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/net/wlxc83a35c4a44b
# realpath /sys/class/net/wlxc83a35c4a44b/device
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0
したがって、device
シンボリックリンクは実際に分岐内で実行され、/sys/devices/...
USBコントローラとデバイスの間にレイヤ()があります(この場合はUSBハブはありません)。1-8
このレベルには役に立つものが含まれていますか?
# ls --format=commas /sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/..
1-8:1.0/, ep_00/, power/, authorized, avoid_reset_quirk, bcdDevice,
bConfigurationValue, bDeviceClass, bDeviceProtocol, bDeviceSubClass,
bmAttributes, bMaxPacketSize0, bMaxPower, bNumConfigurations, bNumInterfaces,
busnum, configuration, descriptors, dev, devnum, devpath, driver@,
firmware_node@, idProduct, idVendor, ltm_capable, manufacturer, maxchild, port@,
product, quirks, removable, remove, rx_lanes, serial, speed, subsystem@,
tx_lanes, uevent, urbnum, version
idProduct
とがありますidVendor
。名前だけでネットワークデバイスにアクセスできますか?
# cat /sys/class/net/wlxc83a35c4a44b/device/../idProduct
5370
# cat /sys/class/net/wlxc83a35c4a44b/device/../idVendor
148f
正しいデバイスであることを確認してみましょう。
# lsusb -d 148f:5370
Bus 001 Device 014: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
そうだね。
また、ルートなしで動作し、途中でUSBハブを追加します。
$ realpath /sys/class/net/wlxc83a35c4a44b/device
/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7.2/1-7.2:1.0
$ cat /sys/class/net/wlxc83a35c4a44b/device/../idVendor
148f
$ cat /sys/class/net/wlxc83a35c4a44b/device/../idProduct
5370