Modem-stretch: различия между версиями
(Подготовка страницы к переводу) |
(Отметить эту версию для перевода) |
||
Строка 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
Работать с SMS проще всего при помощи программы Gammu (это форк утилиты gnokii, которую перестали развивать).
(ниже дана краткая инструкция, полную документацию смотрите на сайте проекта)
- Создайте файл конфигурации, запустив gammu-config
- В параметре Port укажите /dev/ttyGSM
- В параметре Connection укажите at115200
- Примеры команд:
$ 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 и раскомментируйте/отредактируйте следующие строки:
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-порта модема:
После создания конфигурационного файла запустите подключение, выполнив
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. Обычно он работает так:
- Организуется работа через основной канал.
- Постоянно проверяется наличие доступа в Интернет через основной канал.
- В случае неполадок запускается запасное соединение, меняются настройки default gateway.
- Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя default gateway.
В качестве примера укажем две инструкции по организации такого режима работы:
- 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
Низкоуровневая работа с модулем через AT-команды
Ознакомьтесь с инструкцией - Работа с последовательным портом из Linux. Обратите внимание на настройки: 115200, 8N2, no hardware flow control.
Для интерактивного режима:
- запускаем minicom с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
$ minicom -s /dev/ttyGSM
- Зайти в настройки (нажать 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-модемов.