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

Материал из Wiren Board
Строка 18: Строка 18:


В контроллерах версии 6.7 модем устанавливается модулем расширения.
В контроллерах версии 6.7 модем устанавливается модулем расширения.
{{Wbincludes:Configuration WBC}}
 
После физического подключения модема его нужно добавить в конфигурацию контроллера:
 
    В веб-интерфейсе перейдите в раздел Настройки → Конфигурационные файлы → Модули расширения и порты, выберите Слот модема.
    В раскрывающемся списке Тип модуля выберите тип установленного модуля.
    Нажмите кнопку Сохранить. Контроллер включит нужные для работы модема порты.
 
Для удаления модуля выберите тип Не установлен.
 
После конфигурирования модем включится автоматически и можно переходить к настройке подключения к оператору связи. 


Например, чтобы узнать модель модема, нужно выполнить команду  
Например, чтобы узнать модель модема, нужно выполнить команду  

Версия 10:50, 29 марта 2023

Общая информация

В контроллеры Wiren Board могут быть установлены 2G/3G/4G(LTE)/NB-IOT модемы — зависит от комплектации.

С помощью модемов можно:

Модемы подключаются к процессору по uart и usb, исключение — модемы 2G. Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе Низкоуровневая работа по uart.

Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе Переключение активной sim-карты.

Включение и отключение модема рекомендуем делать с помощью утилиты wb-gsm.

Получение информации о модеме

В контроллерах, начиная с 2019 года, некоторая информация о модеме заносится в память. Получить её можно с помощью чтения файлов в директории /proc/device-tree/wirenboard/gsm/.

В контроллерах версии 6.7 модем устанавливается модулем расширения.

После физического подключения модема его нужно добавить в конфигурацию контроллера:

   В веб-интерфейсе перейдите в раздел Настройки → Конфигурационные файлы → Модули расширения и порты, выберите Слот модема.
   В раскрывающемся списке Тип модуля выберите тип установленного модуля.
   Нажмите кнопку Сохранить. Контроллер включит нужные для работы модема порты.

Для удаления модуля выберите тип Не установлен.

После конфигурирования модем включится автоматически и можно переходить к настройке подключения к оператору связи.

Например, чтобы узнать модель модема, нужно выполнить команду

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 статус модема в системе

Включение и начало работы

Чтобы начать работу с модемом, нужно:

  1. Вставьте sim-карту.
  2. Подключите антенну.
  3. Перезапустите модем, выполнив команду
    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-команд

Отправка AT-комманд для модема в терминале программы minicom


Параметры соединения по умолчанию
Значение Параметр Описание
Auto-bauding Baud rate Скорость, бит/с. В настройках программы подключения установите 115200.
После подключения — отправьте модему AAAAAAAT и он определит скорость автоматически.
8 Data bits Количество битов данных
None Parity Бит чётности
1 Stop bits Количество стоповых битов
Off Hardware flow control Аппаратный контроль потока
Off Software flow control Программный контроль потока


Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:

  1. Подключитесь к контроллеру по SSH.
  2. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  3. Подключитесь к модему через minicom:
    minicom -D /dev/ttyGSM -b 115200 -8 -a off
    
    о параметрах командной строки читайте в статье о minicom.
  4. Введите команду 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)
  • Настроить gammu вручную:
  1. Выполнить команду
    gammu-config
    
  2. В параметре Port укажите /dev/ttyXXX — файл модема, соответствующий вашей модели контроллера.
  3. В параметре 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 с помощью 2G-модема

Быстрый выход в интернет

Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.

В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу ppp. Если вы пользуетесь одним из них, то для быстрого подключения к интернету нужно перезапустить модем и подключится с использованием одной из настроек:

  1. Перезапустите модем:
    wb-gsm restart_if_broken
    
  2. Установите соединение, например, для оператора МТС:
    pon mts
    
    mts можно заменить на megafon или beeline — зависит от вашего оператора связи.
  3. Если соединение больше не нужно — вы можете его завершить командой:
    poff mts
    

Если на контроллере установлен модуль 3G- или 4G-модем, то для увеличения пропускной способности соединения, демону pppd нужно указать другой порт. Для этого в файле /etc/ppp/peers/<ваш_провайдер_связи> замените устройство /dev/ttyGSM на (в зависимости от модема) /dev/ttyUSB0 или /dev/ttyACM0.

Например, изменим порт для провайдера МТС:

  1. Откройте файл /etc/ppp/peers/mts
    nano /etc/ppp/peers/mts
    
  2. Закомментируйте старый порт и добавьте новый:
    #/dev/ttyGSM
    /dev/ttyUSB0
    
    порт можно использовать /dev/ttyUSB[0..2] в зависимости от количества и настроек сервисов работающих с модемом.
  3. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.

Порты /dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2 появляются автоматически после включения модема командой wb-gsm on.

Автоматический запуск подключения

Файл /etc/network/interfaces, автоматически запускающий подключение к МТС

Чтобы подключение запускалось автоматически:

  1. Откройте файл /etc/network/interfaces для редактирования:
    nano /etc/network/interfaces
    
  2. Раскомментируйте или отредактируйте следующие строки:
    auto ppp0
    iface ppp0 inet ppp
      provider mts # можно заменить mts на megafon или beeline
      #перезапускаем модем, если он завис
      pre-up wb-gsm restart_if_broken  
      #Ждем, пока он загрузится и найдет сеть.
      pre-up sleep 10
    
  3. Сохраните изменения и закройте файл.
  4. Теперь запустите интерфейс ppp0 командой:
    ifup ppp0
    
    через 10­-15 секунд интерфейс ppp0 будет доступен.
  5. Настройка завершена, теперь при перезагрузке контроллера подключение к интернету восстановится автоматически.

Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /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)

Настройка модема WBC-4G на контроллере Wiren Board 6.7.2
Отправка AT-комманд для модема в терминале программы minicom
Выход из программы minicom

Настройка модема как сетевой карты

В отличие от 2G- и 3G-модулей, WBC-4G поддерживает выход в интернет через виртуальную сетевую карту по протоколу RNDIS.

Настройка с помощью minicom:

  1. Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
  2. Подключитесь к контроллеру по SSH.
  3. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  4. Подключитесь к модему через minicom:
    minicom -D /dev/ttyGSM -b 115200 -8 -a off
    
    о параметрах командной строки читайте в статье о minicom.
  5. Введите команду AAAAAAAAAT — с её помощью модем распознает скорость, с которой мы к нему обращаемся и ответит OK.
  6. Отправьте из терминала minicom AT-команды для модема:
    • Настроить автоматическое подключение: AT+DIALMODE=0.
    • Установить APN: AT+CGDCONT=1,"IP","xxx", где xxx — точка подключения (APN). Имя точки подключения зависит от оператора, например, у МТС она выглядит так: internet.mts.ru.
    • Проверить получение IP адреса: AT+CGCONTRDP.
  7. Закройте minicom, для этого нажмите на клавиатуре клавиши Ctrl+A, затем клавишу X и подтвердите выход клавишей Enter.

После этого интернет будет доступен через интерфейс usb0, который можно настроить как обычную сетевую карту.

Настройка с помощью chat:

  1. Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля WBC-4G.
  2. Подключитесь к контроллеру по SSH.
  3. Перезапустите модем командой:
    wb-gsm restart_if_broken
    
  4. Замените в строке ниже 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
    

Этот способ можно использовать при написании скриптов.

Настройка виртуальной сетевой карты

Включение

После того как мы настроили модем, нужно настроить виртуальную сетевую карту:

  1. Откройте файл /etc/network/interfaces:
    nano /etc/network/interfaces
    
  2. Добавьте в него строки:
    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 перед и после включения модема нужны для надёжного старта.
  3. Сохраните и закройте файл interfaces. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.
  4. Запустите интерфейс командой:
    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 и т. д.)
1 – Публичный IP (ip из сети). Вступает в силу после перезагрузки модема.

<tpos> Третья позиция IP-адреса
<dhcps> Начальное значение DHCP
<dhcpe> Конечное значение DHCP

Предупреждение! Данная функция может не работать на модемах со старыми прошивками. Узнать, что модем поддерживает эту функцию можно командой

AT+USBNETIP?

Функция поддерживается, если получен ответ

+USBNETIP: mode

OK

Отключение

  1. Остановите интерфейс командой:
    ifdown usb0
    
  2. Откройте файл /etc/network/interfaces:
    nano /etc/network/interfaces
    
  3. Закомментируйте или удалите строки:
    #auto usb0
    #allow-hotplug usb0
    #iface usb0 inet dhcp
    #  pre-up sleep 8
    #  pre-up wb-gsm restart_if_broken  
    #  pre-up sleep 10
    
  4. Сохраните и закройте файл interfaces. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.

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

Модем поддерживает режим мультиплексирования — создания виртуальных портов, через которые можно одновременно работать с модемом. Например, через один порт можно открыть сессию PPP для GPRS, а через другой — получать и отправлять SMS, проверять баланс и т.д. Подробнее смотрите CMUX. Этот режим не поддерживается для 2G-модемов.

Документация на модемы

Модель Режимы сети краткое описание hardware design AT-команды
SIM800 2G pdf pdf pdf
SIM5300E 2G/3G pdf pdf pdf
SIM7000E 2G/NB-IOT pdf pdf pdf
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