stringtranslate.com

Набор AT-команд Hayes

Набор команд Hayes (также известный как набор AT-команд ) — это особый командный язык , первоначально разработанный Дейлом Хизерингтоном и Деннисом Хейсом [1] [2] для модема Hayes Smartmodem со скоростью передачи данных 300 бод в 1981 году.

Набор команд состоит из серии коротких текстовых строк, которые можно комбинировать для создания команд для таких операций, как набор номера, отбой и изменение параметров соединения. Подавляющее большинство модемов коммутируемого доступа используют набор команд Hayes в многочисленных вариациях.

Набор команд охватывал только те операции, которые поддерживались самыми ранними модемами со скоростью 300 бит/с. Когда потребовались новые команды для управления дополнительными функциями высокоскоростных модемов, каждый из основных поставщиков разработал множество одноразовых стандартов. Они продолжали использовать базовую структуру и синтаксис команд, но добавляли любое количество новых команд с использованием какого-либо префиксного символа — например, &для Hayes и USR , а также \для Microcom . Многие из них были повторно стандартизированы в расширениях Hayes после появления SupraFAXModem 14400 и последовавшей за этим консолидации рынка.

Термин « совместимость по Хейсу » был [3] [1] и по состоянию на 2018 год по-прежнему важен в отрасли. [4]

История

Фон

До внедрения системы досок объявлений (BBS) модемы обычно работали на телефонных линиях с прямым набором номера , которые всегда начинались и заканчивались известным модемом на каждом конце. Модемы работали в режимах «отправки» или «ответа», вручную переключаясь между двумя наборами частот для передачи данных. Обычно пользователь, совершающий вызов, переключает свой модем на «исходный», а затем набирает номер вручную. Когда удаленный модем ответил, уже установленный в режим «ответ», телефонная трубка выключалась, и связь продолжалась до тех пор, пока вызывающий абонент не отключился вручную.

Когда требовалась автоматизация, она обычно требовалась только на стороне ответа — например, банку могло потребоваться принимать звонки из нескольких филиалов для обработки в конце дня. Чтобы выполнить эту роль, некоторые модемы включали возможность автоматически поднимать трубку, когда он находился в режиме ответа, и очищать линию, когда другой пользователь отключался вручную. Потребность в автоматическом исходящем наборе была значительно менее распространена и обрабатывалась с помощью отдельного периферийного устройства - «дозвонщика». Обычно он подключался к отдельному порту ввода-вывода на компьютере (обычно порту RS-232 ) и программировался отдельно от самого модема.

Этот метод работы удовлетворительно работал в 1960-х и начале 1970-х годов, когда модемы обычно использовались для соединения простых устройств, таких как компьютерные терминалы (дозвон), с интеллектуальными мейнфреймами (ответ). Однако революция микрокомпьютеров 1970-х годов привела к появлению недорогих модемов, и идея полувыделенной линии связи «точка-точка» больше не была подходящей. Потенциально существовали тысячи пользователей, которые могли захотеть набрать номер любого из тысяч других пользователей, и единственным решением в то время было заставить пользователя набирать номер вручную.

Компьютерной индустрии нужен был способ сообщить модему, какой номер набирать, с помощью программного обеспечения. Более ранние отдельные дозвонщики имели эту возможность, но только за счет отдельного порта, которого у микрокомпьютера могло не быть. Другим решением было бы использовать отдельный набор «командных контактов», предназначенных для отправки и получения команд, другое могло бы использовать сигнальный контакт, указывающий, что модем должен интерпретировать входящие данные как команду. Оба они имели аппаратную поддержку стандарта RS-232. Однако многие реализации порта RS-232 на микрокомпьютерах были чрезвычайно простыми, а в некоторых из них многие из этих контактов были исключены в целях экономии средств.

Решение Хейса

