Fact-checked by Grok 2 weeks ago

Hayes AT command set

The Hayes AT command set, also known as the Hayes command set, is a command language originally developed in 1981 by Dale Heatherington and Dennis C. Hayes for the Hayes Smartmodem, the first widely adopted programmable modem for personal computers operating at 300 bits per second. This set revolutionized modem control by allowing users to configure and operate devices remotely over a RS-232 interface using simple ASCII-based instructions, replacing manual switches and lights with software commands. At its core, the AT command set functions through a prefix "AT" (standing for "ATtention"), which signals the to interpret the following alphanumeric instructions, such as ATD for dialing a number or ATA for answering a call, all terminated by a . The operates in two primary states: command mode for issuing control instructions and online data mode for transmitting user data, with transitions between modes facilitated by an of three plus signs ("+++") preceded and followed by one-second pauses to avoid false triggers during data flow. is further managed via S-registers, numeric storage locations that hold settings like ring count thresholds or guard times, accessible through commands like ATS0=2 to auto-answer after two rings. Although initially proprietary to , the AT command set quickly became a industry standard due to its simplicity and effectiveness, adopted by virtually all manufacturers by the mid-1980s and influencing subsequent technologies including machines, cellular modules, and modern devices. Later extensions, such as those in ITU-T Recommendation V.250, formalized subsets for broader interoperability while preserving the original Hayes syntax. Its enduring legacy lies in enabling the dial-up era of computing, powering systems, early , and the foundational connectivity that paved the way for today's networked world.

History and Development

Origins in Early Modem Technology

In the late and early , technology evolved from acoustic couplers, which required users to manually dial a and place the handset into rubber cups on the device to transmit over lines, to direct-connect modems that plugged straight into telephone jacks for more reliable and convenient operation. Acoustic couplers, developed around 1966 by institutions like Stanford Research Institute, were limited by their dependence on sound transmission, which was susceptible to and required physical handling of the , but they enabled early computer-to-computer connections at speeds up to 300 bits per second. By the mid-, direct-connect models began to dominate as FCC regulations in 1976 allowed non-AT&T devices to connect directly to lines, reducing the need for couplers and improving signal quality for personal and small business use. Early modems like the CAT, an released in the late 1970s compatible with the Bell 103 standard at 300 , and the Anderson Jacobson AJ880, a direct-connect model from the same era, relied on control methods that hindered widespread adoption. These devices often required written specifically for each model or manual intervention via front-panel switches to configure settings such as rate, dialing, or mode switching, making them incompatible across brands and burdensome for users without technical expertise. Such limitations meant that integrating modems with emerging personal computers demanded bespoke programming efforts, often locking users into vendor-specific ecosystems and complicating remote control or automation. The introduction of personal computers like the in 1977 and the PC in 1981 amplified the demand for programmable interfaces around 1979-1980, as hobbyists and businesses sought to connect these machines to systems () and remote services for data sharing and communication. Apple's 1978 Communications Interface Card, designed for integration, exemplified this growing need, but the lack of ized controls persisted as a barrier until solutions emerged to address the fragmentation. Key to this era were AT&T's Bell 103 , developed in the early 1960s for full-duplex 300 bps transmission using , and the Bell 212A of 1976, which quadrupled speeds to 1200 bps while maintaining , establishing foundational protocols for data transmission over dial-up lines. These developments highlighted the market's readiness for a unified command to simplify operation amid the personal boom.

Creation by Hayes Microcomputer Products

In 1981, , founded in 1977 by Dennis Hayes and Dale Heatherington in Atlanta, Georgia, introduced the Smartmodem 300, a groundbreaking 300 baud that connected personal computers to telephone lines via an port. The device was developed to address the limitations of earlier , building briefly on standards like the Bell 103 for compatibility with existing telephone systems. Hayes, a former engineer, and Heatherington, an electronics expert, designed the Smartmodem as an external unit with a built-in , enabling automated operations that simplified connectivity for early personal computing users. The primary motivation behind the Smartmodem's design was to create a user-friendly that allowed software control of the , replacing cumbersome configurations such as switches that required manual adjustments for dialing and settings. To achieve this, Heatherington and Hayes invented the AT command set in June , a standardized for issuing instructions to the . The "AT" prefix stood for "," signaling the to interpret the following command, such as "D" for dialing a number (e.g., ATD followed by the number). This approach facilitated seamless integration with software on diverse microcomputers, making operation accessible without specialized knowledge. The launch of the Hayes Smartmodem 300 revolutionized modem accessibility for hobbyists and small businesses by enabling easy auto-dialing, auto-answering, and configuration through simple text commands sent over serial connections. Priced at around $300, it quickly gained traction, with Hayes selling 140,000 units in 1982 alone and generating $12 million in revenue, demonstrating rapid initial adoption. By the mid-1980s, cumulative sales exceeded one million units, underscoring the product's role in democratizing online access for personal and professional use.

Industry Adoption and Evolution

