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

Нет описания правки
 
(не показаны 74 промежуточные версии 7 участников)
Строка 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/NB-IOT модемы (в зависимости от комплектации). С помощью модемов можно:
В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации.  
* отправлять/принимать SMS
* подключаться к интернету


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


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


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


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


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


<!--T:7-->
Например, чтобы узнать модель модема, нужно запустить команду <syntaxhighlight lang="bash">cat /proc/device-tree/wirenboard/gsm/model</syntaxhighlight>
Подробнее о файлах внутри директории можно узнать из таблицы:
Подробнее о файлах внутри директории можно узнать из таблицы:
{| class="wikitable"
{| class="wikitable"
Строка 30: Строка 35:
||/proc/device-tree/wirenboard/gsm/type||поддерживаемые сети
||/proc/device-tree/wirenboard/gsm/type||поддерживаемые сети
|-
|-
||/proc/device-tree/wirenboard/gsm/status||включён ли модем в linux
||/proc/device-tree/wirenboard/gsm/status||статус модема в системе
|}
|}


== Включение и начало работы == <!--T:8-->
== Включение и начало работы ==
Чтобы начать работу с модемом, нужно:
#[[SIM_card_installation | Вставьте sim-карту]].
#Подключите антенну.
#Перезапустите модем, выполнив команду
#:<syntaxhighlight lang="bash">
wb-gsm restart_if_broken
</syntaxhighlight>


<!--T:9-->
После каждой смены sim-карты необходимо перезапускать модем.
#Вставить sim-карту.
#Подключить антенну.
#Перезапустить модем, выполнив команды <code>wb-gsm off; wb-gsm on</code>


После каждой смены sim-карты необходимо перезапускать модем (см. п.3)!
== Утилита wb-gsm ==


== Утилита wb-gsm == <!--T:10-->
Для упрощения работы с модемами была написана утилита <code>wb-gsm</code>, которая входит в пакет [https://github.com/wirenboard/wb-utils wb-utils].


<!--T:11-->
Утилита <code>wb-gsm</code> входит в состав пакета <code>wb-utils</code>, который предустановлен на все контроллеры Wiren Board.
Для упрощения работы с модемами была написана утилита 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 здесь].


<!--T:12-->
С помощью <code>wb-gsm</code> вы сможете:
Пример использования утилиты wb-gsm для получения imei модема:
* управлять питанием модемов, команды <code>on, off, restart_if_broken</code>;
<code>DEBUG=true wb-gsm imei</code>
* настраивать baudrate связи по uart, команды <code>init_baud, set_speed</code>;
''DEBUG=true'' перед командой выводит дополнительную отладочную информацию.
* получать imei, команда <code>imei</code>.


<!--T:13-->
Все команды wb-gsm можно посмотреть в репозитории на Github по ссылке в начале раздела.
Утилита wb-gsm входит в состав пакета ''wb-utils'' и присутствует в стандартном образе ПО контроллера.


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


<!--T:15-->
== Переключение активной sim-карты ==
Все контроллеры Wiren Board 6 по умолчанию поставляются в комплектации с двумя sim-картами. При этом, в каждый момент времени, '''только одна sim-карта может быть активной'''. По умолчанию, активной является sim1.  
 
По умолчанию активна Sim1 —  в каждый момент времени '''только одна sim-карта может быть активной'''.


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


<!--T:17-->
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0.
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0.
Подробнее о работе с gpio можно узнать из [[Работа_с_GPIO#Интерфейс sysfs в Linux|отдельной статьи]].
Подробнее о работе с gpio можно узнать из статьи [[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]].


<!--T:18-->
Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]):
Для того, чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Включение и начало работы|раздел о включении]] модема):
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
AT+CFUN=0
AT+CFUN=0
Строка 80: Строка 84:
</syntaxhighlight>
</syntaxhighlight>


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


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


=== Подключение в linux === <!--T:21-->
*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]).


