32
How to Use GSM/3G/4G in Embedded Linux Systems

How to Use GSM/3G/4G in Embedded Linux Systems

  • Upload
    toradex

  • View
    260

  • Download
    7

Embed Size (px)

DESCRIPTION

The number of embedded devices that are connected to the internet is growing each day. Nowadays, they are installed majorly using a wireless connection. They need mobile network coverage to be connected to the internet. Read our blog which tells you about the various configurations to connect a device such as Colibri iMX6S with the Colibri Evaluation Board running Linux to the internet through the PPP (Point-to-Point Protocol) link. Read More: https://www.toradex.com/blog/how-to-use-gsm-3g-4g-in-embedded-linux-systems

Citation preview

Page 1: How to Use GSM/3G/4G in Embedded Linux Systems

How to Use GSM/3G/4G in Embedded Linux Systems

Page 2: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 2May’16

CHAIRMANIntroduction

Embedded devices connected to the internet are growing every

day. In many cases, these devices will be installed somewhere

without a wire or wireless network connection. A good way to

keep the devices connected to the internet in these situations is by

seeking mobile network coverage. Therefore, this blog post will present

the necessary configurations to connect a device running Linux to the

internet through the PPP (Point-to-Point Protocol) link.and optimize cost.

In simple terms, modularity means that a system can be built by

assembling many small units.

Page 3: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 3May’16

CHAIRMAN

Page 4: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 4May’16

CHAIRMAN

Hardware Specification

In this article we will be using the Colibri iMX6S with the base board called “

Colibri Evaluation Board”, both of which, are from Toradex. The Colibri

Evaluation Board is recommended specifically for project evaluation and

development. This product comes with a great number of interfaces like USB,

Ethernet, I2C, SPI, RS242, RS485, CAN and many others. We can also find

some multimedia interfaces like HDMI, LVDS, VGA and LCD already

supported on the Evaluation Board.

To follow this tutorial, you can use any USB or Serial modem to connect to

the internet.

Page 5: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 5May’16

CHAIRMAN

You just have to adapt the interface created at “/dev/” and check the “AT”

commands supported and implemented for your modem because each modem

has specific AT commands. In this case, we have used for this tutorial a Huawei

E173s 3G modem with a compatible SIM Card with data plan activated.

Kernel Preparing

To use the 3G USB modem through the PPP protocol, it is necessary to select

some features in the kernel configurations and then compile the Kernel. To

understand how to compile the kernel, I suggest following the link below.

http://developer.toradex.com/software-resources/arm-family/linux/board-su

pport-package/build-u-boot-and-linux-kernel-from-source-code

Page 6: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 6May’16

CHAIRMAN

Basically, the process to compile the Kernel can be summarized in the

following steps:

• Toolchain configuration

• Download the kernel from the correct repository and branch

• Configure the standard processor features

• Change the features for your application

• Compile

Page 7: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 7May’16

CHAIRMANWhen you are configuring the kernel features, go into menuconfig and be

sure to enable the following options:

CONFIG_PPP:PPP (Point to Point Protocol) is a newer and better SLIP. It serves the same purpose: sending Internet traffic over telephone (and other serial) lines. Ask your access provider if they support it, because otherwise you can't use it; most Internet access providers these days support PPP rather than SLIP. Device Drivers ---> [*] Network device support ---> PPP (point-to-point protocol) support PPP BSD-Compress compression PPP Deflate compression

Page 8: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 8May’16

CHAIRMAN [*] PPP filtering PPP MPPE compression (encryption) [*] PPP multilink support PPP over Ethernet PPP support for async serial ports PPP support for sync tty ports

CONFIG_USB_ACM:This driver supports USB modems and ISDN adapters which support theCommunication Device Class Abstract Control Model interface.Please read <file:Documentation/usb/acm.txt> for details. Device Drivers ---> [*] USB support ---> USB Modem (CDC ACM) support

Page 9: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 9May’16

CHAIRMANNecessary Software PackagesTo configure and connect the 3G modem to the internet, Linux uses, in addition to the kernel drivers, a software which manages the connection. This software is PPP. Usually Toradex images already have the PPP software installed by default.In case you do not have PPP installed, just add the following to your local.conf file for build environments based on Yocto/OpenEmbedded:

Testing Communication with the Modem

After all the necessary drivers and software are installed, it is possible to check if the module recognizes the 3G modem. The modem interface should appear in /dev. Basically the driver simulates a USB connection as many serial connections.

Page 10: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 10May’16

CHAIRMAN

Execute the following command to search for the interfaces /dev/ttyUSB