Following the introduction of the Hayes Smartmodem in , the AT command set quickly gained traction as a for control, largely due to the Federal Communications Commission's (FCC) Computer II decision in 1980, which deregulated by separating it from regulated network services, and the 1982 Modified Final Judgment in the antitrust case, which divested and allowed it to compete in the CPE market, thereby accelerating adoption of affordable, direct-connect modems. This regulatory environment enabled Hayes and other manufacturers to sell intelligent modems to users, with Hayes achieving sales of 140,000 units and $12 million in revenue by 1982. The absence of broad patents on the core AT command set facilitated rapid cloning by competitors, including and Telebit, resulting in a proliferation of "Hayes-compatible" modems by 1984 that adhered to the same syntax for dialing, , and . These clones undercut Hayes' pricing while expanding market access, as software developers could write universal terminal programs supporting the AT interface without proprietary restrictions, leading to Hayes capturing nearly 60% of the 300-baud and 1200-baud markets by mid-1984. By 1986, as the industry shifted to higher speeds, Hayes introduced extensions to the AT set for V.32 full-duplex operation at 9600 bits per second, maintaining compatibility while supporting error correction and protocols that became essential for reliable data transfer over analog lines. The AT command set played a pivotal role in fostering (BBS) culture and early during the 1980s and 1990s, enabling users to automate connections to remote servers via simple dialing commands like ATDT, which powered the exchange of files, messages, and software among hobbyists before widespread graphical web browsers emerged. This standardization supported the growth of over 100,000 es worldwide by the early 1990s, where AT-compatible modems facilitated asynchronous communication at speeds from 300 to 14,400 , bridging isolated personal computers into nascent online communities. Hayes Microcomputer Products experienced a sharp decline in the 1990s amid market saturation, intense competition from low-cost clones, and internal executive conflicts, culminating in Chapter 11 bankruptcy filing in 1994 and eventual acquisition, as the company struggled to innovate amid the transition to 56 kbit/s standards like V.90 and V.92 that demanded advanced digital signaling Hayes had not aggressively pursued.

Command Syntax and Fundamentals

Syntactical Structure and Parsing

The Hayes AT command set employs a structured syntax where each command line begins with the prefix "AT", denoting "attention" to synchronize baud rate and parity settings with the host device. This prefix is followed by one or more command identifiers, typically single uppercase letters or symbols (such as "D" for dialing operations), optionally accompanied by parameters that modify the command's behavior, such as numeric values or qualifiers. The entire command line concludes with a carriage return character (ASCII 13, configurable via the S3 register), which signals the modem to parse and execute the buffered input. Command buffering allows the modem to accept and process multiple commands within a single line, typically concatenated without separators (though spaces may be inserted for readability, if not recommended), with execution occurring sequentially from left to right. Specific modifiers like the semicolon (;) after dialing commands return the modem to command mode without entering data mode. Buffer capacity varies by model, typically limited to 40 characters in early Smartmodem implementations, though later V-series modems support up to 255 characters; exceeding this limit triggers an error response without processing further input. During input, line editing is facilitated by the backspace character (ASCII 8, defined by the S5 register) or delete (ASCII 127), enabling correction of the command line before termination. Upon execution, the generates response codes to indicate outcomes, available in either numeric or verbose formats controlled by the V (V0 for numeric, for verbose, with as default). Numeric responses include values such as 0 for (successful execution) and 1 for CONNECT (established link), while verbose equivalents render as textual strings like "" or "CONNECT". These responses are prefixed and suffixed by and line feed characters (CRLF) for readability, with additional details like connection speed appended in verbose mode (e.g., "CONNECT 300"). Error handling in parsing returns a specific response code—numeric 4 or verbose ""—for invalid syntax, unrecognized commands, or buffer overflows, halting further processing in the line while allowing subsequent command lines to proceed. To facilitate transitions during active connections, an of three plus signs ("+++") is used to revert from data to command , requiring a guard time pause (default 1 second, adjustable via S12 register) before and after the sequence to avoid misinterpretation as data. This sequence confirms the switch with an "" response, enabling re-entry of AT commands without disconnecting the line.

Command and Data Modes

