我买了一个 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