Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Connect a GPRS modem to Intel® Edison

15 Jul 2015 1  
This article tries to explain how to establish a data network (using ppp) by connecting a GPRS shield to the Intel® Edison board. An active T-Mobile SIM is being used in the shield.

This article is in the Product Showcase section for our sponsors at CodeProject. These articles are intended to provide you with information on products and services that we consider useful and of value to developers.

Get access to the new Intel® IoT Developer Kit, a complete hardware and software solution that allows developers to create exciting new solutions with the Intel® Galileo and Intel® Edison boards. Visit the Intel® Developer Zone for IoT.

This article tries to explain how to establish a data network (using ppp) by connecting a GPRS shield to the Intel® Edison board. An active T-Mobile SIM is being used in the shield.

Enable PPP in Kernel

Enable PPP in the Kernel and install ppp related packages.

Download the source files from http://downloadmirror.intel.com/24698/eng/edison-src-ww05-15.tgz

Before compiling the source files, it is recommended to increase root file system size.

Reference: https://communities.intel.com/docs/DOC-23449

Depending on the system configuration build takes 2-6 hours to finish.

** Ubuntu 12.04 has been used

Error while compilation:

 Install libtool using sudo apt-get install libtool.
  1. ERROR: Task 535 (/home/inteldell/edison-src/device-software/meta-edison-distro/recipes-connectivity/libwebsockets/libwebsockets_1.23.bb, do_compile) failed with exit code '1'

  2. NOTE: Tasks Summary: Attempted 1855 tasks of which 18 didn't need to be rerun and 1 failed.

Fix: Replace the line 22 in the recipe file at

edison-src/device-software/meta-edison-distro/recipes-connectivity/libwebsockets/libwebsockets_1.23.bb

Original: export OPENSSL_CONF=${TMPDIR}/sysroots/x86_64-linux/usr/lib/ssl/openssl.cnf

Replace: export OPENSSL_CONF=${TMPDIR}/sysroots/i686-linux/usr/lib/ssl/openssl.cnf

Configuring PPP in the Kernel.

# bitbake virtual/kernel –c menuconfig




(First I enabled only PPP support for async serial ports, resulted in another error – enable PPP filtering. So ended up enabling all.)

Now install PPP packages from http://repo.opkg.net/edison/repo/core2-32/

Using pppd, create data connection using GPRS shield.

After the successful installation you should see the following file structure.

In order to communicate with modem, the hardware serial port on GPIOs 0 and 1 has to be enabled.

Enable Serial Port

Enable the serial port on pins 0 and 1 by executing the following commands on terminal.

echo 214 > /sys/class/gpio/export 2>&1
echo high > /sys/class/gpio/gpio214/direction
echo low > /sys/class/gpio/gpio214/direction
echo 131 > /sys/class/gpio/export 2>&1
echo mode1 > /sys/kernel/debug/gpio_debug/gpio131/current_pinmux
echo 249 > /sys/class/gpio/export 2>&1
echo high > /sys/class/gpio/gpio249/direction
echo 1 > /sys/class/gpio/gpio249/value
echo 217 > /sys/class/gpio/export 2>&1
echo high > /sys/class/gpio/gpio217/direction
echo 1 > /sys/class/gpio/gpio217/value
echo out > /sys/class/gpio/gpio131/direction
echo 0 > /sys/class/gpio/gpio131/value
echo 130 > /sys/class/gpio/export 2>&1
echo mode1 > /sys/kernel/debug/gpio_debug/gpio130/current_pinmux
echo 248 > /sys/class/gpio/export 2>&1
echo low > /sys/class/gpio/gpio248/direction
echo 0 > /sys/class/gpio/gpio248/value
echo 216 > /sys/class/gpio/export 2>&1
echo in > /sys/class/gpio/gpio216/direction
echo in > /sys/class/gpio/gpio130/direction
echo high > /sys/class/gpio/gpio214/direction

Test the GPRS Shield

Test the status of the GPRS modem by send AT commands using the microcom.

# microcom /dev/ttyMFD1 –s 115200
AT
OK
AT+CMGF=1                      Set SMS text format
OK                                         
AT+CMGS="+1503*****79"       Send SMS message
> Hello World
+CMGS: 14
OK

The same can be implemented using standard serial port programming or by using mraa library.

Enable GPRS

AT+CGATT=1                                     attach to GPRS network (normally includes in atd*99#)
AT+CGATT?                                        should return +CGATT: 1
AT+CGDCONT=1,"IP","epc.tmobile.com"             context definition (for T-Mobile)
AT+CGACT=1                                     PDP context activation
AT+CGDATA="PPP",1                    enter data mode

Connect to internet using GPRS

Create a script that defines PDP (Packet Data Protocol) context and says connected. Please find the attached zip file for scripts.

Now establish the connection using command

# pppd call gprs &




You can check the log file using

#cat /var/log/ppp/log

Press CTRL-C to close the connection at any stage!
defining PDP context...
AT
OK
ATH
OK
ATE1
OK
AT+CGDCONT=1,"IP","epc.tmobile.com","",0,0
OK
waiting for connect...

ATD*99#
CONNECT
Connected.

Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyMFD1
not replacing default route to wlan0 [192.168.1.1]
local  IP address 100.198.64.64
remote IP address 192.200.1.21
primary   DNS address 10.177.0.34
secondary DNS address 10.168.185.116

References

https://communities.intel.com/docs/DOC-23449

http://repo.opkg.net/edison/repo/core2-32/

https://communities.intel.com/thread/54236

https://communities.intel.com/thread/55790

http://downloadmirror.intel.com/24698/eng/edison-src-ww05-15.tgz

http://www.att.com/esupport/article.jsp?sid=36059&cv=820#fbid=AcRge45P9Za

http://wiki.openmoko.org/wiki/T-Mobile_pppd_scripts

http://www.tldp.org/HOWTO/PPP-HOWTO/

Intel® Developer Zone for IoT

Start inventing today with the Intel® IoT Developer Program which offers knowledge, tools, kits and a community of experts to quickly and easily turn your innovative ideas into IoT Solutions.

Dream it, Build it with the Intel® IoT Developer Kit for Intel® Edison and Intel® Galileo platforms. These kits are versatile, performance-optimized and fully integrated end-to-end IoT solutions supporting a variety of programming environments, tools, security, cloud connectivity and hardware.

For more resources and to learn how the new Intel® IoT Developer Kit v1.0 can help streamline your IoT projects:

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here