If the files ttyUSB0, ttyUSB1 … e ttyUSB2 were found, the modem was succesfully recognized by the system.

In case you want to conduct in-depth testing, it is possible to use a serial terminal like “minicom” to start communicating with the modem and check if it is working well. In my case the modem had a baudrate of 115200.

Page 11: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 11May’16

Configuring the PPP Files

After validating the communication with the modem, it is time to create the configuration files responsible for connecting to the internet.You should be able to find a folder inside /etc/ called ppp. Some files need to be created inside this folder.

First we create the PPP options file:

$ vi /etc/ppp/options_____________________________________authcrtsctslockhide-passwordmodemmru 296

Page 12: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 12May’16

CHAIRMAN

mtu 296lcp-echo-interval 30lcp-echo-failure 4noipxpersistasyncmap 0xa0000mru 1500refuse-chapipcp-max-failure 30logfile /home/root/ppp

In my case we use the PAP authentication file (may vary depending on Network Provider).

Page 13: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 13May’16

CHAIRMAN

The next step is to create one more file inside /etc/ppp/peer In this file we have configurations for our network provider and the path for the chat file:

Page 14: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 14May’16

CHAIRMAN

Now we create the file responsible for sending the AT commands to the modem so it can connect to the internet. This file varies according to modem models/brands.

Page 15: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 15May’16

CHAIRMANConnecting to the InternetNext we run ppp and analyze the log files. In the log files we can see when each AT command has been executed.

After running ppp, we open the log file:

In my case, I received the following output:

tail -f ppp.log Sent 3940 bytes, received 2843 bytes.restoring old default route to eth0 [192.168.10.1]restore default route ioctl(SIOCADDRT): Network is unreachable(101)

Page 16: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 16May’16

CHAIRMAN

Script /etc/ppp/ip-down started (pid 778)sent [LCP TermReq id=0x2 "User request"]rcvd [LCP TermAck id=0x2]Connection terminated.Script /etc/ppp/ip-down finished (pid 778), status = 0x0ATZOKAT+CGDCONT=1,"IP","zap.vivo.com.br"OKATDT*99#CONNECTScript chat -v -f /etc/ppp/chat/vivo-3g.chat finished (pid 795), status = 0x0Serial connection established.using channel 2Using interface ppp0Connect: ppp0 /dev/ttyACM0

Page 17: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 17May’16

CHAIRMAN

rcvd [LCP ConfReq id=0x1 ]sent [LCP ConfReq id=0x1 ]sent [LCP ConfAck id=0x1 ]rcvd [LCP ConfAck id=0x1 ]sent [LCP EchoReq id=0x0 magic=0xa068db01]sent [PAP AuthReq id=0x1 user="vivo" password=]rcvd [LCP EchoRep id=0x0 magic=0x96baf40f]rcvd [PAP AuthAck id=0x1 ""]PAP authentication succeededsent [CCP ConfReq id=0x1 ]sent [IPCP ConfReq id=0x1 ]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) receivedrcvd [IPCP ConfNak id=0x1 ]sent [IPCP ConfReq id=0x2 ]rcvd [IPCP ConfNak id=0x2 ]

Page 18: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 18May’16

CHAIRMAN

sent [IPCP ConfReq id=0x3 ]rcvd [IPCP ConfNak id=0x3 ]sent [IPCP ConfReq id=0x4 ]rcvd [IPCP ConfNak id=0x4 ]sent [IPCP ConfReq id=0x5 ]rcvd [IPCP ConfNak id=0x5 ]sent [IPCP ConfReq id=0x6 ]rcvd [IPCP ConfReq id=0x1]sent [IPCP ConfNak id=0x1 ]rcvd [IPCP ConfRej id=0x6 ]sent [IPCP ConfReq id=0x7 ]rcvd [IPCP ConfReq id=0x2 ]sent [IPCP ConfAck id=0x2 ]rcvd [IPCP ConfNak id=0x7 ]sent [IPCP ConfReq id=0x8 ]rcvd [IPCP ConfAck id=0x8 ]

Page 19: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 19May’16

CHAIRMAN

local IP address 179.133.47.109remote IP address 179.133.47.109primary DNS address 187.100.246.254secondary DNS address 187.100.246.251Script /etc/ppp/ip-up started (pid 805)Script /etc/ppp/ip-up finished (pid 805), status = 0x0

As seen in the log file, the chat script is executed step-by-step until we get the following:

You can validate the necessary command sequence to get connected using the serial terminal. Once it is validated, you can create your own customized chat script.