The Hayes AT command set operates the in two primary modes: command mode and data mode, which determine how the interprets incoming characters from the (DTE). In command mode, the accepts and processes AT commands sent from the DTE, such as those for , dialing, or queries, but does not transmit over the . This mode is the default state upon or , where characters are buffered until a is received, allowing multiple commands to be combined in a single line prefixed by "AT" or "at". The responds with result codes, such as "" or "", to acknowledge command execution, ensuring controlled interaction without ongoing exchange. Data mode, also known as online mode, enables transparent transmission of data between the local DTE and a remote device after a successful connection is established. In this state, incoming characters from the DTE are forwarded directly to the remote end without interpretation as commands, facilitating bidirectional communication at the negotiated line speed. The enters data mode automatically following a dial-out command like ATD or an answer command like that results in carrier detection, or via explicit transition from command mode. Transitions between modes are essential for modem operation. From command mode to data mode, the modem switches upon successful connection or via a command such as ATO, which resumes online data transfer after an escape. Conversely, from data mode to command mode, the user initiates an escape sequence consisting of three plus signs (+++), followed by a valid AT command like ATZ for reset, or by dropping the Data Terminal Ready (DTR) signal or issuing a hangup command like ATH. The requires specific timing to avoid false triggers within the : a guard time of silence, typically 1 second (configurable via S12 , default 50 units of 20 ms each), must precede and follow the +++ characters. This time-independent (TIES) ensures reliable mode switching without interrupting legitimate data. These modes have distinct implications for flow control and error correction. In command mode, flow control is generally unnecessary due to the low volume of short command exchanges, which occur at the DTE's rate without line transmission; however, hardware signals like may still modulate command acceptance to prevent . In data mode, flow control becomes critical to manage rates between the DTE and , supporting options such as XON/XOFF software flow or hardware flow to buffer incoming and avoid loss during speed mismatches. Error correction protocols, like V.42 or MNP levels 4/5, are active only in data mode to detect and retransmit corrupted packets over the noisy analog line, ensuring reliable end-to-end transfer, whereas command mode relies on simple acknowledgments without such mechanisms.

Initialization Sequences

Upon power-on, Hayes-compatible s initialize to a predefined , typically the factory defaults or a user-selected profile stored in , which governs parameters such as baud rate, speaker volume, echo control, and result code verbosity. This non-volatile storage ensures that settings persist through power cycles, with the power-on profile often determined by the &Y command (e.g., &Y0 for profile 0 or &Y1 for profile 1). The primary reset mechanism during initialization is the ATZ command, which restores the modem to a stored user profile without requiring a hardware reset; ATZ0 recalls profile 0, while ATZ1 recalls profile 1, and a plain ATZ defaults to profile 0 in many implementations. Complementing this, the AT&F command loads the manufacturer's factory default settings, clearing custom configurations and S-register values to their original state (e.g., AT&F0 for standard defaults). For verification post-reset, the ATI command queries product details, returning lines of information such as model name, firmware revision, and capabilities, with the number of lines controlled by an optional parameter (e.g., ATI0 for minimal output). Autobaud detection enhances initialization by allowing the to automatically sense the host computer's rate from the timing and bit patterns of the initial command sequence, eliminating the need for manual rate configuration. This process relies on the regular ASCII bit sequences of 'A' (1000001) and 'T' (1010100), which provide distinct transitions suitable for at standard rates like 300, 1200, 9600, and 115200 . Enabled by default in most Hayes-compatible modems, autobaud can be disabled via commands like #BDR to fix a specific rate if needed. A common initialization string combines reset and configuration steps for reliable startup, such as ATZ&F to reset and restore factory defaults, often followed by profile viewing with AT&V to confirm settings like active S-registers and stored profiles. More comprehensive examples include AT&F&C1&D2 to set factory defaults with carrier detect control and handling. While effective for standard baud rates, autobaud detection may encounter compatibility issues with non-standard rates (e.g., 57600 or custom values), as the bit pattern analysis assumes common clock timings, potentially resulting in failed synchronization or fallback to a default rate and requiring manual intervention or hardware adjustments.

Basic Command Set

Dialing and Connection Commands

The dialing and connection commands in the Hayes AT command set enable modems to initiate, answer, and terminate telephone connections, forming the core of remote over analog phone lines. These commands, prefixed with "AT" to denote "attention," allow users to specify dialing methods and control call flow without manual intervention. The primary dialing command is ATD, which instructs the to enter originate mode and dial the specified number. It supports two dialing modes: (denoted by "P"), which generates rotary-style pulses and serves as the factory default, and tone dialing (denoted by "T"), which produces dual-tone multifrequency (DTMF) signals for faster and more reliable connections on modern systems. The dial string follows the mode specifier, such as ATDP123 for the number 123 or ATDT555-0123 for tone dialing. Key modifiers within the dial string include a comma (,) for inserting a pause—typically 2 seconds as set by the S8 register—and a (;) to return the to command mode after dialing without attempting a full connection, useful for sending tones to automated systems like voice mail. For example, ATDT9,555-1234; dials 9, pauses, dials the number, and then awaits further commands rather than handshaking. To answer incoming calls, the command off-hooks the modem and initiates a with the remote device, provided the auto-answer ring count () is set greater than zero, such as S0=1 for answering after . Conversely, the ATH command (or ATH0) terminates an active connection by on-hooking the and returning to command mode; ATH1 variants off-hook without handshaking for testing purposes. Pulse and tone dialing can be switched persistently using the ATP command to set pulse dialing as default or ATT to set tone dialing, overriding the per-dial specifier until reset. Connection modifiers like the semicolon in ATDT123; allow the modem to remain in command mode post-dialing, facilitating scenarios such as generating tones for systems without establishing data transfer. In the original Hayes command set, these dialing commands supported connections from 300 up to 14400 , reflecting the progression from early 300 bps modems to V-series high-speed models by the early . Successful connections via ATD or typically return result codes like "CONNECT 14400" to indicate the established .
CommandSyntaxPrimary FunctionKey Modifiers/Options
ATDATDInitiate outbound dialP (pulse), T (tone), , (pause), ; (return to command mode)
ATAATAAnswer incoming callRequires S0 > 0 for auto-answer
ATHATH or ATH0Hang up connectionATH1 for off-hook without
ATPATPSet pulse dialing as defaultUse ATT for dialing as default

