QuecPython+USBNET:实现USB网卡功能

USBNET 概述

USBNET(USB Networking) 是一种通过 USB 接口 实现网络通信的技术,允许设备通过 USB 连接模拟以太网(Ethernet over USB)或直接进行网络数据传输。它广泛应用于嵌入式设备、工业控制、虚拟机和便携式设备等场景。

USBNET 的核心特点

  • 基于 USB 接口:利用 USB 物理层实现网络通信,无需传统网线(如 RJ45)。

  • 高速传输:支持 USB 2.0(480 Mbps)、USB 3.0(5 Gbps)甚至 USB4(40 Gbps)。

  • 低延迟:相比无线网络(Wi-Fi),USBNET 延迟更低,适合实时数据传输。

  • 即插即用:热插拔支持,设备连接后自动识别并配置网络。

USBNET 的常见工作类型

ECM 模式(Ethernet Control Model)

  • 协议:USB 标准协议,兼容性强(Linux/Android/macOS 原生支持)。

  • 适用场景:嵌入式 Linux 设备、工业控制器。

RNDIS 模式(Remote NDIS)

  • 协议:微软主导的 USB 网络协议,Windows 默认支持。

  • 适用场景:Windows 设备调试(如 Android USB 共享网络)。

NCM(Network Control Model)

  • 协议:USB-IF 标准协议,比 ECM 更高效。

  • 适用场景:5G 模块、高性能嵌入式设备。

功能概述

主要介绍如何使用 QuecPython 开发板实现 USBNET 功能,并为设备提供网络。典型的编程工作流程分为以下几个部分:

  • 导入 USBNET 包

  • 设置 USB 网卡工作类型

  • 打开 USB 网卡

导入 USBNET 包

首先从 misc 中导入 USBNET 包。

from misc import USBNET

设置工作类型

该方法用于设置 USB 网卡的工作类型。

USBNET.set_worktype(type)

API 详情请参考 USBNET.set_worktype

打开 USB 网卡

该方法用于打开 USB 网卡功能

USBNET.open()

API 详情请参考 USBNET.open

应用案例

以 EC600MCNLE QuecPython 开发板为例,创建 USB 网卡,并未 PC 端提供网络。示例代码如下:

# 首先从misc中导入USBNET包
from misc import USBNET>>> from misc import Power
# 查询当前USBNET的工作模式,1 表示ECM模式, 3 表示RNDIS模式
USBNET.get_worktype()
1
# 设置为RNDIS模式
USBNET.set_worktype(USBNET.Type_RNDIS)0
# 重启模组,用以生效之前配置的模式
Power.powerRestart()

# 重启模组后,导入所需的包
from misc import USBNET>>> import dataCall
USBNET.get_worktype()
3
# 查询模组是否拨号成功
dataCall.getInfo(1,0)
(1, 0, [1, 0, '10.62.213.130', '211.138.180.4', '211.138.180.5'])# 有拨号信息后打开USB网卡
USBNET.open()
0

通过 QPYcom 输入以上代码后即可开启 USB 网卡,查看 PC 端网络连接界面,可以看到多出来一个网络可供选择。

打开 cmd,输入 ipconfig,可以看到基本网络信息都已获取,此时关闭其余网络接口,只保留 USB 网卡的网络接口,电脑也可以正常上网。

此时可以通过电脑浏览器访问网页。比如浏览器输入 https://python.quectel.com 即可正常访问。