Modem-stretch
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
- отправлять/принимать SMS
- подключаться к интернету по GPRS
Полный список возможностей смотрите в описании модуля:
- 3G модем в Wiren Board 5 и Wiren Board 6: SIM5300E;
- 2G модем в Wiren Board 4, 5 и 6 : SIM800 или M660A;
- Wiren Board Smart Home 3.5, Wiren Board 4: SIM900R.
Начало работы
Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты wb-gsm (смотрите ниже).
Модем в Linux
Внутри контроллера модем подключён к процессору одним из двух способов:
- по порту UART (устройство /dev/ttyGSM (ранее: /dev/ttyAPP0)) - все модемы, включая 3G;
- по порту USB (устройства /dev/ttyACM0-/dev/ttyACM6) - только 3G.
Работать с модемом на низком уровне можно, посылая команды на порт /dev/ttyGSM или /dev/ttyACM0 соответственно. Для 3G-связи порт UART не подходит в силу ограничения пропускной способности UАRT-канала, следует использовать ACM-порт /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
Работать с SMS проще всего при помощи программы Gammu (это форк утилиты gnokii, которую перестали развивать).
(ниже дана краткая инструкция, полную документацию смотрите на сайте проекта)
- Создайте файл конфигурации, запустив gammu-config
- В параметре Port укажите /dev/ttyGSM
- В параметре Connection укажите at115200
- Примеры команд:
$ 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 входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните
pon mts # можно заменить mts на megafon или beeline
Чтобы отключить подключение, выполните
poff mts # можно заменить mts на megafon или beeline
Чтобы подключение запускалось автоматически, откройте файл /etc/network/interfaces и раскомментируйте/отредактируйте следующие строки:
auto ppp0
iface ppp0 inet ppp
provider mts # можно заменить mts на megafon или beeline
Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.
Полная инструкция
Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса pppd. Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе. Файлы хранятся в директориях /etc/ppp/peers и /etc/chatscripts. Для других операторов или специальных APN создайте свои конфигурационные файлы на основе стандартных. Для этого при помощи утилиты pppconfig (устанавливается командой apt-get install pppconfig) создайте конфигурационный файл подключения с параметрами для вашего оператора (например, МТС). Также можете ориентироваться на инструкцию. Обратите внимание на настройки 115200 nocrtsct, которые должны присутствовать в конфигурационных файлах.
Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема:
После создания конфигурационного файла запустите подключение, выполнив
pon название_подключения
или отредактировав файл /etc/network/interfaces, как описано выше.
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
persist
maxfail 0
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле /etc/network/interfaces. Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.
В файле /etc/network/interfaces для настройки ppp можно использовать стандартные iface-опции pre-up, up, post-up, down, pre-down, post-down. Они задают команды, которые будут выполняться на различных фазах инициализации/деинициализации интерфейса. Подробно особенности их функционирования описаны в man interfaces в разделе IFACE OPTIONS.
Мы же приведем здесь в качестве примера параметры, которые рекомендуем использовать при настройке ppp-соединения с мобильными интернет-провайдерами.
auto ppp0
iface ppp0 inet ppp
provider mts
metric 100
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
Использование GPRS в качестве резервного канала
Внимание! Этот раздел не проверен.
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется failover. Обычно он работает так:
- Организуется работа через основной канал.
- Постоянно проверяется наличие доступа в Интернет через основной канал.
- В случае неполадок запускается запасное соединение, меняются настройки default gateway.
- Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя default gateway.
Есть две инструкции по организации такого режима работы:
- http://lstein.github.io/Net-ISP-Balance/
- 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/ttyGSM
- Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyGSM, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
- Сохранить настройки: Save setup as _dev_ttyGSM
- Далее запускать как minicom /dev/ttyGSM (все параметры будут сразу браться из профиля с названием /dev/ttyGSM, который мы ранее создали)
- Первой вашей командой должна стать 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.