news 2026/7/14 20:38:44

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/7/13 15:28:37

F.I.R.E. 计算器:通往财务自由的数字导航仪

在现代社会&#xff0c;关于财务自由与提前退休的讨论日益热烈。然而&#xff0c;对许多人而言&#xff0c;“F.I.R.E.”&#xff08;Financial Independence, Retire Early&#xff0c;即财务独立&#xff0c;提前退休&#xff09;往往只是一个抽象的概念。图片中展示的这款在…

作者头像 李华
网站建设 2026/7/13 13:09:10

论文AI率从90%降到10%怎么做?3招搞定不伤原意

论文AI率从90%降到10%怎么做&#xff1f;3招搞定不伤原意 提交前一天测了一下AI率&#xff0c;90%。导师说必须降到20%以下才能答辩。我当时整个人都是懵的&#xff0c;一万多字的论文&#xff0c;怎么改&#xff1f; 后来用对了方法&#xff0c;当天就把AI率降到了8%&#x…

作者头像 李华
网站建设 2026/7/11 22:28:31

一键降AI真能用?实测5款工具后只有这款不达标可退

一键降AI真能用&#xff1f;实测5款工具后只有这款不达标可退 "一键降AI"听起来很美好&#xff0c;但真的靠谱吗&#xff1f; 我花了一周时间测了5款声称"一键降AI"的工具&#xff0c;结果发现&#xff1a;大部分都是噱头&#xff0c;只有2款真正好用&…

作者头像 李华
网站建设 2026/7/13 9:06:55

AI写论文不愁没思路!这4款AI论文生成神器,为你打开创作大门!

学术写作新利器&#xff1a;四款 AI 论文写作工具推荐 在撰写期刊论文、毕业论文或职称论文的过程中&#xff0c;许多学术研究者常常会遭遇诸多挑战。独立完成论文时&#xff0c;面对庞大的文献资料&#xff0c;寻找相关信息有时就像在大海中捞针&#xff1b;那些复杂严格的格…

作者头像 李华
网站建设 2026/7/11 22:28:23

水凝胶摩擦影响热膨胀

comsol考虑摩擦和不考虑摩擦的水凝胶热膨胀行为。 包含加热湿度变化。 水凝胶这玩意儿在生物医疗和软体机器人领域都快被玩出花了&#xff0c;最近实验室里的小白鼠们&#xff08;指师弟师妹&#xff09;天天对着COMSOL挠头。今天咱们就唠唠建模时最容易被忽略的魔鬼细节——摩…

作者头像 李华
网站建设 2026/7/4 18:44:08

基于SpringBoot框架的门禁管理系统的设计与实现任务书

目录 系统概述核心功能模块技术实现要点数据库设计示例测试与部署预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 系统概述 基于SpringBoot的门禁管理系统旨在通过现代化技术实现门禁设备的智能…

作者头像 李华