Configuration and Control Commands

The configuration and control commands in the Hayes AT command set allow users to customize behavior for optimal data transmission, , and handling prior to establishing connections. These commands adjust parameters such as echoing, result code output, speaker operation, flow control mechanisms, correction s, and data compression options, ensuring compatibility with diverse communication environments. By issuing these commands in the 's command mode, typically via an initialization string like AT&F followed by specific settings, users can tailor the 's hardware and software configurations without interrupting ongoing sessions. Echo and result code controls manage user interface feedback during command entry and operation. The E command governs command state character echo, where E0 disables echoing to prevent redundant display on the terminal, and E1 enables it for visual confirmation of typed commands (factory default). Complementing this, the Q command regulates result code transmission, with Q0 enabling codes like "OK" or "CONNECT" to report modem status (factory default), and Q1 suppressing them for silent operation in automated scripts. These settings enhance usability by balancing verbosity and efficiency in terminal interactions. Speaker control commands provide audible cues for dialing and connection processes, aiding in acoustic environments. The M command selects speaker modes, including to keep the speaker always off for quiet operation, and to activate it during off-hook until carrier detection ( default), allowing users to dialing tones without persistent post-connection. This configuration is particularly useful in shared spaces or when integrating with software that relies on silent hardware. Flow control commands prevent data overflow between the modem and connected device by regulating transmission rates. The &K command sets local flow control options, such as &K0 to disable all flow control for direct connections, and &K3 to enable hardware flow control, which uses dedicated signals to pause and resume data flow dynamically (common factory default in error-corrected modes). This ensures reliable throughput, especially in high-speed asynchronous communications where buffer overruns could lead to . Error correction and guard tone commands configure protocols for robust over telephone lines. The \N command selects error correction modes, with \N0 disabling error correction for normal buffered mode, and \N3 enabling auto-reliable mode using MNP 4 or V.42 protocols with fallback to non-error-corrected operation if fails (factory default in many implementations). For international compatibility, the &G command adjusts guard tones, where &G0 disables tones (standard for ), &G1 enables a 550 Hz tone, and &G2 a 1800 Hz tone to minimize in certain networks. These settings mitigate transmission errors caused by line noise or frequency-specific distortions. Data compression commands optimize bandwidth usage alongside error correction. The %C command enables compression, such as %C0 to disable it entirely, and %C2 to activate V.42bis compression for up to 4:1 data reduction in compatible sessions (factory default). When paired with error correction like \N3, this allows efficient handling of compressible payloads, such as text files, while maintaining link reliability without requiring separate protocol negotiation.

Status and Information Commands

The status and information commands in the Hayes AT command set allow users to query the modem's operational state, details, and parameters without altering settings, providing essential diagnostics for and verification. These commands are executed in command mode and typically elicit textual or numeric responses followed by an "" confirmation, enabling software or users to retrieve on the modem's and line conditions. The ATI command retrieves product identification and information, helping identify the model and revision for checks. Subvariants like ATI0 display the basic product code (e.g., "Hayes Compatible 2400"), while ATI1 or ATI2 report ROM checksums for , and ATI4 lists supported features. The response format varies by implementation but always concludes with "" if successful. AT&V displays the current and stored configuration profiles, including active S-register values, dialing options, and stored telephone numbers, offering a snapshot of the modem's setup across multiple profiles (e.g., Profile 0 as active with settings like B0 E1 L1 M1). This command is particularly useful for reviewing user-defined presets without needing to read individual registers. The output is a formatted text block ending in "OK". To read a specific S-register value, the ATSn? command is used, where "n" specifies the register number (e.g., ATS0? for the count threshold). It returns the register's content as a three-digit decimal value (e.g., "000" for S0), padded if necessary, followed by "", allowing targeted queries into timing, error correction, and other parameters stored in the modem's . The extended &L command selects line type for dial-up (&L0, default) or leased line (&L1) operation. To view current settings including line type, use AT&V. These integrate with standard result codes like "CONNECT" or "NO CARRIER" for broader status feedback.

S-Registers

Purpose and Access Methods

