Modem-stretch: различия между версиями

Материал из Wiren Board
м (→‎Интернет через ppp: Заменил текст на шаблоны)
Строка 161: Строка 161:
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]».
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]».


== Интернет через ppp ==
== Интернет через PPP ==


Перед выходом в интернет необходимо, чтобы модем был включен. Для этого вручную или в файле настройки сетевых интерфейсов (см. далее) выполните команду <syntaxhighlight lang="bash">wb-gsm restart_if_broken</syntaxhighlight>
=== Быстрый выход в интернет ===
{{Wbincludes:GSM Quick Connect}}


=== Быстрая настройка автоматического выхода в интернет для МТС/Билайн/Мегафон ===
=== Автоматический запуск подключения ===
{{Wbincludes:GSM Auto Connect}}


В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду
=== Резервирование канала связи ===
<syntaxhighlight lang="bash">
pon mts # можно заменить mts на megafon или beeline
</syntaxhighlight>
Чтобы отключить подключение, выполните
<syntaxhighlight lang="bash">
poff mts # можно заменить mts на megafon или beeline
</syntaxhighlight>


Если на контроллере установлен 3G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт: в файле <code>/etc/ppp/peers/ваш_провайдер_сотовой_связи</code> (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code>
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].
[[Файл:GSM-ACM.png|thumb|right|Файл /etc/ppp/peers/<ваш_провайдер_связи>]]
 
