DEV Community

Cover image for QuecPython + USBNET: Implement USB Network Adapter Functionality
QuecPython
QuecPython

Posted on

QuecPython + USBNET: Implement USB Network Adapter Functionality

USBNET Overview

USBNET (USB Networking) is a technology that enables network communication via a USB interface. It allows devices to emulate Ethernet over a USB connection (Ethernet over USB) or directly transmit network data through USB links. It is widely used in scenarios such as embedded devices, industrial control, virtual machines, and portable devices.

Core Features of USBNET

USB Interface Based: Implements network communication using the USB physical layer, eliminating the need for traditional network cables (such as RJ45).

High-Speed Transmission: Supports USB 2.0 (480 Mbps), USB 3.0 (5 Gbps), and even USB4 (40 Gbps).

Low Latency: Delivers lower latency than wireless networks (Wi-Fi), making it suitable for real-time data transmission.

Plug and Play: Supports hot swapping, with automatic device recognition and network configuration upon connection.

Common Working Types of USBNET

ECM Mode (Ethernet Control Model)

Protocol: Standard USB protocol with strong compatibility (natively supported by Linux/Android/macOS).

Applicable Scenarios: Embedded Linux devices, industrial controllers.

RNDIS Mode (Remote NDIS)

Protocol: Microsoft-led USB network protocol, natively supported by Windows by default.

Applicable Scenarios: Windows device debugging (e.g., Android USB network tethering).

NCM Mode (Network Control Model)

Protocol: USB-IF standard protocol, more efficient than ECM.

Applicable Scenarios: 5G modules, high-performance embedded devices.

Functional Overview

This article mainly describes how to implement the USBNET function with a QuecPython development board and provide network access for connected devices. The typical programming workflow is divided into the following parts:

  1. Import the USBNET package

  2. Set the working type of the USB network adapter

  3. Enable the USB network adapter

Import the USBNET Package

First, import the USBNET package from misc.

Set the Working Type

This method is used to set the working type of the USB network adapter.

For API details, please refer to USBNET.set_worktype.

Enable the USB Network Adapter

This method is used to turn on the USB network adapter function.

For API details, please refer to USBNET.open.

Application Example

Taking the EC600MCNLE QuecPython development board as an example, this example creates a USB network adapter to provide network access for a PC. The sample code is as follows:

After entering the above code via QPYcom, the USB network adapter is enabled. When you check the network connection interface on the PC, you will see an additional available network.

Open Command Prompt (cmd) and enter ipconfig, you can see that the basic network information has been obtained. At this point, if you disable all other network interfaces and only keep the USB network adapter interface, the computer can still access the Internet normally.

You can then access web pages through your computer's browser. For example, enter https://python.quectel.com in the browser address bar to access the site normally.

Top comments (0)