S-registers in the Hayes AT command set serve as software-programmable storage locations within the , designed to hold configurable parameters that control operational behaviors such as timeouts, retries, and other persistent settings essential for modem functionality. These registers provide a for users to customize and maintain modem configurations across sessions, ensuring consistent performance without requiring repeated manual adjustments. Access to S-registers is achieved through specific AT commands: the syntax ATSn=m sets the value of register n (where n is the register number) to m (a decimal value), while ATSn? queries and displays the current value of register n. Upon modem power-up or execution of the ATZ command, which performs a soft reset, the S-registers are loaded from the selected power-on profile stored in non-volatile memory. Factory defaults, predefined by the manufacturer, are restored using the &F command followed by ATZ. The allowable range for values in most S-registers is 0 to 255 in notation, though certain registers employ bit-mapped structures to encode multiple options within a single value. To enable non-volatile persistence, the &W0 or &W1 command writes the current configuration of S-registers (along with other settings) to stored profile 0 or 1 in non-volatile , preventing loss during power cycles; the &Y0 or &Y1 command then selects which profile (0 or 1) is loaded upon subsequent power-on or reset. This profile-based system allows for multiple predefined setups, enhancing flexibility in deployment.

Key Register Definitions

The S-registers in the original Hayes AT command set store configurable parameters that govern fundamental modem operations, including auto-answer thresholds, character recognition for commands and escapes, and critical timing intervals for dialing and management. These registers, accessible via AT commands like ATSn=v (to set) and ATSn? (to read), allow users to tailor the modem's response to network conditions and user needs without altering the core command syntax. Below is a catalog of the most important S-registers from the Hayes Smartmodem era, focusing on their functions, default values, and ranges as defined in early implementations.
S-RegisterFunctionDefault ValueRangeUnits/Notes
S0Specifies the number of incoming rings required before the modem automatically answers a call.00–2550 disables auto-answer; values 1–255 set the ring count for auto-answer activation.
S2Defines the ASCII code for the escape character used to switch from data mode to command mode (typically part of the "+++" sequence).430–25543 corresponds to the "+" character; escape disabled if value >= 128; 0-127 sets the ASCII escape character.
S3Sets the ASCII code for the carriage return character, which terminates command lines entered in command mode.130–12713 is the standard carriage return (CR); values outside this range may cause command parsing issues.
S6Establishes the pause duration after going off-hook before proceeding with blind dialing (without dial tone detection) or wait time for dial tone if detection is enabled.22–255Seconds; this prevents premature dialing in pulse-based systems.
S7Determines the maximum time the modem waits to detect a valid carrier signal after initiating a dial or answer command.301–255Seconds; if no carrier is detected within this period, the modem times out and returns to command mode.
S10Sets the time between loss of carrier signal and automatic disconnection (hangup).141–2550.1 seconds; 255 = do not disconnect on carrier loss (default 1.4 s). Aids in handling brief carrier drops.
S12Sets the minimum guard time (silence period) required before and after the escape sequence to recognize it and switch to command mode.500–2551/50 second (default 1 s); 0 disables escape sequence recognition. Prevents accidental mode switches during data.
S37Configures the maximum desired line speed (DCE rate) for connections (later extensions, not in original 300 bps Smartmodem).00–11 (model-dependent)0 enables auto-detection; other values select specific rates (e.g., 5=1200 bps, up to 11=14400 bps in compatible models).

Extensions and Standards

V.250 and ITU-T Extensions

The V.250 recommendation, originally designated as V.25 ter and first approved in August 1995 with revisions in 1997 before being renumbered to V.250 in 1998, standardized the Hayes AT command set for serial asynchronous automatic dialing and control in (DTE) to (DCE) interfaces. This formalization aimed to promote among V.34 modems operating at speeds up to 33.6 kbit/s, extending the basic Hayes commands to support advanced features required for higher-speed data communications over telephone networks. By codifying the AT syntax and reserving the "+" prefix for future standardized extensions, V.250 ensured orderly evolution of the command set without conflicting with proprietary implementations. Key extensions in V.250 include identification commands such as +GMI to request the manufacturer's string, +GMM for the model , +GMR for the revision level, and +GSN for the product , which provide standardized ways to query capabilities beyond basic Hayes information responses. For enhanced error correction and data compression aligned with V.42 and V.42bis protocols, commands like +ES select error control modes, +DS configure data compression parameters (e.g., dictionary size and maximum code words), and +DR set reporting for compression status during connections. Flow control was improved with +IFC, allowing selection of software (XON/XOFF) or hardware () methods to manage data flow at higher rates, while +MS enables selection for V.34, specifying frequencies and rates to achieve optimal line speeds. Compared to the basic Hayes set, V.250 introduced more verbose and standardized result codes (e.g., via extensions to the V and X registers) for detailed connection feedback, including negotiated data rates and protocol modes, which facilitated automated scripting for 56 kbit/s modems under later amendments supporting V.90 and V.92 standards approved in 2001. These enhancements addressed limitations in legacy Hayes commands, such as rudimentary speed reporting, by mandating comprehensive online data state management. V.250's adoption became foundational for post-1990s dial-up modems from manufacturers like Hayes and , and it influenced configuration interfaces in early DSL modems for tasks like line diagnostics and protocol negotiation, promoting global compatibility in telecommunication equipment.

