Modem-stretch: различия между версиями
(не показано 175 промежуточных версий 11 участников) | |||
Строка 1: | Строка 1: | ||
{{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|Низкоуровневая работа по uart]]. | |||
=== Включение | Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]]. | ||
Включение и отключение модема рекомендуем делать с помощью утилиты [[#Утилита wb-gsm|wb-gsm]]. | |||
== Получение информации о модеме == | |||
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории <code>/proc/device-tree/wirenboard/gsm/</code>. | |||
В контроллерах версии 6.7 модем устанавливается модулем расширения. | |||
{{Wbincludes:Configuration WBC}} | |||
Например, чтобы узнать модель модема, нужно выполнить команду | |||
<syntaxhighlight lang="bash"> | |||
cat /proc/device-tree/wirenboard/gsm/model | |||
</syntaxhighlight> | |||
Подробнее о файлах внутри директории можно узнать из таблицы: | |||
{| class="wikitable" | |||
!Файл||Описание | |||
|- | |||
||/proc/device-tree/wirenboard/gsm/model||модель модема | |||
|- | |||
||/proc/device-tree/wirenboard/gsm/type||поддерживаемые сети | |||
|- | |||
||/proc/device-tree/wirenboard/gsm/status||статус модема в системе | |||
|} | |||
== Включение и начало работы == | |||
Чтобы начать работу с модемом, нужно: | |||
#[[SIM_card_installation | Вставьте sim-карту]]. | |||
#Подключите антенну. | |||
#Перезапустите модем, выполнив команду | |||
#:<syntaxhighlight lang="bash"> | |||
wb-gsm restart_if_broken | |||
</syntaxhighlight> | |||
После каждой смены sim-карты необходимо перезапускать модем. | |||
== Утилита wb-gsm == | |||
Для упрощения работы с модемами была написана утилита <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"> | <syntaxhighlight lang="bash"> | ||
DEBUG=true wb-gsm imei | |||
</syntaxhighlight> | </syntaxhighlight> | ||
( | == Переключение активной sim-карты == | ||
По умолчанию активна Sim1 — в каждый момент времени '''только одна sim-карта может быть активной'''. | |||
Переключить модем на другую sim-карту можно с помощью gpio процессора. Узнать его номер можно двумя способами: | |||
*выполнить команду <syntaxhighlight lang="bash">echo $WB_GPIO_GSM_SIMSELECT</syntaxhighlight> | |||
*найти ''SIM Slot Select gpio'' в [[Wiren_Board_6.1:Список_GPIO#Ножки для внутреннего использования|таблице gpio]] контроллера. | |||
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88): <syntaxhighlight lang="bash">echo 1 > /sys/class/gpio/gpio88/value</syntaxhighlight> Соответственно, для переключения обратно на sim1, нужно записать 0. | |||
Подробнее о работе с gpio можно узнать из статьи [[Работа_с_GPIO#Интерфейс sysfs в Linux|Работа_с_GPIO]]. | |||
Для того чтобы новая sim-карта стала активной, нужно '''выполнить следующие AT-команды''' (см. [[#Отправка AT-команд|раздел о работе с AT-командами]]): | |||
<syntaxhighlight lang="bash"> | |||
AT+CFUN=0 | |||
AT+CFUN=1 | |||
</syntaxhighlight> | |||
== Низкоуровневая работа по uart == | |||
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту <code>/dev/ttyGSM</code>. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером <code>cdc_acm</code>). | |||
=== Подключение в linux === | |||
*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/ttyUSB'''X''''' или ''/dev/ttyACM'''X''''' (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это <code>/dev/ttyACM0-6</code>, однако '''точно''' определить, к каким портам модем подключен по USB можно, выполнив команды: <syntaxhighlight lang="bash">wb-gsm restart_if_broken; dmesg | tail</syntaxhighlight>. | |||
Примерный вывод команды: | |||
<syntaxhighlight lang="bash"> | |||
[ 6102.978383] usb 2-1.2: New USB device found, idVendor=1e0e, idProduct=0020 | |||
[ 6102.985653] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | |||
[ 6102.993108] usb 2-1.2: Product: SIMCOM_PRODUCT | |||
[ 6102.997728] usb 2-1.2: Manufacturer: SIMCOM_VENDOR | |||
[ 6103.002644] usb 2-1.2: SerialNumber: 004999010640000 | |||
[ 6103.082093] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device | |||
[ 6103.098228] cdc_acm 2-1.2:1.2: ttyACM1: USB ACM device | |||
[ 6103.116769] cdc_acm 2-1.2:1.4: ttyACM2: USB ACM device | |||
[ 6103.132688] cdc_acm 2-1.2:1.6: ttyACM3: USB ACM device | |||
[ 6103.145157] cdc_acm 2-1.2:1.8: ttyACM4: USB ACM device | |||
[ 6103.163705] cdc_acm 2-1.2:1.10: ttyACM5: USB ACM device | |||
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device | |||
</syntaxhighlight> | |||
Соответственно, в данном случае 3G модем подключен к портам <code>/dev/ttyACM0 - /dev/ttyACM6</code>. | |||
=== Отправка 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 проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты <code>gnokii</code>, которую перестали развивать). | |||
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция. | |||
=== Настройка === | |||
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки: | |||
*Обновить пакет <code>wb-configs</code>. Для этого, нужно выполнить команды <syntaxhighlight lang="bash">apt update && apt install wb-configs</syntaxhighlight> | |||
[[File:Gammu-config.png|300px|thumb|right|Настройка gammu вручную (''gammu-config'')]] | |||
*Настроить gammu вручную: | |||
#Выполнить команду <syntaxhighlight lang="bash">gammu-config</syntaxhighlight> | |||
#В параметре <code>Port</code> укажите <code>/dev/ttyXXX</code> — файл модема, соответствующий вашей модели контроллера. | |||
#В параметре <code>Connection</code> укажите <code>at115200</code> | |||
=== Примеры команд gammu === | |||
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел [[#Интернет через PPP | Интернет через PPP]]) | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены | $ gammu networkinfo # посмотреть сеть и базовую станцию, к которой вы подключены | ||
Строка 41: | Строка 148: | ||
$ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом | $ gammu sendsms TEXT +79154816102 -unicode -text 'Привет' # отправить на номер сообщение с текстом | ||
</syntaxhighlight> | </syntaxhighlight> | ||
SMS и USSD на русском | === SMS и USSD на русском === | ||
SMS и USSD на русском в ''gammu'' пока работают не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит: | |||
{| class="wikitable" | {| class="wikitable" | ||
!rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS | !rowspan="2"|Оператор||colspan="2"|USSD||colspan="2"|SMS | ||
Строка 57: | Строка 166: | ||
|} | |} | ||
=== | Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8 | ||
==== | |||
В стандартное ПО | === SMS-уведомления === | ||
<syntaxhighlight lang="bash"> | |||
pon mts # можно заменить | Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]». | ||
== Интернет через 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> | </syntaxhighlight> | ||
Чтобы | #:порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом. | ||
<syntaxhighlight lang="bash"> | # {{Wbincludes:Save nano}} | ||
Порты <code>/dev/ttyUSB0</code>,<code>/dev/ttyUSB1</code>,<code>/dev/ttyUSB2</code> появляются автоматически после включения модема командой <code>wb-gsm on</code>. | |||
=== Автоматический запуск подключения === | |||
[[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> | ||
#Раскомментируйте или отредактируйте следующие строки: | |||
#:<syntaxhighlight lang="bash"> | |||
<syntaxhighlight lang="bash"> | |||
auto ppp0 | auto ppp0 | ||
iface ppp0 inet ppp | iface ppp0 inet ppp | ||
provider mts # можно заменить mts на megafon или beeline | provider mts # можно заменить mts на megafon или beeline | ||
#перезапускаем модем, если он завис | |||
pre-up wb-gsm restart_if_broken | |||
#Ждем, пока он загрузится и найдет сеть. | |||
pre-up sleep 10 | |||
</syntaxhighlight> | </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"> | <syntaxhighlight lang="bash"> | ||
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe> | |||
</syntaxhighlight> | </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}} | |||
==Мультиплексирование== | |||
Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом. | |||
Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д. | |||
Подробнее смотрите [[Special:MyLanguage/CMUX|CMUX]]. Этот режим не поддерживается для 2G-модемов. | |||
==Документация на модемы== | |||
{| class="wikitable" | |||
!Модель||Режимы сети||краткое описание||hardware design||AT-команды | |||
|- | |||
|SIM800||2G||[http://www.mt-system.ru/sites/default/files/documents/sim800_spec_20140423.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim800_hardware_design_v1.10.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim800_series_at_command_manual_v1.12.pdf pdf] | |||
|- | |||
|SIM5300E||2G/3G||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_spec_v1611_rus_0.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_hardware_design_v1.09.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim5300e_at_command_manual_v1.01.pdf pdf] | |||
|- | |||
|SIM7000E||2G/NB-IOT||[http://www.mt-system.ru/sites/default/files/documents/sim7000e_spec_v1706_rus.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim7000_hardware_design_v1.07.pdf pdf]||[http://www.mt-system.ru/sites/default/files/documents/sim7000_series_at_command_manual_v1.06.pdf pdf] | |||
|- | |||
|7600E||2G/3G/4G | |||
|colspan="3"| [[WBC-4G#Документация|WBC-4G]] | |||
|} | |||
== GPRS на модемах SIM7000E 2G/NB-IoT == | |||
Модем SIM7000E 2G/NB-IoT по умолчанию настроен на автоматический выбор GSM- и LTE-сетей. Однако, в сети или с SIM-картой без поддержки NB-IoT модем не регистрируется в сети GSM (GPRS). | |||
</ | Для того, чтобы модем смог зарегистрироваться в сети GSM, необходимо принудительно перевести его в режим GSM only. | ||
В терминальном режиме работы с модемом, например, в программе minicom (смотрите раздел [[GSM/GPRS#Отправка AT-команд|Отправка AT-команд]]), введите команду выбора режима: | |||
<syntaxhighlight lang="bash"> | |||
AT+CNMP=13 | |||
</syntaxhighlight> | |||
Возможные варианты значений (команда <code>AT+CNMP=?</code>): | |||
*<code>2</code> — Automatic, | |||
*<code>13</code> — GSM Only, | |||
*<code>38</code> — LTE Only, | |||
*<code>51</code> — GSM And LTE Only. | |||
Установить режим нужно один раз — он запоминается и активен даже после отключения питания. | |||
= | Чтобы вернуться в режим IoT, выполните команду: | ||
= | <syntaxhighlight lang="bash"> | ||
AT+CNMP=51 | |||
</syntaxhighlight> | |||
Текущая версия на 10:06, 31 марта 2023
Общая информация
Эта статья описывает настройку 2G/3G/NB-IOT модемов в контроллерах Wiren Board 5...7, а также 4G(LTE)-модема в релизе wb-2207 и старее. Для настройки 4G(LTE)-модема в релизе wb-2304 и новее, используйте эту инструкцию. В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации.
С помощью модемов можно:
- отправлять и принимать SMS,
- подключаться к интернету по протоколу PPP для 2G- и 3G-модемов, а также настраивать 4G-модем как сетевую карту с выходом в интернет.
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе Низкоуровневая работа по uart.
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе Переключение активной sim-карты.
Включение и отключение модема рекомендуем делать с помощью утилиты wb-gsm.
Получение информации о модеме
В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории /proc/device-tree/wirenboard/gsm/
.
В контроллерах версии 6.7 модем устанавливается модулем расширения.
После физического подключения модема его нужно добавить в конфигурацию контроллера:
- В веб-интерфейсе перейдите в раздел Settings → Configs → Hardware Modules Configuration, выберите Modem slot.
- В раскрывающемся списке Module type выберите тип установленного модуля.
- Нажмите кнопку Save. Контроллер включит нужные для работы модема порты.
Для удаления модуля выберите тип None.
После конфигурирования включите модем командой wb-gsm on
и настройте подключение к оператору связи.
Например, чтобы узнать модель модема, нужно выполнить команду
cat /proc/device-tree/wirenboard/gsm/model
Подробнее о файлах внутри директории можно узнать из таблицы:
Файл | Описание |
---|---|
/proc/device-tree/wirenboard/gsm/model | модель модема |
/proc/device-tree/wirenboard/gsm/type | поддерживаемые сети |
/proc/device-tree/wirenboard/gsm/status | статус модема в системе |
Включение и начало работы
Чтобы начать работу с модемом, нужно:
- Вставьте sim-карту.
- Подключите антенну.
- Перезапустите модем, выполнив команду
wb-gsm restart_if_broken
После каждой смены sim-карты необходимо перезапускать модем.
Утилита wb-gsm
Для упрощения работы с модемами была написана утилита wb-gsm
, которая входит в пакет wb-utils.
Утилита wb-gsm
входит в состав пакета wb-utils
, который предустановлен на все контроллеры Wiren Board.
С помощью wb-gsm
вы сможете:
- управлять питанием модемов, команды
on, off, restart_if_broken
; - настраивать baudrate связи по uart, команды
init_baud, set_speed
; - получать imei, команда
imei
.
Все команды wb-gsm можно посмотреть в репозитории на Github по ссылке в начале раздела.
Пример использования утилиты wb-gsm
для получения imei модема, флаг DEBUG=true
— выводить отладочную информацию:
DEBUG=true wb-gsm imei
Переключение активной sim-карты
По умолчанию активна Sim1 — в каждый момент времени только одна sim-карта может быть активной.
Переключить модем на другую sim-карту можно с помощью gpio процессора. Узнать его номер можно двумя способами:
- выполнить команду
echo $WB_GPIO_GSM_SIMSELECT
- найти SIM Slot Select gpio в таблице gpio контроллера.
По умолчанию, этот gpio уже экспортирован в sysfs, поэтому, для переключения активной sim-карты с 1 на 2, нужно выполнить команду (в примере, номер gpio для переключения sim-карт - 88):
echo 1 > /sys/class/gpio/gpio88/value
Соответственно, для переключения обратно на sim1, нужно записать 0.
Подробнее о работе с gpio можно узнать из статьи Работа_с_GPIO.
Для того чтобы новая sim-карта стала активной, нужно выполнить следующие AT-команды (см. раздел о работе с AT-командами):
AT+CFUN=0
AT+CFUN=1
Низкоуровневая работа по uart
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту /dev/ttyGSM
. 3G модемы, помимо этого, подключаются к портам /dev/ttyACMX (порты создаются usb-драйвером cdc_acm
).
Подключение в linux
- uart: Порт
/dev/ttyGSM
является ссылкой на /dev/ttymxcX (uart процессора) и создается с помощью правил udev. Конечный порт может быть разным для разных версий контроллера (подробнее можно посмотреть на нашем github).
- usb: Порты /dev/ttyUSBX или /dev/ttyACMX (в случае 3G-модема) появляются автоматически после подачи питания на модем. Обычно, порты 3G-модема — это
/dev/ttyACM0-6
, однако точно определить, к каким портам модем подключен по USB можно, выполнив команды:.wb-gsm restart_if_broken; dmesg | tail
Примерный вывод команды:
[ 6102.978383] usb 2-1.2: New USB device found, idVendor=1e0e, idProduct=0020
[ 6102.985653] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6102.993108] usb 2-1.2: Product: SIMCOM_PRODUCT
[ 6102.997728] usb 2-1.2: Manufacturer: SIMCOM_VENDOR
[ 6103.002644] usb 2-1.2: SerialNumber: 004999010640000
[ 6103.082093] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device
[ 6103.098228] cdc_acm 2-1.2:1.2: ttyACM1: USB ACM device
[ 6103.116769] cdc_acm 2-1.2:1.4: ttyACM2: USB ACM device
[ 6103.132688] cdc_acm 2-1.2:1.6: ttyACM3: USB ACM device
[ 6103.145157] cdc_acm 2-1.2:1.8: ttyACM4: USB ACM device
[ 6103.163705] cdc_acm 2-1.2:1.10: ttyACM5: USB ACM device
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device
Соответственно, в данном случае 3G модем подключен к портам /dev/ttyACM0 - /dev/ttyACM6
.
Отправка AT-команд
![](/wiki/images/thumb/c/cb/Minicom-AT-4G.png/500px-Minicom-AT-4G.png)
Значение | Параметр | Описание |
---|---|---|
Auto-bauding | Baud rate | Скорость, бит/с. В настройках программы подключения установите 115200. После подключения — отправьте модему AAAAAAAT и он определит скорость автоматически.
|
8 | Data bits | Количество битов данных |
None | Parity | Бит чётности |
1 | Stop bits | Количество стоповых битов |
Off | Hardware flow control | Аппаратный контроль потока |
Off | Software flow control | Программный контроль потока |
Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:
- Подключитесь к контроллеру по SSH.
- Перезапустите модем командой:
wb-gsm restart_if_broken
- Подключитесь к модему через minicom:
minicom -D /dev/ttyGSM -b 115200 -8 -a off
- о параметрах командной строки читайте в статье о minicom.
- Введите команду
AAAAAAAAAT
— с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответитOK
.
Модем готов к передаче AT-команд.
Чтобы закрыть minicom, нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.
Работа с sms и ussd
Работать с sms и ussd проще всего при помощи программы Gammu (это форк утилиты gnokii
, которую перестали развивать).
Полную документацию смотрите на сайте проекта, ниже дана краткая инструкция.
Настройка
Все контроллеры WB6, начиная с 2018 года, поставляются с уже настроенной утилитой gammu. Если gammu не настроена, то можно выбрать один из 2-х способов настройки:
- Обновить пакет
wb-configs
. Для этого, нужно выполнить командыapt update && apt install wb-configs
- Настроить gammu вручную:
- Выполнить команду
gammu-config
- В параметре
Port
укажите/dev/ttyXXX
— файл модема, соответствующий вашей модели контроллера. - В параметре
Connection
укажитеat115200
Примеры команд gammu
Перед использованием утилиты убедитесь, что соединение с интернетом по протоколу ppp завершено (см. раздел Интернет через PPP)
$ 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# | неизвестно | неизвестно |
Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8
SMS-уведомления
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье « Модуль уведомлений».
Интернет через PPP
Быстрый выход в интернет
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек:
- Перезапустите модем:
wb-gsm restart_if_broken
- Установите соединение, например, для оператора МТС:
pon mts
mts
можно заменить наmegafon
илиbeeline
— зависит от вашего оператора связи.
- Если соединение больше не нужно — вы можете его завершить командой:
poff mts
Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле /etc/ppp/peers/<ваш_провайдер_связи>
замените устройство /dev/ttyGSM
на (в зависимости от модема) /dev/ttyUSB0
или /dev/ttyACM0
.
Например, изменим порт для провайдера МТС:
- Откройте файл
/etc/ppp/peers/mts
nano /etc/ppp/peers/mts
- Закомментируйте старый порт и добавьте новый:
#/dev/ttyGSM /dev/ttyUSB0
- порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
- Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.
Порты /dev/ttyUSB0
,/dev/ttyUSB1
,/dev/ttyUSB2
появляются автоматически после включения модема командой wb-gsm on
.
Автоматический запуск подключения
Чтобы подключение запускалось автоматически:
- Откройте файл
/etc/network/interfaces
для редактирования:nano /etc/network/interfaces
- Раскомментируйте или отредактируйте следующие строки:
auto ppp0 iface ppp0 inet ppp provider mts # можно заменить mts на megafon или beeline #перезапускаем модем, если он завис pre-up wb-gsm restart_if_broken #Ждем, пока он загрузится и найдет сеть. pre-up sleep 10
- Сохраните изменения и закройте файл.
- Теперь запустите интерфейс
ppp0
командой:ifup ppp0
- через 10-15 секунд интерфейс
ppp0
будет доступен.
- Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.
Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /etc/chatscripts
. В большинстве случаев ничего менять в этих файлах не придется.
Для 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.
Резервирование канала связи
Особенности резервирования выхода в интернет описаны в статье Сетевые настройки контроллера.
Интернет с 4G-модемом (LTE)
![](/wiki/images/thumb/c/cb/Minicom-AT-4G.png/500px-Minicom-AT-4G.png)
![](/wiki/images/thumb/3/3b/Minicom-AT-4G-Exit.png/500px-Minicom-AT-4G-Exit.png)
Настройка модема как сетевой карты
В отличие от 2G- и 3G-модулей, WBC-4G поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.
Настройка с помощью minicom:
- Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
- Подключитесь к контроллеру по SSH.
- Перезапустите модем командой:
wb-gsm restart_if_broken
- Подключитесь к модему через minicom:
minicom -D /dev/ttyGSM -b 115200 -8 -a off
- о параметрах командной строки читайте в статье о minicom.
- Введите команду
AAAAAAAAAT
— с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответитOK
. - Отправьте из терминала minicom AT-команды для модема:
- Настроить автоматическое подключение:
AT+DIALMODE=0
. - Установить APN:
AT+CGDCONT=1,"IP","xxx"
, где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так:internet.mts.ru
. - Проверить получение IP адреса:
AT+CGCONTRDP
.
- Настроить автоматическое подключение:
- Закройте minicom, для этого нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.
После этого интернет будет доступен через интерфейс usb0
, который можно настроить как обычную сетевую карту.
Настройка с помощью chat:
- Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
- Подключитесь к контроллеру по SSH.
- Перезапустите модем командой:
wb-gsm restart_if_broken
- Замените в строке ниже APN_INTERNET на точку подключения вашего провайдера, вставьте изменённую строку консоль контроллера и нажмите на клавиатуре Enter:
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
Этот способ можно использовать при написании скриптов.
Настройка виртуальной сетевой карты
Включение
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
- Откройте файл
/etc/network/interfaces
:nano /etc/network/interfaces
- Добавьте в него строки:
auto usb0 allow-hotplug usb0 iface usb0 inet dhcp pre-up sleep 8 pre-up wb-gsm restart_if_broken pre-up sleep 10
- автоматически запустить модем, интерфейс и получать IP-адрес. Задержки pre-up sleep перед и после включения модема нужны для надёжного старта.
- Сохраните и закройте файл
interfaces
. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора. - Запустите интерфейс командой:
ifup usb0
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети 192.168.0.1
, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети 192.168.0.ххх
, а, например, 192.168.100.ххх
. Для этого нужно выполнить AT-команду:
AT+USBNETIP=0,100,111
Команда имеет следующий синтаксис:
AT+USBNETIP=<mode>,<tpos>,<dhcps>,<dhcpe>
<mode> |
0 – частный IP-адрес (по умолчанию, 192.168.0.xxx и т. д.) |
<tpos> | Третья позиция IP-адреса |
<dhcps> | Начальное значение DHCP |
<dhcpe> | Конечное значение DHCP |
Предупреждение! Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой
AT+USBNETIP?
Функция поддерживается, если получен ответ
+USBNETIP: mode
OK
Отключение
- Остановите интерфейс командой:
ifdown usb0
- Откройте файл
/etc/network/interfaces
:nano /etc/network/interfaces
- Закомментируйте или удалите строки:
#auto usb0 #allow-hotplug usb0 #iface usb0 inet dhcp # pre-up sleep 8 # pre-up wb-gsm restart_if_broken # pre-up sleep 10
- Сохраните и закройте файл
interfaces
. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.
Мультиплексирование
Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX. Этот режим не поддерживается для 2G-модемов.
Документация на модемы
Модель | Режимы сети | краткое описание | hardware design | AT-команды |
---|---|---|---|---|
SIM800 | 2G | |||
SIM5300E | 2G/3G | |||
SIM7000E | 2G/NB-IOT | |||
7600E | 2G/3G/4G | WBC-4G |
GPRS на модемах 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