0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

来了,亲测有效!RNDIS网卡实现USB上网的方法

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-12-26 11:49 次阅读

本文将带你使用RNDIS的方式,搭配Linux主控终端,快速实现USB上网。

RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡,从而使Linux可以通过USB设备连接网络

一、Linux驱动配置

1. 虚拟串口

通过串口发送AT指令,Air780ER使用CDC-ACM驱动,大部分Linux系统默认就支持,插入就可以使用。

wKgZPGdpFqWAZlwkAABbsAP2O1I404.png


测试AT指令可以用minicom等工具,运行命令:

sudo minicom -D /dev/ttyACM0

测试结果如下:

wKgZO2dpFrOAd134AADB53IopC0000.png


如果所用系统不支持CDC-ACM驱动,则可使用如下配置:

▼ 虚拟串口驱动配置 ▼

1)配置内核:

wKgZO2dpFsSAb259AAWTsCAWAz8215.png


2)确定端口

交叉编译后,板上运行,demesg打印如下。

wKgZO2dpFtOAWlNmAAEVTel9W8g020.png


说明ACM驱动Air780ER成功,其中节点:

1-1.3:1.2为AT口

对应的操作文件/dev/ttyACM0,进行通讯。如果没有合适的命令行工具,用如下的源代码编译个简单小程序在linux下发AT的小工具;

1-1.3:1.4为日志口

对应的操作文件/dev/ttyACM1,进行抓日志,具体抓日志方法见uart_capture.c;

1-1.3:1.6为modem口

对应的操作文件/dev/ttyACM2,客户可以进行PPP拨号。

注意事项:

有些Linux设备存在模组重启后,操作文件会发生移位,比如本来是/dev/ttyACM0是可以进行AT通讯的,后来又不行。

最靠谱的方法是通过驱动节点,来找到操作文件usb_find.c;

可以用:

FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID),来寻找真正的需要的端口。

某些最简系统需要根据设备描述来识别,可以参考如下Linux上展示的细节进行适配,lsusb_618;

相关最新资料详见:

https://docs.openluat.com/air780er/at/quick_start/usb/

2. RNDIS驱动

Air780ER是标准的RNDIS,目前Linux大部分发行版本都已经默认支持RNDIS驱动了,只要通过USB连接Air780ER模组就可以直接用,模组开机后就会在Linux设备端看到新的网卡。

如下图所示:

wKgZPGdpFuKAXLGAAANt3juEjJY561.png


注意:

每个设备的ethx可能不一样,上图插入Air780ER模组后增加的网卡即为RNDIS网卡,地址为192.168.10.2。

如果没有RNDIS驱动的,可按照下图配置:

▼ RNDIS驱动配置 ▼

wKgZPGdpFvaARcsxAAcwC_LHGJU105.png


二、RNDIS功能测试

STEP 1:禁用本地网卡sudo ifconfig eth0 down

STEP 2:使能模组网卡sudo ifconfig eth10 up

使能之后,最好再通过ifconfig再次确认一下。

STEP 3:联网测试

PING百度网站联网成功,如下图所示。

wKgZPGdpFwiADQqEAAQANY8SY24110.png


三、如何禁用RNDIS功能

1. 使用设备管理器禁用RNDIS功能

在设备管理器,网络适配器下找到Remote NDIS选项后,点击鼠标右键选择禁用设备即可。

wKgZPGdpFxaAQsw0AAKADrq_btY930.png


2. 使用代码禁用RNDIS功能

发送AT+RNDISCALL=0关闭RNDIS网卡,重启生效。

四、常见问题及解决办法

1. 如何排查Linux使用RNDIS无法上网的问题?

一般情况下,不是特别精简的Linux已经支持RNDIS 功能,如果插上合宙的4G 模组,但是不能上网的话,需要注意以下几点:

1)能否检测到RNDIS设备?

在命令行中输入dmesg,如此出现rndis_host 1-1:1.0 eth1这样的打印,则证明已经识别到了。如果没有,可能是硬件问题,也可能是所用Linux真的不支持rndis,需参考上文驱动配置,配置一下驱动。

