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

Материал из Wiren Board
м
 
(не показано 128 промежуточных версий 9 участников)
Строка 1: Строка 1:
<languages/>
{{DISPLAYTITLE: Настройка 2G/3G/NB-IOT модемов в контроллере Wiren Board, а также 4G-модемов на Debian Stretch }}
<translate>
== Общая информация ==
<!--T:1-->
{{note|info|Эта статья описывает настройку 2G/3G/NB-IOT модемов в контроллерах Wiren Board 5...7, а также 4G(LTE)-модема в релизе [[wb-2207]] и старее. Для настройки 4G(LTE)-модема в релизе [[wb-2304]] и новее, используйте эту [[Modem-bullseye|инструкцию]].}}
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации.  
* отправлять/принимать SMS
* подключаться к интернету по GPRS
Полный список возможностей смотрите в  описании модуля:
* 3G модем в Wiren Board 5 и Wiren Board 6: [[Special:MyLanguage/SIM5300E|SIM5300E]];
* 2G модем в Wiren Board 4, 5 и 6 : SIM800 или [[Special:MyLanguage/M660A|M660A]];
* Wiren Board Smart Home 3.5,  Wiren Board 4: [[Special:MyLanguage/SIM900R|SIM900R]].


С помощью модемов можно:
* [[#Работа с sms и ussd | отправлять и принимать SMS]],
* подключаться к интернету по [[#Интернет через PPP|протоколу PPP]] для 2G- и 3G-модемов, а также настраивать 4G-модем как [[#Интернет с 4G-модемом (LTE)|сетевую карту]] с выходом в интернет.


== Начало работы == <!--T:2-->
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G.
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]].


<!--T:3-->
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]].  
Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты '''wb-gsm''' (смотрите ниже).


== Модем в Linux == <!--T:4-->
Включение и отключение модема рекомендуем делать с помощью утилиты [[#Утилита wb-gsm|wb-gsm]].


<!--T:5-->
== Получение информации о модеме ==
Внутри контроллера модем подключён к процессору одним из двух способов:
* по порту UART (устройство ''/dev/ttyGSM'' (ранее: ''/dev/ttyAPP0'')) - все модемы, включая 3G;
* по порту USB (устройства ''/dev/ttyACM0''-''/dev/ttyACM6'') - только 3G.
Работать с модемом на низком уровне можно, посылая команды на порт ''/dev/ttyGSM'' или ''/dev/ttyACM0'' соответственно.
Для 3G-связи порт UART не подходит в силу ограничения пропускной способности UАRT-канала, следует использовать ACM-порт /dev/ttyACM0.


<!--T:6-->
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории <code>/proc/device-tree/wirenboard/gsm/</code>.
Также к процессору подключены управляющие пины модема PWRKEY и RESET, с помощью которых можно выключить или перезагрузить модем. Обычно работать с ними напрямую не требуется - перезагрузка производится утилитой '''wb-gsm''' (смотрите ниже), но также реализован прямой доступ к этим контактам через GPIO (подробнее читайте [[Special:MyLanguage/GPIO|GPIO]], ищите в таблице соответствующие названия).


В контроллерах версии 6.7 модем устанавливается модулем расширения.
{{Wbincludes:Configuration WBC}}


=== Включение модуля === <!--T: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||статус модема в системе
|}
 
== Включение и начало работы ==
Чтобы начать работу с модемом, нужно:
#[[SIM_card_installation | Вставьте sim-карту]].
#Подключите антенну.
#Перезапустите модем, выполнив команду
#:<syntaxhighlight lang="bash">
wb-gsm restart_if_broken
</syntaxhighlight>
 
После каждой смены sim-карты необходимо перезапускать модем.
 
== Утилита wb-gsm ==
 
Для упрощения работы с модемами была написана утилита <code>wb-gsm</code>, которая входит в пакет [https://github.com/wirenboard/wb-utils wb-utils].
 
Утилита <code>wb-gsm</code> входит в состав пакета <code>wb-utils</code>, который предустановлен на все контроллеры Wiren Board.
 
С помощью <code>wb-gsm</code> вы сможете:
* управлять питанием модемов, команды <code>on, off, restart_if_broken</code>;
* настраивать baudrate связи по uart, команды <code>init_baud, set_speed</code>;
* получать imei, команда <code>imei</code>.
 
Все команды wb-gsm можно посмотреть в репозитории на Github по ссылке в начале раздела.
 
Пример использования утилиты <code>wb-gsm</code> для получения imei модема, флаг <code>DEBUG=true</code> — выводить отладочную информацию:
<syntaxhighlight lang="bash">
DEBUG=true wb-gsm imei
</syntaxhighlight>
 
== Переключение активной sim-карты ==
 
По умолчанию активна Sim1 —  в каждый момент времени '''только одна sim-карта может быть активной'''.
 
Переключить модем на другую sim-карту можно с помощью gpio процессора. Узнать его номер можно двумя способами:
*выполнить команду <syntaxhighlight lang="bash">echo $WB_GPIO_GSM_SIMSELECT</syntaxhighlight>
*найти ''SIM Slot Select gpio'' в [[Wiren_Board_6.1:Список_GPIO#Ножки для внутреннего использования|таблице gpio]] контроллера.
 
По умолчанию, этот 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]].
 
Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]):
<syntaxhighlight lang="bash">
AT+CFUN=0
AT+CFUN=1
</syntaxhighlight>
 
== Низкоуровневая работа по uart ==
 
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту <code>/dev/ttyGSM</code>. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером <code>cdc_acm</code>).
 
=== Подключение в linux ===


<!--T:8-->
*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]).
По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой '''wb-gsm''' (утилита включена в стандартный образ в пакет '''wb-utils''').
 
*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">
<syntaxhighlight lang="bash">
$ wb-gsm on #  включение устройства
[ 6102.978383] usb 2-1.2: New USB device found, idVendor=1e0e, idProduct=0020
$ wb-gsm off #  выключение устройства
[ 6102.985653] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
$ wb-gsm reset #  перезагрузка включенного устройства
[ 6102.993108] usb 2-1.2: Product: SIMCOM_PRODUCT
$ wb-gsm restart_if_broken #  включение или перезагрузка, если модем не отвечает
[ 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]]]]


=== Модемы SIM7000E 2G/NB-IoT === <!--T:9-->
{{Wbincludes:GSM Modem Default Connection Parameters}}


<!--T:10-->
Для работы в интерактивном режиме рекомендуем использовать утилиту [[minicom]]:
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS).
{{Wbincludes:GSM Modem AT Prepare}}
Для того, чтобы модем смог зарегистрироватся в сети GSM, необходимо принудительно перевести его в режим GSM only.
Модем готов к передаче AT-команд.


<!--T:11-->
Чтобы закрыть minicom, нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>.
В терминальном режиме работы с модемом, например, в программе minicom (смотрите ниже раздел [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]]), необходимо ввести команду выбора режима:
<pre>
AT+CNMP=13
</pre>


<!--T:12-->
== Работа с sms и ussd ==
Возможные варианты значений (команда <code>AT+CNMP=?</code>):
2-Automatic,13-GSM Only,38-LTE Only,51-GSM And LTE Only


<!--T:13-->
Работать с sms и ussd проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты <code>gnokii</code>, которую перестали развивать).
Режим запоминается и активен и после отключения питания, установить режим нужно один раз.


<!--T:14-->
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.
Чтобы вернуться в режим IoT, выполните команду: 
<pre>
AT+CNMP=51
</pre>


=== Настройка ===


===Отправка и получение SMS и USSD=== <!--T:15-->
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
*Обновить пакет <code>wb-configs</code>. Для этого, нужно выполнить команды <syntaxhighlight lang="bash">apt update && apt install wb-configs</syntaxhighlight>


<!--T:16-->
[[File:Gammu-config.png|300px|thumb|right|Настройка gammu вручную (''gammu-config'')]]
[[File:Gammu-config.png|300px|thumb|right|''gammu-config'']]
*Настроить gammu вручную:
Работать с SMS проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты '''gnokii''', которую перестали развивать).
#Выполнить команду <syntaxhighlight lang="bash">gammu-config</syntaxhighlight>
#В параметре <code>Port</code> укажите <code>/dev/ttyXXX</code> — файл модема, соответствующий вашей модели контроллера.  
#В параметре <code>Connection</code> укажите <code>at115200</code>


<!--T:17-->
=== Примеры команд gammu ===
(ниже дана краткая инструкция, полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта])
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]])


<!--T:18-->
#Создайте файл конфигурации, запустив ''gammu-config''
##В параметре ''Port'' укажите ''/dev/ttyGSM''
##В параметре ''Connection'' укажите ''at115200''
#Примеры команд:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
Строка 88: Строка 149:
</syntaxhighlight>
</syntaxhighlight>


====SMS и USSD на русском==== <!--T:19-->
=== SMS и USSD на русском ===


