Modem-stretch: различия между версиями
(не показаны 53 промежуточные версии 6 участников) | |||
Строка 1: | Строка 1: | ||
В контроллеры Wiren Board могут быть установлены 2G/3G/4G/NB-IOT модемы — зависит от комплектации. С помощью модемов можно: | |||
* отправлять и принимать SMS, | |||
* подключаться к интернету. | |||
В контроллеры Wiren Board могут быть установлены 2G/3G/4G | |||
= Общее для всех модемов = | |||
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. | Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. | ||
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]]. | Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе «[[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]]». | ||
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio | Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio. Включение и отключение модема рекомендуется производить с помощью утилиты [[#Утилита wb-gsm|wb-gsm]]. | ||
Включение и отключение модема | |||
== Получение информации о модеме == | == Получение информации о модеме == | ||
Строка 39: | Строка 34: | ||
== Включение и начало работы == | == Включение и начало работы == | ||
{{Wbincludes:Configuration GSM Modem First Start}} | |||
== Утилита wb-gsm == | == Утилита wb-gsm == | ||
Для упрощения работы с модемами была написана утилита <code>wb-gsm</code> | Для упрощения работы с модемами была написана утилита <code>wb-gsm</code> (исходный код доступен в нашем [https://github.com/wirenboard/wb-utils/tree/master/gsm репозитории на Github]). Утилита позволяет: | ||
*управлять питанием модемов, команды <code>on, off, restart_if_broken</code>; | |||
*настраивать baudrate связи по uart, команды <code>init_baud, set_speed</code>; | |||
*получать imei, команда <code>imei</code>. | |||
Все команды wb-gsm можно посмотреть [https://github.com/wirenboard/wb-utils/blob/b3d3d50d29578472dfebc97bde77714e097d61d6/gsm/wb-gsm в репозитории на Github]. | |||
Пример использования утилиты <code>wb-gsm</code> для получения imei модема: | |||
<code>DEBUG=true wb-gsm imei DEBUG=true</code> перед командой выводит дополнительную отладочную информацию. | |||
Утилита <code>wb-gsm</code> входит в состав пакета <code>wb-utils</code> и есть в стандартном образе ПО контроллера. | |||
</ | |||
== Переключение активной sim-карты == | == Переключение активной sim-карты == | ||
Строка 76: | Строка 59: | ||
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0. | По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0. | ||
Подробнее о работе с gpio можно узнать из статьи [[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]]. | Подробнее о работе с gpio можно узнать из статьи «[[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]]». | ||
Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]): | Для того, чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
AT+CFUN=0 | AT+CFUN=0 | ||
Строка 92: | Строка 75: | ||
*uart: Порт <code>/dev/ttyGSM</code> является ссылкой на ''/dev/ttymxc'''X''''' (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на [https://github.com/wirenboard/wb-configs/tree/master/configs/usr/share/wb-configs/udev нашем github]). | *uart: Порт <code>/dev/ttyGSM</code> является ссылкой на ''/dev/ttymxc'''X''''' (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на [https://github.com/wirenboard/wb-configs/tree/master/configs/usr/share/wb-configs/udev нашем github]). | ||
*usb: Порты | *usb: Порты ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это <code>/dev/ttyACM0-6</code>, однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <syntaxhighlight lang="bash">wb-gsm off; wb-gsm on; dmesg | tail</syntaxhighlight>. | ||
Примерный вывод команды: | Примерный вывод команды: | ||
Строка 119: | Строка 102: | ||
{{Wbincludes:GSM Modem AT Prepare}} | {{Wbincludes:GSM Modem AT Prepare}} | ||
Модем готов к передаче AT-команд. | Модем готов к передаче AT-команд. | ||
== Работа с sms и ussd == | == Работа с sms и ussd == | ||
Строка 140: | Строка 121: | ||
=== Примеры команд gammu === | === Примеры команд gammu === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 166: | Строка 146: | ||
|} | |} | ||
Для надежной | Для надежной отправики SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8 | ||
=== SMS-уведомления === | === SMS-уведомления === | ||
Строка 173: | Строка 153: | ||
== Интернет через PPP == | == Интернет через PPP == | ||
=== Быстрый выход в интернет === | === Быстрый выход в интернет === | ||
{{Wbincludes:GSM Quick Connect}} | |||
=== Автоматический запуск подключения === | |||
{{Wbincludes:GSM Auto Connect}} | |||
=== Автоматическое восстановление подключения === | |||
Скрипт позволяет восстановить интернет-соединение после сбоя. Пример автоматического запуска скрипта можете посмотреть в [[Wi-Fi#Автоматическое переподключение при проблемах с соединением |статье про WiFi]] | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/sh | |||
echo --------------- --------------- --------------- -- | |||
echo WAN CONTROLL RESTART | |||
echo --------------- --------------- --------------- -- | |||
PINGRESORCE1="ya.ru" | |||
PINGRESORCE2="google.com" | |||
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1) | |||
then | |||
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1) | |||
then | |||
wb-gsm restart_if_broken | |||
else | |||
echo 'internet ok' | |||
fi | |||
else | |||
echo 'internet ok' | |||
fi | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Резервирование канала связи === | === Резервирование канала связи === | ||
Строка 247: | Строка 188: | ||
== Интернет с 4G-модемом (LTE) == | == Интернет с 4G-модемом (LTE) == | ||
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]] | [[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]] | ||
[[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]] | [[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]] | ||
=== Настройка модема как сетевой карты === | === Настройка модема как сетевой карты === | ||
В отличие от 2G- и 3G-модулей, [[WBC-4G]] поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS. | В отличие от 2G- и 3G-модулей, [[WBC-4G]] дополнительно поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS. | ||
Процедура настройки модема: | |||
{{Wbincludes:GSM Modem AT Prepare}} | {{Wbincludes:GSM Modem AT Prepare}} | ||
# Отправьте из терминала minicom AT-команды для модема: | # Отправьте из терминала minicom AT-команды для модема: | ||
Строка 267: | Строка 202: | ||
После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту. | После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту. | ||
=== Настройка виртуальной сетевой карты === | === Настройка виртуальной сетевой карты === | ||
После того как мы настроили модем, нужно настроить виртуальную сетевую карту: | После того как мы настроили модем, нужно настроить виртуальную сетевую карту: | ||
# Откройте файл <code>/etc/network/interfaces</code>: | # Откройте файл <code>/etc/network/interfaces</code>: | ||
Строка 292: | Строка 212: | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
auto usb0 | auto usb0 | ||
iface usb0 inet dhcp | iface usb0 inet dhcp | ||
pre-up wb-gsm restart_if_broken | pre-up wb-gsm restart_if_broken | ||
pre-up sleep 10 | pre-up sleep 10 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#: автоматически | #: автоматически запускать модем, интерфейс и получать IP-адрес. | ||
# Сохраните и закройте файл <code>interfaces</code>. | # Сохраните и закройте файл <code>interfaces</code>. | ||
# Запустите интерфейс командой: | # Запустите интерфейс командой: | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
Строка 305: | Строка 223: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>. Настройка завершена. | |||
==Мультиплексирование== | ==Мультиплексирование== | ||
Строка 381: | Строка 246: | ||
|} | |} | ||
= GPRS на модемах SIM7000E 2G/NB-IoT = | |||
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). | Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). |
Версия 13:48, 17 августа 2021
В контроллеры Wiren Board могут быть установлены 2G/3G/4G/NB-IOT модемы — зависит от комплектации. С помощью модемов можно:
- отправлять и принимать SMS,
- подключаться к интернету.
Общее для всех модемов
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе «Низкоуровневая работа по uart».
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio. Включение и отключение модема рекомендуется производить с помощью утилиты wb-gsm.
Получение информации о модеме
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории /proc/device-tree/wirenboard/gsm/
.
В контроллерах версии 6.7 модем устанавливается модулем расширения.
После физического подключения модема его нужно добавить в конфигурацию контроллера:
- В веб-интерфейсе перейдите в раздел Settings → Configs → Hardware Modules Configuration, выберите Modem slot.
- В раскрывающемся списке Module type выберите тип установленного модуля.
- Нажмите кнопку 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-команд
Значение | Параметр | Описание |
---|---|---|
Auto-bauding | Baud rate | Скорость, бит/с. В настройках программы подключения установите 115200. После подключения — отправьте модему AAAAAAAT и он определит скорость автоматически.
|
8 | Data bits | Количество битов данных |
None | Parity | Бит чётности |
1 | Stop bits | Количество стоповых битов |
Off | Hardware flow control | Аппаратный контроль потока |
Off | Software flow control | Программный контроль потока |
Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:
- Подключитесь к контроллеру по SSH.
- Перезапустите модем командой:
wb-gsm restart_if_broken
- Подключитесь к модему через minicom:
minicom -D /dev/ttyGSM -b 115200 -8 -a off
- о параметрах командной строки читайте в статье о minicom.
- Введите команду
AAAAAAAAAT
— с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответитOK
.
Модем готов к передаче AT-команд.
Работа с sms и ussd
Работать с sms и ussd проще всего при помощи программы Gammu (это форк утилиты gnokii
, которую перестали развивать).
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.
Настройка
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
- Обновить пакет
wb-configs
. Для этого, нужно выполнить командыapt update && apt install wb-configs
- Настроить gammu вручную:
- Выполнить команду
gammu-config
- В параметре
Port
укажите/dev/ttyXXX
— файл модема, соответствующий вашей модели контроллера. - В параметре
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 на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8
SMS-уведомления
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье « Модуль уведомлений».
Интернет через PPP
Быстрый выход в интернет
Автоматический запуск подключения
Автоматическое восстановление подключения
Скрипт позволяет восстановить интернет-соединение после сбоя. Пример автоматического запуска скрипта можете посмотреть в статье про WiFi
#!/bin/sh
echo --------------- --------------- --------------- --
echo WAN CONTROLL RESTART
echo --------------- --------------- --------------- --
PINGRESORCE1="ya.ru"
PINGRESORCE2="google.com"
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
wb-gsm restart_if_broken
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
Резервирование канала связи
Особенности резервирования выхода в интернет описаны в статье Сетевые настройки контроллера.
Интернет с 4G-модемом (LTE)
Настройка модема как сетевой карты
В отличие от 2G- и 3G-модулей, WBC-4G дополнительно поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.
Процедура настройки модема:
- Подключитесь к контроллеру по SSH.
- Перезапустите модем командой:
wb-gsm restart_if_broken
- Подключитесь к модему через minicom:
minicom -D /dev/ttyGSM -b 115200 -8 -a off
- о параметрах командной строки читайте в статье о minicom.
- Введите команду
AAAAAAAAAT
— с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответитOK
. - Отправьте из терминала minicom AT-команды для модема:
- Настроить автоматическое подключение:
AT+DIALMODE=0
. - Установить APN:
AT+CGDCONT=1,"IP","xxx"
, где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так:internet.mts.ru
. - Проверить получение IP адреса:
AT+CGCONTRDP
.
- Настроить автоматическое подключение:
- Закройте minicom, для этого нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.
После этого интернет будет доступен через интерфейс usb0
, который можно настроить как обычную сетевую карту.
Настройка виртуальной сетевой карты
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
- Откройте файл
/etc/network/interfaces
:nano /etc/network/interfaces
- Добавьте в него строки:
auto usb0 iface usb0 inet dhcp pre-up wb-gsm restart_if_broken pre-up sleep 10
- автоматически запускать модем, интерфейс и получать IP-адрес.
- Сохраните и закройте файл
interfaces
. - Запустите интерфейс командой:
ifup usb0
Модем по DHCP назначит контроллеру IP-адрес в подсети 192.168.0.1
. Настройка завершена.
Мультиплексирование
Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX. Этот режим не поддерживается для 2G-модемов.
Документация на модемы
Модель | Режимы сети | краткое описание | hardware design | AT-команды |
---|---|---|---|---|
SIM800 | 2G | |||
SIM5300E | 2G/3G | |||
SIM7000E | 2G/NB-IOT | |||
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