Модем не отвечает на AT в терминале — чаще всего причина в том, что выбран не тот COM-порт или порт уже занят другой программой. Прежде чем отправлять команды, нужно убедиться, что устройство определилось системой и порт свободен.
В этой статье разберём, как сделать AT-запрос к USB-модему, роутеру с модемом или GSM-модулю: от подключения и выбора терминала до базовых команд и диагностики типичных проблем. Материал подходит для Windows и Linux, а также для работы с модулями вроде SIM800 или Quectel через UART-адаптер.
Что такое AT-команды и когда они нужны
AT-команды — это текстовый протокол управления модемом, унаследованный от Hayes-модемов. Каждая команда начинается с префикса AT (от англ. attention — «внимание»), а модем отвечает строкой результата: OK, ERROR или данными.
На практике AT-запросы нужны, когда требуется проверить уровень сигнала, узнать IMEI, сменить режим работы модема, отправить SMS из скрипта или диагностировать зависший модуль. Штатный софт оператора таких возможностей обычно не даёт.
- 🔍 Диагностика: проверка регистрации в сети и уровня сигнала.
- ⚙️ Настройка: переключение режимов модема, управление составом портов.
- 📨 Автоматизация: отправка и приём SMS из скриптов и программ.
- 🛠️ Сервис: чтение информации об устройстве, сброс зависшего модуля.
Подготовка: определяем порт модема
Первое действие — найти, на каком порту «сидит» модем. В Windows откройте Диспетчер устройств и посмотрите раздел «Порты (COM и LPT)» и «Модемы». USB-модемы часто создают сразу несколько виртуальных COM-портов: один для AT-команд, другой для передачи данных.
В Linux после подключения модема выполните в терминале:
ls /dev/ttyUSB* /dev/ttyACM*
Обычно появляется несколько устройств ttyUSB0, ttyUSB1 и так далее. Какое из них принимает AT-команды — зависит от модели; проще всего проверить каждый по очереди, отправив AT и дождавшись ответа OK.
⚠️ Внимание: если порт открыт другой программой (фирменная утилита модема, менеджер подключений), терминал либо не сможет его открыть, либо команды будут «молчать». Перед работой закройте весь софт, который использует модем.
Перед подключением к COM-порту завершите процессы фирменной программы модема через диспетчер задач — иначе порт останется занятым даже после закрытия окна приложения.
Выбор терминальной программы
Для отправки AT-команд нужна программа-терминал. Под Windows традиционно используют PuTTY (режим Serial), Terminal или встроенные средства некоторых утилит. Под Linux удобны minicom, screen или picocom.
| Программа | Платформа | Особенности |
|---|---|---|
| PuTTY | Windows, Linux | Простой serial-режим, сохранение сессий |
| minicom | Linux | Гибкая настройка порта, работа из консоли |
| screen | Linux, macOS | Уже установлен в большинстве систем |
| picocom | Linux | Минималистичный, удобен для скриптов |
Параметры подключения у большинства модемов стандартные: скорость 9600 или 115200 бод, 8 бит данных, без чётности, 1 стоп-бит (8N1). Точную скорость для конкретной модели стоит уточнить в документации — многие современные модемы поддерживают автоопределение скорости.
Как сделать AT-запрос: пошаговая инструкция
Разберём базовую последовательность на примере PuTTY в Windows. Вам нужно открыть порт, проверить связь и отправить первую осмысленную команду.
☑️ Первый AT-запрос к модему
Откройте PuTTY, выберите тип соединения Serial, укажите порт (например, COM5) и скорость. После нажатия Open появится чёрное окно терминала. Введите AT и нажмите Enter.
Если всё настроено верно, модем ответит OK. Это значит, что канал работает и можно отправлять остальные команды. Отсутствие ответа — повод проверить порт, скорость и то, не занято ли устройство другой программой.
AT
OK
AT+CSQ
+CSQ: 19,0
OK
Команда AT без параметров — универсальная проверка связи: ответ OK означает, что порт выбран правильно и модем готов принимать команды.
Базовые AT-команды для диагностики
Набор поддерживаемых команд зависит от производителя и прошивки модема, но несколько запросов являются практически стандартными. Начинать диагностику стоит именно с них.
- 📶
AT+CSQ— уровень сигнала: первая цифра от 0 до 31, где 99 означает «нет сигнала». - 🌐
AT+CREG?— статус регистрации в сети; ответ вида+CREG: 0,1означает регистрацию в домашней сети. - 🔢
AT+CGSN— чтение IMEI устройства. - 🏢
AT+COPS?— оператор, в сети которого зарегистрирован модем. - 🔄
AT+CFUN?— текущий функциональный режим модуля.
Обратите внимание: один и тот же запрос может возвращать ERROR на одном модеме и корректный ответ на другом. Это не всегда поломка — возможно, команда просто не поддерживается данной прошивкой. Сверяйтесь с AT-справочником производителя вашей модели.
Типичные проблемы и их решение
Самая частая ситуация — терминал открыт, но модем молчит. Проверьте три вещи: правильный ли порт выбран (у модема их может быть несколько), не занят ли порт другим приложением и совпадает ли скорость. Перебор портов с отправкой AT — самый быстрый способ найти «правильный».
Вторая проблема — в терминале не видно вводимых символов. Это нормально: эхо на многих модемах по умолчанию выключено. Команда ATE1 включает отображение вводимого текста, но и без неё команды исполняются.
⚠️ Внимание: команды, меняющие режим работы модема (переключение состава устройства, сброс настроек, смена IMEI-подобных параметров), могут привести к тому, что модем перестанет определяться системой или нарушит условия оператора. Перед такими операциями найдите документацию именно на вашу модель и сохраните исходные значения параметров.
Если модем отвечает ERROR на любую команду, кроме AT, возможно, он находится в ограниченном режиме или требует ввода PIN-кода SIM-карты. Проверить это можно запросом AT+CPIN? — ответ +CPIN: READY означает, что SIM готова к работе.
Работа с GSM-модулем через Arduino
Если вы отправляете AT-команды модулю SIM800 или аналогичному через микроконтроллер, подключайте модуль через SoftwareSerial или аппаратный UART, соблюдайте уровни логики (у многих модулей 2,8 В на линиях) и обеспечьте достаточный ток питания — GSM-модули в момент передачи потребляют импульсный ток до 2 А, и просадка питания вызывает перезагрузку модуля прямо во время сеанса связи.
Автоматизация: AT-команды из скриптов
Когда ручной ввод отработан, команды логично автоматизировать. В Linux это делается прямой записью в порт:
echo -e "AT+CSQ\r" > /dev/ttyUSB2
cat /dev/ttyUSB2
Для Windows подойдёт PowerShell с объектом System.IO.Ports.SerialPort или скрипты на Python с библиотекой pyserial. Важный нюанс: команды должны завершаться символом возврата каретки \r, а после отправки нужно дать модему время на ответ, прежде чем читать буфер.
⚠️ Внимание: не отправляйте команды в порт непрерывным циклом без пауз — модем обрабатывает запросы последовательно, и при переполнении буфера часть ответов теряется, что выглядит как «зависание» устройства.
При чтении ответов в скрипте ориентируйтесь на строки OK или ERROR как на маркер конца ответа — так парсинг будет устойчив к различиям в формате вывода разных модемов.
Часто задаваемые вопросы
Модем не отвечает на AT — он сломан?
Не обязательно. Чаще всего выбран не тот COM-порт, порт занят фирменной программой или не совпадает скорость. Проверьте все порты устройства по очереди и закройте софт оператора. Аппаратная неисправность — крайний вариант после всех программных проверок.
Что означает ответ ERROR на команду?
Это общий отказ в выполнении: команда не поддерживается прошивкой, неверный синтаксис или модем находится в состоянии, не позволяющем выполнить запрос (например, SIM не готова). Проверьте написание команды и статус SIM через AT+CPIN?.
Какая скорость порта нужна для AT-команд?
Типовые значения — 9600 и 115200 бод, многие модемы определяют скорость автоматически. Точное значение для вашей модели указано в её документации; если ответа нет, попробуйте оба стандартных варианта.
Можно ли отправлять AT-команды, пока модем подключён к интернету?
Зависит от модели. У многих USB-модемов командный порт и порт данных разделены, и AT-запросы работают параллельно с соединением. У других активное подключение блокирует часть команд. Проверяется опытным путём на конкретном устройстве.
Где найти полный список AT-команд моего модема?
В официальном AT Command Reference от производителя чипсета или устройства (Quectel, SIMCom, Huawei и др.). Универсального списка нет — набор команд и их синтаксис различаются между моделями и версиями прошивок.