Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Набор команд Hayes (также известный как набор команд AT ) является специфическим командным языком , первоначально разработанным Dennis Hayes [1] [2] для Hayes Smartmodem 300 бода модема в 1981 году.

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

Набор команд охватывал только те операции, которые поддерживались самыми ранними модемами со скоростью 300 бит / с. Когда потребовались новые команды для управления дополнительными функциями в высокоскоростных модемах, от каждого из основных поставщиков появилось множество одноразовых стандартов. Они по-прежнему использовали базовую структуру и синтаксис команд, но добавили любое количество новых команд с использованием какого-либо префиксного символа - например, &для Hayes и USR , а также \для 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-последовательность и они будут отправлены как данные. Для обратного переключения отправили онлайн- команду «АТО». При фактическом использовании многие команды автоматически переключаются в онлайн-режим после завершения, и пользователь редко использует онлайн-команду явно.

Чтобы избежать лицензирования патента Хейса, некоторые производители реализовали 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 без изменения своего программного обеспечения. Это еще раз подтолкнуло к использованию версий этих команд 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-последовательность - это три знака плюс ("+++"), и для того, чтобы отличить ее от возможных реальных данных, используется защитный таймер: ему должна предшествовать пауза, не должно быть пауз между знаками плюс и быть с последующей паузой; по умолчанию «пауза» равна одной секунде, а «без паузы» - меньше.

Синтаксические определения [ править ]

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

  • <CR> Символ возврата каретки - это символ завершения командной строки и результирующего кода, значение которого в десятичном формате ASCII от 0 до 255 указывается в регистре S3. Значение по умолчанию - 13.
  • <LF> Символ перевода строки - это символ, распознаваемый как символ перевода строки. Его значение в десятичном формате ASCII от 0 до 255 указывается в регистре S4. Значение по умолчанию - 10. Символ перевода строки выводится после символа возврата каретки, если используются подробные коды результатов (используется опция V1); в противном случае, если используются коды результатов числового формата (используется опция V0), они не будут отображаться в кодах результатов.
  • <...> Имя в угловых скобках является синтаксическим элементом. Они не отображаются в командной строке.
  • [...] Необязательный подпараметр команды или необязательная часть информационного ответа AT заключена в квадратные скобки. Сами скобки в командной строке не отображаются. Когда подпараметр не указан в AT-командах, которые имеют команду чтения, новое значение равно его предыдущему значению. В AT-командах, которые не хранят значения ни одного из своих подпараметров и поэтому не имеют команды чтения, которые называются командами типа действия, действие должно выполняться на основе рекомендуемой настройки по умолчанию для подпараметра.

Инициализация модема [ править ]

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

Пример сеанса [ править ]

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

Совместимость [ править ]

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

  • Из-за отсутствия письменного стандарта другие производители модемов просто скопировали внешние видимые команды и (примерно) основные действия. Это привело к множеству тонких различий в том, как модемы менялись от состояния к состоянию, и как они обрабатывали ошибки, зависания и тайм-ауты.
  • Каждый производитель стремился добавлять новые команды для удовлетворения возникающих потребностей, часто несовместимые с другими модемами. Например, для установки аппаратного или программного подтверждения связи часто требовалось много разных команд для разных модемов. Это подорвало удобную универсальность базового набора команд Hayes .
  • Многие модемы, совместимые с Hayes, имели серьезные особенности, делавшие их фактически несовместимыми. Например, для многих модемов требуется пауза в несколько секунд после получения команды сброса «AT Z». Некоторые модемы требовали пробелов между командами, а другие - нет. Некоторые по собственному желанию изменяли скорость передачи данных, в результате чего компьютер не понимал, как обрабатывать входящие данные.

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

Autobaud [ править ]

Набор команд 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 модема [ править ]

V.250[edit]

