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

Материал из Wiren Board
м (FuzzyBot переименовал страницу GSM/GPRS/en в Modem-stretch/en без оставления перенаправления: Часть переводимой страницы GSM/GPRS.)
(Новая страница: «==== Quick setup of automatic Internet access ====»)
(не показано 40 промежуточных версий 2 участников)
Строка 5: Строка 5:
See the module description for the full list of features:
See the module description for the full list of features:
*3G modem in Wiren Board 5 and Wiren Board 6: [[SIM5300E/en|SIM5300E]]  
*3G modem in Wiren Board 5 and Wiren Board 6: [[SIM5300E/en|SIM5300E]]  
*2G modem in Wiren Board 4, 5 and 6: SIM800  or [[M660A/en|M660A]];
*2G modem in Wiren Board 4, 5 and 6 :[[Special:MyLanguage/SIM800|SIM800]] or [[M660A/en|M660A]];
*Wiren Board Smart Home 3.5, Wiren Board 4:
*Wiren Board Smart Home 3.5, Wiren Board 4:
[[SIM900R/en|SIM900R]].
[[SIM900R/en|SIM900R]].
Строка 98: Строка 98:
==== Quick setup of automatic Internet access ====
==== Quick setup of automatic Internet access ====


In the standard software  set of the Wiren Board controller connection settings in ppp protocol for MTS, MegaFon and Beeline mobile operators  are included. If you are using one of them, run the following command to start the connection
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
pon mts # you can replace mts with megafon or beeline
pon mts # можно заменить mts на megafon или beeline
</syntaxhighlight>
</syntaxhighlight>
To disable the connection, run
Чтобы отключить подключение, выполните
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
poff mts # you can replace mts with megafon or beeline
poff mts # можно заменить mts на megafon или beeline
</syntaxhighlight>
</syntaxhighlight>
[[File:Etc-network-interfaces.png|300px|thumb|right|File ''/etc/network/interfaces'', starts connection to MTS automatically]]
[[File:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]]
To start the connection automatically, open the ''/etc/network/interfaces'' file and uncomment/edit the following lines:
Чтобы подключение запускалось автоматически, откройте файл ''/etc/network/interfaces'' и раскомментируйте/отредактируйте следующие строки:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
auto ppp0
auto ppp0
iface ppp0 inet ppp
iface ppp0 inet ppp
   provider mts # you can replace mts with megafon or beeline
   provider mts # можно заменить mts на megafon или beeline
</syntaxhighlight>
</syntaxhighlight>
But if you want the connection to restore itself when it breaks, see the full instructions below.
Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже.




==== Step-by-step instructions for setting up a permanent GPRS connection ====
==== Пошаговая инструкция настройки постоянного GPRS-подключения ====


*Connect the antenna to the GSM connector
* Подсоедините антенну к разъему GSM  
*Insert SIM card into micro-SIM slot 1
* СИМ-карту в слот micro SIM 1
*Turn on the modem executing  wb-gsm restart_if_broken
* Включите модем командой wb-gsm restart_if_broken
*If your controller is equipped with 3G-modem, open file /etc/ppp/peers/your_provider (e.g. MTS) replace the <code>/dev/ttyGSM</code> with <code>/dev/ttyACM0</code>
* Если ваш контроллер укомплектован 3G-модемом, в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code>
In the <code>/etc/networks/interfaces</code> file, comment out the section associated with <code>ppp0</code> and add the following lines:
* В файле <code>/etc/networks/interfaces</code> закомментируйте раздел, связанный с <code>ppp0</code> и добавьте следующие строки:
<pre>
<pre>
auto ppp0
auto ppp0
iface ppp0 inet ppp
iface ppp0 inet ppp
provider mts
provider mts
#restart modem if it's broken or frozen
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken
pre-up wb-gsm restart_if_broken
#Then wait for it to load and find the network.
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
pre-up sleep 10
</pre>
</pre>
*Run the <code>ifup ppp0 command</code> — after 15 seconds, the ppp0 interface will be available.
* Выполните команду <code>ifup ppp0</code> — через 15 секунд интерфейс ppp0 будет доступен.  
*After rebooting, the interface will  be automatically turning on and restore the connection after the cellular connection is lost.
*После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи.




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


