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

Материал из Wiren Board
(не показаны 103 промежуточные версии 6 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Настройка 4G-модема в контроллере Wiren Board на Debian Bullseye }}
== Общая информация ==
== Общая информация ==
{{note|info|Статья описывает настройку 4G-модемов в контроллерах Wiren Board 6...7, на которых установлен релиз [[wb-2304]] и новее. Для настройки модема в релизе [[wb-2207]] и старее, а также модемов 2G/3G/NB-IoT используйте эту [[Modem-stretch|инструкцию]].}}
В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы зависит от комплектации.  


Опционально в контроллер [[Wiren Board | Wiren Board 7]] можно установить двухсимочный 4G(LTE) модем [[WBC-4G_v.2 |WBC-4G v.2]], с помощью которого организуется доступ в интернет через PPP, а также отправка и приём SMS. Модемы управляются серсисами [https://www.freedesktop.org/software/ModemManager/api/latest ModemManager] и [https://www.networkmanager.dev/docs/ NetworkManager].
С помощью модемов можно:
* [[#Работа с sms и ussd | отправлять и принимать SMS]],
* подключаться к интернету по [[#Интернет через PPP|протоколу PPP]].


Питание модема управляется автоматически сервисом wb-gsm, а переключение активных SIM-карт вручную через утилиту mmcli. Подробнее читайте ниже.
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G.
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]].
 
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]].
 
Включение и отключение модема рекомендуем делать с помощью утилиты [[#Утилита wb-gsm|wb-gsm]].
 
== Получение информации о модеме ==
 
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории <code>/proc/device-tree/wirenboard/gsm/</code>.
 
В контроллерах версии 6.7 модем устанавливается модулем расширения.
 
После физического подключения модема его нужно добавить в конфигурацию контроллера:
 
В веб-интерфейсе перейдите в раздел Настройки → Конфигурационные файлы → Модули расширения и порты, выберите Слот модема.
В раскрывающемся списке Тип модуля выберите тип установленного модуля.
Нажмите кнопку Сохранить. Контроллер включит нужные для работы модема порты.
 
Для удаления модуля выберите тип Не установлен.
 
После конфигурирования модем включится автоматически и можно переходить к настройке подключения к оператору связи.
 
Например, чтобы узнать модель модема, нужно выполнить команду
<syntaxhighlight lang="bash">
cat /proc/device-tree/wirenboard/gsm/model
</syntaxhighlight>
 
Подробнее о файлах внутри директории можно узнать из таблицы:
{| class="wikitable"
!Файл||Описание
|-
||/proc/device-tree/wirenboard/gsm/model||модель модема
|-
||/proc/device-tree/wirenboard/gsm/type||поддерживаемые сети
|-
||/proc/device-tree/wirenboard/gsm/status||статус модема в системе
|}


== Включение и начало работы ==
== Включение и начало работы ==
[[Image:Modem-settigs.png|300px|thumb|right|Конфигурирование модема в веб-интерфейсе контроллера Wiren Board]]
Чтобы начать работу с модемом, нужно:
#[[SIM_card_installation | Вставьте sim-карту]].
#Подключите антенну.
#Перезапустите модем, выполнив команду
#:<syntaxhighlight lang="bash">
wb-gsm restart_if_broken
</syntaxhighlight>


Чтобы начать работу с модемом, нужно:
После каждой смены sim-карты необходимо перезапускать модем.
#Подключить антенну.
#[[SIM_card_installation | Вставить sim-карту]].
#Добавить модем в конфигурацию контроллера:
#*В веб-интерфейсе перейдите в раздел '''Настройки''' → '''Конфигурационные файлы''' → '''Модули расширения и порты''', выберите '''Слот модема'''.
#*В раскрывающемся списке '''Тип модуля''' выберите тип установленного модуля.
#*Нажмите кнопку '''Сохранить'''. Контроллер включит нужные для работы модема порты.


Для удаления модуля выберите тип '''Не установлен'''.
== Утилита wb-gsm ==


После конфигурирования модем включится автоматически и можно переходить к настройке подключения к оператору связи.
Для упрощения работы с модемами была написана утилита <code>wb-gsm</code>, которая входит в пакет [https://github.com/wirenboard/wb-utils wb-utils].


== Интернет через PPP ==
Утилита <code>wb-gsm</code> входит в состав пакета <code>wb-utils</code>, который предустановлен на все контроллеры Wiren Board.


[[Image:homeui-network-modem-settings.png|300px|thumb|right|Настройка PPP через модем]]
С помощью <code>wb-gsm</code> вы сможете:
* управлять питанием модемов, команды <code>on, off, restart_if_broken</code>;
* настраивать baudrate связи по uart, команды <code>init_baud, set_speed</code>;
* получать imei, команда <code>imei</code>.


ModemManager и NetworkManager позволяют организовать выход в Интернет через PPP.
Все команды wb-gsm можно посмотреть в репозитории на Github по ссылке в начале раздела.


После настройки модема в контроллере создаются два соединения NetworkManager'а:
Пример использования утилиты <code>wb-gsm</code> для получения imei модема, флаг <code>DEBUG=true</code> — выводить отладочную информацию:
# <code>wb-gsm-sim1</code> — параметры соединения при использовании sim-карты в первом слоте;
<syntaxhighlight lang="bash">
# <code>wb-gsm-sim2</code> — во втором слоте.
DEBUG=true wb-gsm imei
</syntaxhighlight>


Контроллер имеет базу APN сотовых операторов. NetworkManager сам определит нужный APN в зависимости от вставленной sim-карты.
== Переключение активной sim-карты ==


Настройки соединений можно изменить либо в веб-интерфейсе конфигурирования контроллера, либо в консоли утилитой [https://networkmanager.dev/docs/api/latest/nmcli.html nmcli].
По умолчанию активна Sim1 —  в каждый момент времени '''только одна sim-карта может быть активной'''.


Настроенное соединение можно активировать из веб-конфигуратора или из консоли утилитой nmcli. Для того чтобы соединение автоматически активировалось при включении контроллера, надо установить галочку <code>Подключаться автоматически</code>.
Переключить модем на другую sim-карту можно с помощью gpio процессора. Узнать его номер можно двумя способами:
*выполнить команду <syntaxhighlight lang="bash">echo $WB_GPIO_GSM_SIMSELECT</syntaxhighlight>
*найти ''SIM Slot Select gpio'' в [[Wiren_Board_6.1:Список_GPIO#Ножки для внутреннего использования|таблице gpio]] контроллера.


== Работа с SMS ==
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0.
{{note|info| В командах используется номер модема, который меняется при каждой инициализации. Узнать фактический номер модема можно запросив информацию командой <code>mmcli -m any</code>. Начиная с релиза wb-2304, модему присваивается тег wbc, и взаимодействовать с ним можно с помощью <code>mmcli -m wbc</code>}}
Подробнее о работе с gpio можно узнать из статьи [[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]].
После настройки модема нужно проверить его работу. Для этого можно отправить тестовое SMS-сообщение. Удобнее это делать из консоли.


Для отправки sms-сообщения надо:
Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]):
# Cоздать его с использованием параметра <code>--messaging-create-sms</code>. mmcli вернёт идентификационный номер sms.
<syntaxhighlight lang="bash">
# Использовать полученный идентификационный номер для отправки командой <code>--send</code>.
AT+CFUN=0
#:<syntaxhighlight lang="console">
AT+CFUN=1
# mmcli -m wbc --messaging-create-sms="text='Test',number='+79999999999'"
Successfully created new SMS: /org/freedesktop/ModemManager1/SMS/10
# mmcli -m wbc -s 10 --send
successfully sent the SMS
</syntaxhighlight>
</syntaxhighlight>


Для отправки SMS-уведомлений в веб-интерфейсе контроллера Wiren Board реализован [[Notification_module#Настройка модуля уведомлений |сервис уведомлений]]. Его можно настроить на отправку SMS, когда какой-либо параметр выходит из нормы.
== Низкоуровневая работа по uart ==


То же самое можно сделать с помощью правил [[Wb-rules | wb-rules]]. Для этого существует специальная функция, которая описана в документации на [https://github.com/wirenboard/wb-rules#%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BE%D0%BF%D0%BE%D0%B2%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D0%B9 GitHub].
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту <code>/dev/ttyGSM</code>. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером <code>cdc_acm</code>).


== Авторизация у оператора связи ==
=== Подключение в linux ===  
Пока нельзя вводить логин/пароль через веб-интерфейс, в консоли это можно сделать так:
 
<syntaxhighlight lang="console">
*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]).
nmcli c modify ИМЯ_СОЕДИНЕНИЯ gsm.username ЛОГИН
 
nmcli c modify ИМЯ_СОЕДИНЕНИЯ gsm.password ПАРОЛЬ
*usb: Порты ''/dev/ttyUSB'''X''''' или ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это <code>/dev/ttyACM0-6</code>, однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <syntaxhighlight lang="bash">wb-gsm restart_if_broken; dmesg | tail</syntaxhighlight>.
 
Примерный вывод команды:
<syntaxhighlight lang="bash">
[ 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
</syntaxhighlight>
</syntaxhighlight>
Соответственно, в данном случае 3G модем подключен к портам <code>/dev/ttyACM0 - /dev/ttyACM6</code>.
=== Отправка AT-команд ===
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]]
{{Wbincludes:GSM Modem Default Connection Parameters}}


== Получение информации о модеме ==
Для работы в интерактивном режиме рекомендуем использовать утилиту [[minicom]]:
(для версий контроллеров с распаянным модемом)
{{Wbincludes:GSM Modem AT Prepare}}
В контроллерах версий 6.3-6.6, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории <code>/proc/device-tree/wirenboard/gsm/</code>.
Модем готов к передаче AT-команд.
 
Чтобы закрыть minicom, нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>.
 
== Работа с sms и ussd ==
 
Работать с sms и ussd проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты <code>gnokii</code>, которую перестали развивать).
 
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.
 
=== Настройка ===
 
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
*Обновить пакет <code>wb-configs</code>. Для этого, нужно выполнить команды <syntaxhighlight lang="bash">apt update && apt install wb-configs</syntaxhighlight>
 
[[File:Gammu-config.png|300px|thumb|right|Настройка gammu вручную (''gammu-config'')]]
*Настроить gammu вручную:
#Выполнить команду <syntaxhighlight lang="bash">gammu-config</syntaxhighlight>
#В параметре <code>Port</code> укажите <code>/dev/ttyXXX</code> — файл модема, соответствующий вашей модели контроллера.  
#В параметре <code>Connection</code> укажите <code>at115200</code>


В контроллерах версии 6.7 модем устанавливается модулем расширения.
=== Примеры команд gammu ===
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]])


