
El conjunto de comandos Hayes (también conocido como conjunto de comandos AT ) es un lenguaje de comandos específico desarrollado originalmente por Dale Heatherington y Dennis Hayes [ 1 ] [ 2 ] para el Hayes Smartmodem en 1981.
El conjunto de comandos consta de una serie de cadenas de texto cortas que se pueden combinar para generar comandos para operaciones como marcar, colgar y cambiar los parámetros de la conexión. La gran mayoría de los módems de acceso telefónico utilizan el conjunto de comandos Hayes en numerosas variantes.
El conjunto de comandos cubría solo aquellas operaciones compatibles con el más antiguo.Módems de 300 bits/s . Cuando se requirieron nuevos comandos para controlar funciones adicionales en módems de mayor velocidad, surgieron diversos estándares específicos de cada uno de los principales proveedores. Estos estándares compartían la estructura y sintaxis básicas de los comandos, pero añadían nuevos comandos mediante algún tipo de prefijo ( por ejemplo, para Hayes y USRobotics , y para Microcom ). Muchos de estos se estandarizaron nuevamente en las extensiones de Hayes tras la introducción del SupraFAXModem 14400 y la posterior consolidación del mercado. &\
El término compatible con Hayes fue [ 3 ] [ 1 ] y a partir de 2018sigue siendo importante dentro de la industria. [ 4 ]
Historia
Fondo
Antes de la introducción del sistema de tablón de anuncios (BBS), los módems solían funcionar en líneas telefónicas de marcación directa que comenzaban y terminaban con un módem conocido en cada extremo. Los módems operaban en modo "originar" o "responder", conmutando manualmente entre dos conjuntos de frecuencias para la transferencia de datos. Para el módem originador, estas frecuencias eran 1270 Hz (tono de marcación, binario 1) y 1070 Hz (tono de espacio, binario 0). Para el módem respondedor, las frecuencias eran 2225 Hz (tono de marcación) y 2025 Hz (tono de espacio). Generalmente, el usuario que realizaba la llamada configuraba su módem en modo "originar" y luego marcaba el número manualmente. Cuando el módem remoto respondía, ya configurado en modo "responder", el teléfono se apagaba y la comunicación continuaba hasta que la persona que llamaba desconectaba manualmente.
Cuando se requería automatización, generalmente solo era necesaria para la respuesta de llamadas; por ejemplo, un banco podría necesitar recibir llamadas de varias sucursales para el cierre de operaciones. Para esta función, algunos módems incluían la capacidad de contestar automáticamente cuando el teléfono estaba en modo de respuesta y de finalizar la llamada cuando el otro usuario la desconectaba manualmente. La necesidad de realizar llamadas salientes automatizadas era mucho menos común y se gestionaba mediante un dispositivo periférico independiente: un marcador telefónico. Este se conectaba normalmente a un puerto de entrada/salida independiente del ordenador (generalmente un puerto RS-232 ) y se programaba por separado del módem.
Este método de operación funcionó satisfactoriamente en los años 60 y principios de los 70, cuando los módems se usaban generalmente para conectar dispositivos sencillos como terminales de computadora (para realizar llamadas) con computadoras centrales inteligentes (para recibirlas). Sin embargo, la revolución de las microcomputadoras en los años 70 propició la introducción de módems de bajo costo, y la idea de un enlace punto a punto semidedicado dejó de ser apropiada. Existían miles de usuarios que potencialmente podrían querer llamar a cualquiera de los otros miles de usuarios, y la única solución en ese momento era que el usuario marcara manualmente.
La industria informática necesitaba una forma de indicarle al módem, mediante software, qué número marcar. Los primeros marcadores independientes ofrecían esta capacidad, pero solo a costa de un puerto adicional , del que un microordenador podría no disponer. Otra solución habría sido utilizar un conjunto independiente de pines de comando dedicados al envío y la recepción de comandos; otra alternativa podría haber utilizado un pin de señal para indicar al módem que interpretara los datos entrantes como un comando. Ambas opciones contaban con soporte de hardware en el estándar RS-232 . Sin embargo, muchas implementaciones del puerto RS-232 en microordenadores eran extremadamente básicas, y algunas incluso eliminaron muchos de estos pines para reducir costes.
La solución de Hayes
Hayes Communications introdujo una solución en su Smartmodem de 1981 utilizando los pines de datos existentes sin ninguna modificación. En cambio, el propio módem podía conmutarse entre uno de dos modos:
- Modo de datos en el que el módem envía los datos al módem remoto. (Un módem en modo de datos trata todo lo que recibe del ordenador como datos y lo envía a través de la línea telefónica).
- Modo de comandos en el que los datos se interpretan como comandos para el módem local (comandos que el módem local debe ejecutar).
Para cambiar del modo de datos al modo de comandos, las sesiones enviaban una secuencia de escape de tres signos más ( +++) seguida de una pausa de aproximadamente un segundo. La pausa al final de la secuencia de escape era necesaria para reducir el problema causado por la señalización en banda : si se recibían otros datos en el plazo de un segundo tras los tres signos más, no se trataba de la secuencia de escape y se enviaban como datos. Para volver al modo anterior, enviaban el comando en líneaATO , . En la práctica, muchos comandos cambiaban automáticamente al modo en línea tras su finalización, y es raro que un usuario utilice el comando en línea explícitamente.
Para evitar la concesión de licencias de la patente de Hayes, algunos fabricantes implementaron la secuencia de escape sin el intervalo de protección de tiempo ( Secuencia de Escape Independiente del Tiempo (TIES)). Esto tuvo una importante implicación de seguridad por denegación de servicio, ya que provocaría que el módem colgara la conexión si el ordenador intentara transmitir la secuencia de bytes +++ATH0en modo de datos. Para cualquier ordenador conectado a Internet a través de dicho módem, esto podría explotarse fácilmente enviándole una solicitud de ping de la muerte+++ATH0 que contuviera la secuencia en la carga útil. El sistema operativo del ordenador intentaría automáticamente responder al remitente con la misma carga útil, desconectándose inmediatamente de Internet, ya que el módem interpretaría la carga útil de datos ICMP como un comando de Hayes. [ 5 ] El mismo error también se produciría si, por ejemplo, el usuario del ordenador intentara enviar un correo electrónico que contuviera la cadena mencionada.
Comandos
El conjunto de comandos de Hayes incluye comandos para diversas operaciones de línea telefónica, como marcar y colgar. También incluye varios controles para configurar el módem, entre ellos un conjunto de comandos de registro que permitían al usuario configurar directamente las distintas ubicaciones de memoria en el módem Hayes original. Casi todos los fabricantes de módems de 300 baudios de la época, que fueron bastantes, copiaron prácticamente al pie de la letra este conjunto de comandos, incluyendo el significado de los registros.
La expansión a 1200 y 2400 baudios requirió la adición de nuevos comandos, algunos de ellos prefijados con un ampersand ( &&) para indicar aquellos dedicados a nuevas funcionalidades. Hayes se vio obligada a introducir rápidamente un modelo de 2400 baudios poco después de su modelo de 1200, y los conjuntos de comandos eran idénticos como método para ahorrar tiempo. [ 6 ] Esencialmente por accidente, esto permitió a los usuarios de módems de 1200 baudios existentes usar los nuevos modelos Hayes de 2400 sin cambiar su software. Esto reforzó el uso de las versiones Hayes de estos comandos. Años más tarde, la Asociación de la Industria de las Telecomunicaciones (TIA)/ Alianza de Industrias Electrónicas (EIA) estandarizó formalmente el conjunto de comandos de 2400 baudios como Sistemas y Equipos de Transmisión de Datos – Marcación y Control Automáticos Asíncronos en Serie , TIA/EIA-602 .
Sin embargo, Hayes Communications tardó en lanzar módems que soportaran velocidades más altas o compresión , y otras tres compañías lideraron: Microcom , USRobotics y Telebit . Cada una de estas tres utilizó sus propios conjuntos de comandos adicionales. A principios de la década de 1990, había cuatro conjuntos de comandos principales en uso y varias versiones basadas en uno de ellos. Las cosas se simplificaron nuevamente durante la introducción generalizada de 14.4 yMódems de 28,8 kbit/s a principios de la década de 1990. Poco a poco, un conjunto de comandos basado en gran medida en el conjunto extendido original de Hayes&se popularizó y luego se universalizó . Solo otro conjunto de comandos ha mantenido su popularidad: el conjunto de USRobotics de su popular línea de módems.
Descripción
El siguiente texto enumera parte del conjunto de comandos de Hayes, también llamados comandos AT : "AT" significa "atención". Cada cadena de comandos tiene como prefijo "AT", y se pueden concatenar varios comandos individuales después de "AT".
El conjunto de comandos de Hayes se puede subdividir en cuatro grupos:
- Conjunto básico de comandos : una letra mayúscula seguida de un dígito. Por ejemplo, M1.
- Conjunto de comandos extendido : Un "&" (ampersand) y una letra mayúscula seguidos de un dígito. Esto amplía el conjunto de comandos básico. Por ejemplo, &M1. Tenga en cuenta que M1 es diferente de &M1.
- Conjunto de comandos propietarios : generalmente comienzan con una barra invertida ("\") o con un signo de porcentaje ("%"); estos comandos varían ampliamente entre los fabricantes de módems.
- Comandos de registro : Sr=n, donde r es el número del registro que se va a modificar y n es el nuevo valor asignado. Un registro representa una ubicación física específica en la memoria. Los módems tienen una pequeña cantidad de memoria integrada. El cuarto conjunto de comandos sirve para introducir valores en un registro específico (ubicación de memoria). Por ejemplo, S7=60 indica al módem que "establezca el registro n.° 7 con el valor 60". Los registros suelen controlar aspectos del funcionamiento del módem (por ejemplo, la potencia de transmisión, los parámetros de modulación) y generalmente son específicos de un modelo en particular.
Aunque la sintaxis del conjunto de comandos define la mayoría de ellos mediante una combinación de letra y número (L0, L1, etc.), el uso del cero es opcional. En este ejemplo, «L0» equivale a una «L» simple. Tenga esto en cuenta al leer la tabla a continuación.
En el modo de datos, una secuencia de escape puede devolver el módem al modo de comandos. La secuencia de escape normal consta de tres signos más ("+++"), y para distinguirla de posibles datos reales, se utiliza un temporizador de protección: debe ir precedido de una pausa, no debe haber pausas entre los signos más y debe ir seguido de una pausa; por defecto, una "pausa" es de un segundo y "sin pausa" es cualquier duración menor.
Definiciones sintácticas
Se aplican las siguientes definiciones sintácticas: [ 7 ]
<CR>El carácter de retorno de carro es el carácter terminador de la línea de comandos y del código de resultado, cuyo valor, en ASCII decimal entre 0 y 255, se especifica en el registro S3. El valor predeterminado es 13.<LF>El carácter de salto de línea es el carácter reconocido como tal. Su valor, en ASCII decimal entre 0 y 255, se especifica en el registro S4. El valor predeterminado es 10. El carácter de salto de línea se muestra después del carácter de retorno de carro si se utilizan códigos de resultado detallados (opción V1); de lo contrario, si se utilizan códigos de resultado en formato numérico (opción V0), no aparecerá en los códigos de resultado.<...>El nombre entre corchetes angulares es un elemento sintáctico. No aparece en la línea de comandos.[...]Los subparámetros opcionales de un comando o las partes opcionales de la respuesta de información AT se encierran entre corchetes. Los corchetes no aparecen en la línea de comandos. Si no se especifica el subparámetro en los comandos AT que incluyen un comando de lectura, el nuevo valor será igual al anterior. En los comandos AT que no almacenan los valores de sus subparámetros y, por lo tanto, no incluyen un comando de lectura (denominados comandos de tipo acción), la acción se realizará según la configuración predeterminada recomendada para el subparámetro.
Inicialización del módem
Una cadena puede contener muchos comandos Hayes colocados juntos, para preparar de forma óptima el módem para realizar o responder llamadas, por ejemplo . La mayoría del software del módem admitía una cadena de inicialización proporcionada por el usuario , que normalmente era un comando AT largo concatenado que se enviaba al módem al iniciarse. [ 8 ] La especificación V.250 requiere que todos los DCE acepten un cuerpo (después de "AT") de al menos 40 caracteres de comandos concatenados. [ 9 ]AT&F&D2&C1S0=0X4
Sesión de ejemplo
A continuación se muestra una imagen de dos computadoras, la computadora A y la computadora B, ambas con módems conectados, y un usuario que controla los módems mediante un emulador de terminal . Este software permite al usuario enviar comandos Hayes directamente al módem y ver las respuestas. En este ejemplo, el usuario de la computadora A hace que el módem marque el número de teléfono del módem B: (212) 555-0100 (larga distancia). Tras cada comando y respuesta, se envía un retorno de carro para completar la operación.
Compatibilidad
Si bien el conjunto de comandos original de Hayes representó un gran avance en las comunicaciones basadas en módem, con el tiempo surgieron muchos problemas, casi ninguno de ellos debido a Hayes en sí :
- Debido a la falta de un estándar escrito, otros fabricantes de módems simplemente copiaron los comandos externos visibles y (aproximadamente) las acciones básicas. Esto dio lugar a una gran variedad de sutiles diferencias en la forma en que los módems cambiaban de estado y cómo gestionaban los errores, las desconexiones y los tiempos de espera.
- Cada fabricante solía añadir nuevos comandos para satisfacer las necesidades emergentes, a menudo incompatibles con otros módems. Por ejemplo, configurar el protocolo de enlace de hardware o software solía requerir muchos comandos diferentes para cada módem. Esto menoscababa la práctica universalidad del conjunto básico de comandos de Hayes .
- Muchos módems compatibles con Hayes presentaban serios problemas que los hacían prácticamente incompatibles. Por ejemplo, muchos requerían una pausa de varios segundos tras recibir el comando de reinicio "AT Z". Algunos requerían espacios entre los comandos, mientras que otros no. Algunos cambiaban la velocidad de transmisión de forma automática, lo que impedía que el ordenador supiera cómo procesar los datos entrantes.
Como resultado de todo esto, muchos programas de comunicación terminaron renunciando a la posibilidad de comunicarse con todos los módems "compatibles con Hayes" y, en su lugar, tuvieron que intentar determinar el tipo de módem a partir de sus respuestas o proporcionar al usuario alguna opción para que pudiera introducir los comandos especiales necesarios para que su módem funcionara correctamente.
Autobaud
El conjunto de comandos de Hayes facilitó la detección automática de la velocidad de transmisión, ya que "A" y "T" tienen patrones de bits muy regulares; "A" es "100 0001" y, por lo tanto, tiene un bit 1 al principio y al final, y "T" es "101 0100", que tiene un patrón con (casi) cada segundo bit activado. [ 10 ] Dado que la interfaz RS-232 transmite primero el bit menos significativo , el patrón de línea correspondiente con 8-N-1 (ocho bits de datos, ningún bit de paridad, un bit de parada) es 0 10000010 10 00101010 1 (bits de inicio y parada en cursiva ) que se utiliza como palabra de sincronización .
El conjunto básico de comandos de Hayes
Los siguientes comandos son compatibles con prácticamente todos los módems que admiten el conjunto de comandos AT, ya sean antiguos o nuevos.
Nota: una cadena de comandos termina con un carácter CR (\r).
Aunque no forma parte del conjunto de comandos, el carácter de tilde ~ se usa comúnmente en las secuencias de comandos del módem. El ~ hace que muchas aplicaciones pausen el envío del flujo de comandos al dispositivo (normalmente durante medio segundo), por ejemplo, después de un Reset . El ~ no se envía al módem. [ 11 ]
Definiciones de registro del módem S
V.250
La UIT-T estableció un estándar en sus Recomendaciones de la Serie V , V.25 ter , en 1995, en un intento por establecer nuevamente un estándar para el conjunto de comandos. Fue renombrado V.250 en 1998 con un anexo que no se refería al conjunto de comandos Hayes, renombrado como V.251 . Un módem compatible con V.250 implementa los comandos A, D, E, H, I, L, M, N, O, P, Q, T, V, X, Z, &C, &D y &F de la manera especificada por el estándar. También debe implementar los registros S y debe usar los registros S0, S3, S4, S5, S6, S7, S8 y S10 para los fines indicados en el estándar. Además, debe implementar cualquier comando que comience con el signo más, "+", seguido de cualquier letra de la A a la Z, únicamente de acuerdo con las recomendaciones de la UIT. Los fabricantes de módems tienen libertad para implementar otros comandos y registros S según lo consideren oportuno, y pueden añadir opciones a los comandos estándar.
GSM
La norma ETSI GSM 07.07 (3GPP TS 27.007) especifica comandos de estilo AT para controlar un teléfono o módem GSM . La norma ETSI GSM 07.05 (3GPP TS 27.005) especifica comandos de estilo AT para gestionar la función de Servicio de Mensajes Cortos (SMS) de GSM.
Ejemplos de comandos GSM: [ 12 ] [ 13 ]
Los módems GSM/3G suelen ser compatibles con las extensiones del conjunto de comandos AT ETSI GSM 07.07/3GPP TS 27.007, aunque la cantidad de comandos implementados varía.
La mayoría de los fabricantes de módems USB, como Huawei, Sierra Wireless y Option, también han definido extensiones propietarias para la selección del modo de radio (preferencia GSM/3G) o similar. Algunos módems de alta velocidad recientes proporcionan una interfaz Ethernet virtual en lugar de utilizar un protocolo punto a punto (PPP) para la conexión de datos por motivos de rendimiento (la conexión PPP solo se utiliza entre el ordenador y el módem, no a través de la red). La configuración requiere extensiones de comandos AT específicas del fabricante. En ocasiones, las especificaciones de estas extensiones están disponibles públicamente; en otras, el fabricante exige un acuerdo de confidencialidad (NDA) para acceder a ellas. [ 14 ]
Conjunto de comandos de voz
Los módems con funciones de voz o contestador automático admiten un conjunto más amplio de estos comandos para permitir la reproducción y grabación de audio digital.
Véase también
Notas y referencias
- 1 2 Victoria Shannon (7 de enero de 1999). "El auge y la caída del rey moderno" . The New York Times . Archivado del original el 17 de diciembre de 2019. Recuperado el 25 de diciembre de 2019. con
un socio
- ↑ Georgi Dalakov (4 de enero de 2021). "El módem de Dennis Hayes y Dale Heatherington" . Archivado del original el 16 de septiembre de 2020. Recuperado el 8 de enero de 2015 .
- ↑ "Compatible con Hayes". Computerworld . 30 de marzo de 1987. pág. 61.
- ↑ "Cómo configurar un módem compatible con Hayes" . IBM . 17 de junio de 2018. Archivado del original el 31 de agosto de 2024. Consultado el 25 de diciembre de 2019 .
- ↑ Max, Schau (27 de septiembre de 1998). "1+2=3, +++ATH0=DoS de la vieja escuela" . Lista de correo Bugtraq . Archivado del original el 16 de noviembre de 2018. Recuperado el 8 de diciembre de 2012 .
- ↑ Frank Durda IV, "Referencia del conjunto de comandos AT: historia" Archivado el 15 de abril de 2008 en Wayback Machine , 1993
- ↑ Guía de referencia de comandos AT
- ↑ "Cadenas de inicialización: por qué, qué y dónde" . Archivado del original el 10 de marzo de 2009. Consultado el 9 de abril de 2008 .
- ↑ "5.2.1 Formato general de la línea de comandos" (PDF) , V.250 : Marcación y control automáticos asíncronos en serie (05/99, 07/03) , UIT-T / Oficina de Normalización de las Telecomunicaciones, archivado del original el 16 de agosto de 2012 , recuperado el 23 de noviembre de 2009.
- ↑ "Interfaces seriales" . PICList . Archivado del original el 10 de junio de 2016. Consultado el 15 de mayo de 2016 .
- ↑ "Más comandos de módem" . Red de la comunidad de Chebucto. Archivado del original el 6 de septiembre de 2016. Consultado el 12 de septiembre de 2016 .
- 1 2 "Directrices para desarrolladores, junio de 2010: Comandos AT para teléfonos Sony Ericsson" . Archivado del original el 29 de septiembre de 2011.090505 developer.sonyericsson.com
- ↑ "Guía del usuario del software UC864-E" (PDF) . Archivado del original (PDF) el 14 de julio de 2011.090505 m2m-platforms.com
- ↑ "Blog de Dan Williams: Es entonces cuando saco mi revólver..." . 20 de marzo de 2009. Archivado del original el 30 de agosto de 2010. Consultado el 6 de noviembre de 2010 .
Enlaces externos
- Lista de comandos AT: Básico (Hayes), Extendido, Propietario
- Manual de referencia de comandos AT de Hayes
- Lista de comandos AT de Hayes. Archivada el 10 de julio de 2008 en la Wayback Machine.
- 3gpp.org , conjunto de comandos AT de 3GPP para equipos de usuario
- Cadena de inicialización del módem. Archivado el 10 de marzo de 2009 en Wayback Machine.
- Parámetros extendidos del comando AT de Hayes para SMS (muerto)
- Cómo determinar la clase de su fax/módem
- Openmoko: Comandos AT
- Comandos del módem celular. Archivado el 28/10/2007 en Wayback Machine.
- Norma UIT V.250
- Guía de referencia de comandos AT de Telit (ya no funciona)
- Introducciones relacionadas con las telecomunicaciones en 1981
- Estándares de redes
- módems
- Productos de microcomputadoras Hayes