After checking for an IP address from the network provider, look for whether the ppp0 network interface is active:

Page 20: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 20May’16

CHAIRMAN

Page 21: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 21May’16

CHAIRMANTesting the ConnectionTo test if the connection has been successfully established, ping an external ip address:

To configure DNS, we can use the following command and then ping a URL, for example:

Page 22: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 22May’16

CHAIRMAN

Image 1: A running web browser using 3G connection.

Page 23: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 23May’16

CHAIRMAN

We can avoid the file being rewritten when system is restarted with the following command:

Now it is possible to connect using SSH from an external computer:

Configuring a Host Name for our IP Address

Another thing we can do is to associate our IP address to a host name. For this purpose, we used the NoIP services (www.noip.com). We then created a free account and added a Host. In our case, we chose toradex.noip.me.

Page 24: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 24May’16

CHAIRMAN

Image 2: NoIP Add Host page.

Page 25: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 25May’16

CHAIRMAN

After the Host name is created we can again connect to the module using SSH:

In our case, when the 3G modem connection is restarted, we always receive a new IP adress. If we try to reconnect to the module, we no longer have access. A workaround was to use a method called Dynamic DNS(Dynamic Domain Name System). NoIP also offers Dynamic DNS services. Further information for using this method can be found here. Basically we send an http request to NoIP with information like IP, hostname, username and password.

To accomplish this request, a small Python program was made. It gets executed when we start the 3G modem connection and follows the sequence as listed below:

Page 26: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 26May’16

CHAIRMAN

Image 3: Python Application Fluxogram.

Page 27: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 27May’16

CHAIRMAN

#!/usr/bin/python

import sysimport requestsimport netifaces as ni

user = 'xxxxxxx'pswd = 'xxxxxxx'

ni.ifaddresses('ppp0')ip = ni.ifaddresses('ppp0')[2][0]['addr']myhostname = 'toradex.noip.me'

payload = {'hostname' : myhostname , 'myip' : ip}r = requests.get("http://dynupdate.no-ip.com/nic/update", params=payload, auth=(user,pswd))

Page 28: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 28May’16

CHAIRMAN

print " " if "good" in r.text:print "Hello", user, "!"print "Your IP was successfully updated to:", ipprint myhostname, "is up and running!"if "nochg" in r.text:print "Hello", user, "!"print "Your IP", ip, "is still active, no change needed"if "nohost" in r.text:print "The given Host name", myhostname, "does not exist under specified account"print "Please review your Host name and try again"if "badauth" in r.text:print "Login and/or Username incorrect"print "Please correct your credentials and try again"if "911" in r.text:

Page 29: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 29May’16

CHAIRMAN

print "Sorry for the incovenience but we are experiencing some problems right now"print "Please try again later"print "noip.com says:", r.textprint " "After creating the Python program and making it executable with chmod +x, we can move it to /etc/ppp/ip-up.d/, which is a folder where scripts are executed after ppp connection or create a small script which calls our Python program.

Inside /etc/ppp/ we have the files that we created at the beginning of the article as well as other files like ip-down, ip-up, ppp_on_boot. Feel free to explore each one of these files.ip-up is the script which calls another script or program found inside ip-up.d folder.

In this case, we created a small script inside ip-up.d

Page 30: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 30May’16

CHAIRMAN

Note: the script is not terminated with .shNote that all the print commands inside our Python program can be seen in the log file:

If everything is configured correctly, when we receive a new IP from our network provider, the system automatically updates our host created at NoIP, so it will be possible to connect to the module despite the IP address being changed.

Based on all the information provided in this article, it is possible to achieve many other network activities. One of them is to share the 3G modem network with another computer via Ethernet. For this we configured a basic LAN network between two machines and ran the following command:

Page 31: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 31May’16

CHAIRMANApart from internet sharing, it is also possible to conduct port forwarding and many other network features.

Final ThoughtsAs seen in this article, a Linux system has many network functionalities. We just need to properly configure them and have access to ppp0 network. Another important point, is that regardless of the used interface, the programming method remains the same. The task of choosing the interface to use is made automatically by Linux depending on the routes. For those who require network connection in their projects and also need system flexibility, the use of Linux in embedded systems is the way to go.

Referenceshttp://metodiew.com/huawei-e173s-and-ubuntu/http://developer.toradex.com/product-selector/colibri-imx6http://developer.toradex.com/product-selector/colibri-evaluation-board

Page 32: How to Use GSM/3G/4G in Embedded Linux Systems

|www.toradex.com Toradex® is a registered trademark of Montadex GmbH 32May’16

Thank you!