Компания Hayes Communications представила решение в своем смартмодеме 1981 года, используя существующие контакты данных без каких-либо модификаций. Вместо этого сам модем мог переключаться между одним из двух режимов:

  1. режим данных , в котором модем отправляет данные на удаленный модем. (Модем в режиме передачи данных рассматривает все, что он получает от компьютера, как данные и отправляет их по телефонной линии).
  2. командный режим , в котором данные интерпретируются как команды для локального модема (команды, которые должен выполнять локальный модем).

Чтобы переключиться из режима данных в командный режим, сеансы отправляли управляющую строку из трех знаков плюс («+++»), за которой следовала пауза длительностью около секунды. Пауза в конце escape-последовательности была необходима для уменьшения проблемы, вызванной внутриполосной передачей сигналов : если какие-либо другие данные были получены в течение одной секунды из трех знаков плюс, это не была escape-последовательность и будут отправлены как данные. Чтобы переключиться обратно, они отправили онлайн- команду «АТО». В реальном использовании многие команды после завершения автоматически переключаются в онлайн-режим, и пользователь редко использует онлайн-команду явно.

Чтобы избежать лицензирования патента Хейса, некоторые производители реализовали escape-последовательность без защитного интервала ( Time Independent Escape Sequence (TIES)). Это имело серьезные последствия для безопасности отказа в обслуживании , поскольку могло привести к разрыву соединения модемом, если компьютер когда-либо попытается передать последовательность байтов «+++ATH0» в режиме данных. Для любого компьютера, подключенного к Интернету через такой модем, это можно легко использовать, отправив ему запрос ping of Death , содержащий последовательность «+++ATH0» в полезной нагрузке. Операционная система компьютера автоматически попытается ответить отправителю той же полезной информацией, немедленно отключившись от Интернета, поскольку модем интерпретирует полезную нагрузку пакета ICMP как команду Hayes. [5] Та же ошибка может возникнуть, если, например, пользователь компьютера когда-либо попытается отправить электронное письмо, содержащее вышеупомянутую строку.

Команды

Набор команд Hayes включает команды для различных операций с телефонной линией, таких как набор номера и отбой. Он также включает в себя различные элементы управления для настройки модема, в том числе набор команд регистра , которые позволяли пользователю напрямую устанавливать различные ячейки памяти в исходном модеме Hayes. Набор команд копировался практически дословно, включая значение регистров, почти всеми производителями ранних 300-бодных модемов, которых было довольно много.

Расширение до 1200 и 2400 бод потребовало добавления небольшого набора новых команд, некоторые из которых имели префикс амперсанда («&») для обозначения команд, предназначенных для новых функций. Сама компания Hayes была вынуждена быстро представить модель на 2400 бод вскоре после модели 1200, а наборы команд были идентичными в целях экономии времени. [6] По сути случайно, это позволило пользователям существующих модемов со скоростью 1200 бод использовать новые модели Hayes 2400 без изменения их программного обеспечения. Это усилило использование версий этих команд Хейса. Спустя годы Ассоциация телекоммуникационной индустрии (TIA)/ Альянс электронной промышленности (EIA) превратила набор команд со скоростью 2400 бод в формальный стандарт под названием « Системы и оборудование передачи данных — последовательный асинхронный автоматический набор номера и управление» , TIA/EIA-602 .

Однако Hayes Communications не спешила с выпуском модемов, поддерживающих более высокие скорости или сжатие, и здесь лидировали три другие компании — Microcom , US Robotics и Telebit . Каждая из этих троих использовала свои собственные дополнительные наборы команд вместо того, чтобы ждать, пока Хейс проложит путь вперед. К началу 1990-х годов использовалось четыре основных набора команд и несколько версий, основанных на одном из них. Ситуация снова стала проще во время широкого внедрения модемов со скоростью 14,4 и 28,8 кбит/с в начале 1990-х годов. Постепенно набор команд, основанный на оригинальном расширенном наборе Хейса с использованием команд «&», стал популярным, а затем универсальным. Популярным остался только один набор команд — набор US Robotics из популярной линейки модемов.

Описание

В следующем тексте перечислена часть набора команд Хейса, также называемая AT-командами : «AT» означает «внимание». Каждая командная строка имеет префикс «AT», и после «AT» можно объединить несколько отдельных команд.