<!--T:22-->
*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]).


<!--T:23-->
*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">
Строка 107: Строка 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-команд === <!--T:24-->
=== Отправка AT-команд ===
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]]


<!--T:25-->
{{Wbincludes:GSM Modem Default Connection Parameters}}
Для всех модемов рабочими настройками связи являются: 115200-8-N-1, '''no hardware flow control''' (аппаратный контроль потока должен быть обязательно выключен). Некоторые модели модемов (например, sim5300e, sim7000e) могут сами определять baudrate, установленный в данный момент. Для этого нужно послать в последовательный порт несколько символов (например, "AAAAAAAAAAT").


<!--T:26-->
Для работы в интерактивном режиме рекомендуем использовать утилиту [[minicom]]:
Подробнее в статье [[Работа с последовательным портом из Linux]].
{{Wbincludes:GSM Modem AT Prepare}}
Модем готов к передаче AT-команд.


Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:
Чтобы закрыть minicom, нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>.
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
minicom -s /dev/ttyGSM
</pre>
[[Файл:Minicom settings.png |500px|thumb|right| Настройки 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:28-->
== Работа с sms и ussd ==


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


<!--T:30-->
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.


=== Настройка ===<!--T:31-->
=== Настройка ===


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


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


=== Примеры команд gammu ===<!--T:34-->
=== Примеры команд gammu ===
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]])


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


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


<!--T:37-->
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
Строка 178: Строка 166:
|}
|}


=== SMS-уведомления === <!--T:38-->
Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8


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


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


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


=== Быстрая настройка автоматического выхода в интернет для МТС/Билайн/Мегафон === <!--T:43-->
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу 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>


<!--T:44-->
Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле <code>/etc/ppp/peers/<ваш_провайдер_связи></code> замените устройство <code>/dev/ttyGSM</code> на (в зависимости от модема) <code>/dev/ttyUSB0</code> или <code>/dev/ttyACM0</code>.
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду
 
<syntaxhighlight lang="bash">
Например, изменим порт для провайдера МТС:
pon mts # можно заменить mts на megafon или beeline
# Откройте файл <code>/etc/ppp/peers/mts</code>
#:<syntaxhighlight lang="bash">
nano /etc/ppp/peers/mts
</syntaxhighlight>
</syntaxhighlight>
Чтобы отключить подключение, выполните
# Закомментируйте старый порт и добавьте новый:
<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
poff mts # можно заменить mts на megafon или beeline
#/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>.


<!--T:45-->
=== Автоматический запуск подключения ===
Если на контроллере установлен 3G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт: в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code>
[[Image:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
[[Файл:GSM-ACM.png|thumb|right|Файл /etc/ppp/peers/<ваш_провайдер_связи>]]


<!--T:46-->
Чтобы подключение запускалось автоматически:
[[File:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
#Откройте файл <code>/etc/network/interfaces</code> для редактирования:
Чтобы подключение запускалось автоматически и перезапускалось при обрыве, откройте файл ''/etc/network/interfaces'' и раскомментируйте/отредактируйте следующие строки:
#:<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
nano /etc/network/interfaces
</syntaxhighlight>
#Раскомментируйте или отредактируйте следующие строки:
#:<syntaxhighlight lang="bash">
auto ppp0
auto ppp0
iface ppp0 inet ppp
iface ppp0 inet ppp
   provider mts # можно заменить mts на megafon или beeline
   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>. В большинстве случаев ничего менять в этих файлах не придется.
Для 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].


<!--T:47-->
=== Резервирование канала связи ===
Выполните команду <code>ifup ppp0</code> — через 10-15 секунд интерфейс ppp0 будет доступен.
После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи


<!--T:48-->
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].
Для 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]).


=== Маршрутизация и настройка <u>''резервного''</u> подключения через ppp === <!--T:49-->
== Интернет с 4G-модемом (LTE) ==
{{YouTube
| link= https://youtu.be/vWNwxB7Lino
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2
}}


