Modem-stretch

Материал из Wiren Board

В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:

  • отправлять/принимать SMS
  • подключаться к интернету по GPRS

Полный список возможностей смотрите в описании модуля:

  • Wiren Board 5 в версии с 3G: SIM5300E;
  • Wiren Board 5 в версии с 2G и Wiren Board 4: SIM800 или M660A;
  • Wiren Board Smart Home 3.5, Wiren Board 4: SIM900R.

Начало работы

Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты wb-gsm (смотрите ниже).

Модем в Linux

Внутри контроллера модем подключён к процессору одним из двух способов:

  • по порту UART (устройство /dev/ttyAPP0) - все модемы, включая 3G;
  • по порту USB (устройства /dev/ttyACM0-/dev/ttyACM6) - только 3G.

Работать с модемом на низком уровне можно, посылая команды на порт /dev/ttyAPP0 или /dev/ttyACM0 соответственно.

Также к процессору подключены управляющие пины модема PWRKEY и RESET, с помощью которых можно выключить или перезагрузить модем. Обычно работать с ними напрямую не требуется - перезагрузка производится утилитой wb-gsm (смотрите ниже), но также реализован прямой доступ к этим контактам через GPIO (подробнее читайте GPIO, ищите в таблице соответствующие названия).

Включение модуля

По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой wb-gsm (утилита включена в стандартный образ в пакет wb-utils).

$ wb-gsm on #  включение устройства
$ wb-gsm off #  выключение устройства
$ wb-gsm reset #  перезагрузка включенного устройства
$ wb-gsm restart_if_broken #  включение или перезагрузка, если модем не отвечает

Отправка и получение SMS и USSD

gammu-config

Работать с SMS проще всего при помощи программы Gammu (это форк утилиты gnokii, которую перестали развивать).

(ниже дана краткая инструкция, полную документацию смотрите на сайте проекта)

  1. Создайте файл конфигурации, запустив gammu-config
    1. В параметре Port укажите /dev/ttyAPP0
    2. В параметре Connection укажите at115200
  2. Примеры команд:
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
$ gammu geteachsms # вывести все SMS
$ gammu getussd '#100#' # запросить баланс на МТС в транслите
$ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом

SMS и USSD на русском

SMS и USSD на русском пока работают в gammu не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит:

Оператор USSD SMS
транслит русский транслит русский
МТС *100*6*2# *100*6*1# неизвестно неизвестно
Мегафон *105*0# *105*9# неизвестно неизвестно
Билайн *111*6*2# *111*6*1# неизвестно неизвестно
Теле2 *120# *120*1# неизвестно неизвестно

Выход в интернет

Быстрая настройка автоматического выхода в интернет

В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн. Если вы пользуетесь одним из них, для запуска подключения выполните

pon mts # можно заменить mts на megafon или beeline

Чтобы отключить подключение, выполните

poff mts # можно заменить mts на megafon или beeline
Файл /etc/network/interfaces, автоматически запускающий подключение к МТС

Чтобы подключение запускалось автоматически, откройте файл /etc/network/interfaces и раскомментируйте/отредактируйте следующие строки:

auto ppp0
iface ppp0 inet ppp
  provider mts # можно заменить mts на megafon или beeline

Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.

Полная инструкция

Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса pppd.

Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе. Для других операторов или специальных APN создайте свои конфигурационные файлы на основе стандартных. Для этого при помощи утилиты pppconfig создайте конфигурационный файл подключения с параметрами для вашего оператора (например, МТС). Также можете ориентироваться на инструкцию. Обратите внимание на настройки 115200 nocrtsct, которые должны присутствовать в конфигурационных файлах.

После создания конфигурационного файла запустите подключение, выполнив

pon название_подключения

или отредактировав файл /etc/network/interfaces, как описано выше.

Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения строки:

persist
maxfail 0

Использование GPRS в качестве резервного канала

Внимание! Этот раздел не проверен.

Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется failover. Обычно он работает так:

  1. Организуется работа через основной канал.
  2. Постоянно проверяется наличие доступа в Интернет через основной канал.
  3. В случае неполадок запускается запасное соединение, меняются настройки default gateway.
  4. Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя default gateway.

Есть две инструкции по организации такого режима работы:

  1. http://lstein.github.io/Net-ISP-Balance/
  2. https://serverfault.com/questions/360131/ubuntu-failover-from-ethernet-to-adsl-modem-to-usb-3g-dongle?rq=1

Низкоуровневая работа с модулем через AT-команды

Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux. Обратите внимание на настройки: 115200, 8N2, no hardware flow control.

Для интерактивного режима:

  • запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
 $ minicom -s /dev/ttyAPP0
  • Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
  • Сохранить настройки: Save setup as _dev_ttyAPP0
  • Далее запускать как minicom /dev/ttyAPP0 (все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)
  • Первой вашей командой должна стать AAAAAAAAAT - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите SIM900R)
  • Второй командой выполните просто AT. Вам должен прийти ответ OK

Примеры команд

(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)

  • Синхронизовать скорость порта (не совсем команда)
AAAAAAAAAAAAAT
  • Список всех сетей
AT+COPS=?
AT+CSQ
  • Звонок на номер +79154816102
ATD+79154816102;
  • Установка baud rate порта в фиксированное значение 115200
AT+IPR=115200
  • Запрос времени со встроенных в модуль часов реального времени (RTC)
AT+CCLK?
AT+CCLK="14/03/19,01:20:29+00"
  • Получить IMEI-код модуля (xxxxxx - уникальный номер)
AT+GSN
86820400xxxxxxY

OK

RTC

Мультиплексирование

Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX.