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

Нет описания правки
 
(не показано 118 промежуточных версий 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 могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации.


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


Полный список возможностей смотрите в  описании модуля:
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G.
* 3G модем в Wiren Board 5 и Wiren Board 6: [[Special:MyLanguage/SIM5300E|SIM5300E]];
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]].
* 2G модем в Wiren Board 4, 5 и 6: SIM800 или [[Special:MyLanguage/M660A|M660A]].


== Общее для всех модемов == <!--T:2-->
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]].  
Модемы подключены к процессору по:
*uart - все;
*usb + uart - 3G/4G/NB-IOT.
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]].


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


=== Получение информации о модеме === <!--T:2-->
== Получение информации о модеме ==
В контроллерах, приобретённых после 2018 года, некоторая информация о модеме заносится в память контроллера. Получить её можно с помощью чтения файлов в директории ''/proc/device-tree/wirenboard/gsm/''


Например, чтобы узнать модель модема, нужно запустить команду <syntaxhighlight lang="bash">cat /proc/device-tree/wirenboard/gsm/model</syntaxhighlight>
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории <code>/proc/device-tree/wirenboard/gsm/</code>.
=== Включение и начало работы === <!--T:2-->


<!--T:3-->
В контроллерах версии 6.7 модем устанавливается модулем расширения.
#Вставить sim-карту.
{{Wbincludes:Configuration WBC}}
#Подключить антенну.
#Перезапустить модем, выполнив команды <code>wb-gsm off; wb-gsm on</code>


После каждой смены sim-карты необходимо перезапускать модем (см. п.3)!
Например, чтобы узнать модель модема, нужно выполнить команду
<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>


=== Утилита wb-gsm === <!--T:4-->
== Низкоуровневая работа по uart ==
Для упрощения работы с модемами была написана утилита wb-gsm (исходный код доступен на [https://github.com/wirenboard/wb-utils/tree/master/gsm нашем github]). Утилита позволяет:
*Управлять питанием модемов (команды on, off, restart_if_broken);
*Настраивать baudrate связи по uart (команды init_baud, set_speed);
*Забирать imei (команда imei).
Все возможные команды wb-gsm можно посмотреть [https://github.com/wirenboard/wb-utils/blob/b3d3d50d29578472dfebc97bde77714e097d61d6/gsm/wb-gsm#L44 здесь].


Пример использования утилиты wb-gsm для получения imei модема:
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту <code>/dev/ttyGSM</code>. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером <code>cdc_acm</code>).
<code>DEBUG=true wb-gsm imei</code>
''DEBUG=true'' перед командой выводит дополнительную отладочную информацию.


Утилита wb-gsm входит в состав пакета ''wb-utils'' и присутствует в стандартном образе ПО контроллера.
=== Подключение в linux ===


=== Низкоуровневая работа по uart === <!--T:4-->
*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]).
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту ''/dev/ttyGSM''. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером ''cdc_acm'').


==== Подключение в linux ==== <!--T:4-->
*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>.  
*uart: Порт ''/dev/ttyGSM'' является ссылкой на ''/dev/ttymxc'''X''''' (uart процессора) и делается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на [https://github.com/wirenboard/wb-configs/tree/master/configs/usr/share/wb-configs/udev нашем github]).


*usb: Порты ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема - это ''/dev/ttyACM0-6'', однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <code>wb-gsm off; wb-gsm on; dmesg | tail</code>.
Примерный вывод команды:
Примерный вывод команды:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 68: Строка 109:
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device
</syntaxhighlight>
</syntaxhighlight>
Соответственно, в данном случае 3G модем подключен к портам /dev/ttyACM0 - /dev/ttyACM6.
Соответственно, в данном случае 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}}
Модем готов к передаче AT-команд.
 
Чтобы закрыть minicom, нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>.


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


