news 2026/4/23 17:02:48

Linux开发—— USB 虚拟网口配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux开发—— USB 虚拟网口配置

一、内核编译配置

1. 必需的内核选项

# USB Gadget 支持(核心)Device Drivers --->[*]USB support ---><M>USB Gadget Support ---><M>USB Gadget Drivers# USB 网络功能(关键)Device Drivers --->[*]USB support ---><M>USB Gadget Support ---><M>Ethernet Gadget(with CDC Ethernet support)<M>RNDIS support<M>ECM support

2. 具体配置项

配置项说明为什么需要
CONFIG_USB_GADGET=y/mUSB Gadget 框架使 Linux 设备作为 USB 从设备
CONFIG_USB_CONFIGFS=y/mConfigFS 支持允许通过文件系统动态配置 USB
CONFIG_USB_ETH=mUSB Ethernet Gadget提供基础以太网功能
CONFIG_USB_ETH_RNDIS=yRNDIS 协议Windows 兼容性(必需)
CONFIG_USB_ETH_EEM=yEEM 协议高性能以太网模拟
CONFIG_USB_G_ETHER=mEthernet Gadget 驱动实际的网络驱动程序

3. 推荐的额外选项

CONFIG_USB_LIBCOMPOSITE=m# 组合 USB 设备支持CONFIG_USB_F_ECM=m# ECM 功能(Mac/Linux)CONFIG_USB_F_RNDIS=m# RNDIS 功能(Windows)CONFIG_USB_F_EEM=m# EEM 功能

二、为什么需要这些配置?

1.USB Gadget 框架原理

硬件层 (USB Controller) ↓ USB Gadget 驱动层 (内核模块) ↓ USB 功能层 (RNDIS/ECM/EEM) ↓ 网络协议栈 (usb0 虚拟网卡)
  • Gadget 模式:让 Linux 设备充当 USB 从设备(而非主机)
  • 功能复用:同一个 USB 接口可以模拟多种设备(网卡、串口、存储等)

2.RNDIS 的必要性

  • Windows 兼容:Windows 原生支持 RNDIS 协议
  • 无需驱动:Windows 自动识别为网络适配器
  • 即插即用:连接后自动创建网络连接

3.ECM/EEM 的作用

  • ECM:Linux/macOS 的标准协议,性能好
  • EEM:最新协议,效率最高,开销最小
  • 跨平台:配置多种协议确保兼容性

三、运行时配置(两种方法)

方法 1:使用 g_ether 模块(简单)

# 加载模块modprobe g_ether# 配置 IP 地址ifconfigusb0192.168.7.2 netmask255.255.255.0 up# 启用路由转发(可选)echo1>/proc/sys/net/ipv4/ip_forward

方法 2:使用 ConfigFS(灵活,推荐)

#!/bin/bash# 挂载 configfsmount-t configfs none /sys/kernel/configcd/sys/kernel/config/usb_gadget/# 创建 gadgetmkdirg1cdg1# 设置 USB 描述符echo"0x1d6b">idVendor# Linux Foundationecho"0x0104">idProduct# Multifunction Composite Gadgetecho"0x0100">bcdDevice# v1.0.0echo"0x0200">bcdUSB# USB 2.0# 创建字符串描述符mkdirstrings/0x409echo"0123456789">strings/0x409/serialnumberecho"MyCompany">strings/0x409/manufacturerecho"USB-Ethernet">strings/0x409/product# 创建配置mkdirconfigs/c.1mkdirconfigs/c.1/strings/0x409echo"Config 1: RNDIS network">configs/c.1/strings/0x409/configurationecho250>configs/c.1/MaxPower# 创建 RNDIS 功能mkdirfunctions/rndis.usb0# 设置 MAC 地址(可选)echo"02:00:00:00:00:01">functions/rndis.usb0/dev_addrecho"02:00:00:00:00:02">functions/rndis.usb0/host_addr# 链接功能到配置ln-s functions/rndis.usb0 configs/c.1/# 绑定到 UDC(USB Device Controller)ls/sys/class/udc>UDC# 配置网络接口sleep2ifconfigusb0192.168.7.2 netmask255.255.255.0 up

四、验证配置

# 1. 检查内核模块lsmod|grepusb# 2. 查看网络接口ipaddr show usb0# 3. 查看 USB 设备状态cat/sys/kernel/config/usb_gadget/g1/UDC# 4. 测试连接(从 PC 端)ping192.168.7.2

五、常见问题排查

问题原因解决方法
usb0 不出现内核选项未启用检查CONFIG_USB_G_ETHER
Windows 无法识别缺少 RNDIS 支持确保CONFIG_USB_ETH_RNDIS=y
连接后无法通信IP 地址冲突PC 和板子使用不同 IP
无法加载模块UDC 驱动未加载检查 USB 控制器驱动

六、开机自动配置

创建 systemd 服务或在/etc/rc.local中添加:

#!/bin/sh# USB 网络初始化modprobe g_etherifconfigusb0192.168.7.2 netmask255.255.255.0 upexit0

总结

核心要点

  1. 内核支持:编译时启用 USB Gadget + RNDIS/ECM 功能
  2. 运行时配置:加载模块并配置 IP 地址
  3. 协议选择:RNDIS(Windows)、ECM(Linux/Mac)
  4. IP 规划:确保 PC 和开发板 IP 在同一网段但不冲突
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:48:31

极简云端文件格式转换工具:安全高效的在线数据处理助手

在日常办公与数据处理工作中&#xff0c;格式转换是几乎所有人都曾面对的需求——无论是将会议记录整理为文本文件&#xff0c;还是将Excel数据转为可供编程处理的CSV格式。然而&#xff0c;传统转换工具往往伴随着软件安装复杂、隐私安全担忧或功能冗余等问题。图中展示的这款…

作者头像 李华
网站建设 2026/4/23 10:36:23

Claude Code:Ubuntu设置中转

以下是Ubuntu(25.04)下设置中转的方法&#xff1a; 1.安装完Claude Code后&#xff0c;不需要任何设置&#xff0c;直接先执行一次&#xff1a; $ claude 2.编辑配置文件 $ gedit ~/.claude.json 在文件中的最后加入&#xff08;注意上一行最后需要有逗号&#xff09; { .…

作者头像 李华
网站建设 2026/4/23 14:33:38

Firecracker:轻量级虚拟化技术赋能无服务器计算

Firecracker&#xff1a;某中心开源、极简的无服务器计算方法 观看Marc Brooker关于Firecracker&#xff08;一个开源虚拟化平台&#xff09;演讲的录像。 作者&#xff1a;Staff writer 2020年5月14日 2020年5月28日&#xff0c;某中心高级首席工程师Marc Brooker就Firecracke…

作者头像 李华
网站建设 2026/4/23 13:01:21

2026年知网AIGC检测不通过?这3款降AI工具专治高AI率

82%。这是我论文知网AIGC检测的结果。 问题是&#xff0c;这篇论文我写了整整两周&#xff0c;一个字都没用AI。当时看到这个数字&#xff0c;第一反应是知网系统出bug了。后来查了才知道&#xff0c;2026年知网升级了检测算法&#xff0c;很多手写论文也会被误判。 先说结论…

作者头像 李华
网站建设 2026/4/23 16:11:46

基于Java的库存智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 库存智慧管理系统主要功能模块包括会员管理、货品管理、仓库管理等&#xff0c;相比传统选题更具优势。本系统不仅涵盖了全面的功能需求分析和设计实现&#xff0c;还提供了详细的源代码与毕设论文&#xff0c;使得零基础开发者也能轻松上…

作者头像 李华