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连接就可以使用,模块会虚拟一个网卡。
Linux系统
linux驱动配置
虚拟串口
1.介绍
Air780ER使用CDC - ACM 驱动,大部分linux 系统默认就支持,插入就可以使用。
测试AT指令可以用minicom等工具,运行命令sudo minicom -D /dev/ttyACM0,测试结果如下:
如果不支持使用如下配置:
2.配置内核
3.确定端口
交叉编译后,板上运行,demesg 打印如下
说明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设备端看到新的网卡。
注意: 每个设备的ethx可能不一样,插入Air780ER模块后增加的网卡即为RNDIS网卡,地址为192.168.10.2。
如果没有RNDIS驱动的,按照下图下图配置
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
Step 4:Configure Kernel to Support PPP
[*] Device Drivers →
[*] Network device support →
[*] PPP (point-to-point protocol) support
RNDIS功能测试
· step 1:禁用本地网卡
sudo ifconfig eth0 down
· step 2:使能模块网卡
sudo ifconfig eth10 up
使能之后最好再通过ifconfig再次确认一下
· step 3:联网测试
如何禁用RNDIS功能
在设备管理器,网络适配器下找到Remote NDIS 选项后点击鼠标右键选择禁用设备即可。
代码上如何禁用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
如上图所示 ,就是代表已经识别到780ER模块了
查看模块是否已经识别,如这里没有识别到我们的模块,应该先排除硬件问题,
常见硬件问题
a.USB 是否走线过长
b.USB 是否VBUS 没有连接
c.模块没开机
2. 确认是否识别到网卡
如果按照 驱动配置加入驱动,linux 发送 dmesg 出现以下的显示说明正常识别到网卡:
第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 网卡,如下所示:
3. 在linux下发AT的小工具
android和一些linux开发板本身不带串口工具,出问题的时候没法通过AT指令来找出原因,这里提供一个小工具sendat.c,编译后运行
二、PPP拨号
windows下PPP拨号
配置标准调制解调器
(1) 打开控制面板—>电话和调制解调器—>调制解调器—>添加—>选择标准 33600bps 调制解调器—>选 择COM口。
(2) 选择创建的调制解调器—>属性—>高级—>更改默认首选项—>波特率根据实际使用修改。
如果步骤(1)中添加的端口为 USB枚举出的AT口时,则端口速率可以为任意值;如果步骤(1)中 添加的端口为UART AT 口时,则端口速率需设置为模组的 UART 口速率。
设置拨号连接
打开网络和共享中心—>设置新的连接或网络—>设置拨号连接—>创建拨号连接里,拨号号码为 99**1#,勾选“允许其他人使用此连接”,增加连接名称(例如 PPP0)。
验证拨号结果
点击连接—>连接成功—>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.测试一下,我们已经可以正常访问网络了!