Например, чтобы узнать модель модема, нужно выполнить команду
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cat /proc/device-tree/wirenboard/gsm/model
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
$ gammu geteachsms # вывести все SMS
$ gammu getussd '#100#' # запросить баланс на МТС в транслите
$ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом
</syntaxhighlight>
</syntaxhighlight>


Подробнее о файлах внутри директории можно узнать из таблицы:
=== SMS и USSD на русском ===
 
SMS и USSD на русском в ''gammu'' пока работают не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит:
{| class="wikitable"
{| class="wikitable"
!Файл||Описание
!rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS
|-
!транслит||русский||транслит||русский
|-
|МТС||*100*6*2#||*100*6*1#||неизвестно||неизвестно
|-
|-
||/proc/device-tree/wirenboard/gsm/model||модель модема
|Мегафон||*105*0#||*105*9#||неизвестно||неизвестно
|-
|-
||/proc/device-tree/wirenboard/gsm/type||поддерживаемые сети
|Билайн||*111*6*2#||*111*6*1#||неизвестно||неизвестно
|-
|-
||/proc/device-tree/wirenboard/gsm/status||статус модема в системе
|Теле2||*120#||*120*1#||неизвестно||неизвестно
|}
|}


ModemManager позволяет получить информацию о модеме. Сделать это можно с помощью утилиты [https://dyn.manpages.debian.org/bullseye/modemmanager/mmcli.1.en.html mmcli], выполнив команду:
Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8
<syntaxhighlight lang="bash">
 
mmcli -m any
=== SMS-уведомления ===
 
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]».
 
