跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

华为 R226 激活 RNDIS 模式

前言 #

因为家里带宽有时候会出毛病,信号也不好,因此买了一张 1pmobile (aff, EE 网络) 的卡做备用。

然后在 eBay 买了个沃达丰定制的 R226(即华为随行 WiFi E5786 的定制版),刷了原厂固件。一番测试后 WiFi 功能正常,如果只是做备用已足矣。

最后想着尝试一下通过有线连接,却发现在 Windows 下安装驱动也不能正常切换到 RNDIS 模式;网上找了一圈驱动也没有能用的。

解决方案 1 - 虚拟机穿透 #

这是一开始想着看看 Linux 下能不能正常驱动的尝试.

  1. 准备一个虚拟机,安装 Ubuntu 或其他带有 usb_modeswitch 的发行版;
  2. 插入设备,将设备穿透至虚拟机;
  3. Ubuntu 将设备切换至 RNDIS 模式
  4. 取消设备穿透

缺点很明显 - 需要开一个虚拟机自动处理设备的工作模式切换,占用资源。

但也误打误撞让我找到了 Linux 能免驱自动切换的秘密:

sudo usb_modeswitch -v 12d1 -p 1f07 --huawei-new-mode --verbose

解决方案 2 - libUSB + 模拟驱动进行切换 #

  1. 使用 Zadig 将设备打上 libusb 驱动;
  2. 执行 netUSB.exe 切换到 RNDIS 模式。

详细步骤 #

  1. 安装自带的驱动,Win10 或以上系统或许可以跳过。
  2. 下载并启动 Zadig,勾选「List All Devices」并取消勾选「Ignore Hubs or Composite Parents」。

    在 Zadig 显示所有连接的设备

  3. 选择「华为随行 WiFi 设备(HUAWEI_MOBILE)」。

    在下拉列表中选择 HUAWEI_MOBILE

  4. 将默认的「libusbK」切换为 libUSB 实现,然后按下「Replace Driver」安装驱动。

    准备安装驱动。此处的截图为安装完成后补图。

  5. 稍等片刻,驱动安装后会有如下提示:

    驱动安装完成。

  6. 此时也可以在设备管理器看到该设备已经被归类于「libusb-win32 devices」分类下:

    设备管理器 - libusb-win32 devices

  7. 打开下载的 netUSB.exe
  8. 一个黑乎乎的窗口一闪而过,RNDIS 模式切换成功。
    可以在设备管理器看到该设备已经正常切换至 RNDIS 模式:

    设备已切换至 RNDIS 模式。

卸载设备的 libusb 驱动 #

如果希望还原到打 libusb 驱动之前的状态,按照下方的说明操作即可。

  1. 打开设备管理器,并重新插入该设备

    打开设备管理器,准备卸载。

  2. 右键选择该设备,选择卸载,并在弹出窗口勾选「删除此设备的驱动程序软件」:

    卸载进行时

  3. 稍等片刻后结束卸载,此时重新插入设备即可。

后记 #

这样其实就足够好了。如果需要一个自动切换的方案,可以写一个后台程序监听 USB 设备事件,并自动执行 netUSB.exe 即可。我个人没有这个需要就不折腾了。

为什么 Windows 没有自带类似 udev + 脚本配置规则的服务呢… 有一个通用的方案的话就好多了。

一开始还想着尝试一下调用 WinUSB 的接口,结果却无法正常进行交互。错误信息是枚举派生接口的 GUID 错误,试了好几个后放弃;遂换用 libusb 的 c# 库进行自动化。

参考内容 #

知识共享许可协议 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论区