2

华为 R226 激活 RNDIS 模式

 2 years ago
source link: https://jixun.uk/posts/2022/huawei-r226-unbrand-rndis/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

前言 #

因为家里带宽有时候会出毛病,信号也不好,因此买了一张 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」。
    sshot-1.webp

    在 Zadig 显示所有连接的设备

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

    在下拉列表中选择 HUAWEI_MOBILE

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

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

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

    驱动安装完成。

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

    设备管理器 - libusb-win32 devices

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

    设备已切换至 RNDIS 模式。

卸载设备的 libusb 驱动 #

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

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

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

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

    卸载进行时

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

后记 #

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

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

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

参考内容 #


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK