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

Материал из Wiren Board
 
(не показано 189 промежуточных версий 11 участников)
Строка 1: Строка 1:
В Wiren Board установлен GSM/GPRS-модуль, с помощью которого можно:
{{DISPLAYTITLE: Настройка 2G/3G/NB-IOT модемов в контроллере Wiren Board, а также 4G-модемов на Debian Stretch }}
* отправлять/принимать SMS
== Общая информация ==
* подключаться к интернету по GPRS
{{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 модемы — зависит от комплектации.  
* Wiren Board 5 в версии с 3G: [[SIM5320E]];
* Wiren Board 5 в версии с 2G и Wiren Board 4: [[SIM800]] или [[M660A]];
* Wiren Board Smart Home 3.5,  Wiren Board 4: [[SIM900R]].


== Начало работы ==
С помощью модемов можно:
Подключите антенну и вставьте SIM-карту перед запуском контроллера. Если вы включили контроллер без SIM-карты, после её установки перезапустите модем с помощью утилиты '''wb-gsm''' (смотрите ниже).
* [[#Работа с sms и ussd | отправлять и принимать SMS]],
== Модем в Linux ==
* подключаться к интернету по [[#Интернет через PPP|протоколу PPP]] для 2G- и 3G-модемов, а также настраивать 4G-модем как [[#Интернет с 4G-модемом (LTE)|сетевую карту]] с выходом в интернет.
Внутри контроллера модем подключён к процессору одним из двух способов:
* по порту UART (устройство ''/dev/ttyAPP0'') - все модемы, включая 3G;
* по порту USB (устройства ''/dev/ttyACM0''-''/dev/ttyACM6'') - только 3G.
Работать с модемом на низком уровне можно, посылая команды на порт ''/dev/ttyAPP0'' или ''/dev/ttyACM0'' соответственно.


Также к процессору подключены управляющие пины модема PWRKEY и RESET, с помощью которых можно выключить или перезагрузить модем. Обычно работать с ними напрямую не требуется - перезагрузка производится утилитой '''wb-gsm''' (смотрите ниже), но также реализован прямой доступ к этим контактам через GPIO (подробнее читайте [[GPIO]], ищите в таблице соответствующие названия).
Модемы подключаются к процессору по uart и usb, исключение — модемы 2G.
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[#Низкоуровневая работа по uart|Низкоуровневая работа по uart]].


=== Включение модуля ===
Управление питанием и переключением активных sim-карт (если их две) производится с помощью gpio, процесс описан в разделе [[#Переключение активной sim-карты | Переключение активной sim-карты]].
По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой '''wb-gsm''' (утилита включена в стандартный образ в пакет '''wb-utils''').
 
Включение и отключение модема рекомендуем делать с помощью утилиты [[#Утилита 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">
$ wb-gsm on #  включение устройства
DEBUG=true wb-gsm imei
$ wb-gsm off #  выключение устройства
$ wb-gsm reset #  перезагрузка включенного устройства
$ wb-gsm restart_if_broken #  включение или перезагрузка, если модем не отвечает
</syntaxhighlight>
</syntaxhighlight>
===Отправка и получение SMS и USSD===
[[File:Gammu-config.png|300px|thumb|right|''gammu-config'']]
Работать с SMS проще всего при помощи программы [http://wammu.eu/gammu/ ''Gammu''] (это форк утилиты '''gnokii''', которую перестали развивать).


(ниже дана краткая инструкция, полную документацию смотрите на [http://wammu.eu/gammu/ сайте проекта])
== Переключение активной 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]])


#Создайте файл конфигурации, запустив ''gammu-config''
##В параметре ''Port'' укажите ''/dev/ttyAPP0''
##В параметре ''Connection'' укажите ''at115200''
#Примеры команд:
<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 на русском пока работают в ''gammu'' не всегда хорошо, поэтому могут пригодиться команды для переключения языка USSD и перекодирования входящих и исходящих SMS в транслит:
=== 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
|-
|-
|транслит||русский||транслит||русский
!транслит||русский||транслит||русский
|-
|-
|МТС||*100*6*2#||*100*6*1#||неизвестно||неизвестно  
|МТС||*100*6*2#||*100*6*1#||неизвестно||неизвестно  
Строка 57: Строка 166:
|}
|}


===Выход в Интернет===
Для надежной отправки SMS на русском надо проверить локаль и установить LC_ALL=ru_RU.utf8
Конфигурационные файлы для операторов "большой тройки" уже есть в стандартном образе: [https://github.com/contactless/wirenboard/tree/master/configs/configs/etc/ppp ссылка]. Для других операторов или специальных APN рекомендуется использовать стандартные конфигурационные файлы в качестве основы.


Создание конфигурационных файлов с нуля происходит стандартно для Linux.
=== SMS-уведомления ===


Сначала при помощи утилиты '''pppconfig''' создаётся конфигурационный файл подключения с параметрами для вашего оператора (например, [http://www.corp.mts.ru/help/corp_settings/gprs_edge/win_xp/ МТС]). Если вам нужна всего одна конфигурация, назовите её provider - тогда она будет запускаться по умолчанию, подключение можно будет запускать просто командой pon без аргументов.
Отправка sms-уведомлений об изменении состояния какого-либо устройства реализована в ПО Wiren Board с помощью сервиса уведомлений. Также можно отправлять SMS из движка правил wb-rules, вызывая соответствующую функцию. Подробнее в статье «[[Notification_module#Настройка модуля уведомлений| Модуль уведомлений]]».


Подробная информация по настройке: [https://help.ubuntu.com/community/DialupModemHowto/SetUpDialer#Alternative_Way_2_.28using_pppconfig_.26_pon.2Fpoff.29 ссылка]
== Интернет через PPP ==
{{YouTube
| link= https://youtu.be/ZbJUwoifbzE
| text= Настройка интернета через PPP с помощью 2G-модема
}}
=== Быстрый выход в интернет ===
Настройки быстрого подключения сбрасываются после перезагрузки контроллера. Если вам нужен постоянный доступ к интернету — настройте автоматический запуск подключения.


Обратите внимание на настройки "115200 nocrtscts", которые должны присутствовать в конфигурационных файлах.
В стандартное ПО контроллера входят настройки подключения для операторов МТС, Мегафон и Билайн по протоколу 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>.


Запускается подключение командой
Например, изменим порт для провайдера МТС:
<pre> pon <имя конфигурации> </pre>
# Откройте файл <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>.


<pre> pon mts </pre>
=== Автоматический запуск подключения ===
[[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].
=== Резервирование канала связи ===


Для автоматического подключения к GPRS при загрузке, убедитесь, что файл <pre> /etc/network/interfaces </pre> содержит следующие строчки:
Особенности резервирования выхода в интернет описаны в статье [[Wirenboard6:InstallingOnTheRemoteSite#PPP — основной и резервный выход в интернет|Сетевые настройки контроллера]].


<pre>
== Интернет с 4G-модемом (LTE) ==
auto ppp0
{{YouTube
iface ppp0 inet ppp
| link= https://youtu.be/vWNwxB7Lino
  provider mts
| text= Настройка модема [[WBC-4G]] на контроллере Wiren Board 6.7.2
</pre>
}}


где вместо mts должно быть название конфигурационного файла для вашего оператора.
[[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.


=== Низкоуровневая работа с модулем через AT-команды ===
'''Настройка с помощью minicom''':
Ознакомьтесь с инструкцией - [[Работа с последовательным портом из Linux]].
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[WBC-4G#Конфигурирование | WBC-4G]].
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.
{{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>, который можно настроить как обычную сетевую карту.
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
$ minicom -s /dev/ttyAPP0
</pre>
* Зайти в настройки (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить порт ''/dev/ttyAPP0'', скорость и чётность - ''115200, 8N1'', ''Hardware flow control - No'', ''Software flow control - No''
* Сохранить настройки: ''Save setup as _dev_ttyAPP0''
* Далее запускать как '''minicom /dev/ttyAPP0''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyAPP0'', который мы ранее создали)
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите [[SIM900R]])
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''


==== Примеры команд ====
'''Настройка с помощью chat''':
(Полный список команд смотрите в [[SIM900R | документации модуля]])
# Убедитесь, что модем правильно сконфигурирован. Подробнее смотрите на странице модуля [[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>


* Синхронизовать скорость порта (не совсем команда)
Этот способ можно использовать при написании скриптов.
<pre>
AAAAAAAAAAAAAT
</pre>
*  Список всех сетей
<pre>
AT+COPS=?
</pre>
*  Уровень сигнала (см. [http://m2msupport.net/m2msupport/atcsq-signal-quality/ здесь])
<pre>
AT+CSQ
</pre>
* Звонок на номер +79154816100
<pre>
ATD+79154816100;
</pre>
* Установка baud rate порта в фиксированное значение 115200
<pre>
AT+IPR=115200
</pre>


* Запрос времени со встроенных в модуль часов реального времени (RTC)
=== Настройка виртуальной сетевой карты ===
<pre>
==== Включение ====
AT+CCLK?
После того как мы настроили модем, нужно настроить виртуальную сетевую карту:
AT+CCLK="14/03/19,01:20:29+00"
# Откройте файл <code>/etc/network/interfaces</code>:
</pre>
#:<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>


* Получить IMEI-код модуля (xxxxxx - уникальный номер)
Настройка завершена, теперь модем по DHCP назначит контроллеру IP-адрес в подсети <code>192.168.0.1</code>, а после перезагрузки контроллера соединение с интернетом восстановится автоматически.
<pre>
 
AT+GSN
При необходимости можно сменить подсеть модема, чтобы он выдавал контроллеру адрес не из подсети <code>192.168.0.ххх</code>, а, например, <code>192.168.100.ххх</code>. Для этого нужно выполнить AT-команду:
86820400xxxxxxY
<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">
AT+USBNETIP?
</syntaxhighlight>
Функция поддерживается, если получен ответ
<syntaxhighlight lang="bash">
+USBNETIP: mode


OK
OK
</pre>
</syntaxhighlight>
===RTC===
 
===Мультиплексирование===
==== Отключение ====
Модем поддерживает режим мультиплексирования - создание виртуальных портов, через которые можно одновременно работать с модемом.
# Остановите интерфейс командой:
Например, через один порт можно открыть сессию PPP для GPRS, а через другой получать и отправлять SMS, проверять баланс и т.д.
#:<syntaxhighlight lang="bash">
Подробнее смотрите [[CMUX]].
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 модемы — зависит от комплектации.

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

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

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

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

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

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

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

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

  1. В веб-интерфейсе перейдите в раздел SettingsConfigsHardware Modules Configuration, выберите Modem slot.
  2. В раскрывающемся списке Module type выберите тип установленного модуля.
  3. Нажмите кнопку 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 статус модема в системе

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

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

  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