== Интернет через PPP ==
{{YouTube
| link= https://youtu.be/ZbJUwoifbzE
| text= Настройка интернета через PPP с помощью 2G-модема
}}
=== Быстрый выход в интернет ===
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.
 
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек:
#Перезапустите модем:
#:<syntaxhighlight lang="bash">
wb-gsm restart_if_broken
</syntaxhighlight>
#Установите соединение, например, для оператора МТС:
#:<syntaxhighlight lang="bash">
pon mts
</syntaxhighlight>
#:<code>mts</code> можно заменить на <code>megafon</code> или <code>beeline</code> — зависит от вашего оператора связи.
# Если соединение больше не нужно — вы можете его завершить командой:
#:<syntaxhighlight lang="bash">
poff mts
</syntaxhighlight>
 
Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле <code>/etc/ppp/peers/<ваш_провайдер_связи></code> замените устройство <code>/dev/ttyGSM</code> на (в зависимости от модема) <code>/dev/ttyUSB0</code> или <code>/dev/ttyACM0</code>.
 
Например, изменим порт для провайдера МТС:
# Откройте файл <code>/etc/ppp/peers/mts</code>
#:<syntaxhighlight lang="bash">
nano /etc/ppp/peers/mts
</syntaxhighlight>
# Закомментируйте старый порт и добавьте новый:
#:<syntaxhighlight lang="bash">
#/dev/ttyGSM
/dev/ttyUSB0
</syntaxhighlight>
</syntaxhighlight>
#:порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
# {{Wbincludes:Save nano}}
Порты <code>/dev/ttyUSB0</code>,<code>/dev/ttyUSB1</code>,<code>/dev/ttyUSB2</code> появляются автоматически после включения модема командой <code>wb-gsm on</code>.


