USB Wi-Fiドングルインターフェイスでベンダーを確認する:製品ID

USB Wi-Fiドングルインターフェイスでベンダーを確認する:製品ID

私は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:v23570109d0101dc00dsc00dp00icFFiscFFipFFin00

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

おすすめ記事