[[File:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
Чтобы подключение запускалось автоматически и перезапускалось при обрыве, откройте файл <code>/etc/network/interfaces</code> и раскомментируйте или отредактируйте следующие строки:
<syntaxhighlight lang="bash">
auto ppp0
iface ppp0 inet ppp
  provider mts # можно заменить mts на megafon или beeline
  #рестартуем модем, если он завис
  pre-up wb-gsm restart_if_broken 
  #Затем ждем, пока он загрузится и найдет сеть.
  pre-up sleep 10
</syntaxhighlight>
 
Выполните команду <code>ifup ppp0</code> — через 10-15 секунд интерфейс <code>ppp0</code> будет доступен.
После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи
 
Для ppp-интерфейсов существуют директории, исполняемые файлы из которых также запускаются на разных фазах установления соединения. Но, если, например, для ethernet-интерфейсов эти скрипты должны находиться в директориях <code>/etc/network/if-down.d</code>, <code>if-post-down.d</code>, <code>if-pre-up.d</code>, <code>if-up.d</code>, то соответствующие директории для ppp-интерфейсов находятся в <code>/etc/ppp/ip-down.d</code>, <code>ip-up.d</code> и т.п (подробнее об их назначении и функционировании можно узнать в документе [http://citforum.ru/operating_systems/linux/HOWTO/PPP-HOWTO.shtml PPP HOWTO]).
 
=== Маршрутизация и настройка <u>''резервного''</u> подключения через ppp ===
 
'''Важно!''' По умолчанию интерфейс <code>ppp0</code> при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, например, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях <code>ip-down.d</code>, <code>ip-up.d</code>.
 
Подробнее в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].
 
Для более сложных случаев, когда физическое соединение на интерфейсе <code>eth0</code> не пропадает, рекомендуется применять скрипты, которые на основе доступности какого-либо сетевого узла в интернете через один из интерфейсов переключают маршрут по умолчанию. В интернете предлагается множество решений решений такого рода задачи, можно выбрать одно из них.
 
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так:
# Организуется работа через основной канал.
# Постоянно проверяется наличие доступа в Интернет через основной канал.
# В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''.
# Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''.
 
В качестве примера укажем две инструкции по организации такого режима работы:
*[http://lstein.github.io/Net-ISP-Balance/ Net-ISP-Balance]
*[https://serverfault.com/questions/360131/ubuntu-failover-from-ethernet-to-adsl-modem-to-usb-3g-dongle?rq=1 Ubuntu failover from Ethernet-to-ADSL-modem to USB 3G dongle]


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

Версия 22:46, 16 декабря 2020

В контроллеры Wiren Board могут быть установлены 2G/3G/4G/NB-IOT модемы — зависит от комплектации. С помощью модемов можно:

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

Общее для всех модемов

Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе «Низкоуровневая работа по uart».

Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio. Включение и отключение модема рекомендуется производить с помощью утилиты wb-gsm.

Получение информации о модеме

В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории /proc/device-tree/wirenboard/gsm/.

В контроллерах версии 6.7 модем устанавливается модулем расширения.


После физического подключения модема его нужно добавить в конфигурацию контроллера:

  1. В веб-интерфейсе перейдите в раздел SettingsConfigsHardware Modules Configuration, выберите Modem slot.
  2. В раскрывающемся списке Module type выберите тип установленного модуля.
  3. Нажмите кнопку Save. Контроллер включит нужные для работы модема порты.

Для удаления модуля выберите тип None.

После конфигурирования включите модем командой wb-gsm on и настройте подключение к оператору связи.


Например, чтобы узнать модель модема, нужно выполнить команду

cat /proc/device-tree/wirenboard/gsm/model

Подробнее о файлах внутри директории можно узнать из таблицы:

Файл Описание
/proc/device-tree/wirenboard/gsm/model модель модема
/proc/device-tree/wirenboard/gsm/type поддерживаемые сети
/proc/device-tree/wirenboard/gsm/status статус модема в системе

Включение и начало работы

Wbincludes:Configuration GSM Modem First Start

Утилита wb-gsm

Для упрощения работы с модемами была написана утилита wb-gsm (исходный код доступен в нашем репозитории на Github). Утилита позволяет:

  • управлять питанием модемов, команды on, off, restart_if_broken;
  • настраивать baudrate связи по uart, команды init_baud, set_speed;
  • получать imei, команда imei.

Все команды wb-gsm можно посмотреть в репозитории на Github.

Пример использования утилиты wb-gsm для получения imei модема: DEBUG=true wb-gsm imei DEBUG=true перед командой выводит дополнительную отладочную информацию.

Утилита wb-gsm входит в состав пакета wb-utils и есть в стандартном образе ПО контроллера.

Переключение активной sim-карты

По умолчанию активна Sim1 — в каждый момент времени только одна sim-карта может быть активной.

Переключить модем на другую sim-карту можно с помощью gpio процессора. Узнать его номер можно двумя способами:

  • выполнить команду
    echo $WB_GPIO_GSM_SIMSELECT
    
  • найти SIM Slot Select gpio в таблице gpio контроллера.

По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88):

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

Соответственно, для переключения обратно на sim1, нужно записать 0.

Подробнее о работе с gpio можно узнать из статьи «Работа_с_GPIO».

Для того, чтобы новая sim-карта стала активной, нужно выполнить следующие AT-команды (см. раздел о работе с AT-командами):

AT+CFUN=0
AT+CFUN=1

Низкоуровневая работа по uart

Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту /dev/ttyGSM. 3G модемы, помимо этого, подключаются к портам /dev/ttyACMX (порты создаются usb-драйвером cdc_acm).

Подключение в linux

  • uart: Порт /dev/ttyGSM является ссылкой на /dev/ttymxcX (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на нашем github).
  • usb: Порты /dev/ttyACMX (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это /dev/ttyACM0-6, однако точно определить, к каким портам модем подключен по USB можно, выполнив команды:
    wb-gsm off; wb-gsm on; dmesg | tail
    
    .

Примерный вывод команды:

[ 6102.978383] usb 2-1.2: New USB device found, idVendor=1e0e, idProduct=0020
[ 6102.985653] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6102.993108] usb 2-1.2: Product: SIMCOM_PRODUCT
[ 6102.997728] usb 2-1.2: Manufacturer: SIMCOM_VENDOR
[ 6103.002644] usb 2-1.2: SerialNumber: 004999010640000
[ 6103.082093] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device
[ 6103.098228] cdc_acm 2-1.2:1.2: ttyACM1: USB ACM device
[ 6103.116769] cdc_acm 2-1.2:1.4: ttyACM2: USB ACM device
[ 6103.132688] cdc_acm 2-1.2:1.6: ttyACM3: USB ACM device
[ 6103.145157] cdc_acm 2-1.2:1.8: ttyACM4: USB ACM device
[ 6103.163705] cdc_acm 2-1.2:1.10: ttyACM5: USB ACM device
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device

Соответственно, в данном случае 3G модем подключен к портам /dev/ttyACM0 - /dev/ttyACM6.

Отправка AT-команд

Для всех модемов рабочими настройками связи являются: 115200-8-N-1, no hardware flow control (аппаратный контроль потока должен быть обязательно выключен). Некоторые модели модемов (например, sim5300e, sim7000e) могут сами определять baudrate, установленный в данный момент. Для этого нужно послать в последовательный порт несколько символов (например, "AAAAAAAAAAT").

Подробнее в статье «Работа с последовательным портом из Linux».

Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:

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

Работа с sms и ussd

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

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

Настройка

Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:

  • Обновить пакет wb-configs. Для этого, нужно выполнить команды
    apt update && apt install wb-configs
    
Настройка gammu вручную (gammu-config)
  • Настроить gammu вручную:
  1. Выполнить команду
    gammu-config
    
  2. В параметре Port укажите /dev/ttyXXX — файл модема, соответствующий вашей модели контроллера.
  3. В параметре Connection укажите at115200

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

$ 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# неизвестно неизвестно

SMS-уведомления

Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье « Модуль уведомлений».

Интернет через PPP

Быстрый выход в интернет

Wbincludes:GSM Quick Connect

Автоматический запуск подключения

Wbincludes:GSM Auto Connect

Резервирование канала связи

Особенности резервирования выхода в интернет описаны в статье Сетевые настройки контроллера.

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

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

Документация на модемы

Модель Режимы сети краткое описание hardware design AT-команды
SIM800 2G pdf pdf pdf
SIM5300E 2G/3G pdf pdf pdf
SIM7000E 2G/NB-IOT pdf pdf pdf
7600E 2G/3G/4G WBC-4G

GPRS на модемах SIM7000E 2G/NB-IoT

Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). Для того, чтобы модем смог зарегистрироваться в сети GSM, необходимо принудительно перевести его в режим GSM only.

В терминальном режиме работы с модемом, например, в программе minicom (смотрите раздел Отправка AT-команд), введите команду выбора режима:

AT+CNMP=13

Возможные варианты значений (команда AT+CNMP=?):

  • 2 — Automatic,
  • 13 — GSM Only,
  • 38 — LTE Only,
  • 51 — GSM And LTE Only.

Установить режим нужно один раз — он запоминается и активен даже после отключения питания.

Чтобы вернуться в режим IoT, выполните команду:

AT+CNMP=51