stringtranslate.com

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

см. заголовок
Смарт-модем Hayes 300 бод

Набор команд 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 года , используя существующие пины данных без каких-либо изменений. Вместо этого сам модем мог переключаться между одним из двух режимов:

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

Для переключения из режима данных в командный режим сеансы отправляли строку 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 можно разделить на четыре группы:

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

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

В режиме данных escape-последовательность может вернуть модем в командный режим. Обычная 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 как таковым :

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

Автобод

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

Базовый набор команд Hayes

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

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

Хотя символ тильды ~ не является частью набора команд, он обычно используется в последовательностях команд модема. ~ заставляет многие приложения приостанавливать отправку потока команд устройству (обычно на полсекунды), например, после сброса . ~ не отправляется модему. [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 обычно поддерживают расширения набора AT-команд ETSI GSM 07.07/3GPP TS 27.007, хотя количество реализованных команд различается.

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

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

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

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

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

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

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