[[Image:modem-info.png|500px|Информация о модеме от ModemManager]]
=== Автоматический запуск подключения ===
[[Image:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]


Начиная с релиза wb-2304, модему присваивается тег "wbc", и обращаться к нему можно с помощью
Чтобы подключение запускалось автоматически:
<syntaxhighlight lang="bash">
#Откройте файл <code>/etc/network/interfaces</code> для редактирования:
mmcli -m wbc
#:<syntaxhighlight lang="bash">
nano /etc/network/interfaces
</syntaxhighlight>
#Раскомментируйте или отредактируйте следующие строки:
#:<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>ppp0</code> командой:
#:<syntaxhighlight lang="bash">
ifup ppp0
</syntaxhighlight>
</syntaxhighlight>
#:через 10­-15 секунд интерфейс <code>ppp0</code> будет доступен.
# Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.


== Сервис wb-gsm ==
Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории <code>/etc/chatscripts</code>. В большинстве случаев ничего менять в этих файлах не придется.


Сервис <code>wb-gsm</code> предназначен для управления питанием модема, он входит в пакет [https://github.com/wirenboard/wb-utils wb-utils].
Для 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].


Питание подаётся на модем при старте сервиса и отключается при остановке.
=== Резервирование канала связи ===


Сервис автоматически запускается при старте контроллера, если модем выбран в настройках модулей расширения.
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].


Управлять работой сервиса можно через команды <code>systemctl</code>. Например, для остановки надо выполнить <syntaxhighlight lang="bash">systemctl stop wb-gsm</syntaxhighlight>
== Интернет с 4G-модемом (LTE) ==
{{YouTube
| link= https://youtu.be/vWNwxB7Lino
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2
}}


== Переключение активной sim-карты ==
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]]
[[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]]
=== Настройка модема как сетевой карты ===
В отличие от 2G- и 3G-модулей, [[WBC-4G]] поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.
 
'''Настройка с помощью minicom''':
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]].
{{Wbincludes:GSM Modem AT Prepare}}
# Отправьте из терминала minicom AT-команды для модема:
#* Настроить автоматическое подключение: <code>AT+DIALMODE=0</code>.
#* Установить APN: <code>AT+CGDCONT=1,"IP","xxx"</code>, где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так: <code>internet.mts.ru</code>.
#* Проверить получение IP адреса: <code>AT+CGCONTRDP</code>.
# Закройте minicom, для этого нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>.


По умолчанию активна Sim1 —  в каждый момент времени '''только одна sim-карта может быть активной'''.
После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту.


Для переключения sim-карты используется <code>mmcli</code> с параметром <code>--set-primary-sim-slot</code>. Например:
'''Настройка с помощью chat''':
<syntaxhighlight lang="console">
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]].
# mmcli -m wbc --set-primary-sim-slot=2
# Подключитесь к контроллеру по [[SSH]].
successfully requested primary SIM switch in modem
# Перезапустите модем командой:
#: <syntaxhighlight lang="bash">
wb-gsm restart_if_broken
</syntaxhighlight>
# Замените в строке ниже APN_INTERNET на точку подключения вашего провайдера, вставьте изменённую строку консоль контроллера и нажмите на клавиатуре <kbd>Enter</kbd>:
#: <syntaxhighlight lang="bash">
PORT=/dev/ttyGSM; /usr/sbin/chat -s TIMEOUT 20 ABORT "ERROR" ECHO ON "" "AAAAAAAAAAAAAT" OK "AT+CMGF=1" OK "AT+DIALMODE=0" OK "AT+CGDCONT=1,\"IP\",\"APN_INTERNET\"" OK  "AT+CGCONTRDP" "OK"  > $PORT < $PORT
</syntaxhighlight>
</syntaxhighlight>


