USB 网卡

USB 网卡介绍#

USB网卡(USB Network Adapter)是一种外部设备,用于在计算机或其他设备上提供以太网连接。它通过USB接口连接到计算机,并通过USB总线进行数据传输。USB网卡通常用于为计算机添加或扩展网络连接功能,特别是在没有内置以太网接口或需要额外网络连接的情况下。

QuecPython 上是如何支持 USB 网卡的?

USB 协议定义了设备类的类别码信息,可以用来识别设备并且加载设备驱动。这种代码信息有包含Base Class([基类])、SubClass([子类])、Protocol([协议])一共占有3个字节。常见的支持USB网卡的协议ECM/RNDIS/MBIM(USB 协议下的子类)。

  • ECM(Ethernet Networking Control Model,以太网网络控制模型)用于在设备和主机之间交换以太网帧数据。ECM设备的一般用例是LAN/WLAN的点对点以太网适配器。

  • RNDIS(Remote network Driver Interface Specification,远程网络驱动接口规范) 协议是微软对于 ECM 的变种实现,主要用于简化 Windows 平台中 USB 网络设备的驱动开发。

  • MBIM(Mobile Broadband Interface Model,移动宽带接口模型),专用于3G/4G/5G模块。它定义了移动宽带设备与 PC 端的接口标准。

QuecPython 通过支持 USB 协议下 ECM/RNDIS/MBIM 子类协议实现对 USB 网卡适配,工作场景基本都是通过 USB 口给其他设备供网。

硬件结构#

引脚 说明
VCC 提供电源供电给连接的USB设备
D- 数据线负极
D+ 数据线正极
GND 提供电路的接地

初始化流程#

网卡初始化加载流程如下图所示:

数据流#

工作模式#

USB网卡是类以太网卡的,其工作方式与以太网卡相似,可以根据工作方式分为LAN/WAN(请参考以太网章节介绍)。

QuecPython在使用中以LAN的方式使用,通过 4G 给 USB 网卡供网。

各平台支持情况#

下表是 USB 网卡在各平台适配支持情况。

网卡类型 支持型号
USB网卡 RNDIS 除 BGxx 系列模块和 Wi-Fi 模块外,其余模块均支持
USB网卡 ECM 除 BGxx 系列模块和 Wi-Fi 模块外,其余模块均支持
USB网卡 MBIM BGxx 系列模块支持

USBNET API 说明#

USBNET 功能较为固定,所以操作上较简单,无网络相关配置。

打开 USB 网卡#

打开 USB 网卡,默认网卡接口是存在的,操作此接口后,USB 网卡可以正常连接网络使用。

USBNET.open()

配置 USB 网卡工作模式#

USB 网卡支持 ECM/RNDIS 协议,当前可以选择两种 Type_ECM/Type_RNDIS,需要根据自己使用的环境进行配置使用。

USBNET.set_worktype(USBNET.Type_RNDIS)

查询 USB 网卡工作模式#

查询 USB 网卡工作模式,主要在复杂情况下,判断网卡工作在什么模式下进行什么操作,也在调试时判断工作模式是否和预期一样。

USBNET.get_worktype()

查询 USB 网卡工作状态#

查询 USB 网卡工作状态,方便处理各种异常情况以及调试。

USBNET.get_status()

关闭 USB 网卡#

与打开 USB 网卡逆向操作,操作后会让网卡不可用,方便根据需要对网卡进行控制。

USBNET.close()

应用示例#

Windows 系统使用 USB 网卡

Android 系统使用 USB 网卡

Linux 系统使用 USB 网卡

常见异常处理#

1. 为什么同一台 USB 网卡设备连接手机后有的手机正常有的手机没有网络?

a. 检查网卡工作模式是否设置为 ECM 模式,RNDIS 模式不是所有的手机都支持。
b. 查看手机是否需要开启 OTG 功能,对于 OPPO 及其旗下品牌手机(如一加、IQOO等)需要在系统设置中打开 OTG 模式。

2. 使用展锐 8910 的 USB 网卡功能,首次以默认 ECM 模式 open 后,电脑连接不上网络?

展锐 8910 的 USB 网卡功能需要NAT功能支持,默认开机不启动NAT,需要启动NAT后才能正常使用 USB 网卡功能。请参考 Wiki 上对应 USBNET 章节。展锐8910具体模块型号,可参考模组型号与平台的对应关系

3. 展锐8850使用 USB 网卡设置 RNDIS 后打开正常,关闭后再打开返回 -1。

需要进行 NAT 模式的设置,具体用法请参考 Wiki 上对应 USBNET 章节。展锐8850具体模块型号,可参考模组型号与平台的对应关系

4. 为什么我的手机状态栏没有<···>样图标,但网络可以使用?

这是正常情况,由于手机厂商差异,某些型号的手机(如一加 9RT、红米 Note 8等)是没有<···>图标的。

5. 电脑使用正常,但是手机却无法识别USB网卡?

a. 由于模块 MAC 地址导致手机无法正常识别,可以尝试使用 MAC 地址设置接口,更新 MAC 地址。
b. 由于手机厂商差异,无法识别 USB 网卡。

6. 电脑上使用展锐模组的 USB 网卡功能,从 ECM 模式切换至 RNDIS 模式后,为什么电脑网卡接口页面依然显示ECM模式网卡?

如下图所示,查询到网卡模式为 RNDIS,但网络适配器显示的为 ECM 网卡。

展锐平台由于使用驱动的特殊性,需要在切换网卡的工作模式后重新加载 RNDIS 网卡驱动,具体操作如下:

a. 进入设备管理器界面,选择网络适配器,选择 Quectel ECM Adapter,右键选择更新驱动

b. 选择浏览我的计算机以查找驱动程序软件

c. 选择让我从计算机上的可用驱动列表中选取

d. 双击Remote NDIS based Internet Sharing Device,切换到 RNDIS 驱动

e. 成功切换后如图所示,网卡驱动变更并被识别到