...
The functionality described below is available from the rootfs.uImage
project provided by Emcraft for NXP i.MX RT1170 EVK. The generic Linux kernel device driver driver for the USB Modems (CONFIG_USB_ACM
) is used in this configuration. Emcraft tested the functionality documented below using the MTD-H5-2.0 HSPA+ USB Cellular Modem from MultiTech Systems.
1. Cellular Network Configuration
For starting and terminating the PPP connection, the standard scripts from the PPP Daemon package are provided in the rootfs
projects. The scripts as follows:
...
Edit the
etc/ppp/chatscripts/apn
file inprojects/rootfs
, and change the APN settings appropriately.Edit the
etc/ppp/peers/provider
file inprojects/rootfs
, and change the account information appropriately.Build project/rootfs (Building Linux ), and install it to the target (Installing Linux Images to SD Card).
2. TCP/IP Connectivity Over PPP
Plug-in a USB GSM Modem device to the USB1 or USB2 port of NXP i.MX RT1170 EVK. The system will print the appropriate messages to console about the hardware detected:
Code Block usb 1-1: not running at top speed; connect to a high speed hub cdc_acm 1-1:1.0: ttyACM0: USB ACM device cdc_acm 1-1:1.2: ttyACM1: USB ACM device cdc_acm 1-1:1.4: ttyACM2: USB ACM device cdc_acm 1-1:1.6: ttyACM3: USB ACM device cdc_acm 1-1:1.8: ttyACM4: USB ACM device cdc_acm 1-1:1.10: ttyACM5: USB ACM device
Shutdown the eth0 network interface:
Code Block / # ifconfig eth0 down
Initiate connection with the cellular network:
Code Block / # pon / # pppd options in effect: debug # (from /etc/ppp/options-mobile) holdoff 10 # (from /etc/ppp/options-mobile) persist # (from /etc/ppp/options-mobile) logfile /dev/console # (from /etc/ppp/options-mobile) maxfail 0 # (from /etc/ppp/options-mobile) dump # (from /etc/ppp/options-mobile) noauth # (from /etc/ppp/options-mobile) user gdata # (from /etc/ppp/peers/provider) password ?????? # (from /etc/ppp/peers/provider) /dev/ttyACM0 # (from /etc/ppp/options-mobile) 115200 # (from /etc/ppp/options-mobile) lock # (from /etc/ppp/options-mobile) connect /usr/sbin/chat -v -t15 -f /etc/ppp/chatscripts/mobile-modem.chat # (from /etc/ppp/peers/provider) crtscts # (from /etc/ppp/options-mobile) modem # (from /etc/ppp/options-mobile) passive # (from /etc/ppp/options-mobile) hide-password # (from /etc/ppp/options-mobile) novj # (from /etc/ppp/options-mobile) noipdefault # (from /etc/ppp/options-mobile) defaultroute # (from /etc/ppp/options-mobile) usepeerdns # (from /etc/ppp/options-mobile) Serial connection established. using channel 1 Using interface ppp0 Connect: ppp0 <--> /dev/ttyACM0 rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth pap> <magic 0x96a24aa4> <pcomp> <accomp>] sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x7f6a34ec> <pcomp> <accomp>] sent [LCP ConfAck id=0x1 <asyncmap 0x0> <auth pap> <magic 0x96a24aa4> <pcomp> <accomp>] rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x7f6a34ec> <pcomp> <accomp>] sent [PAP AuthReq id=0x1 user="gdata" password=<hidden>] rcvd [PAP AuthAck id=0x1 ""] PAP authentication succeeded sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>] sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>] rcvd [LCP ProtRej id=0x2 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15] Protocol-Reject for 'Compression Control Protocol' (0x80fd) received sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>] sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>] sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns10.0.0.0> <ms-dns2 0.0.0.0>] rcvd [IPCP ConfReq id=0x1] sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>] rcvd [IPCP ConfNak id=0x1 <addr 10.145.22.97> <ms-dns1 10.152.222.141> <ms-dns2 10.152.222.132>] sent [IPCP ConfReq id=0x2 <addr 10.145.22.97> <ms-dns1 10.152.222.141> <ms-dns2 10.152.222.132>] rcvd [IPCP ConfReq id=0x2 <addr 10.145.22.97>] sent [IPCP ConfAck id=0x2 <addr 10.145.22.97>] rcvd [IPCP ConfAck id=0x2 <addr 10.145.22.97> <ms-dns1 10.152.222.141> <ms-dns2 10.152.222.132>] ioctl(SIOCDELRT): No such process(3) local IP address 10.145.22.97 remote IP address 10.145.22.97 primary DNS address 10.152.222.141 secondary DNS address 10.152.222.132 Script /etc/ppp/ip-up started (pid 101) Script /etc/ppp/ip-up finished (pid 101), status = 0x0
Verify that the connection is established (depending on the cellular network, the link may take up to 10 seconds to get established):
Code Block / # ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:10.146.247.124 P-t-P:10.146.247.124 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:58 (58.0 B) TX bytes:101 (101.0 B)
Check that the TCP/IP connection to the Internet over PPP has been configured:
Code Block / # netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0 10.146.247.124 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
Ping a remote host to check that network is set up correctly:
Code Block / # ping http://google.com -c 3 PING http://google.com (173.194.222.138): 56 data bytes 64 bytes from 173.194.222.138: seq=0 ttl=102 time=509.361 ms 64 bytes from 173.194.222.138: seq=1 ttl=102 time=443.468 ms 64 bytes from 173.194.222.138: seq=2 ttl=102 time=453.504 ms --- http://google.com ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 443.468/468.777/509.361 ms
Download a file from a remote host:
Code Block / # wget ftp://ftp.gnu.org/README Connecting to http://ftp.gnu.org (209.51.188.20:21) README 100% |*******************************| 2748 0:00:00 ETA
Close the TCP/IP connection:
Code Block / # poff Terminating on signal 15 Connect time 2.3 minutes. Sent 2229 bytes, received 8071 bytes. / # Script /etc/ppp/ip-down started (pid 116) sent [LCP TermReq id=0x2 "User request"] rcvd [LCP TermAck id=0x2] Connection terminated. Script /etc/ppp/ip-down finished (pid 116), status = 0x0