The ITU-T established a standard in its V-Series Recommendations, V.25 ter, in 1995 in an attempt to establish a standard for the command set again. It was renamed V.250 in 1998 with an annex that was not concerning the Hayes command set renamed as V.251. A V.250 compliant modem implements the A, D, E, H, I, L, M, N, O, P, Q, T, V, X, Z, &C, &D, and &F commands in the way specified by the standard. It must also implement S registers and must use registers S0, S3, S4, S5, S6, S7, S8, and S10 for the purposes given in the standard. It also must implement any command beginning with the plus sign, "+" followed by any letter A to Z, only in accordance with ITU recommendations. Modem manufacturers are free to implement other commands and S-registers as they see fit, and may add options to standard commands.

GSM[edit]

The ETSI GSM 07.07 (3GPP TS 27.007) specifies AT style commands for controlling a GSM phone or modem. The ETSI GSM 07.05 (3GPP TS 27.005) specifies AT style commands for managing the Short Message Service (SMS) feature of GSM.

Examples of GSM commands:[12][13]

GSM/3G modems typically support the ETSI GSM 07.07/3GPP TS 27.007 AT command set extensions, although how many commands are implemented varies.

Most USB modem vendors, such as Huawei, Sierra Wireless, Option, have also defined proprietary extensions for radio mode selection (GSM/3G preference) or similar. Some recent high speed modems provide a virtual Ethernet interface instead of using a Point-to-Point Protocol (PPP) for the data connection because of performance reasons (PPP connection is only used between the computer and the modem, not over network). The set-up requires vendor-specific AT command extensions. Sometimes the specifications for these extensions are openly available, other times the vendor requires an NDA for access to these.[14]

Voice command set[edit]

Modems with voice or answering-machine capabilities support a superset of these commands to enable digital audio playback and recording.

See also[edit]

  • Access Point Name (APN)
  • Command and Data modes (modem)
  • ITU-T Recommendations:
    • H.324 (video)
    • T.31 (fax)

Notes and references[edit]

  1. ^ a b Victoria Shannon (January 7, 1999). "The Rise and Fall of the Modem King". The New York Times. with a partner
  2. ^ Georgi Dalakov. "The Modem of Dennis Hayes and Dale Heatherington". Retrieved January 8, 2015.
  3. ^ "Hayes compatible". Computerworld. March 30, 1987. p. 61.
  4. ^ "How to Set Up a Hayes Compatible Modem". June 17, 2018.
  5. ^ Max, Schau (27 September 1998). "1+2=3, +++ATH0=Old school DoS". Bugtraq mailing list. Retrieved 8 December 2012.
  6. ^ Frank Durda IV, "The AT Command Set Reference - History" Archived 2008-04-15 at the Wayback Machine, 1993
  7. ^ AT Commands Reference Guide[dead link]
  8. ^ Initialization Strings: Why, What & Where
  9. ^ "5.2.1 Command line general format", V.250 : Serial asynchronous automatic dialling and control (05/99, 07/03) (PDF), ITU-T/Telecommunication Standardization Bureau
  10. ^ "Serial Interfaces". PICList. Retrieved 2016-05-15.
  11. ^ "More Modem Commands". Chebucto Community Net. Retrieved 2016-09-12.
  12. ^ a b "Developers guidelines June 2010 AT commands for Sony Ericsson phones". Archived from the original on 2011-09-29. 090505 developer.sonyericsson.com
  13. ^ "UC864-E Software User Guide" (PDF). Archived from the original (PDF) on 2011-07-14. 090505 m2m-platforms.com
  14. ^ "Dan Williams' blog - That's when I reach for my revolver…".

External links[edit]

  • List of AT commands: Basic (Hayes), Extended, Proprietary
  • Hayes AT Command Reference Manual
  • A list of Hayes AT commands
  • 3gpp.org, 3GPP AT command set for User Equipment
  • Modem initialisation string
  • Extended Hayes AT command parameters for SMS (dead)
  • Determining your Class of Fax / Modem
  • Openmoko: AT Commands
  • Cell modem commands
  • ITU Standard V.250
  • AT Commands Reference Guide from Telit (dead)