Набор команд Хейса можно разделить на четыре группы:

  1. базовый набор команд – заглавный символ, за которым следует цифра. Например, М1.
  2. расширенный набор команд — знак «&» (амперсанд) и заглавная буква, за которой следует цифра. Это расширяет базовый набор команд. Например, &М1. Обратите внимание, что M1 отличается от &M1.
  3. собственный набор команд — обычно начинается с обратной косой черты («\») или знака процента («%»); эти команды сильно различаются у разных производителей модемов.
  4. команды регистра – Sr=n, где r – номер регистра, который необходимо изменить, а n – новое присвоенное значение. Регистр представляет собой определенное физическое место в памяти . Модемы имеют небольшой объем встроенной памяти. Четвертый набор команд служит для ввода значений в определенный регистр (ячейку памяти). Например, S7=60 предписывает модему «Установить в регистре №7 значение 60». Регистры обычно контролируют аспекты работы модема (например, мощность передачи, параметры модуляции) и обычно специфичны для конкретной модели.

Хотя синтаксис набора команд определяет большинство команд с помощью комбинации букв и цифр (L0, L1 и т. д.), использование нуля не является обязательным. В этом примере «L0» соответствует простой «L». Имейте это в виду, читая таблицу ниже.

В режиме данных escape-последовательность может вернуть модем в командный режим. Обычная управляющая последовательность представляет собой три знака плюс («+++»), и чтобы устранить неоднозначность в ней из возможных реальных данных, используется защитный таймер: ей должна предшествовать пауза, не должно быть пауз между знаками плюс и быть после чего следует пауза; по умолчанию «пауза» составляет одну секунду, а «без паузы» — меньше.

Синтаксические определения

Применяются следующие синтаксические определения: [7]

Инициализация модема

Строка может содержать множество команд Hayes, помещенных вместе, чтобы оптимально подготовить модем к дозвону или ответу, например . Большинство программного обеспечения модема поддерживало строку инициализации , предоставляемую пользователем , которая обычно представляла собой длинную составную AT-команду, которая отправлялась модему при запуске. [8] Спецификация V.250 требует, чтобы все DCE принимали тело (после «AT»), состоящее как минимум из 40 символов объединенных команд. [9]AT&F&D2&C1S0=0X4

Пример сеанса

Ниже представлены два компьютера, компьютер A и компьютер B, оба с подключенными модемами, и пользователь, управляющий модемами с помощью программного обеспечения -эмулятора терминала . Программное обеспечение-эмулятор терминала обычно позволяет пользователю отправлять команды Hayes непосредственно на модем и видеть ответы. В этом примере пользователь компьютера A заставляет модем набрать телефонный номер модема B по номеру телефона (212) 555-0100 (междугородная связь). После каждой команды и ответа для завершения команды отправляется возврат каретки .

Совместимость

Хотя первоначальный набор команд Хейса представлял собой огромный шаг вперед в области связи на основе модемов, со временем возникло множество проблем, почти ни одна из которых не связана с Хейсом как таковым :

В результате всего этого, в конечном итоге, многим коммуникационным программам пришлось отказаться от возможности общаться со всеми «Hayes-совместимыми» модемами, и вместо этого программам пришлось пытаться определить тип модема по его ответам или предоставить пользователю с некоторой опцией, с помощью которой он мог вводить любые специальные команды, необходимые для того, чтобы заставить его конкретный модем работать правильно.

Автобод

Набор команд Hayes способствовал автоматическому определению скорости передачи данных , поскольку «A» и «T» имеют очень регулярные битовые комбинации; «A» — это «100 0001» и поэтому имеет 1 бит в начале и конце, а «T» — это «101 0100», который имеет шаблон с (почти) всеми остальными установленными битами. [10] Поскольку интерфейс RS-232 сначала передает младший значащий бит , соответствующий шаблон строки с 8-N-1 (восемь бит данных, без бита четности, один стоповый бит) равен 0 10000010 10 00101010 1 (стартовый и стоповый биты выделены курсивом) . ), который используется в качестве синхрослова .

