RNDIS协议实现USB虚拟网卡上网技术解析 !
RNDIS(Remote NDIS)技术通过USB接口实现TCP/IP协议栈的传输,将设备虚拟为一块以太网卡,从而让主机系统无需额外拨号即可通过USB连接共享网络。该方式广泛应用于嵌入式设备与主控终端之间的高速联网,具备即插即用、兼容性强等优势。
本文以Air780EPM系列核心板/开发板为例,分享在Windows及Linux系统下,通过RNDIS方式实现USB上网的要点。
一、Windows下使用RNDIS功能
Windows系统默认支持RNDIS,直接用USB连接板子和电脑就可以使用。
1.1 核心示例代码
open_rndis.lua核心代码如下图示,完整demo详见源码仓库最新文件。
1.2 确认RNDIS状态
先用Luatools将相关代码烧录到模组中,通过日志来确认是否已经成功开启RNDIS功能:
1.3 在Widows中启用RNDIS
当开启RNDIS功能后,Air780EPM会虚拟一个网卡,此网卡可在“设备管理器”或“高级网络设置”中看到。
启用完毕后,即可看到我们电脑的图标已经变为以太网连接,此时可以正常使用RNDIS上网了。
1.4 相关注意事项
由于Air780EPM驱动使用的是CDC驱动,所以请使用Win10及其以上系统(Win10以下系统,Air780EPM不做支持)。
如果启动后日志中打印RNDIS启动成功,但是Windows上没有连上网络,需要确认下系统是否将RNDIS的虚拟网卡禁用了。
二、Linux下使用RNDIS功能
2.1 在Linux中启用RNDIS
因为Air780EPM的RNDIS使用CDC-ACM驱动,大部分Linux系统默认就支持,所以无需设置代码,插入USB就可以在Linux中使用。
使用 ls /dev/ttyACM* 即可看到三个端口:
在控制台查看USB设备可以看到一个ID为19d1:0001的USB设备,这个就是Air780EPM虚拟出的USB网卡:
查看网卡信息可以看到如下信息:
尝试使用ping命令访问百度,联网成功:
2.2 相关注意事项
有些Llinux设备存在Air780EPM重启后,操作文件会发生移位。
比如:
本来是/dev/ttyACM0/1/2,重启后变成了ttyUSB1/3/4。
最靠谱的方法是,通过驱动节点来找到操作文件usb_find.c;
寻找真正的需要的端口:
FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID)
每个设备的ethx可能不一样,插入Air780EPM后增加的网卡即为RNDIS网卡。
如果遇到没有RNDIS驱动的情况,可在编译内核时参考下图配置:
今天的内容就分享到这里了~
审核编辑 黄宇
- 奔驰GLS墨版 全部在售 2023款 2022款 2021款 2020款成都平行进口奔驰GLS墨版团购优惠6万 欢迎上门试驾
- 数百万辆特斯拉HW3也可以用上FSD V14了,中国车型是否同步升级?特斯拉尚未给出答案
- 绿源电动车旗舰店被指发布擦边视频,客服致歉:视频已下架
- 零公里润滑油ZM车队半程四夺赛段冠军,机械师・越野拉力版护航环塔极限征程
- 存储涨价,车企还得再扛一年
- “松绑”华为,赛力斯能否复制问界奇迹?
- 魏牌V9X上市期待这么久终于上市了,34.98万元起!
- 苏宁易购拟1元底价“甩卖”家乐福中国主体:持续推进非主营业务瘦身
- 浙商策略:双创冲高回落大盘调整 短线或震荡、中线暂无忧
- 全线跳水!超15万人爆仓!霍尔木兹海峡,大消息
- 韩国股市重挫 启动卖方“熔断机制”!
- 注意风险!5月以来超110只ST股下跌 3股已腰斩
- 单笔订单总额超全年营收!一字涨停后,华秦科技回应:今年干不完
- 稀缺!高研发+高成长的优质次新股 仅10只(附名单)
- 335亿元市值上市公司 第六大股东是演员张凌赫?公开信息显示非同一人 公司回应
- 国信策略:A股日历效应还有效吗?