Access to the Internet via GPRS is provided via PPP using the [https://linux.die.net/man/8/pppd pppd] service. For its operation, you need to create a configuration file that corresponds to the settings of your operator. Configuration files for the "big three" rusian operators are  pre-installed in the standard image. The files are stored in the /etc/ppp/peers and /etc/chatscripts directories. For other operators or special APNs, create your configuration files based on standard ones. To do this, use the '''pppconfig''' utility (installed with '''apt-get install pppconfig''') to create a connection configuration file with parameters for your operator (for example, MTS). You can also count on the [https://help.ubuntu.com/community/DialupModemHowto/SetUpDialer#Alternative_Way_2_.28using_pppconfig_.26_pon.2Fpoff.29 instructions]. Note the ''115200 nocrtsct settings'' that must be present in the configuration files.
Выход в интернет через 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'', которые должны присутствовать в конфигурационных файлах.


If you connect to the Internet via 3G, you should replace the UART port (/dev/ttyGSM (or /dev/ttyAPP0 in older controller models)) with the CDC-ACM port (/dev/ttyACM0) in the configuration file for your operator. This is necessary to ensure that the communication speed is not limited to the modem UART port bandwidth:
Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема:


[[File:GSM-ACM.png|File:GSM-ACM.png]]
[[Файл:GSM-ACM.png|Файл:GSM-ACM.png]]


   
   
After creating the configuration file, start the connection by running
После создания конфигурационного файла запустите подключение, выполнив
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
pon connection name
pon название_подключения
</syntaxhighlight>
</syntaxhighlight>
or by editing ''/etc/network/interfaces'', as written above.
или отредактировав файл ''/etc/network/interfaces'', как описано выше.


For connection to restart itself when it breaks, and  to execute it an unlimited number of times, add the following lines to the connection settings (the settings file of the selected operator is in the /etc/ppp/peers directory) :
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
persist
persist
maxfail 0
maxfail 0
</syntaxhighlight>
</syntaxhighlight>
if they're not written. In the latest versions of controllers, these settings are configured by default.
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию.


The usage of the ppp0 interface configuration in ''/etc/network/interfaces'' file gives the most comprehensive ability to control establishing the connection to the Internet. The most popular option is the ability to execute commands before installing and after enabling/disabling the ppp0 interface.
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''.
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0.


In the /etc/network/interfaces file, you can use the standard iface pre-up, up, post-up, down, pre-down, post-down options to configure ppp. They define the commands that will be executed on the various phases of initialization/de-initialization interface. Detailed features of their functioning are described in [http://manpages.ubuntu.com/manpages/trusty/man5/interfaces.5.html man interfaces], section 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.


As an example, we will give here the parameters that '''we recommend''' to use when setting up a ppp connection with mobile Internet providers.
Мы же приведем здесь в качестве примера параметры, которые '''мы рекомендуем''' использовать при настройке ppp-соединения с мобильными интернет-провайдерами.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">


Строка 168: Строка 170:
iface ppp0 inet ppp
iface ppp0 inet ppp
provider mts
provider mts
#restart modem if it's broken or frozen
#рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken   
pre-up wb-gsm restart_if_broken   
#Then wait for it to load and find the network.
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
pre-up sleep 10
</syntaxhighlight>
</syntaxhighlight>




For ppp-interfaces, there are directories, executable files from which are also run at different phases of connection establishment. But, if, for example, ethernet interfaces, these scripts must be located in the /etc/network/if-down directories.d, if-post-down.d, if-pre-up.d, if-up.d, then the corresponding directories for ppp interfaces are in /etc/ppp/ip-down.d, ip-up.d, etc. (for details on their purpose and function, see 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 and routing settings====
====Настройки DNS и маршрутизации====


'''Important!''' By default, the ppp0 interface '''does not add a new default route via ppp during initialization''', if such a route exists and is configured, for example, via eth0. If required, you can modify the routing table through scripts in the ip-down.d, ip-up.d directories. In the simplest case, you can assign different metrics to the default gateways, so that if one falls, the second begins to be used. However, the situation, when the interface is operating normally but the traffic does not pass at the provider level, makes such a mechanism unusable. See the next section on how to use a ppp connection as a backup.  
'''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного.  


DNS server addresses are replaced with those that were received from the mobile provider. If you are using DHCP on the ethernet interfaces and the interface ppp0, the /etc/resolv.the conf changes when a connection is established through each of these interfaces according to the DNS server addresses received from the provider.  
Адреса DNS-серверов заменяются на те, которые были получены от провайдера мобильной связи. При использовании DHCP на ethernet-интерфейсах и интерфейсе ppp0 файл /etc/resolv.conf меняется при установлении соединения через каждый из этих  интерфейсов в соответствии с адресами DNS-серверов, полученными от провайдера.  


As a supplementary measure to improve reliability in the presence of two connections, we can offer the use of DNS servers that are independent of the provider, for example GoogleDNS (8.8.8, 8.8.4.4) and OpenDNS (208.67.222.222, 208.67.220.220). These servers are used frequently to determine the health of the network channel on a specific interface (ping -c5 -I eth0 8.8.8.8 or 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).


Note that when you deinitialize the ppp0 interface, all created associated with this interface routes will be automatically deleted.
Обратите внимание, что при деинициализации ppp0 интерфейса все созданные маршруты, связанные с ним, будут автоматически удалены.




==== Using GPRS as a backup channel ====
==== Использование GPRS в качестве резервного канала ====


The easiest way to ensure fault tolerance is to specify two default routes with different metrics, for example: for eth0 interface, specify metric 10:
Самый простой способ, обеспечить отказоустойчивость, это задать два маршрута по умолчанию с разными метриками, например:
для интерфейса eth0 указать метрику 10:
     auto eth0
     auto eth0
     iface eth0 inet dhcp
     iface eth0 inet dhcp
Строка 198: Строка 201:
     metric 10  
     metric 10  


and for the interface metric 100:
а для интерфейса метрику 100:
     auto ppp0
     auto ppp0
     iface ppp0 inet ppp
     iface ppp0 inet ppp
Строка 207: Строка 210:
     pre-up sleep 10
     pre-up sleep 10


In this case, if the connection via eth0 is lost (cable disconnection, switch disconnection, etc.), the route via the ppp0 interface becomes the default route.
В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0.


For more complex cases where the physical connection on the eth0 interface is not lost, it is recommended to use scripts (based on the availability of any network bridging on the Internet through one of the interfaces) that switch the default route. The Internet offers many solutions to this kind of problem, you can choose one of them.  
Для более сложных случаев, когда физическое соединение на интерфейсе eth0 не пропадает, рекомендуется применять скрипты, которые на основе доступности какого-либо сетевого уздла в интернете через один из интерфейсов переключают маршрут по умолчанию. В интернете предлагается множество решений решений такого рода задачи, можно выбрать одно из них.  


If the controller is normally connected to the Internet via Ethernet or Wi-Fi, and GPRS is to be used only in case of a main channel failure, this mode of operation is called ''failover''. It usually works like this:
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так:
#Work is organized through the main channel.
# Организуется работа через основной канал.
#The availability of Internet access through the main channel is constantly checked.
# Постоянно проверяется наличие доступа в Интернет через основной канал.
#In case of problems, a backup connection is started and the default gateway settings are changed.
# В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''.
#The main connection is constantly checked, and if the internet access is restored through it, the system returns to work via it, changing the ''default gateway''.
# Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''.


As an example, we specify two instructions for the organization of such a mode of operation:
В качестве примера укажем две инструкции по организации такого режима работы:
# http://lstein.github.io/Net-ISP-Balance/
# 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
# https://serverfault.com/questions/360131/ubuntu-failover-from-ethernet-to-adsl-modem-to-usb-3g-dongle?rq=1
Строка 223: Строка 226:


<span id="низкоуровневая-работа с модулем через at-команды"></span>
<span id="низкоуровневая-работа с модулем через at-команды"></span>
=== Low-level work with the module via AT-commands===
=== Низкоуровневая работа с модулем через AT-команды ===


Read the instructions - [[Работа с последовательным портом из Linux/en|Working with a serial port from Linux]]. Note the settings: 115200, 8N2, '''no hardware flow control'''.
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.


For interactive mode:
Для интерактивного режима:
*run '''minicom''' with the following key that creats the job profile to the port (transmission speed, parity, etc.):
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
<pre>
  $ minicom -s /dev/ttyGSM
  $ minicom -s /dev/ttyGSM
</pre>
</pre>
[[Файл:Minicom_settings.png|Minicom Settings]]
[[Special:MyLanguage/Файл:Minicom_settings.png|Настройки Minicom]]


* Go to settings (press ''Ctrl+A'', then ''O''), select ''Serial port setup'', set port ''/dev/ttyGSM'',set speed and parity - ''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 settings: ''Save setup as _dev_ttyGSM''
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
* Then run as '''minicom /dev/ttyGSM''' (all settings will be taken from the profile name ''/dev/ttyGSM'' that we previously created)
* Далее запускать как '''minicom /dev/ttyGSM''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyGSM'', который мы ранее создали)
* Your first command should be ''AAAAAAAAAT'' - the module automatically detects the communication speed (see [[Special:MyLanguage/SIM900R|SIM900R]])
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите [[Special:MyLanguage/SIM900R|SIM900R]])
* With the second command, simply run ''AT''. You should get the answer '''OK'''.
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''




==== Command examples ====
==== Примеры команд ====


(some commands may vary for some modules, see the module documentation for details)
(некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль)


* To synchronize the speed of the port (not a real command)
* Синхронизовать скорость порта (не совсем команда)
<pre>
<pre>
AAAAAAAAAAAAAT
AAAAAAAAAAAAAT
</pre>
</pre>
All networks list
Список всех сетей
<pre>
<pre>
AT+COPS=?
AT+COPS=?
</pre>
</pre>
Signal strength  (see [http://m2msupport.net/m2msupport/atcsq-signal-quality/ here])
Уровень сигнала (см. [http://m2msupport.net/m2msupport/atcsq-signal-quality/ здесь])
<pre>
<pre>
AT+CSQ
AT+CSQ
</pre>
</pre>
* Dialing +79154816102
* Звонок на номер +79154816102
<pre>
<pre>
ATD+79154816102;
ATD+79154816102;
</pre>
</pre>
* Set baud rate port to a fixed value 115200
* Установка baud rate порта в фиксированное значение 115200
<pre>
<pre>
AT+IPR=115200
AT+IPR=115200
</pre>
</pre>


* Request time from the built-in real-time clock (RTC) module
* Запрос времени со встроенных в модуль часов реального времени (RTC)
<pre>
<pre>
AT+CCLK?
AT+CCLK?
Строка 272: Строка 276:
</pre>
</pre>


* Get module IMEI-code (xxxxxx is a unique number)
* Получить IMEI-код модуля (xxxxxx - уникальный номер)
<pre>
<pre>
AT+GSN
AT+GSN
Строка 284: Строка 288:




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


The modem supports multiplexing mode which creates virtual ports,you can simultaneously work with the modem via these ports. For example, one port can be used to open a PPP session for GPRS, another - to receive and send SMS, check the balance, etc. see [[Special:MyLanguage/CMUX|CMUX]] for details. This mode is not supported for 2G modems.
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом.
Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д.
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов.

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

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

The Wiren Board controller is equipped with GSM/GPRS-module which can provide the following functions:

  • send/receive SMS
  • connect to the Internet via GPRS

See the module description for the full list of features:

  • 3G modem in Wiren Board 5 and Wiren Board 6: SIM5300E
  • 2G modem in Wiren Board 4, 5 and 6 :SIM800 or M660A;
  • Wiren Board Smart Home 3.5, Wiren Board 4:

SIM900R.


Getting started

Connect the antenna and insert the SIM card before starting the controller. If you have enabled the controller without a SIM card, restart the modem using the wb-gsm utility after installing it (see below).

Modem in Linux

Inside the controller, the modem is connected to the processor in one of two ways:

  • via UART port (device /dev/ttyGSM (previously: /dev/ttyAPP0)) - all modems, including 3G;
  • via USB port (devices /dev/ttyACM0-/dev/ttyACM6) - 3G only.

You can work with the modem at a low level by sending commands to the port /dev/ttyygsm or /dev/ttyACM0, respectively. For 3G-connection port UART is not suitable due to the bandwidth limitations of the UART-channel, you should use ACM-port /dev/ttyACM0.

Modem control pins PWRKEY and RESET are also connected to the processor, you can turn off or restart the modem using them. Usually you do not need to work with them directly - the reboot is performed by the wb-gsm utility (see below), but also direct access to these contacts via GPIO is implemented (read more about GPIO, look for the corresponding names in the table).


Enabling the module

By default, the modem is automatically turned on when the controller boots. Then it can be turned off and reloaded with the wb-gsm utility (the utility is included in the standard image in the wb-utils package).

$ wb-gsm on #  turn on the device
$ wb-gsm off #  turn off the device
$ wb-gsm reset #  reboot the enabled device
$ wb-gsm restart_if_broken #  enable or reboot if the modem is not responding


SIM7000E 2G/NB-IoT modems

The SIM7000E 2G/NB-IoT modem is set to select GSM and LTE networks automatically by default. However, in a network or with aSIM card without NB-IoT support, the modem is not registered in the GSM (GPRS) network. In order for the modem to be able to register in the GSM network, it is necessary to force it into 'GSM only' mode.

In the terminal mode of the modem, for example, in the minicom program (see below section #low-Level work with the module via AT-commands), you must enter the mode selection command:

AT+CNMP=13

Possible values:(command AT+CNMP=?): 2-Automatic,13-GSM Only,38-LTE Only,51-GSM And LTE Only

The mode is remembered and active and after power off, you need to set the mode once.

To return to IoT mode, run the following command:

AT+CNMP=51 


Sending and receiving SMS and USSD

gammu-config

The easiest way to work with SMS is with the help of Gammu program (this is a fork of gnokii utility, which has ceased to be developed).

(here is a brief instruction below, see the full documentation on the project website)

  1. Create a configuration file by running gammu-config
    1. In the Port parameter, specify /dev/ttyGSM
    2. In the Connection parameter, specifyat115200
  2. Command examples
$ gammu networkinfo # view the networkand the base station which you are connected to
$ gammu geteachsms # print all SMS
$ gammu getussd '#100#' # balance request in transliteration on MTS russian GSM mobile operator 
$ gammu sendsms TEXT +79154816102 -unicode -text 'Hi' # send 'Hi' to the number

SMS and USSD in russian(if needed) or different languages

SMS and USSD in Russian in gammu still do not work always properly, so commands can be useful to switch the language of USSD and transcoding incoming and outgoing SMS into transliteration:

Operator USSD SMS
translit Russian translit Russian
МТS *100*6*2# *100*6*1# unknown unknown
Меgafon *105*0# *105*9# unknown unknown
Beeline *111*6*2# *111*6*1# unknown unknown
Тele2 *120# *120*1# unknown unknown


Internet connection

The modem must be turned on before you can access the Internet. To do this manually or in the network interface configuration file (see below), run the following command

wb-gsm restart_if_broken


Quick setup of automatic Internet access

В стандартное ПО 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-модемов.