此时查看ifconfig,如果没有出现rndis_host 1-1:1.0 eth1中的eth1,则发送ifconfig -a;此时发现有eth1但是没有IP地址,发送udhcpc -i eth1出现地址后,即可使用此网卡进行上网。

2)出现设备网卡,但是无法上网?

这可能是由于模组没有注册上网络,可以通过模组串口发送AT指令查询。

常用AT指令:

AT+CPIN? 查看卡是否在位;

AT+CEREG? 查看是否注册上网络;

AT+CESQ 查看信号值;

ATI 查看版本号。

2. RNDIS上网,获取实时流量、上行下行数据是哪个指令?

可以通过ifconfig获取。

3. Linux其它常见问题的解决方法:

01)无法识别VID与PID

一般模组对接的Linux协议是USB协议,设备插入后,系统会检测出设备的标识:PID VID;

其中VID是厂商识别码,PID是产品识别码。此处不需要装驱动也可以识别,所以,我们排除插入无法识别的时候,先通过命令行命令lsusb。

Air780ER模组的VID与PID,分别是19d1和0001。

wKgZO2dpFyyAWPzLAAFB5LMD-pA431.png


如上图所示 ,就是代表已经识别到Air780ER模组了。

查看模组是否已经识别,如果这里没有识别到模组,应该先排除硬件问题。

常见硬件问题:

USB是否走线过长;

USB是否VBUS没有连接;

模组是否没开机。

02)确认是否识别到网卡

如果按照驱动配置加入驱动,Linux发送dmesg出现以下的显示说明正常识别到网卡:

wKgZPGdpFzuALue5AARoRg5AhEU265.png


第8行:

1-2.1设备代表挂在usb bus1上2.1节点为EigenComm的USB 设备;

第13行:

1-2.1:1.0代表usb interface 0,被当做RNDIS使用(其实interface 1也是被RNDIS使用);

第16、17、19行:

1-2.1:1.2 、1-2.1:1.4 、1-2.1:1.6代表usb interface 2,4,6,分别枚举ttyACM0,ttyACM1,ttyACM2(这个不固定)。

第18行:

代表RNDIS被设置成eth10网卡,如下所示:

wKgZPGdpF0mAElMbAAMgc38PSOI664.png


03)在Linux下发AT的小工具

一些Linux开发板本身不带串口工具,出问题的时候没法通过AT指令来找出原因,这里提供一个小工具sendat.c,编译后运行即可。

最新工具下载详见:

https://docs.openluat.com/air780er/at/quick_start/usb/

wKgZO2dpF1aANMcXAADGjflQrW4444.png


今天的内容就分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7945

    浏览量

    264595
  • 网卡
    +关注

    关注

    4

    文章

    311

    浏览量

    27383
