Физические терминалы сейчас встретить маловероятно. Однако, чем будет являться GSM модем, работающий через асинхронный последовательный интерфейс для, например, компьютера. Настроим модем и разберёмся в терминологии модели ME(Mobile Equipment) - TE(Terminal Equipment).

Все действия будут рассматриваться на примере модема iRZ ES75iT. Внутри модем использует GSM модуль MC75i от Cinterion, поддерживающий систему команд Hayes.

Модем настраивается с помощью AT команд в текстовом режиме. Имеется индикатор состояния и поддержка асинхронного последовательного интерфейса RS232 с коннектором DB9 female. Встроенных графических инструментов не предусмотрено. Зато предусмотрена настройка соединения с APN и сервером удалённого доступа по нескольким сетевым протоколам. Возможно также создание raw TCP сокета как в качестве клиента, так и в качестве сервера. И, как вишенка на торте, команда на приём/передачу информации, поступающей на последовательный интерфейс. К которому можно подключить также любое оборудование поддерживающее интерфейс RS232 и не умеющее взаимодействовать с сетью, например выпускаются такие весы для крупногабаритных грузов с интерфейсом RS232. Подключиться из Linux можно с помощью эмулятора терминала - Minicom. Поддержки VPN, как в роутере, нет, однако есть поддержка ISDN вызова и это круче, чем VPN :)

Терминология.

Согласно определению [4], терминал - это оконечное устройство системы передачи данных. Это не обязательно интерактивное устройство, в отличие от консоли. Терминал может быть использован в качестве консоли [5].

В терминологии мобильных устройств приняты следующие обозначения (GSM 07.07):

ME(Mobile Equipment) - GSM модем.

TA (Terminal Adaptor) - GSM карта (модуль), соответствует DCE (Data Circuit terminating Equipment)

TE (Terminal Equipment) - терминальное устройство, соответствует DTE (Data Terminal Equipment)

[TE1(DTE)=]===[=(DCE)ME1]  [среда передачи]  [ME2(DCE)=]===[=(DTE)TE2]

Т.е. с помощью терминологии терминальных устройств систему можно рассматривать лишь предположив, что мобильное устройство работает прозрачно (а когда ME установило соединение и работает в режиме данных так и есть) и мы имеем соединение DTE-DTE, эквивалентное электрическому нуль модемному соединению.

[TE1(DTE)=]=== [нуль модем] ===[=(DTE)TE2]

Перейдём к модели терминальных устройств

S (DTE)=|=== RS232 === [TTY1]
R (DTE)=|=== RS232 === [TTY2]
V (DTE)=|=== RS232 === [TTY3]
S (DTE)=|===[=(DCE)ME1]  [среда передачи]  [ME2(DCE)=]===[=(DTE)TTY1]
R (DTE)=|===[=(DCE)ME3]  [среда передачи]  [ME4(DCE)=]===[=(DTE)TTY2]
V (DTE)=|===[=(DCE)ME5]  [среда передачи]  [ME6(DCE)=]===[=(DTE)TTY3]

Т.о. терминальное устройство TTYn, которое было электрически соединено с сервером, стало радиотерминалом, относительно сервера. Локально же для каждого устройства применяется модель ME(Mobile Equipment) - TE(Terminal Equipment).

Подключение и настройка.

Подключение GSM модема (ME) осуществляется через UART интерфейс. Чтобы подключить устройство к ноутбуку (TE), можно воспользоваться USB разьёмом, либо приобрести USB-UART преобразователь. Подключение к разьёму DB9 female возможно как по полнопроводной схеме, задействуя сигналы синхронизации RTS, CTS, так и пяти/трёхпроводной с помощью программного управления потоком XON/XOFF последовательностями битов. Программное управление потоком включается командой AT\Q1.

После подключения появляется символьное устройство /dev/ttyUSBn . Получим параметры командой stty.

$ stty < /dev/ttyUSBn

Откроем устройство в программе minicom.

$ minicom -D /dev/ttyUSBn

Далее необходимо выставить скорость в бодах/сек., которую показал вывод команды stty. Скорее всего это будет 115200 bps.

Проверим связь с терминалом. Эхо по умолчанию выключено. Включить можно командой ATE1. Выключить - командой ATE0. Команда AT ничего не делает и просто возвращает ОК.

Настройка параметров асинхронного интерфейса осуществляется командой AT+ICF. Вот список возможных настроек.

• 7 bits, even parity, 1 stop bit (AT+ICF=5,1)
• 7 bits, odd parity, 1 stop bit (AT+ICF=5,0)
• 8 bits, even parity, 1 stop bit (AT+ICF=2,1)
• 8 bits, no parity, 1 stop bit (AT+ICF=3)
• 8 bits, odd parity, 1 stop bit (AT+ICF=2,0)
• 8 bits, no parity, 2 stop bits (AT+ICF=1)

Команда AT+IPR настраивает скорость асинхронного интерфейса в бодах. Настройки не сбрасываются командой AT&F. Вот список возможных настроек.

0
300 bps
600 bps
1200 bps
2400 bps
4800 bps
9600 bps
14400 bps
19200 bps
28800 bps
38400 bps
57600 bps
115200 bps
230400 bps
460800 bps
921600 bps

ВНИМАНИЕ!

Максимальная скорость для модуля MC75i. составляет AT+IPR=115200 бит/с (заводская установка по умолчанию). Попытка установки более высокой скорости передачи приведет к деактивации доступа к интерфейсу AT-команд.

Большое количество настроек можно получить и изменить командой AT^SCFG. Сбросить настройки к заводским - AT&F. Загрузить настройки из памяти - ATZ. Сохранить настройки в память - AT&W. Возможность сохранения каждой настройки уточняйте в документации ME (см. Источники).

Вывод сообщений об ошибках настраивается командой AT+CMEE=[n]. Возможен вывод кода ошибки при n=1 или описания ошибки при n=2. Описания кодов некоторых ошибок приведено в стандарте GSM 07.07. Ошибки выполнения команд печатаются автоматически

+CME ERROR: <err>

С помощью команды AT+CEER можно получить более подробную информацию о последней ошибке, если ошибка требует детального исследования.

Радиоинтерфейс.

Идентификатор (IMEI) можно получить командой AT+GSN. Проверить уровень сигнала командой AT+CSQ. Информацию о сотах поблизости получить с помощью команды AT^SMOND. Как правило, модем автоматически находит вышку с лучшим уровнем сигнала. А если не находит, то решается это уже не настройками, а усилителями сигнала. Есть такие усилители, называются Planar https://planarchel.ru/catalog/archive/tvequipment/amplifiers_archive/MX900/, они усиливают вхо��ной сигнал в области 800 МГц на 30-40 дБ. И если поставить где нибудь уличную антенну, будет во. Есть конечно и специализированные фемтосоты но я их даже в руках не держал. Радиотехника - занятие дорогое, так что.. что есть. Но так можно сделать Downlink.

Настроить можно уровень сигнала, агрегацию частот а также параметры радиоинтерфейса командой AT+CRLP.

AT+CRLP=[размер фрейма],[размер фрейма],[подтверждений в 10мс],[попыток пересылки]

Настройкой радиоинтерфейса можно значительно увеличить скорость передачи данных за счёт сокращения повторных передач через UART интерфейс.

Поиск и регистрация в мобильной сети.

Перед тем как пытаться зарегистрировать модем в мобильной сети, проверим доступность SIM-карты командой AT^SSET?. Если SIM-карта не была вставлена в устройство, либо вставлена неверно, команда AT^SSET? вернёт 0.

Если вставленная SIM-карта защищена PIN-кодом, выполняем аутентификацию AT+CPIN=[xxxx]. Естественно, если включено эхо, PIN будет выведен открытым текстом. Если PIN-код не требуется, модем автоматически будет готов к дальнейшим действиям. Необходимо помнить, что после трёх неудачных попыток ввода, SIM-карта будет заблокирована её уникальным кодом (PUK).

Если запрашиваемый PIN код не был введен, выполнение дальнейших команд будет приводить к ошибке 11 (GSM 07.07). Если SIM карта не была вставлена в устройство, либо вставлена неверно, выполнение дальнейших команд будет приводить к ошибке 10 (GSM 07.07).

Получим список операторов командой AT+COPN=?. Команда выводит идентификатор и название для каждого оператора. Например, для оператора Мегафон идентификатор 25002. Далее нужно либо вручную выбрать оператора, который разрешён Вашей SIM-картой командой AT+COPS=1,2,[id], где id - идентификатор выбранного оператора. Либо в автоматическом режиме AT+COPS=0.

И регистрируемся в мобильной сети выбранного оператора командой AT+CREG=1. Обычно выбор оператора и регистрация в мобильной сети происходят автоматически. Если только SIM-карта не в роуминге или роуминг разрешён. Индикатор начинает моргать раз в секунду.

Запрос баланса.

AT+CMGF=1		# Текстовый режим
AT+CSCS="UCS2"	# Кодировка текстового режима
AT+CSCB=1		# Приём специальных сообщений
AT+CUSD?		# Управление и выполнение USSD запросов

Выполним запрос баланса - AT+CUSD=1,#100#. В ответ терминал напечатает сообщение с балансом на SIM-карте.

Кроме текстового режима существует режим PDU (AT+CMGF=0). Сообщения в этом режиме отправляются в виде пакета данных. И вид команды немножко другой AT+CMGS=<length><CR> PDU can be entered. <^Z><ESC>. В этом режиме отправляют сообщения, содержащие кириллицу.

О том как составлять PDU пакеты можно почитать здесь

Услуга сети *99#

Модуль поддерживает GPRS, а также поиск сот, поддерживающих GPRS. Если установлен параметр GPRS/ATS0/withAttach, модем скорее всего автоматически найдёт соту и зарегистрирует. Статус регистрации можно проверить командой AT+CGREG?

Первый параметр:
0 – нет кода регистрации сети
1 – есть код регистрации сети
2 – есть код регистрации сети + доп параметры
Второй параметр:
0 – не зарегистрирован, поиска сети нет
1 – зарегистрирован, домашняя сеть
2 – не зарегистрирован, идёт поиск новой сети
3 – регистрация отклонена
4 – неизвестно
5 – роуминг

Если посмотреть документацию, то там вызов услуги сети выделен особняком, есть и другие команды набора номера. ATDT будет выполнять набор в тоновом режиме, ATDP - в импульсном.

Зарегистрировать модем вручную можно командой AT+CGATT=1. Если с регистрацией всё в порядке, можно вызвать услугу сети по короткому номеру 99#, путём ввода команды набора номера ATD*99#. Это услуга выхода в Интернет.

После дозвона модем переключится из режима команд в режим данных (прозрачный), а в терминал будет выведен диалог PPPD работающего на точке доступа, перекодированный в Юникод. Не дождавшись ответа, PPPD завершит работу и заставит модем завершить вызов. Таким образом, между компьютером и точкой доступа необходимо установить PPP туннель, модем свою работу давно выполнил. И если бы на точке доступа работала командная оболочка, например sh, установить соединение с удалённым процессом можно было бы с тем же успехом, ни разу не намекнув на сетевой стек TCP/IP. Компьютер, с которого устанавливалось соединение, стал бы в таком случае терминалом для процесса на удалённой машине. Хотя, возможно установить CSD соединение между двумя модемами, дозвонившись с одного на другой, однако второго модема, чтобы показать это, у меня нет. ISDN вызов можно сделать командой ATDI.

Автодозвон можно установить командойAT^SCFG="AutoExec",1,0,0,0,"ATD*99#". Команда ATD*99# будет активироваться при возведении сигнала DTR в линии, т.е. на фронте сигнала. Это значит, что если каким либо процессом устройство уже открыто, сигнал DTR в линии уже возведен и эффекта не будет.

Профили соединений.

Есть и более продвинутые возможности, делающие модем полноценным сетевым узлом. GSM модуль MC75i содержит встроенный сетевой TCP/IP стек. Для настройки профилей соединений и служб, существуют две команды: AT^SICS и AT^SISS. Получить текущие настройки профилей можно с помощью команд соответственно AT^SICS? и AT^SISS?.

Для настройки профиля соединения необходимо выполнить следующую серию команд.

AT^SICS=ID,"conType",[тип соединения (для нашего случая GPRS0)]
AT^SICS=ID,"apn",[название точки доступа]
AT^SICS=ID,"user",[логин]
AT^SICS=ID,"passwd",[пароль]
AT^SICS=0,dns1,[IPv4 адрес 1 DNS сервера] 
AT^SICS=0,dns2,[IPv4 адрес 2 DNS сервера]
AT^SICS=0,authMode,[тип аутентификации (PAP, CHAP)]

Для оператора Мегафон например настройки следующие.

AT^SICS=ID,"conType","GPRS0"
AT^SICS=ID,"apn","internet"
AT^SICS=ID,"user","gdata"
AT^SICS=ID,"passwd","gdata" 

где ID - идентификатор записи от 0 до 3. Настройки DNS выполняются автоматически. Тип аутентификации можно не указывать - по умолчанию PAP.

Установка соединения AT^SICO=[ID]. Разрыв соединения AT^SICC=[ID]. Получить информацию об открытых соединениях можно командой AT^SICI?

^SICI: [ID],[состояние],0,[локальный IPv4 адрес]

Возможны следующие состояния соединений.

0 - соединение не установлено.
1 - соединение установлено по причине запуска использующего соединение профиля службы.
2 - соединение установлено и используется одной или несколькими службами.
3 - временно недоступно.
4 - соединение закрыто.

Выполнить серию ICMP запросов к сетевому узлу можно командой AT^SISX="Ping",0,[IPv4 адрес узла],[количество запросов],[время ожидания (мс)]

Модуль поддерживает несколько типов служб: FTP, HTTP, SMTP, POP3, Socket. Для каждого типа службы могут задаваться свои дополнительные параметры. Я опишу лишь Socket.

Для настройки профиля службы необходимо выполнить следующую серию команд.

AT^SISS=0,"srvType",[тип службы (для нашего случая Socket)]
AT^SISS=0,"conId",[идентификатор соединения от 0 до 3]
AT^SISS=0,"address","socktcp://[IPv4 адрес]:[TCP порт]"
AT^SISS=0,"alphabet",1	

Для запуска отправки данных вводим команду AT^SISW=[ID сетевой службы],[длина контента в байтах]. Модем переключается в режим данных.

Вывод.

Таким образом, модем является мобильным устройством относительно оконечного в модели ME-TE. Понятие терминала к модему неприменимо. Терминальным устройством является машина, с которой поступают управляющие команды и данные на мобильное устройство (ME) на которую поступают данные из мобильного устройства (ME). Иная модель и иная терминология.

Источники.

  1. MC75i AT Command Set (November 10, 2008)

  2. Спецификация стандарта GSM 07.07 (https://affon.narod.ru/GSM/GSM0707.pdf)

  3. https://embeddedpro.ucoz.ru/app_notes/sending_short_SMS.html

  4. https://ru.wikipedia.org/wiki/Терминал?ysclid=mm2n8arok534228035

  5. https://ru.wikipedia.org/wiki/Системная_консоль