GSM and Mobile Network Commands

The Hayes AT command set was extended in the to support mobile networks through standards GSM 07.05, which defines AT commands for Short Message Service (SMS) and Cell Broadcast Service (CBS), and GSM 07.07, which specifies commands for controlling mobile equipment functions and network access. These standards, originating from ETSI's Special Mobile Group, were developed to enable terminal equipment to interact with networks via serial interfaces, building on the basic dialing syntax of the original Hayes commands. They have since evolved under into Technical Specifications TS 27.005 for SMS-related commands and TS 27.007 for broader mobile termination control, with the latest versions maintaining compatibility while adding support for later generations like and fallback. Key commands for SMS operations include AT+CMGS, which sends an SMS-SUBMIT message from the terminal equipment to the network. In text mode (set via AT+CMGF=1), the syntax is AT+CMGS=<da>[,<toda>] followed by the message body and terminated with Ctrl-Z (ASCII 26); <da> specifies the destination address as a string, and <toda> indicates the type of address (e.g., international). Upon success, it returns +CMGS: <mr>, where <mr> is the message reference number; errors yield +CMS ERROR: <err>. For data connectivity, ATD99#[[]]# initiates a GPRS Packet Data Protocol (PDP) context activation, establishing a data session after prior context definition with AT+CGDCONT; the optional <cid> selects the context ID, and success prompts a "CONNECT" response entering data mode. Network registration is managed via AT+CREG?, which queries the circuit-switched (CS) domain status, returning +CREG: <n>,<stat>[,<lac>,<ci>[,<AcT>]]; <stat> values include 0 (not registered, not searching), 1 (registered, home), 2 (searching), 3 (denied), 4 (unknown), or 5 (registered, ), with <lac> and <ci> providing location area and cell ID in . Operator selection uses AT+COPS=[[,[,]]]; <mode> 0 enables automatic selection, 1 manual (specifying <oper> as alphanumeric or numeric PLMN code), 2 deregisters, and 3 sets format only, with query response +COPS: <mode>,<format>,<oper>. For call control, AT+CLCC lists active calls, outputting +CLCC: <id>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type>]; <dir> is 0 (mobile-originated) or 1 (terminated), <stat> ranges from 0 (active) to 7 (held with others active), and <mode> covers voice (0), data (1), or fax (2). These commands remain relevant in 2025 for applications, particularly in modules like the SIM800 series from SIMCom, which implement the full GSM 07.05/07.07 profile for operations and support fallback where available, enabling low-power , data, and call functions in remote sensors and devices. The SIM800 supports AT+CMGS for messaging, AT+CREG and AT+COPS for , AT+CLCC for calls, and ATD*99# for GPRS, aligning with TS 27.005 and 27.007 while adding -specific extensions like / stacking.

Voice Modem Command Set

The voice modem command set extends the Hayes AT command framework to enable audio processing and telephony operations, allowing modems to handle voice calls beyond traditional data transmission. Developed in the 1990s, this command set supports features like speakerphones and answering machines by controlling audio routing, compression, tone generation, and buffering. It is based on the TIA IS-101 Voice Control Interim Standard for Asynchronous DCE, prepared by the TIA Technical Subcommittee TR29.2, which defines protocols for asynchronous data circuit-terminating equipment (DCE) to manage voice data streams. A core command is #VLS, used for local speaker and audio device control, which selects the source and destination for voice signals such as the , , , or . The syntax is AT#VLS=<n>, where <n> is a value from 0 to 15 (e.g., 0 for telephone line on-hook, 1 for off-hook); this enables configurations for hands-free operation in setups. The #VSM command configures voice sample modes, specifying algorithms and sampling rates to optimize audio quality and bandwidth. Its syntax is AT#VSM=<cmi>,<vsr>, with <cmi> indicating the compression method (e.g., 128 for 8 kHz PCM linear) and <vsr> the samples per second (e.g., 8000); this is essential for encoding voice data in recordings or real-time . DTMF tone generation is handled by the #VTS command, which transmits dual-tone multi-frequency signals for interactive applications. The syntax is AT#VTS=<string>, where <string> includes digits (0-9), symbols (*, #, A-D), or custom tones specified as [frequency1,frequency2,duration]; for instance, AT#VTS=123 sends the tones for digits 1, 2, and 3 sequentially. For voice recording and playback, the #VRX command initiates receive mode to capture audio from the line or microphone into the modem's buffer, using the syntax AT#VRX (no parameters), returning a CONNECT result code upon starting. Complementarily, #VTX starts transmit mode to send buffered audio to the line or speaker, with syntax AT#VTX; these commands facilitate full-duplex or half-duplex voice sessions in devices like automated answering systems. Buffer management is supported by the #VBQ command, which queries the sizes of transmit and receive buffers to prevent overflow during audio operations. The syntax is AT#VBQ? (no parameters), responding with values in bytes (e.g., transmit buffer size followed by receive); this aids in applications requiring audio , such as early VoIP gateways interfacing analog with networks prior to the .

