跳转至

Air780ER USB上网应用快速入门

本章将带你使用RNDIS或PPP拨号的方式,搭配Windows或Linux主控终端,快速实现USB上网。

一、RNDIS应用

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

Window系统

window系统支持RNDIS直接用usb连接就可以使用,模块会虚拟一个网卡。

img

Linux系统

linux驱动配置

虚拟串口

1.介绍

Air780ER使用CDC - ACM 驱动,大部分linux 系统默认就支持,插入就可以使用。

img

测试AT指令可以用minicom等工具,运行命令sudo minicom -D /dev/ttyACM0,测试结果如下:

img

如果不支持使用如下配置:

2.配置内核

img

3.确定端口

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

img

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

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 拨号

4.注意事项

a.有些linux 设备存在模块重启后,操作文件会发生移位,比如本来是/dev/ttyACM0 是可以进行AT 通讯的,后来有不行,最靠谱的方法是通过驱动节点来找到操作文件usb_find.c

可以用FindUsbDevice(AIRM2M_USB_DEVICE_AT_INTERFACE_ID),来寻找真正的需要的端口

相关文章见 https://doc.openluat.com/article/2080/0

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

RNDIS

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

img

注意: 每个设备的ethx可能不一样,插入Air780ER模块后增加的网卡即为RNDIS网卡,地址为192.168.10.2

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

img

img

PPP

Step 1:

cd

Step 2:

make menuconfig

Step 3:Enable CONFIG_USB_SERIAL_OPTION

[*] Device Drivers →

[*] USB Support →

[*] USB Serial Converter support →

[*] USB driver for GSM and CDMA modems

img

Step 4:Configure Kernel to Support PPP

[*] Device Drivers →

[*] Network device support →

[*] PPP (point-to-point protocol) support

img

RNDIS功能测试

· step 1:禁用本地网卡

sudo ifconfig eth0 down

· step 2:使能模块网卡

sudo ifconfig eth10 up

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

· step 3:联网测试

img

如何禁用RNDIS功能

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

img

代码上如何禁用RNDIS功能?

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

常见问题

如何排查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 查看版本号

RNDIS 上网,获取时时流量,下行下行数据是哪个指令

可以通过ifconfig获取。

linux 常见问题解决方法

1. 无法识别vid与pid

一般模块对接的linux 协议是USB 协议,设备插入后,系统会检测出设备的标识:PID VID(其中 VID 是厂商识别码 PID 是产品识别码),此处不需要装驱动也可以识别,所以,我们排除插入无法识别的时候,先通过命令行命令lsusb

我们的 780ER vid与pid,分别是19d1和0001

img

如上图所示 ,就是代表已经识别到780ER模块了

查看模块是否已经识别,如这里没有识别到我们的模块,应该先排除硬件问题,

常见硬件问题

a.USB 是否走线过长

b.USB 是否VBUS 没有连接

c.模块没开机

2. 确认是否识别到网卡

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

img

第8行,1-2.1 设备代表 挂在usb bus1 上 2.1 节点为 EigenComm 的USB 设备

第13行代表780EP 的 1-2.1:1.0 代表usb interface 0,被当做rndis 使用(其实interface 1 也是被rnids 使用)

第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 网卡,如下所示:

img

3. 在linux下发AT的小工具

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

img

二、PPP拨号

windows下PPP拨号

配置标准调制解调器

(1) 打开控制面板—>电话和调制解调器—>调制解调器—>添加—>选择标准 33600bps 调制解调器—>选 择COM口。

img

img

img

img

(2) 选择创建的调制解调器—>属性—>高级—>更改默认首选项—>波特率根据实际使用修改。

img

如果步骤(1)中添加的端口为 USB枚举出的AT口时,则端口速率可以为任意值;如果步骤(1)中 添加的端口为UART AT 口时,则端口速率需设置为模组的 UART 口速率。

设置拨号连接

打开网络和共享中心—>设置新的连接或网络—>设置拨号连接—>创建拨号连接里,拨号号码为 99**1#,勾选“允许其他人使用此连接”,增加连接名称(例如 PPP0)。

img

img

img

验证拨号结果

点击连接—>连接成功—>cmd 窗口—>ping –n 5 www.baidu.com,ping外网地址收到正确回复信 息,至此PPP拨号上网成功。

linux下PPP拨号

Air780ER模块的vid与pid,分别是19d1和0001。

详细驱动配置,请见:上面驱动配置章节

1.安装 PPP 拨号软件

在Linux系统的命令模式下,输入以下命令安装 PPP 拨号软件:

$ sudo apt install ppp

2.创建拨号脚本文件

*/etc/ppp/peers/air-ppp*

(请修改示例中设备名/dev/ttyACM2为实际设备名)

debug

nodetach

dump

/dev/ttyACM2

115200

nolock

nocrtscts

modem

hide-password

novj

novjccomp

ipcp-accept-local

ipcp-accept-remote

noipdefault

usepeerdns

noccp

connect 'chat -s -v -f /etc/ppp/peers/air-chat-connect'

disconnect 'chat -s -v -f /etc/ppp/peers/air-chat-disconnect'

*/etc/ppp/peers/air-chat-connect*

ABORT "NO CARRIER"

ABORT "NO DIALTONE"

ABORT "NO ANSWER"

ABORT "BUSY"

ABORT "Username/Password Incorrect""" AT

OK-+++-OK ATH0

OK AT+CREG?

OK AT+CPIN?

OK AT+CESQ

OK ATD99#*

CONNECT ""

*/etc/ppp/peers/air-chat-disconnect*

ABORT "ERROR"

ABORT "NO DIALTONE"

SAY "\nSending break to the modem\n""" "\K""" "+++ATH0"

SAY "\nGood bay\n"

3.创建好以上三个文件后就可以通过pppd拨号了

cd /etc/ppp/peers

pppd call air-ppp

4.拨号成功后,需要为新建的ppp0网卡配置route

route add default ppp0

5.测试一下,我们已经可以正常访问网络了!

img