无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 329|回复: 12
打印 上一主题 下一主题

[原创] 如何直通USB无线网卡给openwrt?

[复制链接]
跳转到指定楼层
1#
发表于 前天 23:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 seekyou2008 于 2025-11-4 23:16 编辑

在进行下面操作之前,我们首先要确认自己的执行环境是否满足:PVE + OPENWRT + MediaTek Inc. MT7612U USB无线网卡。
PVE中执行:
root@mywows:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 05e3:0751 Genesys Logic, Inc. microSD Card Reader
Bus 001 Device 013: ID 0e8d:2870 MediaTek Inc. Љ
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

查看有没有列出USB无线网卡设备,当前只有一个
Bus 001 Device 013: ID 0e8d:2870 MediaTek Inc. Љ
它不是我们要的USB无线网卡,它可能是一个存储设备。
继续dmesg,发现了一些蛛丝马迹:
[  367.766094] usb-storage 1-3:1.0: USB Mass Storage device detected
[  367.766658] scsi host3: usb-storage 1-3:1.0
[  368.776490] scsi 3:0:0:0: CD-ROM MediaTek Flash autorun 0.01 PQ: 0 ANSI: 0 CCS

你发现什么了吗?

系统识别成了“虚拟光驱”,里面可能有 Windows 驱动安装程序,这就是 ZeroCD 机制。

这样导致的后果:

无法触发无线驱动加载 (mt76x2u 等)

永远不会出现 wlan0 接口


找到问题的根源,接下来就好解决了。

解决步骤(PVE 环境)
1,安装 usb_modeswitch:
apt update
apt install usb-modeswitch usb-modeswitch-data

2,自动化切换(推荐)
为了避免每次拔插都要手动运行 usb_modeswitch,可以在 PVE 宿主机加个 udev 规则:
root@mywows:~# cat /etc/udev/rules.d/99-mt7612u-switch.rules
ACTION=="add",ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="2870", RUN+="/usr/sbin/usb_modeswitch -KW -v 0e8d -p 2870"

这样以后插上 ZeroCD 模式的网卡会自动切换成无线模式。
验证结果是不是与我们预期的效果一致:
root@mywows:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 05e3:0751 Genesys Logic, Inc. microSD Card Reader
Bus 001 Device 015: ID 0e8d:7612 MediaTek Inc. MT7612U 802.11a/b/g/n/ac Wireless Adapter

OK,完美!我们期待已久的USB无线网卡千呼万唤始出来了。
接下来开始直通操作(PVE):
qm set VMID -usb0 host=0e8d:7612
qm set VMID -machine q35
VMID要换成你自己实际的VM ID。
在OPENWRT上执行:
root@OpenWrt:~# lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 002 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 003 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 004 Device 001: ID 1d6b:0002 Linux 6.6.93 ehci_hcd EHCI Host Controller
Bus 005 Device 001: ID 1d6b:0002 Linux 6.6.93 ehci_hcd EHCI Host Controller
Bus 005 Device 002: ID 0627:0001 QEMU QEMU USB Tablet
Bus 006 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 007 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 008 Device 001: ID 1d6b:0001 Linux 6.6.93 uhci_hcd UHCI Host Controller
Bus 009 Device 001: ID 1d6b:0002 Linux 6.6.93 xhci-hcd xHCI Host Controller
Bus 010 Device 001: ID 1d6b:0003 Linux 6.6.93 xhci-hcd xHCI Host Controller
Bus 010 Device 002: ID 0e8d:7612 MediaTek Inc. 802.11ac WLAN
root@OpenWrt:~# dmesg | grep mt76
[    8.643915] usbcore: registered new interface driver mt7601u
[    8.998262] mt76x2u 10-1:1.0: ASIC revision: 76120044
[    9.050305] mt76x2u 10-1:1.0: ROM patch build: 20141115060606a
[    9.237596] mt76x2u 10-1:1.0: Firmware Version: 0.0.00
[    9.238436] mt76x2u 10-1:1.0: Build: 1
[    9.239050] mt76x2u 10-1:1.0: Build Time: 201507311614____
[   10.264698] usbcore: registered new interface driver mt76x2u
[   14.004184] mt76x2u 10-1:1.0 phy0-ap0: entered allmulticast mode
[   14.005018] mt76x2u 10-1:1.0 phy0-ap0: entered promiscuous mode
root@OpenWrt:~# iw dev
phy#0
        Interface phy0-ap0
                ifindex 4
                wdev 0x1
                addr xx:xx:xx:xx:xx:xx
                ssid OpenWrt
                type AP
                channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
                txpower 19.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       10594   0       0       0       0       1443375         11848

至此直通USB无线网卡结束。
后记:
usb_modeswitch到底是干什么的?

许多 USB 网络设备在插入时并不会直接以“网卡”身份出现,而是先伪装成一个 USB 存储设备(U盘),用于在 Windows 上自动安装驱动。这种行为叫做 ZeroCD 模式。

在Linux下,这种设备会被识别为usb-storage,

而不是usb-serial 或 net 类型设备。

于是你插上网卡,系统却以为你插了个 U 盘。

usb_modeswitch 的作用就是:

向设备发送特定命令,让它从“存储模式”切换到“真实的网络设备模式”。
工作流程如下:
[USB 插入] → [ZeroCD 模式] → usb_modeswitch → [重新枚举] → [驱动加载] → [wlan 接口创建]

注意:如果上面iw dev命令无输出时,你可能需要登录OPENWRT WEB界面,在NETWORK,WIRELESS里把 相关 接口从DISABLE启用为ENABLE。这一步非常 关键,很多时候你可能就卡在这里。

好了,最后留个尾巴,关于USB无线网卡直通后插拨导致的另外一个问题,这个坑留着下次填。


2#
发表于 昨天 07:23 | 只看该作者
感谢分享!!!
回复

使用道具 举报

3#
发表于 昨天 07:46 来自手机 | 只看该作者
遇到过类似的小情况,我的无线网卡自带虚拟光驱驱动(很多都这样),但有时候安装过驱动后识别不到,重新插拔设备又会检测到这个驱动虚拟光驱。有时候就正常。
回复

使用道具 举报

4#
发表于 昨天 08:02 | 只看该作者
多谢分享!
回复

使用道具 举报

5#
发表于 昨天 08:15 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

6#
发表于 昨天 08:16 | 只看该作者
出现小问题就有小妙招
回复

使用道具 举报

7#
发表于 昨天 08:41 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

8#
发表于 昨天 10:17 | 只看该作者
多谢分享!
回复

使用道具 举报

9#
发表于 昨天 10:24 | 只看该作者
感谢分享
回复

使用道具 举报

10#
发表于 昨天 11:48 | 只看该作者
感谢分享
回复

使用道具 举报

11#
发表于 昨天 11:59 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 昨天 13:32 | 只看该作者
谢谢分享了!
回复

使用道具 举报

13#
发表于 昨天 20:28 | 只看该作者
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-11-6 00:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表