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

Материал из Wiren Board
(Подготовка страницы к переводу)
(Отметить эту версию для перевода)
Строка 1: Строка 1:
<languages/>
<languages/>
<translate>
<translate>
<!--T:1-->
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
* отправлять/принимать SMS
* отправлять/принимать SMS
Строка 10: Строка 11:




== Начало работы ==
== Начало работы == <!--T:2-->


<!--T:3-->
Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты '''wb-gsm''' (смотрите ниже).
Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты '''wb-gsm''' (смотрите ниже).


== Модем в Linux ==
== Модем в Linux == <!--T:4-->


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


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




=== Включение модуля ===
=== Включение модуля === <!--T:7-->


<!--T:8-->
По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой '''wb-gsm''' (утилита включена в стандартный образ в пакет '''wb-utils''').
По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой '''wb-gsm''' (утилита включена в стандартный образ в пакет '''wb-utils''').
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 36: Строка 41:




=== Модемы SIM7000E 2G/NB-IoT ===
=== Модемы SIM7000E 2G/NB-IoT === <!--T:9-->


<!--T:10-->
Модем 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:11-->
В терминальном режиме работы с модемом, например, в программе minicom (смотрите ниже раздел [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]]), необходимо ввести команду выбора режима:
В терминальном режиме работы с модемом, например, в программе minicom (смотрите ниже раздел [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]]), необходимо ввести команду выбора режима:
<pre>
<pre>
Строка 46: Строка 53:
</pre>
</pre>


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


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


<!--T:14-->
Чтобы вернуться в режим IoT, выполните команду:   
Чтобы вернуться в режим IoT, выполните команду:   
<pre>
<pre>
Строка 57: Строка 67:




===Отправка и получение SMS и USSD===
===Отправка и получение SMS и USSD=== <!--T:15-->


<!--T:16-->
[[File:Gammu-config.png|300px|thumb|right|''gammu-config'']]
[[File:Gammu-config.png|300px|thumb|right|''gammu-config'']]
Работать с SMS проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты '''gnokii''', которую перестали развивать).
Работать с SMS проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты '''gnokii''', которую перестали развивать).


<!--T:17-->
(ниже дана краткая инструкция, полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта])
(ниже дана краткая инструкция, полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта])


<!--T:18-->
#Создайте файл конфигурации, запустив ''gammu-config''
#Создайте файл конфигурации, запустив ''gammu-config''
##В параметре ''Port'' укажите ''/dev/ttyGSM''
##В параметре ''Port'' укажите ''/dev/ttyGSM''
Строка 75: Строка 88:
</syntaxhighlight>
</syntaxhighlight>


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


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




===Выход в интернет===
===Выход в интернет=== <!--T:21-->


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




==== Быстрая настройка автоматического выхода в интернет ====
==== Быстрая настройка автоматического выхода в интернет ==== <!--T:23-->


<!--T:24-->
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду  
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду  
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 118: Строка 134:




==== Пошаговая инструкция настройки постоянного GPRS-подключения ====
==== Пошаговая инструкция настройки постоянного GPRS-подключения ==== <!--T:25-->


<!--T:26-->
* Подсоедините антенну к разъему GSM  
* Подсоедините антенну к разъему GSM  
* СИМ-карту в слот micro SIM 1
* СИМ-карту в слот micro SIM 1
Строка 138: Строка 155:




==== Полная инструкция ====
==== Полная инструкция ==== <!--T:27-->


<!--T:28-->
Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса [https://linux.die.net/man/8/pppd pppd].
Выход в интернет через 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'', которые должны присутствовать в конфигурационных файлах.
Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в [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-порта модема:
Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема:


<!--T:30-->
[[Файл:GSM-ACM.png|Файл:GSM-ACM.png]]
[[Файл:GSM-ACM.png|Файл:GSM-ACM.png]]


   
   
<!--T:31-->
После создания конфигурационного файла запустите подключение, выполнив
После создания конфигурационного файла запустите подключение, выполнив
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 154: Строка 175:
или отредактировав файл ''/etc/network/interfaces'', как описано выше.
или отредактировав файл ''/etc/network/interfaces'', как описано выше.


<!--T:32-->
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Строка 161: Строка 183:
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.


<!--T:33-->
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''.
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''.
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса 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.
В файле /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-соединения с мобильными интернет-провайдерами.
Мы же приведем здесь в качестве примера параметры, которые '''мы рекомендуем''' использовать при настройке ppp-соединения с мобильными интернет-провайдерами.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">


<!--T:36-->
auto ppp0
auto ppp0
iface ppp0 inet ppp
iface ppp0 inet ppp
Строка 179: Строка 205:




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


<!--T:39-->
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.  
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.  


<!--T:40-->
Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих  интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.  
Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих  интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.  


<!--T:41-->
В качестве дополнительной меры повышения надежности при наличии двух соединений можно предложить использование 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).
В качестве дополнительной меры повышения надежности при наличии двух соединений можно предложить использование 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).


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




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


<!--T:44-->
Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например:
Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например:
для интерфейса eth0 указать метрику 10:
для интерфейса eth0 указать метрику 10:
Строка 203: Строка 235:
     metric 10  
     metric 10  


<!--T:45-->
а для интерфейса — метрику 100:
а для интерфейса — метрику 100:
     auto ppp0
     auto ppp0
Строка 212: Строка 245:
     pre-up sleep 10
     pre-up sleep 10


<!--T:46-->
В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0.
В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0.


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


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


<!--T:49-->
В качестве примера укажем две инструкции по организации такого режима работы:
В качестве примера укажем две инструкции по организации такого режима работы:
# http://lstein.github.io/Net-ISP-Balance/
# http://lstein.github.io/Net-ISP-Balance/
Строка 230: Строка 267:
<span id="низкоуровневая-работа с модулем через at-команды"></span>
<span id="низкоуровневая-работа с модулем через at-команды"></span>
<translate>
<translate>
=== Низкоуровневая работа с модулем через AT-команды ===
=== Низкоуровневая работа с модулем через AT-команды === <!--T:50-->


<!--T:51-->
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.


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


<!--T:53-->
* Зайти в настройки (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить порт ''/dev/ttyGSM'', скорость и чётность - ''115200, 8N1'', ''Hardware flow control - No'', ''Software flow control - No''
* Зайти в настройки (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить порт ''/dev/ttyGSM'', скорость и чётность - ''115200, 8N1'', ''Hardware flow control - No'', ''Software flow control - No''
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
Строка 249: Строка 289:




==== Примеры команд ====
==== Примеры команд ==== <!--T:54-->


<!--T:55-->
(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)
(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)


<!--T:56-->
* Синхронизовать скорость порта (не совсем команда)
* Синхронизовать скорость порта (не совсем команда)
<pre>
<pre>
Строка 274: Строка 316:
</pre>
</pre>


<!--T:57-->
* Запрос времени со встроенных в модуль часов реального времени (RTC)
* Запрос времени со встроенных в модуль часов реального времени (RTC)
<pre>
<pre>
Строка 280: Строка 323:
</pre>
</pre>


<!--T:58-->
* Получить IMEI-код модуля (xxxxxx - уникальный номер)
* Получить IMEI-код модуля (xxxxxx - уникальный номер)
<pre>
<pre>
Строка 285: Строка 329:
86820400xxxxxxY
86820400xxxxxxY


<!--T:59-->
OK
OK
</pre>
</pre>




===RTC===
===RTC=== <!--T:60-->




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


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

Версия 12:50, 31 мая 2019

Другие языки:

В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:

  • отправлять/принимать SMS
  • подключаться к интернету по GPRS

Полный список возможностей смотрите в описании модуля:

  • 3G модем в Wiren Board 5 и Wiren Board 6: SIM5300E;
  • 2G модем в Wiren Board 4, 5 и 6 : SIM800 или M660A;
  • Wiren Board Smart Home 3.5, Wiren Board 4: SIM900R.


Начало работы

Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты wb-gsm (смотрите ниже).

Модем в Linux

Внутри контроллера модем подключён к процессору одним из двух способов:

  • по порту UART (устройство /dev/ttyGSM (ранее: /dev/ttyAPP0)) - все модемы, включая 3G;
  • по порту USB (устройства /dev/ttyACM0-/dev/ttyACM6) - только 3G.

Работать с модемом на низком уровне можно, посылая команды на порт /dev/ttyGSM или /dev/ttyACM0 соответственно. Для 3G-связи порт UART не подходит в силу ограничения пропускной способности UАRT-канала, следует использовать ACM-порт /dev/ttyACM0.

Также к процессору подключены управляющие пины модема PWRKEY и RESET, с помощью которых можно выключить или перезагрузить модем. Обычно работать с ними напрямую не требуется - перезагрузка производится утилитой wb-gsm (смотрите ниже), но также реализован прямой доступ к этим контактам через GPIO (подробнее читайте GPIO, ищите в таблице соответствующие названия).


Включение модуля

По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой wb-gsm (утилита включена в стандартный образ в пакет wb-utils).

$ wb-gsm on #  включение устройства
$ wb-gsm off #  выключение устройства
$ wb-gsm reset #  перезагрузка включенного устройства
$ wb-gsm restart_if_broken #  включение или перезагрузка, если модем не отвечает


Модемы 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 


Отправка и получение SMS и USSD

gammu-config

Работать с SMS проще всего при помощи программы Gammu (это форк утилиты gnokii, которую перестали развивать).

(ниже дана краткая инструкция, полную документацию смотрите на сайте проекта)

  1. Создайте файл конфигурации, запустив gammu-config
    1. В параметре Port укажите /dev/ttyGSM
    2. В параметре Connection укажите at115200
  2. Примеры команд:
$ 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# неизвестно неизвестно


Выход в интернет

Перед выходом в интернет необходимо, чтобы модем был включен. Для этого вручную или в файле настройке сетевых интерфейсов (см. далее) выполните команду

wb-gsm restart_if_broken


Быстрая настройка автоматического выхода в интернет

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

pon mts # можно заменить mts на megafon или beeline

Чтобы отключить подключение, выполните

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

Чтобы подключение запускалось автоматически, откройте файл /etc/network/interfaces и раскомментируйте/отредактируйте следующие строки:

auto ppp0
iface ppp0 inet ppp
  provider mts # можно заменить mts на megafon или beeline

Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.


Пошаговая инструкция настройки постоянного GPRS-подключения

  • Подсоедините антенну к разъему GSM
  • СИМ-карту в слот micro SIM 1
  • Включите модем командой wb-gsm restart_if_broken
  • Если ваш контроллер укомплектован 3G-модемом, в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство /dev/ttyGSM на /dev/ttyACM0
  • В файле /etc/networks/interfaces закомментируйте раздел, связанный с ppp0 и добавьте следующие строки:
auto ppp0
iface ppp0 inet ppp
provider mts
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken  
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
  • Выполните команду ifup ppp0 — через 15 секунд интерфейс ppp0 будет доступен.
  • После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи.


Полная инструкция

Выход в интернет через GPRS происходит по протоколу PPP с использованием сервиса pppd. Для его работы нужно создать конфигурационный файл, соответствующий настройкам вашего оператора. Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе. Файлы хранятся в директориях /etc/ppp/peers и /etc/chatscripts. Для других операторов или специальных APN создайте свои конфигурационные файлы на основе стандартных. Для этого при помощи утилиты pppconfig (устанавливается командой apt-get install pppconfig) создайте конфигурационный файл подключения с параметрами для вашего оператора (например, МТС). Также можете ориентироваться на инструкцию. Обратите внимание на настройки 115200 nocrtsct, которые должны присутствовать в конфигурационных файлах.

Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема:

Файл:GSM-ACM.png


После создания конфигурационного файла запустите подключение, выполнив

pon название_подключения

или отредактировав файл /etc/network/interfaces, как описано выше.

Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:

persist
maxfail 0

если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.

Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле /etc/network/interfaces. Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.

В файле /etc/network/interfaces для настройки ppp можно использовать стандартные iface-опции pre-up, up, post-up, down, pre-down, post-down. Они задают команды, которые будут выполняться на различных фазах инициализации/деинициализации интерфейса. Подробно особенности их функционирования описаны в man interfaces в разделе IFACE OPTIONS.

Мы же приведем здесь в качестве примера параметры, которые мы рекомендуем использовать при настройке ppp-соединения с мобильными интернет-провайдерами.

auto ppp0
iface ppp0 inet ppp
provider mts
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken  
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10


Для 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).


Настройки DNS и маршрутизации

Важно! По умолчанию интерфейс ppp0 при инициализации не добавляет нового маршрута по умолчанию через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.

Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.

В качестве дополнительной меры повышения надежности при наличии двух соединений можно предложить использование 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).

