尝试了网上其他人的方法,没有成功,最终自己看文档搞定了,希望写下来方便其他人,节省时间。
因为是自己和同事一起移植内核所以选择了最新的稳定版Linux 4.5.3,内核中已经支持,只需要选择对应的配置选项即可。
然后插上就可以看到设备了:
Bus 002 Device 011: ID 1e0e:9001 Qualcomm / Option
同时生成了多个ttyUSB设备:
$ ls /dev/ttyUSB* -l
crw-rw---- 1 root dialout 188, 0 May 21 22:59 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 May 22 11:48 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 May 22 11:48 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3 May 22 11:48 /dev/ttyUSB3
crw-rw---- 1 root dialout 188, 4 May 22 11:48 /dev/ttyUSB4
crw-rw---- 1 root dialout 188, 5 May 22 11:48 /dev/ttyUSB5
编译PPPD,并安装到ARM Linux下面,关于如何编译PPPD可以查看我的Yocto Tips系列专栏,使用Build System快速解决。
PPPD的配置其实就是告诉PPPD如何去发AT命令与4G模块交互,然后根据4G模块的回应,虚拟出一个网络设备,然后就可以按照访问普通设备网卡设备一样使用了。
PPPD去操控硬件模块的第一步是让4G模块与GSM运营商Connection
这一步的配置内容如下:
#Chat script for China Mobile, used SIMCOM sim7100 LTE module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' \rAT
OK at+cpin?
OK at+csq
OK at+cops?
OK at+cgatt?
OK AT+cgdcont=1,"IP","CMNET"
OK ATD*99***1#
CONNECT
这部分完成的是基本的设置,让PPPD知道当4G模块返回哪些string value的时候abort
例如”OK at+cpin?“这一句的意思是,如果上一句AT命令发送出去后得到的值是OK,那么我们继续发送"at+cpin?"这个字符串,如果TIMEOUT(40S)了,那么就退出。
如果最后收到了CONNECT,那么就表示连接完成。
将这个配置命名为gprs-connect-chat,然后放置到/etc/ppp下面即可。
我们前面有了该发送哪些AT命令到4G模块,但是还需要告诉PPPD使用哪个端口去发送,使用上面波特率等信息,即硬件接口,这个我们如下配置:
/dev/ttyUSB2
115200
crtscts
modem
debug
nodetach
usepeerdns
noipdefault
defaultroute
user "cmnet"
0.0.0.0:0.0.0.0
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
我们将这个文件命名为gprsdial放在/etc/ppp中即可。