ModemManager выполнит переключение sim-карты и переинициализирует модем.
Этот способ можно использовать при написании скриптов.


== Низкоуровневая работа по uart ==
=== Настройка виртуальной сетевой карты ===
==== Включение ====
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
# Откройте файл <code>/etc/network/interfaces</code>:
#:<syntaxhighlight lang="bash">
nano /etc/network/interfaces
</syntaxhighlight>
# Добавьте в него строки:
#:<syntaxhighlight lang="bash">
auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
  pre-up sleep 8
  pre-up wb-gsm restart_if_broken 
  pre-up sleep 10
</syntaxhighlight>
#: автоматически запустить модем, интерфейс и получать IP-адрес. Задержки ''pre-up sleep'' перед и после включения модема нужны для надёжного старта.
# Сохраните и закройте файл <code>interfaces</code>. {{Wbincludes:Save nano}}
# Запустите интерфейс командой:
#:<syntaxhighlight lang="bash">
ifup usb0
</syntaxhighlight>


Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема.
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.


Если необходимо отправлять команды модему, нужно остановить сервис ModemManager: <code>systemctl stop ModemManager</code>. После этого можно работать с портом как описано [[Modem-stretch#Низкоуровневая_работа_по_uart | здесь]].
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду:
 
<syntaxhighlight lang="bash">
Если необходимо отправлять команды при активном ModemManager, его надо перезапустить с параметром <code>--debug</code> и использовать mmcli для отправки команд:
AT+USBNETIP=0,100,111
<syntaxhighlight lang="console">
</syntaxhighlight>
# mmcli -m wbc --command=AT+CGMM
Команда имеет следующий синтаксис:
response: ''A7600E-HNVW'
<syntaxhighlight lang="bash">
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
</syntaxhighlight>
</syntaxhighlight>


==Диагностика==
{| border="1" class="wikitable" style="text-align:left"
Процесс установки соединения в общем случае проходит в несколько этапов.
|-
* включение модема
|<mode> ||
* регистрация в сотовой сети, домашней или роуминговой
0 – частный IP-адрес (по умолчанию, 192.168.0.xxx и т. д.) </br>
* установка ppp соединения
1 – Публичный IP (ip из сети). Вступает в силу после перезагрузки модема.
|-
|<tpos> || Третья позиция IP-адреса
|-
|<dhcps> || Начальное значение DHCP
|-
|<dhcpe> || Конечное значение DHCP
|}


Для наблюдения можно использовать [[journalctl]]
'''Предупреждение!''' Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой
<syntaxhighlight lang="console">
<syntaxhighlight lang="bash">
# journalctl -u ModemManager -f
AT+USBNETIP?
</syntaxhighlight>
</syntaxhighlight>
Функция поддерживается, если получен ответ
<syntaxhighlight lang="bash">
+USBNETIP: mode


Нормальный (Успешный) процесс установки соединения выглядит так:
OK
<syntaxhighlight lang="console">
Oct 03 07:02:01 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] state changed (disconnecting -> registered)
Oct 03 07:02:08 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] mobile equipment request to activate context (cid 9)
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect started...
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (6/10): register
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (7/10): wait to get packet service state attached
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (8/10): bearer
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (9/10): connect
Oct 03 07:02:18 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] state changed (registered -> connecting)
Oct 03 07:02:19 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] state changed (connecting -> connected)
Oct 03 07:02:19 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (10/10): all done
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect started...
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (6/10): register
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (7/10): wait to get packet service state attached
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (8/10): bearer
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (9/10): connect
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] simple connect state (10/10): all done
Oct 03 07:02:22 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] mobile equipment request to activate context (cid 9)
Oct 03 07:02:33 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] state changed (connected -> disconnecting)
Oct 03 07:02:34 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] mobile equipment request to deactivate context (cid 9)
Oct 03 07:02:34 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0/bearer0] explicitly disconnected
Oct 03 07:02:34 wirenboard-AWI3MCGC ModemManager[388]: <info>  [modem0] state changed (disconnecting -> registered)
</syntaxhighlight>
</syntaxhighlight>


