[Перевод] Подключение GPRS-модема к Intel Edison

df83149119614707933c01a898b54c1a.JPG

Эта статья объяснит, как создать сеть передачи данных с использованием протокола PPP, подключив GPRS-модуль к плате Intel Edison.

Установка пакетов и включение PPP в ядре


Загрузим файлы с исходниками:
http://downloadmirror.intel.com/24698/eng/edison-src-ww05–15.tgz
Перед компиляцией исходных файлов, желательно увеличить root-раздел файловой системы. (Инструкция по увеличению).
В зависимости от конфигурации системы, постройка займет от 2 до 6 часов. Я использовал операционную систему Ubuntu 12.04.

Ошибки во время компиляции:

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.


Решение: замените строку 22 в recept файле:

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


Оригинал:

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


Заменить на:

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


Конфигурирование PPP в ядре.

# bitbake virtual/kernel –c menuconfig


e93d4c67591b499faffa9e4d35a26172.png

Сначала, я включил только поддержку PPP для асинхронного последовательного порта, но в результате появилась другая ошибка — включил PPP фильтрацию. В конце концов, я включил всё.
Теперь устанавливаем пакеты PPP из http://repo.opkg.net/edison/repo/core2–32/
Демон pppd используется для соединения GPRS-модуля.
После удачной установки вы должны увидеть следующую файловую структуру.

1800f6c269e849c69409082c69f3dd94.jpg

Чтобы работать с модемом, аппаратный последовательный порт должен быть подключен к GPIO 0 и 1.

Включение последовательного порта


Включите последовательный порт на пинах 0 и 1, выполнив следующие команды в терминале:

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


Тестирование GPRS-модуля


Использовалась рабочая SIM-карта от оператора T-Mobile. Проверим состояние GPRS-модема, посылая AT-команды через программу 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


Тоже самое может быть сделано программированием последовательного порта или с использованием библиотеки mraa.
Включение 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


Подключение к интернету с использованием GPRS


Создайте скрипт, который определяет контекст PDP (Packet Data Protocol) и сообщает о соединении. Необходимые скрипты есть в файле ppp.zip, ссылка на который приведена в конце статьи.
Теперь создайте соединение, использую команду:

# pppd call gprs &


c850528c2b194dfa8fd5880247ac0390.png

Вы можете проверить лог-файл следующей командой:

#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


Файл для скачивания:
ppp.zip

Ссылки:


communities.intel.com/docs/DOC-23449
repo.opkg.net/edison/repo/core2–32
communities.intel.com/thread/54236
communities.intel.com/thread/55790
downloadmirror.intel.com/24698/eng/edison-src-ww05–15.tgz
www.att.com/esupport/article.jsp? sid=36059&cv=820#fbid=AcRge45P9Za
wiki.openmoko.org/wiki/T-Mobile_pppd_scripts
www.tldp.org/HOWTO/PPP-HOWTO

© Geektimes