<!--T:50-->
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]]
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, например, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d.  
[[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]]
=== Настройка модема как сетевой карты ===
В отличие от 2G- и 3G-модулей, [[WBC-4G]] поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.


Подробнее в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP основной и резервный выход в интернет|Сетевые настройки контроллера]].
'''Настройка с помощью 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>.


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


<!--T:52-->
'''Настройка с помощью chat''':
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так:
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]].
# Организуется работа через основной канал.
# Подключитесь к контроллеру по [[SSH]].
# Постоянно проверяется наличие доступа в Интернет через основной канал.
# Перезапустите модем командой:
# В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''.
#: <syntaxhighlight lang="bash">
# Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''.
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:53-->
Этот способ можно использовать при написании скриптов.
В качестве примера укажем две инструкции по организации такого режима работы:
# 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


==Мультиплексирование== <!--T:54-->
=== Настройка виртуальной сетевой карты ===
==== Включение ====
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
# Откройте файл <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:55-->
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.
Модем поддерживает режим мультиплексирования - создания виртуальных портов, через которые можно одновременно работать с модемом.
 
Например, через один порт можно открыть сессию PPP для GPRS, а через другой - получать и отправлять SMS, проверять баланс и т.д.
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду:
<syntaxhighlight lang="bash">
AT+USBNETIP=0,100,111
</syntaxhighlight>
Команда имеет следующий синтаксис:
<syntaxhighlight lang="bash">
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
</syntaxhighlight>
 
{| border="1" class="wikitable" style="text-align:left"
|-
|<mode> ||
0 – частный IP-адрес (по умолчанию, 192.168.0.xxx и т. д.) </br>
1 – Публичный IP (ip из сети). Вступает в силу после перезагрузки модема.
|-
|<tpos> || Третья позиция IP-адреса
|-
|<dhcps> || Начальное значение DHCP
|-
|<dhcpe> || Конечное значение DHCP
|}
 
'''Предупреждение!''' Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой
<syntaxhighlight lang="bash">
AT+USBNETIP?
</syntaxhighlight>
Функция поддерживается, если получен ответ
<syntaxhighlight lang="bash">
+USBNETIP: mode
 
OK
</syntaxhighlight>
 
==== Отключение ====
# Остановите интерфейс командой:
#:<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}}
 
==Мультиплексирование==
 
Модем поддерживает режим мультиплексирования создания виртуальных портов, через которые можно одновременно работать с модемом.
Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.


==Документация на модемы==<!--T:56-->
==Документация на модемы==


<!--T:57-->
Вся документация доступна на сайте официального поставщика устройств simcom в России ([http://www.mt-system.ru/linecard/simcom-wireless-solutions MT-SYSTEM]):
{| class="wikitable"
{| class="wikitable"
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
!Модель||Режимы сети||краткое описание||hardware design||AT-команды
Строка 266: Строка 377:
|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]
|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]
|-
|-
|A7600E-H||2G/3G/4G||[http://mt-system.ru/sites/default/files/documents/a7600e_spec_en.pdf pdf]||[http://mt-system.ru/sites/default/files/documents/a7600e_hardware_design_v1.00.pdf pdf]||[http://mt-system.ru/sites/default/files/documents/a7600_series_at_command_manual_v1.01.pdf pdf]
|7600E||2G/3G/4G
|colspan="3"| [[WBC-4G#Документация|WBC-4G]]
|}
|}


= GPRS на модемах SIM7000E 2G/NB-IoT = <!--T:57-->
== GPRS на модемах SIM7000E 2G/NB-IoT ==


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


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


<!--T:60-->
Возможные варианты значений (команда <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:61-->
Установить режим нужно один раз — он запоминается и активен даже после отключения питания.
Режим запоминается и активен даже после отключения питания, установить режим нужно один раз.


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