Подробнее про взаимодействие с последовательным портом в linux можно прочитать на соответствующей [[Special:MyLanguage/Работа с последовательным портом из Linux|странице wiki]].
Работать с sms и ussd проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты <code>gnokii</code>, которую перестали развивать).
<!--T:52-->
Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
# minicom -s /dev/ttyGSM
</pre>
[[Special:MyLanguage/Файл:Minicom_settings.png|Настройки Minicom]]
* Зайти в настройки minicom (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить нужный порт ''/dev/ttyGSM'' (в нашем случае), скорость и чётность - ''115200-8-N-1'', ''Hardware flow control - No'', ''Software flow control - No''
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
* Далее запускать как '''minicom /dev/ttyGSM''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyGSM'', который мы ранее создали)
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся.
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''.


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


Краткая инструкция по работе gammu; полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта gammu]:
=== Настройка ===
 
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
*Обновить пакет <code>wb-configs</code>. Для этого, нужно выполнить команды <syntaxhighlight lang="bash">apt update && apt install wb-configs</syntaxhighlight>


==== Настройка ====<!--T:18-->
[[File:Gammu-config.png|300px|thumb|right|Настройка gammu вручную (''gammu-config'')]]
[[File:Gammu-config.png|300px|thumb|right|Настройка gammu вручную (''gammu-config'')]]
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
*Настроить gammu вручную:
*Обновить пакет wb-configs. Для этого, нужно выполнить команду <syntaxhighlight lang="bash">apt update; apt install wb-configs</syntaxhighlight>
#Выполнить команду <syntaxhighlight lang="bash">gammu-config</syntaxhighlight>
#В параметре <code>Port</code> укажите <code>/dev/ttyXXX</code> — файл модема, соответствующий вашей модели контроллера.
#В параметре <code>Connection</code> укажите <code>at115200</code>


*Настроить gammu вручную.
=== Примеры команд gammu ===
##Запустить команду <syntaxhighlight lang="bash">gammu-config</syntaxhighlight>
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]])
##В параметре ''Port'' укажите ''/dev/ttyXXX'' - файл модема, соответствующий вашей модели контроллера.  
##В параметре ''Connection'' укажите ''at115200''


==== Примеры команд gammu ====<!--T:18-->
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены
Строка 110: Строка 149:
</syntaxhighlight>
</syntaxhighlight>


==== SMS и USSD на русском ==== <!--T:19-->
=== SMS и USSD на русском ===
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
Строка 126: Строка 166:
|}
|}


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


==== Быстрая настройка автоматического выхода в интернет для МТС/Билайн/Мегафон ==== <!--T:23-->
=== SMS-уведомления ===


<!--T:24-->
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]».
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду
 
<syntaxhighlight lang="bash">
== Интернет через PPP ==
pon mts # можно заменить mts на megafon или beeline
{{YouTube
| link= https://youtu.be/ZbJUwoifbzE
| text= Настройка интернета через PPP с помощью 2G-модема
}}
=== Быстрый выход в интернет ===
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.
 
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек:
#Перезапустите модем:
#:<syntaxhighlight lang="bash">
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>
Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.


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


<!--T:26-->
Например, изменим порт для провайдера МТС:
* Подсоедините антенну к разъему GSM
# Откройте файл <code>/etc/ppp/peers/mts</code>
* СИМ-карту в слот micro SIM 1
#:<syntaxhighlight lang="bash">
* Включите модем командой wb-gsm restart_if_broken
nano /etc/ppp/peers/mts
* Если ваш контроллер укомплектован 3G-модемом, в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code>
</syntaxhighlight>
* В файле <code>/etc/networks/interfaces</code> закомментируйте раздел, связанный с <code>ppp0</code> и добавьте следующие строки:
# Закомментируйте старый порт и добавьте новый:
<pre>
#:<syntaxhighlight lang="bash">
auto ppp0
#/dev/ttyGSM
iface ppp0 inet ppp
/dev/ttyUSB0
provider mts
</syntaxhighlight>
#рестартуем модем, если он завис
#:порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
pre-up wb-gsm restart_if_broken 
# {{Wbincludes:Save nano}}
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
</pre>
* Выполните команду <code>ifup ppp0</code> — через 15 секунд интерфейс ppp0 будет доступен.  
*После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи.


==== Полная инструкция ==== <!--T:27-->
Порты <code>/dev/ttyUSB0</code>,<code>/dev/ttyUSB1</code>,<code>/dev/ttyUSB2</code> появляются автоматически после включения модема командой <code>wb-gsm on</code>.


<!--T:28-->
=== Автоматический запуск подключения ===
Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса [https://linux.die.net/man/8/pppd pppd].
[[Image:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в [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-порта модема:
#Откройте файл <code>/etc/network/interfaces</code> для редактирования:
 
#:<syntaxhighlight lang="bash">
[[Файл:GSM-ACM.png|Файл:GSM-ACM.png]]
nano /etc/network/interfaces
</syntaxhighlight>
<!--T:31-->
#Раскомментируйте или отредактируйте следующие строки:
После создания конфигурационного файла запустите подключение, выполнив
#:<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
auto ppp0
pon название_подключения
iface ppp0 inet ppp
  provider mts # можно заменить mts на megafon или beeline
  #перезапускаем модем, если он завис
  pre-up wb-gsm restart_if_broken 
  #Ждем, пока он загрузится и найдет сеть.
  pre-up sleep 10
</syntaxhighlight>
</syntaxhighlight>
или отредактировав файл ''/etc/network/interfaces'', как описано выше.
# Сохраните изменения и закройте файл.
 
# Теперь запустите интерфейс <code>ppp0</code> командой:  
<!--T:32-->
#:<syntaxhighlight lang="bash">
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
ifup ppp0
<syntaxhighlight lang="bash">
persist
maxfail 0
</syntaxhighlight>
</syntaxhighlight>
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.
#:через 10­-15 секунд интерфейс <code>ppp0</code> будет доступен.  
# Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.


<!--T:33-->
Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории <code>/etc/chatscripts</code>. В большинстве случаев ничего менять в этих файлах не придется.
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''.
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.


<!--T:34-->
Для 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].
В файле /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.


<!--T:35-->
=== Резервирование канала связи ===
Мы же приведем здесь в качестве примера параметры, которые '''мы рекомендуем''' использовать при настройке ppp-соединения с мобильными интернет-провайдерами.
<syntaxhighlight lang="bash">


<!--T:36-->
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].
auto ppp0
iface ppp0 inet ppp
provider mts
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken 
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
</syntaxhighlight>


<!--T:37-->
== Интернет с 4G-модемом (LTE) ==
Для 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]).
{{YouTube
| link= https://youtu.be/vWNwxB7Lino
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2
}}


====Настройки DNS и маршрутизации==== <!--T:38-->
[[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.


<!--T:39-->
'''Настройка с помощью minicom''':
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.  
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[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:40-->
После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту.
Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих  интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.  


<!--T:41-->
'''Настройка с помощью chat''':
В качестве дополнительной меры повышения надежности при наличии двух соединений можно предложить использование 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]].
# Подключитесь к контроллеру по [[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>


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


==== Использование GPRS в качестве резервного канала ==== <!--T:43-->
=== Настройка виртуальной сетевой карты ===
==== Включение ====
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
# Откройте файл <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>


<!--T:44-->
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.
Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например:
для интерфейса eth0 указать метрику 10:
    auto eth0
    iface eth0 inet dhcp
    pre-up wb-set-mac
    hostname WirenBoard
    metric 10


<!--T:45-->
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду:
а для интерфейса — метрику 100:
<syntaxhighlight lang="bash">
    auto ppp0
AT+USBNETIP=0,100,111
    iface ppp0 inet ppp
</syntaxhighlight>
    ## select provider: megafon, mts or beeline below
Команда имеет следующий синтаксис:
    provider mts
<syntaxhighlight lang="bash">
    metric 100
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
    pre-up wb-gsm restart_if_broken
</syntaxhighlight>
    pre-up sleep 10


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


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


<!--T:48-->
OK
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так:
</syntaxhighlight>
# Организуется работа через основной канал.
# Постоянно проверяется наличие доступа в Интернет через основной канал.
# В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''.
# Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''.


<!--T:49-->
==== Отключение ====
В качестве примера укажем две инструкции по организации такого режима работы:
# Остановите интерфейс командой:
# http://lstein.github.io/Net-ISP-Balance/
#:<syntaxhighlight lang="bash">
# https://serverfault.com/questions/360131/ubuntu-failover-from-ethernet-to-adsl-modem-to-usb-3g-dongle?rq=1
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}}


===RTC=== <!--T:60-->
==Мультиплексирование==  


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


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


== GPRS на модемах SIM7000E 2G/NB-IoT == <!--T:9-->
{| class="wikitable"
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
|-
|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||[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]]
|}


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


<!--T:11-->
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS).
В терминальном режиме работы с модемом, например, в программе minicom (смотрите ниже раздел [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]]), необходимо ввести команду выбора режима:
Для того, чтобы модем смог зарегистрироваться в сети GSM, необходимо принудительно перевести его в режим GSM only.
<pre>
 
В терминальном режиме работы с модемом, например, в программе minicom (смотрите раздел [[GSM/GPRS#Отправка AT-команд|Отправка AT-команд]]), введите команду выбора режима:
<syntaxhighlight lang="bash">
AT+CNMP=13
AT+CNMP=13
</pre>
</syntaxhighlight>


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


<!--T:13-->
Установить режим нужно один раз — он запоминается и активен даже после отключения питания.
Режим запоминается и активен и после отключения питания, установить режим нужно один раз.


<!--T:14-->
Чтобы вернуться в режим IoT, выполните команду:   
Чтобы вернуться в режим IoT, выполните команду:   
<pre>
<syntaxhighlight lang="bash">
AT+CNMP=51  
AT+CNMP=51  
</pre>
</syntaxhighlight>
 
</translate>