Тут этап регистрации в сети оператора отображается
==== Отключение ====
<syntaxhighlight lang="console">
# Остановите интерфейс командой:
simple connect state (6/10): register
#:<syntaxhighlight lang="bash">
ifdown usb0
</syntaxhighlight>
# Откройте файл <code>/etc/network/interfaces</code>:
#:<syntaxhighlight lang="bash">
nano /etc/network/interfaces
</syntaxhighlight>
</syntaxhighlight>
Если выглядит так:  
# Закомментируйте или удалите строки:
<syntaxhighlight lang="console">
#:<syntaxhighlight lang="bash">
Nov 07 10:01:16 wirenboard-AWI3MCGC ModemManager[371]: <info>  [modem1] simple connect state (6/10): register
#auto usb0
Nov 07 10:01:17 wirenboard-AWI3MCGC ModemManager[371]: <info> [modem1] 3GPP registration state changed (idle -> denied)
#allow-hotplug usb0
Nov 07 10:01:17 wirenboard-AWI3MCGC ModemManager[371]: <info> [modem1] 3GPP registration state changed (denied -> idle)
#iface usb0 inet dhcp
Nov 07 10:01:17 wirenboard-AWI3MCGC ModemManager[371]: <info> [modem1] 3GPP registration state changed (idle -> denied)
# pre-up sleep 8
Nov 07 10:01:17 wirenboard-AWI3MCGC ModemManager[371]: <info> [modem1] 3GPP registration state changed (denied -> idle)
# pre-up wb-gsm restart_if_broken  
# pre-up sleep 10
</syntaxhighlight>
</syntaxhighlight>
то оператор явно отказывает SIM в регистрации в домашней сети. Причины (необслуживаемая карта, etc.) целесообразно выяснить у поддержки провайдера.
# Сохраните и закройте файл <code>interfaces</code>. {{Wbincludes:Save nano}}


<syntaxhighlight lang="console">
==Мультиплексирование==
</syntaxhighlight>
 
Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом.
Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.


==Документация на модемы==
==Документация на модемы==
Строка 189: Строка 378:
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
|-
|-
|SIM800||2G||[[File: SIM800_SPEC.pdf]]||[[File: SIM800_HW_Design.pdf]]||[[File: SIM800_AT_commands.pdf]]  
|SIM800||2G||[http://www.mt-system.ru/sites/default/files/documents/sim800_spec_20140423.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim800_hardware_design_v1.10.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim800_series_at_command_manual_v1.12.pdf pdf]  
|-
|-
|SIM5300E||2G/3G||[[File: SIM5300E_SPEC.pdf]]||[[File: SIM5300E_HW_Design.pdf]]||[[File: SIM5300E_AT_commands.pdf]]
|SIM5300E||2G/3G||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_spec_v1611_rus_0.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_hardware_design_v1.09.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_at_command_manual_v1.01.pdf pdf]
|-
|-
|SIM7000E||2G/NB-IOT||[[File: SIM7000E_SPEC.pdf]]||[[File: SIM7000E_HW_Design.pdf]]||[[File: SIM7000E_AT_commands.pdf]]
|SIM7000E||2G/NB-IOT||[http://www.mt-system.ru/sites/default/files/documents/sim7000e_spec_v1706_rus.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim7000_hardware_design_v1.07.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim7000_series_at_command_manual_v1.06.pdf pdf]
|-
|-
|7600E||2G/3G/4G
|7600E||2G/3G/4G
Строка 199: Строка 388:
|}
|}