References

  1. [1]
    30 Years Ago: How Hayes Modems, Bulletin Boards Presaged the ...
    The Hayes command set is a specific command language originally developed for the Hayes Smartmodem 300-bits-per-second (baud) modem in 1981, the year IBM ...Missing: original | Show results with:original<|control11|><|separator|>
  2. [2]
    Button, Advertising, Hayes Microcomputer Products
    The Hayes modem was the first one created for personal computers. Dale Heatherington and Dennis C. Hayes designed their modem board in 1977 and assembled it on ...
  3. [3]
    Getting connected: a history of modems - TechRadar
    Dec 26, 2009 · Then, in 1977, Dale Heatherington and Dennis Hayes ... developed several landmark technologies including the Smartmodem and the Hayes Command set.
  4. [4]
    [PDF] echnical Reference or Hayesnf Modem Users - Bitsavers.org
    Jul 31, 1991 · Chapter One: The Hayes Standard AT Command Set... includes ... The ItU command is used to enable and disable Trellis coding for V.32 ...
  5. [5]
    Hayes modem AT command set - Lammert Bies
    The Hayes AT command set is a control language created by Dennis Hayes in 1977, using the single RS232 channel to transfer both control and data. Every command ...
  6. [6]
    The AT Command Set | Digi International
    Jul 23, 2025 · The AT command set, also known as the Hayes command set, was originally developed for use with the Hayes modems in the 1980s.Missing: history | Show results with:history
  7. [7]
    A Brief History of Data Communications | Incognito Insights
    Jul 11, 2017 · 1981: The Hayes Smartmodem. An improved iteration, the Hayes Smartmodem, is released. This device offered 300 bits per second speed in an ...
  8. [8]
    AT commands 2025: Guide cellular for IoT devices - Onomondo
    Apr 28, 2025 · AT commands are a specific command language originally developed for the Hayes Smartmodem in the 1980s. ... However, the specific command set ...Missing: original | Show results with:original
  9. [9]
    Modems: 60 Years of Hooking Up | PCWorld
    Jan 31, 2011 · Modems for the early personal computers of the late 1970s and early 1980s were a mix of direct-connect (where the user plugged the phone line ...
  10. [10]
    Modems - Stanford InfoLab
    Accoustic Modems or Couplers were developed around 1966, ao. by John Van Geen at Stanford Research Institute, that mimicked handset operations.<|separator|>
  11. [11]
    From Baud to Awed: The History of the Modem | Auvik
    May 24, 2022 · The majority of modems during this time were acoustic couplers – the user required a regular phone to dial the remote computer, then the ...
  12. [12]
    Hayes Command Set History: The Tech That Dialed In a ... - Tedium
    Feb 22, 2023 · The company that they started, eventually called Hayes, made some of the first modems for microcomputers, which were included inside of the ...
  13. [13]
    13-Peripherals - Apple II History
    In April 1978 the Apple II Communications Interface Card came out, selling for $225. It was intended for use with a modem, and provided full-duplex serial ...
  14. [14]
    Connecting Over Phone Lines - CHM Revolution
    Early modem from AT&T. AT&T's Bell Laboratories began developing modems for its own internal use by the mid-1950s. AT&T later sold the Bell 103 model, and ...
  15. [15]
    History of Hayes Corporation – FundingUniverse
    In July, Hayes released the V-series Ultra Smartmodem 14400, playing catch-up with competitors like Digicom Systems Inc., who had 14.4Kbps products on the ...
  16. [16]
    The TRS-80 Telephone Interface
    Direct connect modems were capable of much faster speeds than acoustic coupler modems, and they soon became the standard type of computer modem. In late 1982 ...
  17. [17]
    Dominant Design Examples | History of Computer Communications
    By 1986, Hayes had become the fourth largest modem manufacturer with sales of $120 million, and a 43% market share in the fastest growing modem market.Missing: figures | Show results with:figures
  18. [18]
    Modems, wArEz, and ANSI art: Remembering BBS life at 2400bps
    Jan 22, 2014 · BBSs existed in a world that had yet to be soiled by smartphones and Facebook and Instagram; there was no Google, and indeed no World Wide Web at all.
  19. [19]
    Your Engineering Heritage: Bulletin Board Systems - IEEE-USA ...
    In the early 1980s, BBS's were often machines ... These high speeds which became affordable by the early 1990s, led to a massive expansion of BBS popularity.
  20. [20]
    [PDF] Hayes Stack Smartmodem Owner's Manual - SYSOVL.INFO
    Installation is a simple three-step process that involves plugging in the telephone cable and power pack and connecting your system's RS-232C interface cable to ...Missing: adapt | Show results with:adapt
  21. [21]
    [PDF] Teclmical Reference for " HayesmModemUsers - Bitsavers.org
    V-series products, and to the computer's housing through the particular bus for internal modems. Hayes Personal Modem products do not use this signal.Missing: decline | Show results with:decline
  22. [22]
    [PDF] Command and Data Modes (Modem)
    Command and Data modes refer to the two modes in which a computer modem may operate. These modes are defined in the Hayes command set, which is the de-facto.<|control11|><|separator|>
  23. [23]
    Hayes AT command set - Serial Port Component - ActiveXperts
    In the command state, the modem accepts AT commands to configure it. In the on-line command state, limit set of AT commands can be entered.
  24. [24]
    Modem AT Command Set
    A complete summary and explanation of the AT command set for Hayes compatible dial-up modems is given on this page.Missing: implications | Show results with:implications
  25. [25]
    Hayes Modem AT Strings and Commands - Computer Hope
    Jun 14, 2025 · First developed by Dennis Hayes, the AT commands can specify settings for Hayes compatible legacy modems.
  26. [26]
    'AT' (Hayes) Serial Modem Operation Manual (Draft) - The High Nibble
    Jul 9, 2021 · A modified Hayes 'AT' compatible command set for connecting over Wi-Fi via TCP/IP sockets with an optional Telnet protocol layer.Missing: ITU | Show results with:ITU
  27. [27]
    Why do people use AT commands in serial communication?
    Feb 6, 2012 · 5 Answers. One seldom-appreciated detail about "AT" commands is that many modems would start out in "auto-baud/auto-parity" mode.Why AT command set? - Electrical Engineering Stack ExchangeHow were standard serial port baud rates chosen?More results from electronics.stackexchange.comMissing: non- issues
  28. [28]
    How to Set Up a Hayes Compatible Modem - IBM
    Jun 17, 2018 · The number one cause of this problem is a 'baud' rate mismatch between the modem and the tty it is attached to. Three baud rates must match.Missing: autobaud issues
  29. [29]
    Hayes Modem: AT Command Listing - The Message Stick
    In asynchronous or error-control mode, the &S command can be used to configure the modem to keep the DSR signal high at all times or to have it operate ...Missing: implications | Show results with:implications<|separator|>
  30. [30]
    [PDF] AT Command Set Reference Guide
    In the command mode, the modem issues responses using the same data rate, parity, and format as the most recently received DTE command line. In the online mode, ...
  31. [31]
    Basic Hayes AT Command Set - ModemHelp.Net
    Feb 5, 2011 · This is the basic AT Command set. Many modems do NOT conform to this command set. However, most of these commands remain the same, or similar from modem to ...Missing: syntactical structure documentation
  32. [32]
    the hayes modem command set - SPS TECHNICAL SERVICE
    It prepares the modem for communications, setting such features as dialing mode, waits, detection of the busy signal and many other settings. Newer modem ...
  33. [33]
    V.25ter : Serial asynchronous automatic dialling and control - ITU
    Mar 9, 2023 · V.25ter (08/95), Serial asynchronous automatic dialling and control, Superseded ; V.25ter Supplement (04/95), Supplement to ITU-T Recommendation ...
  34. [34]
    V.250 : Serial asynchronous automatic dialling and control - ITU
    Mar 9, 2023 · V.250 Supplement 1 (09/98), Various extensions to V.250 basic command set, Superseded. V.250 (05/99), Serial asynchronous automatic dialling and ...Missing: standard Hayes
  35. [35]
    [PDF] V.250 - Supplement 1
    Recommendation V. 250 also codifies the syntax to be used by standards committees for extending this command set in various ways.
  36. [36]
    V.250 COMMANDS: Broadcom ModemXtreme V.92 PCI Modem ...
    V.250 Command Overview ; +ASTO, Store telephone number ; +DR, Set data compression reporting ; +DS, Configure V42bis data compression ; +DS44, Configure V44 data ...
  37. [37]
  38. [38]
    [PDF] GSM 07.05 - ETSI
    When no data connection is in progress, and the terminal equipment wishes to enter SMS/CBS mode, the command 'AT+CESP' shall be issued by the TE through the DTE ...
  39. [39]
    [PDF] GSM 07.07 - Version 5.0.0 - ETSI
    This GTS specifies the AT command for terminal equipments being used within the digital cellular telecommunications system (Phase 2/Phase 2+). This GTS is a TC- ...
  40. [40]
    [PDF] ETSI TS 127 007 V18.6.0 (2024-05)
    3GPP TS 27.007 version 18.6.0 Release 18​​ IPRs essential or potentially essential to normative deliverables may have been declared to ETSI.
  41. [41]
    [PDF] SIM800 Series_AT Command Manual_V1.01 - Adafruit
    Jul 23, 2013 · SIM800 Series AT Commands Manual. Version: 1.01. Date: 2013-07-23 ... "CONTYPE" Type of Internet connection. Value refer to.
  42. [42]
    [PDF] Voice +V Commands - MultiTech
    The TIA/EIA-602 CONNECT result code is disallowed in voice mode. Page 28 ... The unsolicited result codes for voice mode differs from standard modem Command mode ...<|control11|><|separator|>