Базовый набор команд Хейса

Следующие команды понимают практически все модемы, поддерживающие набор AT-команд, как старые, так и новые.

Примечание. Командная строка завершается символом CR (\r).

Хотя символ тильды ~ не является частью набора команд, он обычно используется в последовательностях команд модема. ~ заставляет многие приложения приостанавливать отправку потока команд на устройство (обычно на полсекунды), например, после Reset . ~ не отправляется на модем. [11]

Определения регистров модема S

В.250

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-регистры по своему усмотрению и могут добавлять опции к стандартным командам.

GSM

ETSI GSM 07.07 (3GPP TS 27.007) определяет команды стиля AT для управления телефоном или модемом GSM . ETSI GSM 07.05 (3GPP TS 27.005) определяет команды стиля AT для управления функцией службы коротких сообщений (SMS) GSM.

Примеры GSM-команд: [12] [13]

Модемы GSM/3G обычно поддерживают расширения набора команд ETSI GSM 07.07/3GPP TS 27.007 AT, хотя количество реализуемых команд варьируется.

Большинство производителей USB-модемов, таких как Huawei, Sierra Wireless, Option, также определили собственные расширения для выбора режима радиосвязи (предпочтение GSM/3G) или аналогичные. Некоторые современные высокоскоростные модемы предоставляют виртуальный интерфейс Ethernet вместо использования протокола «точка-точка » (PPP) для передачи данных из соображений производительности (соединение PPP используется только между компьютером и модемом, а не по сети). Для настройки требуются расширения AT-команд конкретного поставщика. Иногда спецификации этих расширений находятся в открытом доступе, а иногда поставщику требуется соглашение о неразглашении для доступа к ним. [14]

Набор голосовых команд

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

Смотрите также

Примечания и ссылки

  1. ↑ ab Виктория Шеннон (7 января 1999 г.). «Взлет и падение современного короля». Нью-Йорк Таймс . с партнером
  2. ^ Георгий Далаков. «Модем Денниса Хейса и Дейла Хизерингтона» . Проверено 8 января 2015 г.
  3. ^ "Совместимость с Хейсом" . Компьютерный мир . 30 марта 1987 г. с. 61.
  4. ^ «Как настроить модем, совместимый с Hayes» . 17 июня 2018 г.
  5. Макс, Шау (27 сентября 1998 г.). «1+2=3, +++ATH0=DoS старой школы». Список рассылки Bugtraq . Проверено 8 декабря 2012 г.
  6. ^ Фрэнк Дурда IV, «Справочник по набору AT-команд – история». Архивировано 15 апреля 2008 г. в Wayback Machine , 1993 г.
  7. ^ Справочное руководство по AT-командам [ неработающая ссылка ]
  8. ^ «Строки инициализации: почему, что и где» . Архивировано из оригинала 10 марта 2009 г. Проверено 9 апреля 2008 г.
  9. ^ «5.2.1 Общий формат командной строки» (PDF) , V.250: Последовательный асинхронный автоматический набор номера и управление (05/99, 07/03) , ITU-T / Бюро стандартизации электросвязи
  10. ^ «Последовательные интерфейсы». PICList . Проверено 15 мая 2016 г.
  11. ^ «Дополнительные команды модема». Сеть сообщества Чебукто . Проверено 12 сентября 2016 г.
  12. ^ ab «Руководство для разработчиков, июнь 2010 г. AT-команды для телефонов Sony Ericsson» . Архивировано из оригинала 29 сентября 2011 г.090505 Developer.sonyericsson.com
  13. ^ «Руководство пользователя по программному обеспечению UC864-E» (PDF) . Архивировано из оригинала (PDF) 14 июля 2011 г.090505 m2m-platforms.com
  14. ^ «Блог Дэна Уильямса - Именно тогда я тянусь за своим револьвером…» .

Внешние ссылки