Управление модемами SIM800 и SIM5xxx

Небольшое описание по управлению модемами SIM800/SIM5320/SIM5360/SIM6320/SIM7100E

На некоторых материнских платах для работы с модулями EV-iMX280-NANO и EV-iMX287-NANO установлены GSM/3G модемы.

Плата EV-iMX280-SIM800-MB с модемом SIM800C

Сигнал Powerkey модема через транзистор подключен к выводу GPIO0_21 (сигнал MX28_PAD_GPMI_RDY1__GPMI_READY1). В dts файле чтобы назначить данный вывод в качестве GPIO его дефолтное значение закомментировано:

//       0x0150 /* MX28_PAD_GPMI_RDY1__GPMI_READY1 */

При старте файловой системы в сервисе /etc/init.d/S31modem данный вывод настраивается как выход.

echo 21 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio21/direction

echo 0 > /sys/class/gpio/gpio21/value

Скрипт modem_on включает модем

echo 1 > /sys/class/gpio/gpio21/value

usleep 900000

echo 0 > /sys/class/gpio/gpio21/value

Скрипт modem_off выключает модем

echo 1 > /sys/class/gpio/gpio21/value

sleep 2

echo 0 > /sys/class/gpio/gpio21/value

Файл /etc/ppp/options-mobile описывает подключение модема

/dev/ttyAPP2

115200

defaultroute

usepeerdns

crtscts

lock

noauth

local

persist

modem

nopcomp

novjccomp

nobsdcomp

nodeflate

noaccomp

ipcp-accept-local

ipcp-accept-remote

noipdefault

Файлы чата описывают параметры подключения  (команды инициализации, точка доступа и т.п.). Файл utel.chat

ABORT 'BUSY'

ABORT 'NO CARRIER'

ABORT 'VOICE'

ABORT 'NO DIALTONE'

ABORT 'NO DIAL TONE'

ABORT 'NO ANSWER'

ABORT 'DELAYED'

REPORT CONNECT

TIMEOUT 6

'' 'ATQ0'

'OK-AT-OK' 'ATZ'

TIMEOUT 3

'OK-AT-OK' 'ATI'

'OK' 'ATZ'

'OK' 'AT\^SYSCFG=2,2,3fffffff,0,1'

'OK-AT-OK' 'AT+CGDCONT=1,"IP","3g.utel.ua"'

'OK' 'ATDT*99***1#'

TIMEOUT 30

CONNECT

И наконец, скрипт connect_utel.sh вызывает установление соединения:

pppd /dev/ttyAPP2 115200 modem connect "/usr/sbin/chat -v -f /etc/ppp/utel.chat" defaultroute nodetach ipcp-accept-remote novj mru 1500 mtu 1500 noipdefault usepeerdns user "" password "" &

/*

root /root # ./modem_on

root /root # ./connect_utel

root /root # chat:  Jan 01 01:25:34 CONNECT

Serial connection established.

Using interface ppp0

Connect: ppp0 <--> /dev/ttyAPP2

Could not determine remote IP address: defaulting to 10.64.64.64

local  IP address 46.202.62.69

remote IP address 10.64.64.64

primary   DNS address 213.179.249.151

secondary DNS address 213.179.249.152

root /root # ifconfig

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

UP LOOPBACK RUNNING  MTU:65536  Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ppp0      Link encap:Point-to-Point Protocol

inet addr:46.202.62.69  P-t-P:10.64.64.64  Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

RX packets:5 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:62 (62.0 B)  TX bytes:83 (83.0 B)

root /root #