USB 网卡

本章主要介绍 QuecPython 下 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 口给其他设备供网。

硬件结构

USBNET硬件结构图

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

初始化流程

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

数据流

工作模式

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

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

各平台支持情况

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

网卡类型 支持型号
USB网卡 RNDIS 除 BGxx 系列模块和 Wi-Fi 模块外,其余模块均支持
ECM 除 BGxx 系列模块和 Wi-Fi 模块外,其余模块均支持
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. 成功切换后如图所示,网卡驱动变更并被识别到