16 808
правок
м (→Автоматическое восстановление подключения: Добавил ссылку на пример автозапуска скрипта. Позже вынесу инструкцию по автозапуску скриптов в отдельную статью и дам ссылку на нее.) |
|||
(не показана 61 промежуточная версия 6 участников) | |||
Строка 1: | Строка 1: | ||
В контроллеры Wiren Board могут быть установлены 2G/3G/4G/NB-IOT модемы — зависит от комплектации | {{DISPLAYTITLE: Настройка 2G/3G/NB-IOT модемов в контроллере Wiren Board, а также 4G-модемов на Debian Stretch }} | ||
== Общая информация == | |||
{{note|info|Эта статья описывает настройку 2G/3G/NB-IOT модемов в контроллерах Wiren Board 5...7, а также 4G(LTE)-модема в релизе [[wb-2207]] и старее. Для настройки 4G(LTE)-модема в релизе [[wb-2304]] и новее, используйте эту [[Modem-bullseye|инструкцию]].}} | |||
В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации. | |||
С помощью модемов можно: | |||
* [[#Работа с sms и ussd | отправлять и принимать SMS]], | |||
* подключаться к интернету по [[#Интернет через PPP|протоколу PPP]] для 2G- и 3G-модемов, а также настраивать 4G-модем как [[#Интернет с 4G-модемом (LTE)|сетевую карту]] с выходом в интернет. | |||
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. | Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. | ||
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе | Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]]. | ||
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio. Включение и отключение модема | Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]]. | ||
Включение и отключение модема рекомендуем делать с помощью утилиты [[#Утилита wb-gsm|wb-gsm]]. | |||
== Получение информации о модеме == | == Получение информации о модеме == | ||
Строка 15: | Строка 20: | ||
В контроллерах версии 6.7 модем устанавливается модулем расширения. | В контроллерах версии 6.7 модем устанавливается модулем расширения. | ||
{{Wbincludes:Configuration WBC}} | {{Wbincludes:Configuration WBC}} | ||
Строка 35: | Строка 39: | ||
== Включение и начало работы == | == Включение и начало работы == | ||
Чтобы начать работу с модемом, нужно: | |||
#[[SIM_card_installation | Вставьте sim-карту]]. | |||
#Подключите антенну. | |||
#Перезапустите модем, выполнив команду | |||
#:<syntaxhighlight lang="bash"> | |||
wb-gsm restart_if_broken | |||
</syntaxhighlight> | |||
После каждой смены sim-карты необходимо перезапускать модем. | |||
== Утилита wb-gsm == | == Утилита wb-gsm == | ||
Для упрощения работы с модемами была написана утилита <code>wb-gsm</code> | Для упрощения работы с модемами была написана утилита <code>wb-gsm</code>, которая входит в пакет [https://github.com/wirenboard/wb-utils wb-utils]. | ||
Утилита <code>wb-gsm</code> входит в состав пакета <code>wb-utils</code>, который предустановлен на все контроллеры Wiren Board. | |||
С помощью <code>wb-gsm</code> вы сможете: | |||
* управлять питанием модемов, команды <code>on, off, restart_if_broken</code>; | |||
* настраивать baudrate связи по uart, команды <code>init_baud, set_speed</code>; | |||
* получать imei, команда <code>imei</code>. | |||
Все команды wb-gsm можно посмотреть в репозитории на Github по ссылке в начале раздела. | |||
Пример использования утилиты <code>wb-gsm</code> для получения imei модема, флаг <code>DEBUG=true</code> — выводить отладочную информацию: | |||
<syntaxhighlight lang="bash"> | |||
DEBUG=true wb-gsm imei | |||
</syntaxhighlight> | |||
== Переключение активной sim-карты == | == Переключение активной sim-карты == | ||
Строка 60: | Строка 76: | ||
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0. | По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0. | ||
Подробнее о работе с gpio можно узнать из статьи | Подробнее о работе с gpio можно узнать из статьи [[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]]. | ||
Для того | Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
AT+CFUN=0 | AT+CFUN=0 | ||
Строка 76: | Строка 92: | ||
*uart: Порт <code>/dev/ttyGSM</code> является ссылкой на ''/dev/ttymxc'''X''''' (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на [https://github.com/wirenboard/wb-configs/tree/master/configs/usr/share/wb-configs/udev нашем github]). | *uart: Порт <code>/dev/ttyGSM</code> является ссылкой на ''/dev/ttymxc'''X''''' (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на [https://github.com/wirenboard/wb-configs/tree/master/configs/usr/share/wb-configs/udev нашем github]). | ||
*usb: Порты ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это <code>/dev/ttyACM0-6</code>, однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <syntaxhighlight lang="bash">wb-gsm | *usb: Порты ''/dev/ttyUSB'''X''''' или ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это <code>/dev/ttyACM0-6</code>, однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <syntaxhighlight lang="bash">wb-gsm restart_if_broken; dmesg | tail</syntaxhighlight>. | ||
Примерный вывод команды: | Примерный вывод команды: | ||
Строка 96: | Строка 112: | ||
=== Отправка AT-команд === | === Отправка AT-команд === | ||
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]] | |||
{{Wbincludes:GSM Modem Default Connection Parameters}} | |||
Для работы в интерактивном режиме рекомендуем использовать утилиту [[minicom]]: | |||
{{Wbincludes:GSM Modem AT Prepare}} | |||
Модем готов к передаче AT-команд. | |||
Чтобы закрыть minicom, нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>. | |||
< | |||
</ | |||
== Работа с sms и ussd == | == Работа с sms и ussd == | ||
Строка 132: | Строка 140: | ||
=== Примеры команд gammu === | === Примеры команд gammu === | ||
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]]) | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 157: | Строка 166: | ||
|} | |} | ||
Для надежной | Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8 | ||
=== SMS-уведомления === | === SMS-уведомления === | ||
Строка 164: | Строка 173: | ||
== Интернет через PPP == | == Интернет через PPP == | ||
{{YouTube | |||
| link= https://youtu.be/ZbJUwoifbzE | |||
| text= Настройка интернета через PPP с помощью 2G-модема | |||
}} | |||
=== Быстрый выход в интернет === | |||
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения. | |||
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек: | |||
#Перезапустите модем: | |||
#:<syntaxhighlight lang="bash"> | |||
wb-gsm restart_if_broken | |||
</syntaxhighlight> | |||
#Установите соединение, например, для оператора МТС: | |||
#:<syntaxhighlight lang="bash"> | |||
pon mts | |||
</syntaxhighlight> | |||
#:<code>mts</code> можно заменить на <code>megafon</code> или <code>beeline</code> — зависит от вашего оператора связи. | |||
# Если соединение больше не нужно — вы можете его завершить командой: | |||
#:<syntaxhighlight lang="bash"> | |||
poff mts | |||
</syntaxhighlight> | |||
Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле <code>/etc/ppp/peers/<ваш_провайдер_связи></code> замените устройство <code>/dev/ttyGSM</code> на (в зависимости от модема) <code>/dev/ttyUSB0</code> или <code>/dev/ttyACM0</code>. | |||
Например, изменим порт для провайдера МТС: | |||
# Откройте файл <code>/etc/ppp/peers/mts</code> | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/ppp/peers/mts | |||
</syntaxhighlight> | |||
# Закомментируйте старый порт и добавьте новый: | |||
#:<syntaxhighlight lang="bash"> | |||
#/dev/ttyGSM | |||
/dev/ttyUSB0 | |||
</syntaxhighlight> | |||
#:порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом. | |||
# {{Wbincludes:Save nano}} | |||
Порты <code>/dev/ttyUSB0</code>,<code>/dev/ttyUSB1</code>,<code>/dev/ttyUSB2</code> появляются автоматически после включения модема командой <code>wb-gsm on</code>. | |||
=== Автоматический запуск подключения === | === Автоматический запуск подключения === | ||
{{Wbincludes:GSM | [[Image:Etc-network-interfaces.png|300px|thumb|right|Файл ''/etc/network/interfaces'', автоматически запускающий подключение к МТС]] | ||
Чтобы подключение запускалось автоматически: | |||
#Откройте файл <code>/etc/network/interfaces</code> для редактирования: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/network/interfaces | |||
</syntaxhighlight> | |||
#Раскомментируйте или отредактируйте следующие строки: | |||
#:<syntaxhighlight lang="bash"> | |||
auto ppp0 | |||
iface ppp0 inet ppp | |||
provider mts # можно заменить mts на megafon или beeline | |||
#перезапускаем модем, если он завис | |||
pre-up wb-gsm restart_if_broken | |||
#Ждем, пока он загрузится и найдет сеть. | |||
pre-up sleep 10 | |||
</syntaxhighlight> | |||
# Сохраните изменения и закройте файл. | |||
# Теперь запустите интерфейс <code>ppp0</code> командой: | |||
#:<syntaxhighlight lang="bash"> | |||
ifup ppp0 | |||
</syntaxhighlight> | |||
#:через 10-15 секунд интерфейс <code>ppp0</code> будет доступен. | |||
# Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически. | |||
Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории <code>/etc/chatscripts</code>. В большинстве случаев ничего менять в этих файлах не придется. | |||
Для ppp-интерфейсов существуют директории, исполняемые файлы из которых также запускаются на разных фазах установления соединения. Но, если, например, для ethernet-интерфейсов эти скрипты должны находиться в директориях <code>/etc/network/if-down.d</code>, <code>if-post-down.d</code>, <code>if-pre-up.d</code>, <code>if-up.d</code>, то соответствующие директории для ppp-интерфейсов находятся в <code>/etc/ppp/ip-down.d</code>, <code>ip-up.d</code> и т.п. Подробнее об их назначении и функционировании можно узнать в документе [http://citforum.ru/operating_systems/linux/HOWTO/PPP-HOWTO.shtml PPP HOWTO]. | |||
=== Резервирование канала связи === | |||
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]]. | |||
== Интернет с 4G-модемом (LTE) == | |||
{{YouTube | |||
| link= https://youtu.be/vWNwxB7Lino | |||
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2 | |||
}} | |||
[[Image: Minicom-AT-4G.png |500px|thumb|right| Отправка AT-комманд для модема в терминале программы [[minicom]]]] | |||
[[Image: Minicom-AT-4G-Exit.png |500px|thumb|right| Выход из программы [[minicom]]]] | |||
=== Настройка модема как сетевой карты === | |||
В отличие от 2G- и 3G-модулей, [[WBC-4G]] поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS. | |||
'''Настройка с помощью minicom''': | |||
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]]. | |||
{{Wbincludes:GSM Modem AT Prepare}} | |||
# Отправьте из терминала minicom AT-команды для модема: | |||
#* Настроить автоматическое подключение: <code>AT+DIALMODE=0</code>. | |||
#* Установить APN: <code>AT+CGDCONT=1,"IP","xxx"</code>, где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так: <code>internet.mts.ru</code>. | |||
#* Проверить получение IP адреса: <code>AT+CGCONTRDP</code>. | |||
# Закройте minicom, для этого нажмите на клавиатуре клавиши <kbd>Ctrl</kbd>+<kbd>A</kbd>, затем клавишу <kbd>X</kbd> и подтвердите выход клавишей <kbd>Enter</kbd>. | |||
После этого интернет будет доступен через интерфейс <code>usb0</code>, который можно настроить как обычную сетевую карту. | |||
'''Настройка с помощью chat''': | |||
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]]. | |||
# Подключитесь к контроллеру по [[SSH]]. | |||
# Перезапустите модем командой: | |||
#: <syntaxhighlight lang="bash"> | |||
wb-gsm restart_if_broken | |||
</syntaxhighlight> | |||
# Замените в строке ниже APN_INTERNET на точку подключения вашего провайдера, вставьте изменённую строку консоль контроллера и нажмите на клавиатуре <kbd>Enter</kbd>: | |||
#: <syntaxhighlight lang="bash"> | |||
PORT=/dev/ttyGSM; /usr/sbin/chat -s TIMEOUT 20 ABORT "ERROR" ECHO ON "" "AAAAAAAAAAAAAT" OK "AT+CMGF=1" OK "AT+DIALMODE=0" OK "AT+CGDCONT=1,\"IP\",\"APN_INTERNET\"" OK "AT+CGCONTRDP" "OK" > $PORT < $PORT | |||
</syntaxhighlight> | |||
Этот способ можно использовать при написании скриптов. | |||
=== Настройка виртуальной сетевой карты === | |||
==== Включение ==== | |||
После того как мы настроили модем, нужно настроить виртуальную сетевую карту: | |||
# Откройте файл <code>/etc/network/interfaces</code>: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/network/interfaces | |||
</syntaxhighlight> | |||
# Добавьте в него строки: | |||
#:<syntaxhighlight lang="bash"> | |||
auto usb0 | |||
allow-hotplug usb0 | |||
iface usb0 inet dhcp | |||
pre-up sleep 8 | |||
pre-up wb-gsm restart_if_broken | |||
pre-up sleep 10 | |||
</syntaxhighlight> | |||
#: автоматически запустить модем, интерфейс и получать IP-адрес. Задержки ''pre-up sleep'' перед и после включения модема нужны для надёжного старта. | |||
# Сохраните и закройте файл <code>interfaces</code>. {{Wbincludes:Save nano}} | |||
# Запустите интерфейс командой: | |||
#:<syntaxhighlight lang="bash"> | |||
ifup usb0 | |||
</syntaxhighlight> | |||
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически. | |||
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду: | |||
<syntaxhighlight lang="bash"> | |||
AT+USBNETIP=0,100,111 | |||
</syntaxhighlight> | |||
Команда имеет следующий синтаксис: | |||
<syntaxhighlight lang="bash"> | |||
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe> | |||
</syntaxhighlight> | |||
=== | {| border="1" class="wikitable" style="text-align:left" | ||
|- | |||
|<mode> || | |||
0 – частный IP-адрес (по умолчанию, 192.168.0.xxx и т. д.) </br> | |||
1 – Публичный IP (ip из сети). Вступает в силу после перезагрузки модема. | |||
|- | |||
|<tpos> || Третья позиция IP-адреса | |||
|- | |||
|<dhcps> || Начальное значение DHCP | |||
|- | |||
|<dhcpe> || Конечное значение DHCP | |||
|} | |||
'''Предупреждение!''' Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
AT+USBNETIP? | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Функция поддерживается, если получен ответ | |||
<syntaxhighlight lang="bash"> | |||
+USBNETIP: mode | |||
OK | |||
</syntaxhighlight> | |||
==== Отключение ==== | |||
# Остановите интерфейс командой: | |||
#:<syntaxhighlight lang="bash"> | |||
ifdown usb0 | |||
</syntaxhighlight> | |||
# Откройте файл <code>/etc/network/interfaces</code>: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/network/interfaces | |||
</syntaxhighlight> | |||
# Закомментируйте или удалите строки: | |||
#:<syntaxhighlight lang="bash"> | |||
#auto usb0 | |||
#allow-hotplug usb0 | |||
#iface usb0 inet dhcp | |||
# pre-up sleep 8 | |||
# pre-up wb-gsm restart_if_broken | |||
# pre-up sleep 10 | |||
</syntaxhighlight> | |||
# Сохраните и закройте файл <code>interfaces</code>. {{Wbincludes:Save nano}} | |||
==Мультиплексирование== | ==Мультиплексирование== | ||
Строка 219: | Строка 381: | ||
|} | |} | ||
= GPRS на модемах SIM7000E 2G/NB-IoT = | == GPRS на модемах SIM7000E 2G/NB-IoT == | ||
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). | Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). |