我有两个 wifi 适配器(一个内置,一个 USB),如何通过 ifconfig 识别 USB 适配器?

我有两个 wifi 适配器(一个内置,一个 USB),如何通过 ifconfig 识别 USB 适配器?

我买了一个 USB Wifi 适配器,并将其与一台迷你 PC 一起发货,现在我无法根据wlan0和确定哪一个是 USB wifi 适配器wlan1。我尝试进行 mac 地址查找以找到供应商,但没有成功(两者都没有记录)。这是我的 ifconfig 的一个示例:

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 86:4e:a5:a0:17:05  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 8e:60:7b:c5:40:09  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

以下是一个例子lsusb

└─# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 8087:0a2a Intel Corp. Bluetooth wireless interface
Bus 003 Device 003: ID 0d8c:0014 C-Media Electronics, Inc. Audio Adapter (Unitek Y-247A)
Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0e8d:7612 MediaTek Inc. MT7612U 802.11a/b/g/n/ac Wireless Adapter
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

我正在尝试找出“联发科”适配器的 wlanX 编号。我尝试使用iw list任何可以识别的东西,但无济于事。任何提示/指示都将不胜感激。

答案1

设备层次结构可通过 sysfs 获得。查看 /sys/class/net 下的符号链接目标通常会给出一些提示,说明哪些设备在 USB 上,哪些设备直接连接到 PCI:

$ ls -l /sys/class/net/
lrwxrwxrwx [...] eno1 -> ../../devices/pci0000:00/0000:00:1c.4/0000:03:00.0/net/eno1/
lrwxrwxrwx [...] eno2 -> ../../devices/pci0000:00/0000:00:1c.4/0000:03:00.1/net/eno2/
lrwxrwxrwx [...] lo -> ../../devices/virtual/net/lo/
lrwxrwxrwx [...] rtl0 -> ../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/1-1.6:1.0/net/rtl0/

PCI 设备的路径与其在 中的层次结构相对应lspci -tvnn,而 USB 设备的路径描述其在 中的位置lsusb -tv(例如“1-1.6”表示总线 1 > 端口 1 > 端口 6)。

有关更多详细信息,请使用udevadm info查看 udev 为每个设备收集的属性(其中大多数是从父 PCI 或 USB 设备传播的):

$ udevadm info /sys/class/net/eno1
[...]
E: ID_OUI_FROM_DATABASE=Hewlett Packard Enterprise
E: ID_NET_NAME_ONBOARD=eno1
E: ID_NET_LABEL_ONBOARD=NIC Port 1
E: ID_BUS=pci
E: ID_VENDOR_FROM_DATABASE=Broadcom Inc. and subsidiaries
E: ID_MODEL_FROM_DATABASE=NetXtreme BCM5720 Gigabit Ethernet PCIe (NC332i Adapter)
[...]

$ udevadm info /sys/class/net/rtl0
[...]
E: ID_OUI_FROM_DATABASE=TP-Link Corporation Limited
E: ID_BUS=usb
E: ID_USB_VENDOR=Realtek
E: ID_USB_DRIVER=r8188eu
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp.
E: ID_MODEL_FROM_DATABASE=RTL8188EUS 802.11n Wireless Network Adapter
[...]

一些网络管理工具会自动提取并显示此信息。例如,如果您使用的是 systemd-networkd,networkctl status wlan0则会显示型号和路径。

另外,如果你的发行版有它,lsusb.py -i它将比 lsusb 更容易阅读,将直接显示 USB 设备提供的网络接口。(lsusb 和 lsusb.py 都来自同一个“usbutils”,但许多发行版出于某种原因不打包后者。)

$ lsusb.py -i
usb1              1d6b:0002 09 1IF  [USB 2.00,  480 Mbps,   0mA] (ehci_hcd) hub
  1-1               8087:0024 09 1IF  [USB 2.00,  480 Mbps,   0mA] (Intel Corp. Integrated Rate Matching Hub) hub
    1-1.6             0bda:8179 00 1IF  [USB 2.00,  480 Mbps, 500mA] (Realtek 802.11n NIC)
      1-1.6:1.0         (IF) ff:ff:ff 3EPs (Vendor Specific) r8188eu net/rtl0

相关内容