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 即可正常访问。