Modem-stretch/en: различия между версиями
FuzzyBot (обсуждение | вклад) м (FuzzyBot переименовал страницу GSM/GPRS/en в Modem-stretch/en без оставления перенаправления: Часть переводимой страницы GSM/GPRS.) |
(Новая страница: «===Sending and receiving SMS and USSD===») |
||
(не показано 49 промежуточных версий 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]]. | ||
Строка 58: | Строка 58: | ||
[[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''', которую перестали развивать). | |||
( | (ниже дана краткая инструкция, полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта]) | ||
# | #Создайте файл конфигурации, запустив ''gammu-config'' | ||
## | ##В параметре ''Port'' укажите ''/dev/ttyGSM'' | ||
## | ##В параметре ''Connection'' укажите ''at115200'' | ||
# | #Примеры команд: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ gammu networkinfo # | $ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены | ||
$ gammu geteachsms # | $ gammu geteachsms # вывести все SMS | ||
$ gammu getussd '#100#' # | $ gammu getussd '#100#' # запросить баланс на МТС в транслите | ||
$ gammu sendsms TEXT +79154816102 -unicode -text ' | $ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом | ||
</syntaxhighlight> | </syntaxhighlight> | ||
====SMS | ====SMS и USSD на русском==== | ||
SMS | SMS и USSD на русском пока работают в ''gammu'' не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит: | ||
{| class="wikitable" | {| class="wikitable" | ||
!rowspan="2"| | !rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS | ||
|- | |- | ||
! | !транслит||русский||транслит||русский | ||
|- | |- | ||
| | |МТС||*100*6*2#||*100*6*1#||неизвестно||неизвестно | ||
|- | |- | ||
| | |Мегафон||*105*0#||*105*9#||неизвестно||неизвестно | ||
|- | |- | ||
| | |Билайн||*111*6*2#||*111*6*1#||неизвестно||неизвестно | ||
|- | |- | ||
| | |Теле2||*120#||*120*1#||неизвестно||неизвестно | ||
|} | |} | ||
=== | ===Выход в интернет=== | ||
Перед выходом в интернет необходимо, чтобы модем был включен. Для этого вручную или в файле настройке сетевых интерфейсов (см. далее) выполните команду <pre>wb-gsm restart_if_broken</pre> | |||
==== | ==== Быстрая настройка автоматического выхода в интернет ==== | ||
В стандартное ПО Wiren Board входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, для запуска подключения выполните команду | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pon mts # | pon mts # можно заменить mts на megafon или beeline | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Чтобы отключить подключение, выполните | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
poff mts # | poff mts # можно заменить mts на megafon или beeline | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[File:Etc-network-interfaces.png|300px|thumb|right| | [[File:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]] | ||
Чтобы подключение запускалось автоматически, откройте файл ''/etc/network/interfaces'' и раскомментируйте/отредактируйте следующие строки: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
auto ppp0 | auto ppp0 | ||
iface ppp0 inet ppp | iface ppp0 inet ppp | ||
provider mts # | provider mts # можно заменить mts на megafon или beeline | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Но если вы хотите, чтобы подключение само восстанавливалось при обрыве, смотрите полную инструкцию ниже. | |||
==== | ==== Пошаговая инструкция настройки постоянного GPRS-подключения ==== | ||
* | * Подсоедините антенну к разъему GSM | ||
* | * СИМ-карту в слот micro SIM 1 | ||
* | * Включите модем командой wb-gsm restart_if_broken | ||
* | * Если ваш контроллер укомплектован 3G-модемом, в файле /etc/ppp/peers/ваш_провайдер_сотовой_связи (в примере — МТС) замените устройство <code>/dev/ttyGSM</code> на <code>/dev/ttyACM0</code> | ||
* В файле <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 | ||
# | #рестартуем модем, если он завис | ||
pre-up wb-gsm restart_if_broken | pre-up wb-gsm restart_if_broken | ||
# | #Затем ждем, пока он загрузится и найдет сеть. | ||
pre-up sleep 10 | pre-up sleep 10 | ||
</pre> | </pre> | ||
* | * Выполните команду <code>ifup ppp0</code> — через 15 секунд интерфейс ppp0 будет доступен. | ||
* | *После перезагрузки интерфейс будет автоматически включаться и восстанавливать соединение после обрыва сотовой связи. | ||
==== | ==== Полная инструкция ==== | ||
Выход в интернет через 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'', которые должны присутствовать в конфигурационных файлах. | |||
Если подключение к интернету осуществляется в сети 3G, то в конфигурационном файле для вашего оператора следует заменить UART-порт (/dev/ttyGSM (или /dev/ttyAPP0 в старых моделях контроллеров)) на CDC-ACM-порт (/dev/ttyACM0). Это необходимо, чтобы скорость обмена данными не ограничивалась пропускной способностью UART-порта модема: | |||
[[ | [[Файл:GSM-ACM.png|Файл:GSM-ACM.png]] | ||
После создания конфигурационного файла запустите подключение, выполнив | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pon | pon название_подключения | ||
</syntaxhighlight> | </syntaxhighlight> | ||
или отредактировав файл ''/etc/network/interfaces'', как описано выше. | |||
Чтобы подключение само перезапускалось при обрыве, и делало это неограниченное число раз, добавьте в настройки подключения (файл настроек выбранного оператора в директории /etc/ppp/peers) строки: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
persist | persist | ||
maxfail 0 | maxfail 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
если их там нет. В последних версиях контроллеров эти параметры сконфигурированы по умолчанию. | |||
Наиболее полные возможности по контролю за установлением подключения к интернету дает использование настройки интерфейса ppp0 в файле ''/etc/network/interfaces''. | |||
Самой востребованной опцией является возможность выполнения команд перед установлением и после включения/отключения интерфейса ppp0. | |||
В файле /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. | |||
Мы же приведем здесь в качестве примера параметры, которые '''мы рекомендуем''' использовать при настройке ppp-соединения с мобильными интернет-провайдерами. | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 168: | Строка 170: | ||
iface ppp0 inet ppp | iface ppp0 inet ppp | ||
provider mts | provider mts | ||
# | #рестартуем модем, если он завис | ||
pre-up wb-gsm restart_if_broken | pre-up wb-gsm restart_if_broken | ||
# | #Затем ждем, пока он загрузится и найдет сеть. | ||
pre-up sleep 10 | pre-up sleep 10 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Для 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 и маршрутизации==== | ||
''' | '''Важно!''' По умолчанию интерфейс ppp0 при инициализации '''не добавляет нового маршрута по умолчанию''' через ppp, в случае, если такой маршрут существует и настроен, скажем, через eth0. Если это требуется, то изменение таблицы маршрутизации можно выполнять через скрипты в директориях ip-down.d, ip-up.d. В простейшем случае, можно назначать шлюзам по умолчанию разные метрики, чтобы в случае падения одного начинал бы использоваться второй. Однако ситуация, когда интерфейс функционирует нормально, но трафик не проходит на уровне провайдера, делает такой механизм неработоспособным. Смотрите следующий раздел о том, как использовать ppp-соединение в качестве резервного. | ||
DNS | Адреса 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 | auto eth0 | ||
iface eth0 inet dhcp | iface eth0 inet dhcp | ||
Строка 198: | Строка 201: | ||
metric 10 | metric 10 | ||
а для интерфейса — метрику 100: | |||
auto ppp0 | auto ppp0 | ||
iface ppp0 inet ppp | iface ppp0 inet ppp | ||
Строка 207: | Строка 210: | ||
pre-up sleep 10 | pre-up sleep 10 | ||
В этом случае, если подключение через eth0 пропадет (обрыв кабеля, отключение коммутатора и т.п.), то маршрутом по умолчанию становится маршрут через интерфейс ppp0. | |||
Для более сложных случаев, когда физическое соединение на интерфейсе eth0 не пропадает, рекомендуется применять скрипты, которые на основе доступности какого-либо сетевого уздла в интернете через один из интерфейсов переключают маршрут по умолчанию. В интернете предлагается множество решений решений такого рода задачи, можно выбрать одно из них. | |||
Если контроллер обычно подключён к Интернету через Ethernet или Wi-Fi, а GPRS должен использоваться только при неполадках основного канала, такой режим работы называется ''failover''. Обычно он работает так: | |||
# | # Организуется работа через основной канал. | ||
# | # Постоянно проверяется наличие доступа в Интернет через основной канал. | ||
# | # В случае неполадок запускается запасное соединение, меняются настройки ''default gateway''. | ||
# | # Основное соединение постоянно проверяется, и если доступ в Интернет через него восстанавливается, система возвращается к работе через него, изменяя ''default gateway''. | ||
В качестве примера укажем две инструкции по организации такого режима работы: | |||
# 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> | ||
=== | === Низкоуровневая работа с модулем через AT-команды === | ||
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]]. | |||
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''. | |||
Для интерактивного режима: | |||
* | * запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.): | ||
<pre> | <pre> | ||
$ minicom -s /dev/ttyGSM | $ minicom -s /dev/ttyGSM | ||
</pre> | </pre> | ||
[[Файл:Minicom_settings.png|Minicom | [[Special:MyLanguage/Файл:Minicom_settings.png|Настройки 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'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите [[Special:MyLanguage/SIM900R|SIM900R]]) | ||
* | * Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK''' | ||
==== | ==== Примеры команд ==== | ||
( | (некоторые команды могут различаться в разных модулях, смотрите подробнее в документации на модуль) | ||
* | * Синхронизовать скорость порта (не совсем команда) | ||
<pre> | <pre> | ||
AAAAAAAAAAAAAT | AAAAAAAAAAAAAT | ||
</pre> | </pre> | ||
* | * Список всех сетей | ||
<pre> | <pre> | ||
AT+COPS=? | AT+COPS=? | ||
</pre> | </pre> | ||
* | * Уровень сигнала (см. [http://m2msupport.net/m2msupport/atcsq-signal-quality/ здесь]) | ||
<pre> | <pre> | ||
AT+CSQ | AT+CSQ | ||
</pre> | </pre> | ||
* | * Звонок на номер +79154816102 | ||
<pre> | <pre> | ||
ATD+79154816102; | ATD+79154816102; | ||
</pre> | </pre> | ||
* | * Установка baud rate порта в фиксированное значение 115200 | ||
<pre> | <pre> | ||
AT+IPR=115200 | AT+IPR=115200 | ||
</pre> | </pre> | ||
* | * Запрос времени со встроенных в модуль часов реального времени (RTC) | ||
<pre> | <pre> | ||
AT+CCLK? | AT+CCLK? | ||
Строка 272: | Строка 276: | ||
</pre> | </pre> | ||
* | * Получить IMEI-код модуля (xxxxxx - уникальный номер) | ||
<pre> | <pre> | ||
AT+GSN | AT+GSN | ||
Строка 284: | Строка 288: | ||
=== | ===Мультиплексирование=== | ||
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом. | |||
Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д. | |||
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов. |
Версия 13:21, 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:
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
Работать с 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-модемов.