华为 R226 激活 RNDIS 模式
前言
因为家里带宽有时候会出毛病,信号也不好,因此买了一张 1pmobile (aff, EE 网络) 的卡做备用。
然后在 eBay 买了个沃达丰定制的 R226(即华为随行 WiFi E5786 的定制版),刷了原厂固件。一番测试后 WiFi 功能正常,如果只是做备用已足矣。
最后想着尝试一下通过有线连接,却发现在 Windows 下安装驱动也不能正常切换到 RNDIS 模式;网上找了一圈驱动也没有能用的。
解决方案 1 - 虚拟机穿透
这是一开始想着看看 Linux 下能不能正常驱动的尝试.
- 准备一个虚拟机,安装 Ubuntu 或其他带有 usb_modeswitch 的发行版;
- 插入设备,将设备穿透至虚拟机;
- Ubuntu 将设备切换至 RNDIS 模式
- 取消设备穿透
缺点很明显 - 需要开一个虚拟机自动处理设备的工作模式切换,占用资源。
但也误打误撞让我找到了 Linux 能免驱自动切换的秘密:
sudo usb_modeswitch -v 12d1 -p 1f07 --huawei-new-mode --verbose
解决方案 2 - libUSB + 模拟驱动进行切换
- 使用 Zadig 将设备打上 libusb 驱动;
- 执行
netUSB.exe
切换到 RNDIS 模式。
详细步骤
- 安装自带的驱动,Win10 或以上系统或许可以跳过。
- 下载并启动 Zadig,勾选「List All Devices」并取消勾选「Ignore Hubs or Composite Parents」。
- 选择「华为随行 WiFi 设备(HUAWEI_MOBILE)」。
- 将默认的「
libusbK
」切换为libUSB
实现,然后按下「Replace Driver」安装驱动。 - 稍等片刻,驱动安装后会有如下提示:
- 此时也可以在设备管理器看到该设备已经被归类于「libusb-win32 devices」分类下:
- 打开下载的
netUSB.exe
- 一个黑乎乎的窗口一闪而过,RNDIS 模式切换成功。
可以在设备管理器看到该设备已经正常切换至 RNDIS 模式:
卸载设备的 libusb 驱动
如果希望还原到打 libusb 驱动之前的状态,按照下方的说明操作即可。
- 打开设备管理器,并重新插入该设备
- 右键选择该设备,选择卸载,并在弹出窗口勾选「删除此设备的驱动程序软件」:
- 稍等片刻后结束卸载,此时重新插入设备即可。
后记
这样其实就足够好了。如果需要一个自动切换的方案,可以写一个后台程序监听 USB 设备事件,并自动执行 netUSB.exe
即可。我个人没有这个需要就不折腾了。
为什么 Windows 没有自带类似 udev + 脚本配置规则的服务呢… 有一个通用的方案的话就好多了。
一开始还想着尝试一下调用 WinUSB 的接口,结果却无法正常进行交互。错误信息是枚举派生接口的 GUID 错误,试了好几个后放弃;遂换用 libusb 的 c# 库进行自动化。