收藏 人收藏

    评论

    相关推荐

    快速入门!RNDIS网卡实现USB上网~

    本文将带你使用RNDIS的方式,搭配Linux主控终端,快速实现USB上网。   RNDIS是指Remote NDIS,基于
    的头像 发表于 12-24 17:02 301次阅读
    快速入门!<b class='flag-5'>RNDIS</b><b class='flag-5'>网卡</b><b class='flag-5'>实现</b><b class='flag-5'>USB</b><b class='flag-5'>上网</b>~

    如何提高信噪比的有效方法

    信噪比(SNR)是指信号与噪声的比例,是评价一个系统或设备性能的重要指标。提高信噪比可以通过多种方法实现,以下是一些有效方法: 一、增加信号强度 提高发射功率 :在信号发射端,通过增
    的头像 发表于 12-10 14:30 559次阅读

    网卡的演进和应用

    随着云计算和虚拟化技术的发展,网卡在功能和硬件结构方面也经历了四个阶段,即网卡、智能网卡、基于FPGA的DPU和DPU SoC网卡。本文将重点介绍这些不同类型的网络适配器和处理器,在硬
    的头像 发表于 10-24 16:45 330次阅读
    <b class='flag-5'>网卡</b>的演进和应用

    中国移动发布广域高吞吐100Gbps网卡

    100Gbps的物理带宽下,实现5000公里距离上70Gbps的有效数据吞吐,相比传统协议,其有效吞吐能力提升了5倍。
    的头像 发表于 10-12 15:11 440次阅读

    服务器网卡和普通网卡区别

    服务器网卡和普通网卡的区别主要体现在以下几个方面: 1. 性能差异 1.1 带宽 服务器网卡通常具有更高的带宽,以满足大量数据传输的需求。普通网卡的带宽通常较低,适用于家庭或小型办公室
    的头像 发表于 10-10 16:37 437次阅读

    RNDIS网卡应用看这篇!合宙Air780EP低功耗4G模组AT开发示例

    ​Air780EP是合宙的低功耗4G模组之一,支持全系列的AT指令以及LuatOS脚本二次开发。 本文应各位大佬邀请,特别讲解Air780EP模组AT开发RNDIS网卡应用示例。 本文同样适用于以下
    的头像 发表于 09-30 06:59 576次阅读
    <b class='flag-5'>RNDIS</b><b class='flag-5'>网卡</b>应用看这篇!合宙Air780EP低功耗4G模组AT开发示例

    千兆网卡的概述与应用

    在当今信息技术飞速发展的时代,网络基础设施的建设日益成为各行各业数字化转型的核心。互联网的迅猛发展和大数据时代的到来,促使对数据传输速率的需求不断提高。千兆网卡,作为实现高速网络连接的关键硬件设备
    的头像 发表于 08-27 10:57 428次阅读
    千兆<b class='flag-5'>网卡</b>的概述与应用

    Air724/Air780E/Air780EP模块Linux系统使用RNDIS-常见问题

    1.不能上网一般情况下,不是特别精简的linux已经支持rndis功能,如果插上合宙的4G模块,但是不能上网的话,需要注意以下几点。1、能否检测到rndis设备:A:在命令行中输入dm
    的头像 发表于 07-24 13:56 1119次阅读
    Air724/Air780E/Air780EP模块Linux系统使用<b class='flag-5'>RNDIS</b>-常见问题

    rt-thread如何解决添加虚拟网卡

    rt-thread在初始化一个(物理网卡只有一个)网卡之后,还想要再次添加一张虚拟网卡,调用netif_add没有效果,应该如何解决添加虚拟网卡
    发表于 07-10 08:18

    在RK3568核心板上实现USBNET模式网络共享

    本文将借助飞凌嵌入式OK3568-C开发板为大家介绍实现USBNET模式的方法,在这之前需要先知道什么是USB Gadget——USB Gadget是指所开发的电子设备以
    发表于 05-22 16:32

    家用无线路由器实现多设备同时上网的技巧

    互联网的普及和家庭网络设备的增多,如何实现多设备同时上网成为了一个热门话题。无线路由器作为家庭网络的核心设备,其性能和设置方式直接影响着多设备同时上网的效果。本文将为大家详细介绍家用无线路由器如何
    的头像 发表于 04-22 17:24 2346次阅读

    门禁物联网卡的使用与管理

    门禁物联网卡,作为现代门禁系统的重要组件,它使得门禁系统能够与网络相连,从而实现远程监控、数据记录、智能控制等多种功能。那么,门禁物联网卡究竟如何使用呢?本文将详细解析门禁物联网卡的使
    的头像 发表于 04-11 16:51 589次阅读
    门禁物联<b class='flag-5'>网卡</b>的使用与管理

    stm32l4如何下载到usb host的固件库?

    各位大神,请教下stm32l4如何下载到usb host的固件库,还想请教下stm32有没有开源的rndis和ecm代码
    发表于 04-11 07:19

    网卡揭秘:如何选择适合您需求的网卡

    网卡(Network Interface Card,NIC),也称网络适配器,是连接计算机与网络的硬件设备。在光通信系统中,网卡特指光纤网卡,它通过光纤接口与外部网络通信,传输数据。早期的网卡
    的头像 发表于 04-10 10:04 718次阅读
    光<b class='flag-5'>网卡</b>揭秘:如何选择适合您需求的<b class='flag-5'>网卡</b>

    WLAN显示不可上网的原因分析及解决方法

    WLAN显示不可上网的原因分析及解决方法  WLAN(无线局域网)是一种无线通信技术,可以使设备通过无线方式连接互联网。然而,有时我们可能会遇到WLAN显示不可上网的问题。 起初,要明确
    的头像 发表于 12-28 11:15 2644次阅读