<!--T:20-->
SMS и USSD на русском в ''gammu'' пока работают не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит:
SMS и USSD на русском пока работают в ''gammu'' не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит:
{| class="wikitable"
{| class="wikitable"
!rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS
!rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS
Строка 106: Строка 166:
|}
|}


Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8


===Выход в интернет=== <!--T:21-->
=== SMS-уведомления ===
 
<!--T:22-->
Перед выходом в интернет необходимо, чтобы модем был включен. Для этого вручную или в файле настройке сетевых интерфейсов (см. далее) выполните команду <pre>wb-gsm restart_if_broken</pre>


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


==== Быстрая настройка автоматического выхода в интернет ==== <!--T:23-->
== Интернет через PPP ==
{{YouTube
| link= https://youtu.be/ZbJUwoifbzE
| text= Настройка интернета через PPP с помощью 2G-модема
}}
=== Быстрый выход в интернет ===
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.


<!--T:24-->
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек:
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду
#Перезапустите модем:
<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
pon mts # можно заменить mts на megafon или beeline
wb-gsm restart_if_broken
</syntaxhighlight>
</syntaxhighlight>
Чтобы отключить подключение, выполните
#Установите соединение, например, для оператора МТС:
<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
poff mts # можно заменить mts на megafon или beeline
pon mts
</syntaxhighlight>
</syntaxhighlight>
[[File:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
#:<code>mts</code> можно заменить на <code>megafon</code> или <code>beeline</code> — зависит от вашего оператора связи.
Чтобы подключение запускалось автоматически, откройте файл ''/etc/network/interfaces'' и раскомментируйте/отредактируйте следующие строки:
# Если соединение больше не нужно — вы можете его завершить командой:
<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
auto ppp0
poff mts
iface ppp0 inet ppp
  provider mts # можно заменить mts на megafon или beeline
</syntaxhighlight>
</syntaxhighlight>
Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.


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


==== Пошаговая инструкция настройки постоянного GPRS-подключения ==== <!--T:25-->
Например, изменим порт для провайдера МТС:
 
# Откройте файл <code>/etc/ppp/peers/mts</code>
<!--T:26-->
#:<syntaxhighlight lang="bash">
* Подсоедините антенну к разъему GSM
nano /etc/ppp/peers/mts
* СИМ-карту в слот micro SIM 1
* Включите модем командой wb-gsm restart_if_broken
* Если ваш контроллер укомплектован 3G-модемом, в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code>
* В файле <code>/etc/networks/interfaces</code> закомментируйте раздел, связанный с <code>ppp0</code> и добавьте следующие строки:
<pre>
auto ppp0
iface ppp0 inet ppp
provider mts
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken 
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
</pre>
* Выполните команду <code>ifup ppp0</code> — через 15 секунд интерфейс ppp0 будет доступен.
*После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи.
 
 
==== Полная инструкция ==== <!--T:27-->
 
<!--T:28-->
Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса [https://linux.die.net/man/8/pppd pppd].
Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в [https://github.com/contactless/wirenboard/tree/master/configs/configs/etc/ppp стандартном образе]. Файлы хранятся в директориях /etc/ppp/peers и /etc/chatscripts. Для других операторов или специальных APN создайте свои конфигурационные файлы на основе стандартных. Для этого при помощи утилиты '''pppconfig''' (устанавливается командой '''apt-get install pppconfig''') создайте конфигурационный файл подключения с параметрами для вашего оператора (например, [http://www.corp.mts.ru/help/corp_settings/gprs_edge/win_xp/ МТС]). Также можете ориентироваться на [https://help.ubuntu.com/community/DialupModemHowto/SetUpDialer#Alternative_Way_2_.28using_pppconfig_.26_pon.2Fpoff.29 инструкцию]. Обратите внимание на настройки ''115200 nocrtsct'', которые должны присутствовать в конфигурационных файлах.
 
<!--T:29-->
Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема:
 
<!--T:30-->
[[Файл:GSM-ACM.png|Файл:GSM-ACM.png]]
 
<!--T:31-->
После создания конфигурационного файла запустите подключение, выполнив
<syntaxhighlight lang="bash">
pon название_подключения
</syntaxhighlight>
</syntaxhighlight>
или отредактировав файл ''/etc/network/interfaces'', как описано выше.
# Закомментируйте старый порт и добавьте новый:
 
#:<syntaxhighlight lang="bash">
<!--T:32-->
#/dev/ttyGSM
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
/dev/ttyUSB0
<syntaxhighlight lang="bash">
persist
maxfail 0
</syntaxhighlight>
</syntaxhighlight>
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.
#:порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
# {{Wbincludes:Save nano}}


<!--T:33-->
Порты <code>/dev/ttyUSB0</code>,<code>/dev/ttyUSB1</code>,<code>/dev/ttyUSB2</code> появляются автоматически после включения модема командой <code>wb-gsm on</code>.
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''.
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.


<!--T:34-->
=== Автоматический запуск подключения ===
В файле /etc/network/interfaces для настройки ppp можно использовать стандартные iface-опции pre-up, up, post-up, down, pre-down, post-down. Они задают команды, которые будут выполняться на различных фазах инициализации/деинициализации интерфейса. Подробно особенности их функционирования описаны в [http://manpages.ubuntu.com/manpages/trusty/man5/interfaces.5.html man interfaces] в разделе IFACE OPTIONS.
[[Image:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]


<!--T:35-->
Чтобы подключение запускалось автоматически:
Мы же приведем здесь в качестве примера параметры, которые '''мы рекомендуем''' использовать при настройке ppp-соединения с мобильными интернет-провайдерами.
#Откройте файл <code>/etc/network/interfaces</code> для редактирования:
<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
 
nano /etc/network/interfaces
<!--T:36-->
</syntaxhighlight>
#Раскомментируйте или отредактируйте следующие строки:
#:<syntaxhighlight lang="bash">
auto ppp0
auto ppp0
iface ppp0 inet ppp
iface ppp0 inet ppp
provider mts
  provider mts # можно заменить mts на megafon или beeline
#рестартуем модем, если он завис
  #перезапускаем модем, если он завис
pre-up wb-gsm restart_if_broken   
  pre-up wb-gsm restart_if_broken   
#Затем ждем, пока он загрузится и найдет сеть.
  #Ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
  pre-up sleep 10
</syntaxhighlight>
</syntaxhighlight>
# Сохраните изменения и закройте файл.
# Теперь запустите интерфейс <code>ppp0</code> командой:
#:<syntaxhighlight lang="bash">
ifup ppp0
</syntaxhighlight>
#:через 10­-15 секунд интерфейс <code>ppp0</code> будет доступен.
# Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.


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


<!--T:37-->
Для 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].
Для 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 и т.п (подробнее об их назначении и функционировании можно узнать в документе [http://citforum.ru/operating_systems/linux/HOWTO/PPP-HOWTO.shtml PPP HOWTO]).


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


====Настройки DNS и маршрутизации==== <!--T:38-->
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].


<!--T:39-->
== Интернет с 4G-модемом (LTE) ==
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.  
{{YouTube
| link= https://youtu.be/vWNwxB7Lino
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2
}}


<!--T:40-->
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]]
Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих  интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.  
[[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]]
=== Настройка модема как сетевой карты ===
В отличие от 2G- и 3G-модулей, [[WBC-4G]] поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.


<!--T:41-->
'''Настройка с помощью minicom''':
В качестве дополнительной меры повышения надежности при наличии двух соединений можно предложить использование DNS-серверов, не зависящих от провайдера, например GoogleDNS (8.8.8.8, 8.8.4.4) и OpenDNS (208.67.222.222, 208.67.220.220). Очень часто эти сервера используются для определения работоспособности сетевого канала по определенному интерфейсу (ping -c5 -I eth0 8.8.8.8 или ping -c5 -I ppp0 8.8.4.4).
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[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>.


<!--T:42-->
После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту.
Обратите внимание, что при деинициализации ppp0 интерфейса все созданные маршруты, связанные с ним, будут автоматически удалены.


'''Настройка с помощью chat''':
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]].
# Подключитесь к контроллеру по [[SSH]].
# Перезапустите модем командой:
#: <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>


==== Использование GPRS в качестве резервного канала ==== <!--T:43-->
Этот способ можно использовать при написании скриптов.


<!--T:44-->
=== Настройка виртуальной сетевой карты ===
Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например:
==== Включение ====
для интерфейса eth0 указать метрику 10:
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
    auto eth0
# Откройте файл <code>/etc/network/interfaces</code>:
    iface eth0 inet dhcp
#:<syntaxhighlight lang="bash">
    pre-up wb-set-mac
nano /etc/network/interfaces
    hostname WirenBoard
</syntaxhighlight>
    metric 10
# Добавьте в него строки:
#:<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>


<!--T:45-->
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.
а для интерфейса — метрику 100:
    auto ppp0
    iface ppp0 inet ppp
    ## select provider: megafon, mts or beeline below
    provider mts
    metric 100
    pre-up wb-gsm restart_if_broken
    pre-up sleep 10


<!--T:46-->
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду:
В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0.
<syntaxhighlight lang="bash">
AT+USBNETIP=0,100,111
</syntaxhighlight>
Команда имеет следующий синтаксис:
<syntaxhighlight lang="bash">
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
</syntaxhighlight>


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


<!--T:48-->
'''Предупреждение!''' Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так:
<syntaxhighlight lang="bash">
# Организуется работа через основной канал.
AT+USBNETIP?
# Постоянно проверяется наличие доступа в Интернет через основной канал.
</syntaxhighlight>
# В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''.
Функция поддерживается, если получен ответ
# Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''.
<syntaxhighlight lang="bash">
+USBNETIP: mode


<!--T:49-->
OK
В качестве примера укажем две инструкции по организации такого режима работы:
</syntaxhighlight>
# 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


==== Отключение ====
# Остановите интерфейс командой:
#:<syntaxhighlight lang="bash">
ifdown usb0
</syntaxhighlight>
# Откройте файл <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>
# Сохраните и закройте файл <code>interfaces</code>. {{Wbincludes:Save nano}}


</translate>
==Мультиплексирование==  
<span id="низкоуровневая-работа с модулем через at-команды"></span>
<translate>
=== Низкоуровневая работа с модулем через AT-команды === <!--T:50-->


<!--T:51-->
Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом.
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д.
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.


<!--T:52-->
==Документация на модемы==
Для интерактивного режима:
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
$ minicom -s /dev/ttyGSM
</pre>
[[Special:MyLanguage/Файл:Minicom_settings.png|Настройки Minicom]]


<!--T:53-->
{| class="wikitable"
* Зайти в настройки (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить порт ''/dev/ttyGSM'', скорость и чётность - ''115200, 8N1'', ''Hardware flow control - No'', ''Software flow control - No''
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
|-
* Далее запускать как '''minicom /dev/ttyGSM''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyGSM'', который мы ранее создали)
|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]
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите [[Special:MyLanguage/SIM900R|SIM900R]])
|-
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''
|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||[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
|colspan="3"| [[WBC-4G#Документация|WBC-4G]]
|}


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


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


<!--T:55-->
В терминальном режиме работы с модемом, например, в программе minicom (смотрите раздел [[GSM/GPRS#Отправка AT-команд|Отправка AT-команд]]), введите команду выбора режима:
(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)
<syntaxhighlight lang="bash">
AT+CNMP=13
</syntaxhighlight>


<!--T:56-->
Возможные варианты значений (команда <code>AT+CNMP=?</code>):
* Синхронизовать скорость порта (не совсем команда)
*<code>2</code> — Automatic,
<pre>
*<code>13</code> — GSM Only,
AAAAAAAAAAAAAT
*<code>38</code> — LTE Only,
</pre>
*<code>51</code> — GSM And LTE Only.
* Список всех сетей
<pre>
AT+COPS=?
</pre>
* Уровень сигнала (см. [http://m2msupport.net/m2msupport/atcsq-signal-quality/ здесь])
<pre>
AT+CSQ
</pre>
* Звонок на номер +79154816102
<pre>
ATD+79154816102;
</pre>
* Установка baud rate порта в фиксированное значение 115200
<pre>
AT+IPR=115200
</pre>


<!--T:57-->
Установить режим нужно один раз — он запоминается и активен даже после отключения питания.
* Запрос времени со встроенных в модуль часов реального времени (RTC)
<pre>
AT+CCLK?
AT+CCLK="14/03/19,01:20:29+00"
</pre>


<!--T:58-->
Чтобы вернуться в режим IoT, выполните команду:
* Получить IMEI-код модуля (xxxxxx - уникальный номер)
<syntaxhighlight lang="bash">
<pre>
AT+CNMP=51
AT+GSN
</syntaxhighlight>
86820400xxxxxxY
 
<!--T:59-->
OK
</pre>
 
 
===RTC=== <!--T:60-->
 
 
===Мультиплексирование=== <!--T:61-->
 
<!--T:62-->
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом.
Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.
</translate>

Текущая версия на 10:06, 31 марта 2023

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

Эта статья описывает настройку 2G/3G/NB-IOT модемов в контроллерах Wiren Board 5...7, а также 4G(LTE)-модема в релизе wb-2207 и старее. Для настройки 4G(LTE)-модема в релизе wb-2304 и новее, используйте эту инструкцию. В контроллеры 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 модем устанавливается модулем расширения.

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

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

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

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

  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