== Полезные ссылки ==
== GPRS на модемах SIM7000E 2G/NB-IoT ==
[https://support.wirenboard.com/t/zvonki-na-nomera-pri-pomoshhi-modemov-wirenboard-chast-3/17034/3 Звонки на номера с помощью модема (от SetPoint)]


[https://support.wirenboard.com/t/ne-ponyatno-chem-zanimaetsya-wb-connection-manager/16645/15 получение SMS]
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS).
Для того, чтобы модем смог зарегистрироваться в сети GSM, необходимо принудительно перевести его в режим GSM only.
 
В терминальном режиме работы с модемом, например, в программе minicom (смотрите раздел [[GSM/GPRS#Отправка AT-команд|Отправка AT-команд]]), введите команду выбора режима:
<syntaxhighlight lang="bash">
AT+CNMP=13
</syntaxhighlight>
 
Возможные варианты значений (команда <code>AT+CNMP=?</code>):
*<code>2</code> — Automatic,
*<code>13</code> — GSM Only,
*<code>38</code> — LTE Only,
*<code>51</code> — GSM And LTE Only.
 
Установить режим нужно один раз — он запоминается и активен даже после отключения питания.
 
Чтобы вернуться в режим IoT, выполните команду: 
<syntaxhighlight lang="bash">
AT+CNMP=51
</syntaxhighlight>

Версия 10:51, 29 марта 2023

Общая информация

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

С помощью модемов можно:

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

Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе Переключение активной sim-карты.

Включение и отключение модема рекомендуем делать с помощью утилиты wb-gsm.

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

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

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

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

В веб-интерфейсе перейдите в раздел Настройки → Конфигурационные файлы → Модули расширения и порты, выберите Слот модема. В раскрывающемся списке Тип модуля выберите тип установленного модуля. Нажмите кнопку Сохранить. Контроллер включит нужные для работы модема порты.

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

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

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

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 статус модема в системе

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

Чтобы начать работу с модемом, нужно:

  1. Вставьте sim-карту.
  2. Подключите антенну.
  3. Перезапустите модем, выполнив команду
    wb-gsm restart_if_broken
    

После каждой смены sim-карты необходимо перезапускать модем.

Утилита wb-gsm

Для упрощения работы с модемами была написана утилита wb-gsm, которая входит в пакет wb-utils.

Утилита wb-gsm входит в состав пакета wb-utils, который предустановлен на все контроллеры Wiren Board.

С помощью wb-gsm вы сможете:

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

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

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

DEBUG=true wb-gsm imei

Переключение активной 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/ttyUSBX или /dev/ttyACMX (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это /dev/ttyACM0-6, однако точно определить, к каким портам модем подключен по USB можно, выполнив команды:
    wb-gsm restart_if_broken; 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-команд

Отправка AT-комманд для модема в терминале программы minicom


Параметры соединения по умолчанию
Значение Параметр Описание
Auto-bauding Baud rate Скорость, бит/с. В настройках программы подключения установите 115200.
После подключения — отправьте модему AAAAAAAT и он определит скорость автоматически.
8 Data bits Количество битов данных
None Parity Бит чётности
1 Stop bits Количество стоповых битов
Off Hardware flow control Аппаратный контроль потока
Off Software flow control Программный контроль потока


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

  1. Подключитесь к контроллеру по SSH.
  2. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  3. Подключитесь к модему через minicom:
    minicom -D /dev/ttyGSM -b 115200 -8 -a off
    
    о параметрах командной строки читайте в статье о minicom.
  4. Введите команду AAAAAAAAAT — с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответит OK.

Модем готов к передаче AT-команд.

Чтобы закрыть minicom, нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.

Работа с 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

Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел Интернет через PPP)

$ 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

Настройка интернета через PPP с помощью 2G-модема

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

Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.

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

  1. Перезапустите модем:
    wb-gsm restart_if_broken
    
  2. Установите соединение, например, для оператора МТС:
    pon mts
    
    mts можно заменить на megafon или beeline — зависит от вашего оператора связи.
  3. Если соединение больше не нужно — вы можете его завершить командой:
    poff mts
    

Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле /etc/ppp/peers/<ваш_провайдер_связи> замените устройство /dev/ttyGSM на (в зависимости от модема) /dev/ttyUSB0 или /dev/ttyACM0.

Например, изменим порт для провайдера МТС:

  1. Откройте файл /etc/ppp/peers/mts
    nano /etc/ppp/peers/mts
    
  2. Закомментируйте старый порт и добавьте новый:
    #/dev/ttyGSM
    /dev/ttyUSB0
    
    порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
  3. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.

Порты /dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2 появляются автоматически после включения модема командой wb-gsm on.

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

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

Чтобы подключение запускалось автоматически:

  1. Откройте файл /etc/network/interfaces для редактирования:
    nano /etc/network/interfaces
    
  2. Раскомментируйте или отредактируйте следующие строки:
    auto ppp0
    iface ppp0 inet ppp
      provider mts # можно заменить mts на megafon или beeline
      #перезапускаем модем, если он завис
      pre-up wb-gsm restart_if_broken  
      #Ждем, пока он загрузится и найдет сеть.
      pre-up sleep 10
    
  3. Сохраните изменения и закройте файл.
  4. Теперь запустите интерфейс ppp0 командой:
    ifup ppp0
    
    через 10­-15 секунд интерфейс ppp0 будет доступен.
  5. Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.

Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /etc/chatscripts. В большинстве случаев ничего менять в этих файлах не придется.

Для ppp-интерфейсов существуют директории, исполняемые файлы из которых также запускаются на разных фазах установления соединения. Но, если, например, для ethernet-интерфейсов эти скрипты должны находиться в директориях /etc/network/if-down.d, if-post-down.d, if-pre-up.d, if-up.d, то соответствующие директории для ppp-интерфейсов находятся в /etc/ppp/ip-down.d, ip-up.d и т.п. Подробнее об их назначении и функционировании можно узнать в документе PPP HOWTO.

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

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

Интернет с 4G-модемом (LTE)

Настройка модема WBC-4G на контроллере Wiren Board 6.7.2
Отправка AT-комманд для модема в терминале программы minicom
Выход из программы minicom

Настройка модема как сетевой карты

В отличие от 2G- и 3G-модулей, WBC-4G поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.

Настройка с помощью minicom:

  1. Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
  2. Подключитесь к контроллеру по SSH.
  3. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  4. Подключитесь к модему через minicom:
    minicom -D /dev/ttyGSM -b 115200 -8 -a off
    
    о параметрах командной строки читайте в статье о minicom.
  5. Введите команду AAAAAAAAAT — с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответит OK.
  6. Отправьте из терминала minicom AT-команды для модема:
    • Настроить автоматическое подключение: AT+DIALMODE=0.
    • Установить APN: AT+CGDCONT=1,"IP","xxx", где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так: internet.mts.ru.
    • Проверить получение IP адреса: AT+CGCONTRDP.
  7. Закройте minicom, для этого нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.

После этого интернет будет доступен через интерфейс usb0, который можно настроить как обычную сетевую карту.

Настройка с помощью chat:

  1. Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
  2. Подключитесь к контроллеру по SSH.
  3. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  4. Замените в строке ниже APN_INTERNET на точку подключения вашего провайдера, вставьте изменённую строку консоль контроллера и нажмите на клавиатуре Enter:
    PORT=/dev/ttyGSM; /usr/sbin/chat -s TIMEOUT 20 ABORT "ERROR" ECHO ON "" "AAAAAAAAAAAAAT" OK "AT+CMGF=1" OK "AT+DIALMODE=0" OK "AT+CGDCONT=1,\"IP\",\"APN_INTERNET\"" OK  "AT+CGCONTRDP" "OK"  > $PORT < $PORT
    

Этот способ можно использовать при написании скриптов.

Настройка виртуальной сетевой карты

Включение

После того как мы настроили модем, нужно настроить виртуальную сетевую карту:

  1. Откройте файл /etc/network/interfaces:
    nano /etc/network/interfaces
    
  2. Добавьте в него строки:
    auto usb0
    allow-hotplug usb0
    iface usb0 inet dhcp
      pre-up sleep 8
      pre-up wb-gsm restart_if_broken  
      pre-up sleep 10
    
    автоматически запустить модем, интерфейс и получать IP-адрес. Задержки pre-up sleep перед и после включения модема нужны для надёжного старта.
  3. Сохраните и закройте файл interfaces. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.
  4. Запустите интерфейс командой:
    ifup usb0
    

Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети 192.168.0.1, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.

При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети 192.168.0.ххх, а, например, 192.168.100.ххх. Для этого нужно выполнить AT-команду:

AT+USBNETIP=0,100,111

Команда имеет следующий синтаксис:

AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
<mode>

0 – частный IP-адрес (по умолчанию, 192.168.0.xxx и т. д.)
1 – Публичный IP (ip из сети). Вступает в силу после перезагрузки модема.

<tpos> Третья позиция IP-адреса
<dhcps> Начальное значение DHCP
<dhcpe> Конечное значение DHCP

Предупреждение! Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой

AT+USBNETIP?

Функция поддерживается, если получен ответ

+USBNETIP: mode

OK

Отключение

  1. Остановите интерфейс командой:
    ifdown usb0
    
  2. Откройте файл /etc/network/interfaces:
    nano /etc/network/interfaces
    
  3. Закомментируйте или удалите строки:
    #auto usb0
    #allow-hotplug usb0
    #iface usb0 inet dhcp
    #  pre-up sleep 8
    #  pre-up wb-gsm restart_if_broken  
    #  pre-up sleep 10
    
  4. Сохраните и закройте файл interfaces. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.

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

Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию 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