Welcome 微信登录

首页 / 操作系统 / Linux / 在ARM Linux上实现4G模块PPP拨号上网

在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从一无所知到开发完成花了一周多。最后看到ARM板ping通www.linuxidc.com时甚是高兴,现将此过程整理如下。当然,除此之外要做的工作还有很多。4G模块使用的SIMTECH 的SIM7100C,SIM7100C带有UART和USB接口,在考虑速度上我们使用USB接口和ARM进行通信。所以向linux内核添加3G模块的驱动(USB转串口驱动)和PPP协议的支持,然后编译内核并下载到开发板。1. 编译内核 大容量存储驱动> Device Drivers > USB supportmake ARCH=arm menuconfig配置USB驱动:<*>   USB Mass Storage support[*]     USB Mass Storage verbose debug<*>     Realtek Card Reader support[*]       Realtek Card Reader autosuspend support<*>     Datafab Compact Flash Reader support◇ USB驱动> Device Drivers > USB support<*> Inventra Highspeed Dual Role Controller (TI, ADI, ...)               MUSB Mode Selection (Dual Role mode)  --->                 <*>   Platform Glue Layer (TI DSPS platforms)  --->                 MUSB DMA mode (Disable DMA (always use PIO))  ---><*> USB Serial Converter support  --->[*]      USBGeneric Serial Driver <*>     USBdriver for GSM and CDMA modems◇ PPP驱动> Device Drivers > Network device support <*> PPP (point-to-point protocol) support             <*>   PPP BSD-Compress compression                             <*>   PPP Deflate compression                                 [*]   PPP filtering                                                <*>   PPP MPPE compression (encryption)                               [*]   PPP multilink support                     <*>   PPP over Ethernet                   <*>   PPP support for async serial ports        <*>   PPP support for sync tty ports      <*> SLIP (serial line) support      [*] CSLIP compressed headers2. 交叉编译libusb下载usblib库和libusb-compathttps://sourceforge.net/projects/libusb/files/root@linuxidc:/opt/usb-tools/libusb-1.0.20# mkdir installconfigure: error: "udev support requested but libudev not installed"(解决:添加--disable-udev)root@linuxidc:/opt/usb-tools/libusb-1.0.20# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-1.0.20/install --disable-udevroot@linuxidc:/opt/usb-tools/libusb-1.0.20# makeroot@linuxidc:/opt/usb-tools/libusb-1.0.20# make install添加环境变量 http://www.linuxidc.com/Linux/2011-03/33432.htm(PKG_CONFIG_PATH设置)root@linuxidc:/opt/usb-tools/libusb-1.0.20# export PKG_CONFIG_PATH=/opt/usb-tools/libusb-1.0.20/install/lib/pkgconfig:$PKG_CONFIG_PATHroot@linuxidc:/opt/usb-tools/libusb-1.0.20# echo $PKG_CONFIG_PATH编译libusb-compat:root@linuxidc:/opt/usb-tools/libusb-compat-0.1.5# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/usb-tools/libusb-compat-0.1.5/installroot@linuxidc:/opt/usb-tools/libusb-compat-0.1.5# makeroot@linuxidc:/opt/usb-tools/libusb-compat-0.1.5# make install将生成的libusb-1.0.20和libusb-compat-0.1.5下的库文件复制到ARM板上的linux的/lib下面即可。3. 交叉编译4G模块驱动交叉编译GobiSerial.c(ARCH=arm CC=arm-none-linux-gnueabi-gcc),得到GobiSerial.ko。复制到ARM板安装驱动#insmod GobiSerial.ko4. 查看驱动运行状况插上4G模块,虚拟出6个ttyUSB,它们分别是:root@am335x-evm:/# ls /dev/ttyUSB*/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3  /dev/ttyUSB4  /dev/ttyUSB51) /dev/ttyUSB0-diag port for output developing messages2) /dev/ttyUSB1- NMEA port for GPS NMEA data output3) /dev/ttyUSB2-AT port for AT commands4) /dev/ttyUSB3-Modem port for ppp-dial5) /dev/ttyUSB4-audio port6) /dev/ttyUSB5-Virtual Net card插上U盘,提示设备运行:[75097.986054] usb 2-1: New USB device found, idVendor=058f, idProduct=6387[75097.993167] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3[75098.000689] usb 2-1: Product: Mass Storage[75098.004995] usb 2-1: Manufacturer: Generic[75098.009342] usb 2-1: SerialNumber: AC3DF2EE[75098.024341] usb-storage 2-1:1.0: USB Mass Storage device detected[75098.049922] scsi0 : usb-storage 2-1:1.0lsusb命令查看结果:Bus 001 Device 002: ID 1e0e:9001Bus 002 Device 002: ID 058f:6387Bus 001 Device 001: ID 1d6b:0002Bus 002 Device 001: ID 1d6b:00025. 交叉编译PPP参见: http://www.linuxidc.com/Linux/2016-03/129580.htm6. 拨号脚本设置root@am335x-evm:/etc/ppp# vi gprs-connect-chat#Chat script for China Mobile, used SIMCOM sim4100 TD module.TIMEOUT 15ABORT "DELAYED"ABORT "BUSY"ABORT "ERROR"ABORT "NO DIALTONE"ABORT "NO CARRIER"TIMEOUT 40"" ATOK ATS0=0OK ATE0V1OK AT+CGDCONT=1,"IP","CMNET"OK AT+CGEQREQ=1,2,128,384,,,0,,,,,,OK ATDT*99*1#CONNECTroot@am335x-evm:/etc/ppp/peers# vi gprsdial#/etc/ppp/peers/gprsdial# This is pppd script for China Mobile, used SIMCOM SIM7100 Module# Usage: root>pppd call gprs#Interface should be used is the interface which connects physics interface of S/dev/ttyUSB3115200crtsctsmodem#noauthdebugnodetach#hide-passwordusepeerdnsnoipdefaultdefaultrouteuser "cmnet"0.0.0.0:0.0.0.0#ipcp-accept-local#ipcp-accept-remote#lcp-echo-failure 12#lcp-echo-interval 3#noccp#novj#novjccomp#persistconnect "/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat"#disconnect "/bin/chat -v -f /etc/ppp/gprs-disconnect-chat"6. 拨号root@am335x-evm: pppd call gprsdial6. 测试拨号之后进行测试,发现可以ping通ip但是无法ping通域名。这需要设置/etc/resolv.conf来添加DNS解析服务器的地址文件/etc/resolv.conf配置DNS客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件: domain test.comsearch www.test.com test.comnameserver 202.96.128.86nameserver 202.96.128.166nameserver #定义DNS服务器的IP地址domain     #定义本地域名search     #定义域名的搜索列表sortlist   #对返回的域名进行排序主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。我这里只设置了两个DNS,如下:ameserver 114.114.114.114nameserver 8.8.8.8参考文档:http://www.linuxidc.com/Linux/2016-03/129579.htmhttp://www.linuxidc.com/Linux/2011-03/33430p2.htmhttp://www.linuxidc.com/Linux/2011-03/33430.htm本文永久更新链接地址