手把手教-Arm Linux 使用Air780 4G模块USB上网 - RNDIS_合宙air780e linux使用
一、RNDIS介绍
RNDIS(Remote Network Driver Interface Specification)是一种由微软开发的通信协议规范,主要用于通过USB(通用串行总线)实现网络连接。它允许USB设备(如手机、嵌入式设备等)模拟成一个虚拟的网络适配器,从而让主机(如电脑)可以通过USB接口与设备进行网络通信,就像使用普通的以太网或Wi-Fi一样。
1.1 核心功能与用途
-
USB网络共享
例如,将手机通过USB连接到电脑时,开启“USB网络共享”功能后,手机会通过RNDIS协议模拟成一个网络接口,使电脑通过手机的网络(如移动数据)上网。 -
设备调试与通信
在嵌入式开发中(如调试树莓派、Android设备等),RNDIS可用于通过USB传输网络数据,方便开发者远程访问设备或传输文件。 -
虚拟机连接
某些虚拟机软件(如VirtualBox)支持通过RNDIS实现宿主机与虚拟机之间的网络通信。
1.2 技术特点
-
跨平台支持
RNDIS最初由微软定义,但后续也被Linux等系统通过开源驱动(如rndis_host
模块)支持。在Windows系统中通常无需额外驱动。 -
基于USB的虚拟以太网
它在USB协议上封装了类似以太网的数据包(Ethernet over USB),对上层应用表现为普通网卡。 -
依赖USB CDC(Communication Device Class)
RNDIS属于USB CDC的一个子类(Subclass),因此需要设备支持CDC协议。
1.3 配置与使用
- Windows:通常自动识别RNDIS设备(如安卓手机),并加载驱动。
- Linux:需安装
rndis_host
模块,部分系统可能需要手动启用。 - 开发者角度:需在设备固件中实现RNDIS协议栈(如使用USB控制器支持CDC和RNDIS描述符)。
1.4 与CDC-ECM的区别
RNDIS常与另一类似协议CDC-ECM(Ethernet Control Model)对比:
- RNDIS:微软主导,需特定驱动,但在Windows中兼容性更好。
- CDC-ECM:更通用的标准,Linux原生支持,但某些旧版Windows可能需要额外驱动。
二、硬件
4G模块:合宙Air780E
主控:NUC980
三、内核驱动配置
USB驱动未添加前,查看原开发板USB信息
3.1 驱动修改
Add VID add PID
Air780E在linux下的驱动修改,需要添加对应的Vendor ID和Product ID。
打开Linux内核下的drivers/usb/serial/option.c 文件,添加如下信息:
static const struct usb_device_id option_ids[] = {...{ USB_DEVICE(0x1782, 0x4e00) },//Air720U{ USB_DEVICE(0x19d1, 0x0001) },//Air780E....}
static int option_probe(struct usb_serial *serial,const struct usb_device_id *id){ ....if (dev_desc->idVendor == cpu_to_le16(0x1782) && dev_desc->idProduct == cpu_to_le16(0x4e00) && iface_desc->bInterfaceNumber <= 1){return -ENODEV;}if (dev_desc->idVendor == cpu_to_le16(0x19d1) && dev_desc->idProduct == cpu_to_le16(0x0001) && iface_desc->bInterfaceNumber <= 1){return -ENODEV;} ....}
保存即可。
内核配置
make menuconfig
保存,退出,编译
makemake uImage
将生成的镜像下载到开发板,断电,重启设备。
四、测试
查看所有网卡设备
ifconfig -a
启动过程的显示信息,提示是网卡 eth2
上网前,需通过 DHCP 协议自动获取 IP 地址及相关网络配置,否则并不能上网。指令如下:
udhcpc -i eth2
参考:
https://blog.csdn.net/Chihiro_S/article/details/108736542
Air780ER USB上网应用快速入门
LINUX下USB驱动加载
CMUX
PPP应用
Air720U在linux下的驱动修改
Air720模块Linux USB驱动以及PPP拨号说明
Air720模块Linux USB驱动以及PPP拨号说明