Обратите внимание, что при деинициализации ppp0 интерфейса все созданные маршруты, связанные с ним, будут автоматически удалены.


Использование GPRS в качестве резервного канала

Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например: для интерфейса eth0 указать метрику 10:

   auto eth0
   iface eth0 inet dhcp
   pre-up wb-set-mac
   hostname WirenBoard
   metric 10 

а для интерфейса — метрику 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

В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0.

Для более сложных случаев, когда физическое соединение на интерфейсе eth0 не пропадает, рекомендуется применять скрипты, которые на основе доступности какого-либо сетевого уздла в интернете через один из интерфейсов переключают маршрут по умолчанию. В интернете предлагается множество решений решений такого рода задачи, можно выбрать одно из них.

Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется failover. Обычно он работает так:

  1. Организуется работа через основной канал.
  2. Постоянно проверяется наличие доступа в Интернет через основной канал.
  3. В случае неполадок запускается запасное соединение, меняются настройки default gateway.
  4. Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя default gateway.

В качестве примера укажем две инструкции по организации такого режима работы:

  1. http://lstein.github.io/Net-ISP-Balance/
  2. https://serverfault.com/questions/360131/ubuntu-failover-from-ethernet-to-adsl-modem-to-usb-3g-dongle?rq=1


Низкоуровневая работа с модулем через AT-команды

Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux. Обратите внимание на настройки: 115200, 8N2, no hardware flow control.

Для интерактивного режима:

  • запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
 $ minicom -s /dev/ttyGSM

Настройки Minicom

  • Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyGSM, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
  • Сохранить настройки: Save setup as _dev_ttyGSM
  • Далее запускать как minicom /dev/ttyGSM (все параметры будут сразу браться из профиля с названием /dev/ttyGSM, который мы ранее создали)
  • Первой вашей командой должна стать AAAAAAAAAT - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите SIM900R)
  • Второй командой выполните просто AT. Вам должен прийти ответ OK


Примеры команд

(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)

  • Синхронизовать скорость порта (не совсем команда)
AAAAAAAAAAAAAT
  • Список всех сетей
AT+COPS=?
AT+CSQ
  • Звонок на номер +79154816102
ATD+79154816102;
  • Установка baud rate порта в фиксированное значение 115200
AT+IPR=115200
  • Запрос времени со встроенных в модуль часов реального времени (RTC)
AT+CCLK?
AT+CCLK="14/03/19,01:20:29+00"
  • Получить IMEI-код модуля (xxxxxx - уникальный номер)
AT+GSN
86820400xxxxxxY

OK


RTC

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

Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX. Этот режим не поддерживается для 2G-модемов.