Набор команд Hayes (также известный как набор AT-команд ) — это особый язык команд , первоначально разработанный Дейлом Хезерингтоном и Деннисом Хейсом [1] [2] для модема Hayes Smartmodem в 1981 году.
Набор команд состоит из серии коротких текстовых строк, которые можно комбинировать для создания команд для таких операций, как набор номера, завершение вызова и изменение параметров соединения. Подавляющее большинство модемов dial-up используют набор команд Hayes в многочисленных вариациях.
Набор команд охватывал только те операции, которые поддерживались самыми ранними300-битные модемы. Когда потребовались новые команды для управления дополнительными функциями в более скоростных модемах, от каждого из основных поставщиков появилось множество одноразовых стандартов. Они продолжали использовать базовую структуру и синтаксис команд, но добавляли любое количество новых команд, используя какой-либо префиксный символ — &
для Hayes и USRobotics , а также\
для Microcom . Многие из них были повторно стандартизированы в расширениях Hayes после появления SupraFAXModem 14400 и последовавшей консолидации рынка.
Термин « совместимый с Hayes » был [3] [1] и по состоянию на 2018 год [обновлять]все еще важен в отрасли. [4]
До появления системы досок объявлений (BBS) модемы обычно работали на прямых телефонных линиях , которые начинались и заканчивались известным модемом на каждом конце. Модемы работали либо в режиме «исхода», либо в режиме «ответа», вручную переключаясь между двумя наборами частот для передачи данных. Обычно пользователь, совершающий вызов, переключал свой модем в режим «исхода», а затем набирал номер вручную. Когда удаленный модем отвечал, уже установленный в режим «ответа», телефонная трубка выключалась, и связь продолжалась до тех пор, пока вызывающий абонент не отключался вручную.
Когда требовалась автоматизация, она обычно была нужна только на стороне ответа; например, банку могло потребоваться принимать звонки из нескольких филиалов для обработки в конце дня. Чтобы выполнить эту роль, некоторые модемы включали возможность автоматического снятия трубки телефона, когда он находился в режиме ответа, и освобождения линии, когда другой пользователь вручную отключался. Потребность в автоматическом исходящем наборе номера была значительно менее распространена и обрабатывалась с помощью отдельного периферийного устройства: «номеронабирателя». Он обычно подключался к отдельному порту ввода/вывода на компьютере (обычно порту RS-232 ) и программировался отдельно от самого модема.
Этот метод работы работал удовлетворительно в 1960-х и начале 1970-х годов, когда модемы в основном использовались для соединения немых устройств, таких как компьютерные терминалы (вызов) с интеллектуальными мэйнфреймами (ответ). Однако микрокомпьютерная революция 1970-х годов привела к появлению недорогих модемов, и идея полувыделенной двухточечной связи больше не подходила. Потенциально были тысячи пользователей, которые могли захотеть позвонить любому из тысяч других пользователей, и единственным решением в то время было заставить пользователя набирать номер вручную.
Компьютерной индустрии требовался способ сообщить модему, какой номер набирать с помощью программного обеспечения. Ранние отдельные дозвонщики имели такую возможность, но только за счет отдельного порта , который мог быть недоступен микрокомпьютеру . Другим решением было бы использование отдельного набора «командных контактов», предназначенных для отправки и получения команд; еще одно решение могло бы использовать сигнальный контакт, указывающий, что модем должен интерпретировать входящие данные как команду. Оба они имели аппаратную поддержку в стандарте RS-232 . Однако многие реализации порта RS-232 на микрокомпьютерах были крайне базовыми, и некоторые исключили многие из этих контактов, чтобы снизить стоимость.
Hayes Communications представила решение в своем Smartmodem 1981 года , используя существующие пины данных без каких-либо изменений. Вместо этого сам модем мог переключаться между одним из двух режимов:
Для переключения из режима данных в командный режим сеансы отправляли строку escape-последовательности из трех знаков плюс ( +++
), за которой следовала пауза около секунды. Пауза в конце escape-последовательности была необходима для уменьшения проблемы, вызванной внутриполосной сигнализацией : если в течение одной секунды от трех знаков плюс были получены какие-либо другие данные, это не была escape-последовательность, и она отправлялась как данные. Для обратного переключения они отправляли команду онлайн , ATO
. При реальном использовании многие команды автоматически переключались в онлайн-режим после завершения, и редко когда пользователь явно использует команду онлайн.
Чтобы избежать лицензирования патента Хейса, некоторые производители реализовали escape-последовательность без временного защитного интервала ( Time Independent Escape Sequence (TIES)). Это имело серьезные последствия для безопасности отказа в обслуживании , поскольку приводило к тому, что модем разрывал соединение, если компьютер когда-либо пытался передать последовательность байтов +++ATH0
в режиме данных. Для любого компьютера, подключенного к Интернету через такой модем, это можно было легко использовать, отправив ему запрос ping of death, содержащий последовательность +++ATH0
в полезной нагрузке. Операционная система компьютера автоматически пыталась ответить отправителю той же полезной нагрузкой, немедленно отключившись от Интернета, поскольку модем интерпретировал бы полезную нагрузку данных ICMP как команду Хейса. [5] Та же ошибка также возникала бы, если бы, например, пользователь компьютера когда-либо пытался отправить электронное письмо, содержащее вышеупомянутую строку.
Набор команд Hayes включает команды для различных операций телефонной линии, таких как набор номера и отбой. Он также включает различные элементы управления для настройки модема, включая набор команд регистров , которые позволяли пользователю напрямую устанавливать различные ячейки памяти в оригинальном модеме Hayes. Набор команд был скопирован в значительной степени дословно, включая значение регистров, почти всеми ранними производителями модемов на 300 бод, которых было довольно много.
Расширение до 1200 и 2400 бод потребовало добавления новых команд, некоторые из которых были снабжены префиксом амперсанда ( &
), чтобы обозначить те, которые предназначены для новой функциональности. Сама Hayes была вынуждена быстро ввести модель 2400 бод вскоре после своей 1200, и наборы команд были идентичны в качестве метода экономии времени. [6] По сути, случайно, это позволило пользователям существующих модемов 1200 бод использовать новые модели Hayes 2400 без изменения своего программного обеспечения. Это усилило использование версий этих команд Hayes. Годы спустя Ассоциация телекоммуникационной промышленности (TIA)/ Альянс электронной промышленности (EIA) официально стандартизировали набор команд 2400 бод как Системы и оборудование передачи данных – Последовательный асинхронный автоматический набор и управление , TIA/EIA-602 .
Однако Hayes Communications не спешила выпускать модемы, поддерживающие более высокие скорости или сжатие, и три другие компании возглавили это: Microcom , US Robotics и Telebit . Каждая из этих трех использовала свои собственные дополнительные наборы команд. К началу 1990-х годов использовалось четыре основных набора команд и несколько версий, основанных на одном из них. Все снова стало проще во время повсеместного внедрения 14.4 иМодемы 28,8 кбит/с в начале 1990-х. Постепенно набор команд, основанный в значительной степени на оригинальном расширенном наборе Hayes с использованием&
команд, стал популярным, а затем и универсальным. Только один другой набор команд остался популярным, набор US Robotics из их популярной линейки модемов.
Следующий текст перечисляет часть набора команд Hayes, также называемых командами AT : «AT» означает «внимание». Каждая строка команды начинается с «AT», и после «AT» может быть объединено несколько отдельных команд.
Набор команд Hayes можно разделить на четыре группы:
Хотя синтаксис набора команд определяет большинство команд с помощью комбинации букв и цифр (L0, L1 и т. д.), использование нуля необязательно. В этом примере "L0" соответствует простому "L". Помните об этом при чтении таблицы ниже.
В режиме данных escape-последовательность может вернуть модем в командный режим. Обычная escape-последовательность — это три знака плюс ("+++"), и для того, чтобы отделить ее от возможных реальных данных, используется защитный таймер: ей должна предшествовать пауза, не должно быть никаких пауз между знаками плюс и за ней должна следовать пауза; по умолчанию "пауза" составляет одну секунду, а "без паузы" — все, что меньше.
Применяются следующие синтаксические определения: [7]
<CR>
Символ возврата каретки — это символ конца командной строки и кода результата, значение которого в десятичном ASCII от 0 до 255 указывается в регистре S3. Значение по умолчанию — 13.<LF>
Символ перевода строки — это символ, распознаваемый как символ перевода строки. Его значение в десятичном ASCII от 0 до 255 указывается в регистре S4. Значение по умолчанию — 10. Символ перевода строки выводится после символа возврата каретки, если используются подробные коды результатов (используется опция V1); в противном случае, если используются коды результатов числового формата (используется опция V0), он не будет отображаться в кодах результатов.<...>
Имя, заключенное в угловые скобки, является синтаксическим элементом. Они не отображаются в командной строке.[...]
Необязательный подпараметр команды или необязательная часть ответа AT-информации заключены в квадратные скобки. Сами скобки не отображаются в командной строке. Если подпараметр не указан в командах AT, имеющих команду Read, новое значение равно его предыдущему значению. В командах AT, которые не хранят значения ни одного из своих подпараметров и, следовательно, не имеют команды Read, которые называются командами типа действия, действие должно быть выполнено на основе рекомендуемой настройки подпараметра по умолчанию.Строка может содержать много команд Hayes, размещенных вместе, чтобы оптимально подготовить модем к набору номера или ответу, например . Большинство модемного программного обеспечения поддерживало пользовательскую строку инициализации , которая обычно представляла собой длинную конкатенированную команду AT, которая отправлялась модему при запуске. [8] Спецификация V.250 требует, чтобы все DCE принимали тело (после «AT») не менее чем из 40 символов конкатенированных команд. [9]AT&F&D2&C1S0=0X4
Ниже представлены два компьютера, компьютер A и компьютер B, оба с подключенными модемами, и пользователь, управляющий модемами с помощью программного обеспечения эмулятора терминала . Программное обеспечение эмулятора терминала обычно позволяет пользователю отправлять команды Hayes напрямую модему и видеть ответы. В этом примере пользователь компьютера A заставляет модем набрать телефонный номер модема B по номеру телефона (212) 555-0100 (междугородний). После каждой команды и ответа отправляется возврат каретки для завершения команды.
Модем А | Модем Б | Комментарий |
---|---|---|
ATDT12125550100 | Пользователь модема A подает команду набора номера: AT-получить ATtention модема; D-набрать номер; T-тональный набор; 12125550100-позвонить по этому номеру | |
КОЛЬЦО | Начинает набирать номер модем А. Звонит телефонная линия модема В, и модем сообщает об этом. | |
АТА | Компьютер на модеме B выдает команду ответа. | |
СОЕДИНЯТЬ | СОЕДИНЯТЬ | Модемы подключаются, и оба модема сообщают «подключение». (На практике большинство модемов сообщают дополнительную информацию после слова CONNECT — указывая скорость соединения.) Также в это время оба модема поднимут сигнал DCD (Data Carrier Detect) на последовательном порту. |
abcdef | abcdef | Когда модемы подключены, любые символы, набранные с любой стороны, появятся на другой стороне. Человек за компьютером A начинает печатать. Символы проходят через модем и появляются на экране компьютера B. (Пользователь A может не видеть свои собственные набранные символы — в зависимости от локальной настройки эха программного обеспечения терминала ). |
+++ | Человек за компьютером B подает команду на выход модема. (В качестве альтернативы, и это встречается чаще, компьютер B может сбросить сигнал DTR или готовности терминала данных, чтобы завершить соединение, без необходимости использования +++ или ATH.) | |
ХОРОШО | Модем это распознает. | |
АТХ | Человек за компьютером B подает команду «отбой». | |
НЕТ ПЕРЕВОЗЧИКА | ХОРОШО | Оба модема сообщают, что соединение завершено. Модем B отвечает "OK" как ожидаемый результат команды; модем A сообщает NO CARRIER , что удаленная сторона прервала соединение. Модемы на обеих сторонах также сбрасывают свои сигналы DCD. |
Хотя первоначальный набор команд Hayes представлял собой огромный скачок вперед в области модемной связи, со временем возникло много проблем, и почти ни одна из них не была связана с Hayes как таковым :
В результате всего этого многим программам связи в конечном итоге пришлось отказаться от возможности взаимодействовать со всеми «совместимыми с Hayes» модемами, и вместо этого программам пришлось пытаться определить тип модема по его ответам или предоставить пользователю некую опцию, с помощью которой он мог бы вводить любые специальные команды, необходимые для того, чтобы заставить свой модем работать должным образом.
Набор команд Hayes облегчает автоматическое определение скорости передачи данных , поскольку «A» и «T» имеют очень регулярные битовые шаблоны; «A» — это «100 0001» и поэтому имеет бит 1 в начале и конце, а «T» — это «101 0100», который имеет шаблон с (почти) каждым вторым набором битов. [10] Поскольку интерфейс RS-232 передает сначала младший бит , соответствующий шаблон строки с 8-N-1 (восемь битов данных, без бита четности, один стоповый бит) — это 0 10000010 10 00101010 1 (стартовый и стоповый биты выделены курсивом ), который используется в качестве синхрослова .
Следующие команды понимаются практически всеми модемами, поддерживающими набор AT-команд, как старыми, так и новыми.
Команда | Описание | Комментарии |
---|---|---|
А0 или А | Ответить на входящий звонок | |
А/ | Повторите последнюю команду | Не ставьте AT в начале , не ставьте возврат каретки после. Enter обычно прерывает. |
Д | Набрать номер | Наберите следующий номер и пожмите руку P – Импульсный набор |
Е0 или Е | Нет Эха | Не будет передавать команды на компьютер |
Е1 | Эхо | Будет передавать команды на компьютер (чтобы можно было видеть, что набирается, если программное обеспечение компьютера не поддерживает функцию echo) |
H0 или H | Статус крючка | На трубке. Кладет трубку, завершая любой текущий вызов. |
Н1 | Статус крючка | Снять трубку. Поднять телефонную трубку (обычно вы услышите гудок) |
I0 - I9 | Запрос, информация или допрос | Эта команда возвращает информацию о модели, например, ее прошивку или название бренда. Каждое число (от 0 до 9, а иногда и 10 и выше) возвращает одну строку информации о модеме или слово ERROR, если строка не определена. Сегодня Windows использует это для обнаружения Plug-and-play определенных типов модемов. |
L0 или Ln (n=1–3) | Громкость динамика. Поддерживается только некоторыми модемами с динамиками. Модемы без динамиков или с физическими регуляторами громкости, или те, чей звуковой выход передается через звуковую карту, не будут поддерживать эту команду. | 0 отключает динамик, 1–3 — увеличивают громкость. |
М0 или М | Отключение динамика, полная тишина во время набора номера | M3 также распространен, но отличается у многих марок |
М1 | Динамик включен до тех пор, пока не будет обнаружен удаленный оператор (пользователь услышит набор номера и модемное квитирование, но после установления полного соединения динамик отключается) | |
М2 | Динамик всегда включен (звуки данных слышны после CONNECT ) | |
О | Возврат онлайн | Возвращает модем в нормальное подключенное состояние после прерывания кодом «+++». |
Q0 или Q | Тихий режим | Выкл. – отображает коды результатов, пользователь видит ответы команд (например, OK ) |
Q1 | Тихий режим | Вкл. – Коды результатов подавляются, пользователь не видит ответы. |
Сn | Выбрать текущий регистр Обратите внимание, что S | Выберите регистр n в качестве текущего регистра. |
С n ? | Выберите регистр n в качестве текущего регистра и запросите его значение. Использование ? само по себе запросит регистр, который был выбран последним. | |
С n =r | Выберите регистр n в качестве текущего регистра и сохраните в нем r . Использование =r само по себе сохранит тот регистр, который был выбран последним. | |
V0 или V | Многословный | Числовые коды результатов |
В1 | Английские коды результатов (например CONNECT , BUSY , NO CARRIER и т.д.) | |
X0 или X | Смартмодем | Коды результатов, совместимые с Hayes Smartmodem 300 |
Х1 | Обычно добавляет скорость соединения к основным результирующим кодам (например CONNECT 1200 , ) | |
Х2 | Обычно добавляется обнаружение гудка (предотвращая слепой набор, а иногда и ATO ) | |
Х3 | Обычно добавляет обнаружение сигнала «занято». | |
Х4 | Обычно добавляется как сигнал «занято», так и обнаружение гудка. | |
Z0 или Z | Перезагрузить | Сброс модема к сохраненной конфигурации, а также, как правило, физическое выключение и включение модема (во время которого он не отвечает). Z0' , Z1 и т. д. предназначены для нескольких сохраненных профилей. &F похож тем, что он возвращает заводские настройки по умолчанию на модемах без NVRAM (энергонезависимой памяти), но не сбрасывает модем |
Примечание: командная строка завершается символом CR (\r)
Хотя символ тильды ~ не является частью набора команд, он обычно используется в последовательностях команд модема. ~ заставляет многие приложения приостанавливать отправку потока команд устройству (обычно на полсекунды), например, после сброса . ~ не отправляется модему. [11]
Зарегистрироваться | Описание | Диапазон | Значение по умолчанию |
---|---|---|---|
С0 | Количество звонков до автоответа | 0–255 (0 = никогда) | 0 |
С1 | Счетчик колец | 0–255 звонков | 0 |
С2 | Escape-символ | 0–255, десятичная ASCII-система | 43 ("+") |
С3 | Символ возврата каретки | 0–127, десятичная ASCII-система | 13 (Возврат каретки) |
С4 | Символ перевода строки | 0–127, десятичная ASCII-система | 10 (перевод строки) |
С5 | Символ возврата на одну позицию | 0–32, десятичная ASCII-система | 8 (Возврат) |
С6 | Время ожидания перед слепым набором номера | 2–255 секунд | 2 |
С7 | Ожидание оператора после набора номера | 1–255 секунд | 50 |
С8 | Время паузы для запятой (задержка набора) | 0–255 секунд | 2 |
С9 | Время отклика обнаружения несущей | 1–255 десятых секунды | 6 (0,6 секунды) |
С10 | Задержка между потерей несущей и зависанием | 1–255 десятых секунды | 14 (1,4 секунды) |
С11 | Длительность тона DTMF | 50–255 миллисекунд | 95 миллисекунд |
С12 | Время выхода из кода защиты | 0–255 пятидесятых секунды | 50 (1 секунда) |
С18 | Тестовый таймер | 0–255 секунд | 0 секунд |
С25 | Задержка DTR | 0–255 (секунды в синхронном режиме, сотые доли секунды во всех остальных режимах) | 5 |
С26 | Интервал задержки RTS-CTS | 0–255 сотых секунды | 1 сотая секунды |
С30 | Таймер отключения при бездействии | 0–255 десятков секунд | 0 (отключить) |
С37 | Желаемая скорость телефонной линии | 0–10 Параметры команды:
| 0 |
С38 | Задержка перед принудительным отключением | 0–255 секунд | 20 секунд |
ITU -T установил стандарт в своих Рекомендациях серии V , V.25 ter , в 1995 году в попытке снова установить стандарт для набора команд. Он был переименован в V.250 в 1998 году с приложением, которое не касалось набора команд Hayes, переименованного в V.251 . Модем, совместимый с V.250, реализует команды A, D, E, H, I, L, M, N, O, P, Q, T, V, X, Z, &C, &D и &F способом, указанным в стандарте. Он также должен реализовывать регистры S и должен использовать регистры S0, S3, S4, S5, S6, S7, S8 и S10 для целей, указанных в стандарте. Он также должен реализовывать любую команду, начинающуюся со знака плюс, "+", за которой следует любая буква от A до Z, только в соответствии с рекомендациями ITU. Производители модемов могут свободно реализовывать другие команды и S-регистры по своему усмотрению, а также добавлять опции к стандартным командам.
Главные герои | Включает команды, связанные с |
---|---|
+А | Проблемы управления вызовами (сетевая адресация), общие, PSTN, ISDN, ITU-T Rec. X.25, коммутируемая цифровая связь |
+С | Расширения цифровой сотовой связи |
+Д | Сжатие данных, Рекомендация МСЭ-Т V.42 bis |
+Э | Контроль ошибок, Рекомендация МСЭ-Т V.42 |
+Ф | Факсимильная связь, Рекомендация МСЭ-Т T.30 и т.д. |
+Г | Общие вопросы, такие как идентичность и возможности |
+Я | Проблемы интерфейса DTE-DCE, рекомендации ITU-T V.24 и т. д. |
+М | Модуляция, Рек. МСЭ-Т. V.32 бис и т. д. |
+П | Команды PCM DCE, Рекомендация ITU-T V.92 |
+С | Переключаемые или одновременные типы данных |
+Т | Тестовые вопросы |
+В | Голосовые расширения |
+В | Беспроводные расширения |
ETSI GSM 07.07 (3GPP TS 27.007) определяет команды стиля AT для управления телефоном или модемом GSM . ETSI GSM 07.05 (3GPP TS 27.005) определяет команды стиля AT для управления функцией службы коротких сообщений (SMS) GSM.
Примеры команд GSM: [12] [13]
Команда | Описание |
---|---|
AT+CPIN=1234 | Введите ПИН-код |
AT+CPWD="SC","старый","новый" | Изменить PIN-код со «старого» на «новый» |
AT+CLCK="SC",0,"1234" | Удалить ПИН-код |
АТ&В | Статус |
АТИ | Статус (Производитель, Модель, Версия, IMEI , Возможности) |
АТ+КОПС=? | Список доступных сетей 0-Неизвестно/2-Текущий/3-Запрещено, Длинное имя, Короткое имя, Числовой идентификатор, "AcT" |
AT+CSQ | Получить уровень сигнала. Ответ: +CSQ: < rssi (больше=лучше)>, < ber , меньше=лучше> |
АТД*99# | Точка доступа к коммутируемому каналу |
AT+CGDCONT=1,"IP","имя.точки.доступа" | Определяет контекст PDP [12] |
Модемы GSM/3G обычно поддерживают расширения набора AT-команд ETSI GSM 07.07/3GPP TS 27.007, хотя количество реализованных команд различается.
Большинство производителей USB-модемов, таких как Huawei, Sierra Wireless, Option, также определили собственные расширения для выбора радиорежима (предпочтение GSM/3G) или аналогичные. Некоторые современные высокоскоростные модемы предоставляют виртуальный интерфейс Ethernet вместо использования протокола точка-точка (PPP) для подключения к данным из соображений производительности (подключение PPP используется только между компьютером и модемом, а не по сети). Для настройки требуются расширения AT-команд, специфичные для поставщика. Иногда спецификации для этих расширений находятся в открытом доступе, в других случаях поставщик требует NDA для доступа к ним. [14]
Модемы с функциями голосовой связи или автоответчика поддерживают расширенный набор этих команд для обеспечения возможности воспроизведения и записи цифрового звука.
с партнером