Hubbry Logo
Hayes AT command setHayes AT command setMain
Open search
Hayes AT command set
Community hub
Hayes AT command set
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Hayes AT command set
Hayes AT command set
from Wikipedia

refer to caption
Hayes 300 Baud Smartmodem

The Hayes command set (also known as the AT command set) is a specific command language originally developed by Dale Heatherington and Dennis Hayes[1][2] for the Hayes Smartmodem in 1981.

The command set consists of a series of short text strings which can be combined to produce commands for operations such as dialing, hanging up, and changing the parameters of the connection. The vast majority of dial-up modems use the Hayes command set in numerous variations.

The command set covered only those operations supported by the earliest 300 bit/s modems. When new commands were required to control additional functionality in higher speed modems, a variety of one-off standards emerged from each of the major vendors. These continued to share the basic command structure and syntax, but added any number of new commands using some sort of prefix character – & for Hayes and USRobotics, and \ for Microcom, for instance. Many of these were re-standardized on the Hayes extensions after the introduction of the SupraFAXModem 14400 and the market consolidation that followed.

The term "Hayes compatible" was[3][1] and as of 2018 still is important within the industry.[4]

History

[edit]

Background

[edit]

Before the introduction of the bulletin board system (BBS), modems typically operated on direct-dial telephone lines that began and ended with a known modem at each end. The modems operated in either "originate" or "answer" modes, manually switching between two sets of frequencies for data transfer. Generally, the user placing the call would switch their modem to "originate" and then dial the number by hand. When the remote modem answered, already set to "answer" mode, the telephone handset was switched off and communications continued until the caller manually disconnected.

When automation was required, it was commonly only needed on the answer side; for instance, a bank might need to take calls from a number of branch offices for end-of-day processing. To fill this role, some modems included the ability to pick up the phone automatically when it was in answer mode, and to clear the line when the other user manually disconnected. The need for automated outbound dialling was considerably less common, and was handled through a separate peripheral device: a "dialler". This was normally plugged into a separate input/output port on the computer (typically an RS-232 port) and programmed separately from the modem itself.

This method of operation worked satisfactorily in the 1960s and early 1970s, when modems were generally used to connect dumb devices like computer terminals (dialling out) with smart mainframe computers (answering). However, the microcomputer revolution of the 1970s led to the introduction of low-cost modems and the idea of a semi-dedicated point-to-point link was no longer appropriate. There were potentially thousands of users who might want to dial any of the other thousands of users, and the only solution at the time was to make the user dial manually.

The computer industry needed a way to tell the modem what number to dial through software. The earlier separate dialers had this capability, but only at the cost of a separate port, which a microcomputer might not have available. Another solution would have been to use a separate set of "command pins" dedicated to sending and receiving commands; another could have used a signal pin indicating that the modem should interpret incoming data as a command. Both of these had hardware support in the RS-232 standard. However, many implementations of the RS-232 port on microcomputers were extremely basic, and some eliminated many of these pins to reduce cost.

Hayes' solution

[edit]

Hayes Communications introduced a solution in its 1981 Smartmodem by using the existing data pins with no modification. Instead, the modem itself could be switched between one of two modes:

  1. Data mode in which the modem sends the data to the remote modem. (A modem in data mode treats everything it receives from the computer as data and sends it across the phone line).
  2. Command mode in which data is interpreted as commands to the local modem (commands the local modem should execute).

To switch from data mode to command mode, sessions sent an escape sequence string of three plus signs (+++) followed by a pause of about a second. The pause at the end of the escape sequence was required to reduce the problem caused by in-band signaling: if any other data was received within one second of the three plus signs, it was not the escape sequence and would be sent as data. To switch back they sent the online command, ATO. In actual use many of the commands automatically switched to the online mode after completion, and it is rare for a user to use the online command explicitly.

In order to avoid licensing Hayes's patent, some manufacturers implemented the escape sequence without the time guard interval (Time Independent Escape Sequence (TIES)). This had a major denial of service security implication in that it would lead to the modem hanging up the connection should the computer ever try to transmit the byte sequence +++ATH0 in data mode. For any computer connected to the Internet through such a modem, this could be easily exploited by sending it a ping of death request containing the sequence +++ATH0 in the payload. The computer operating system would automatically try to reply the sender with the same payload, immediately disconnecting itself from the Internet, as the modem would interpret the ICMP data payload as a Hayes command.[5] The same error would also trigger if, for example, the user of the computer ever tried to send an e-mail containing the aforementioned string.

Commands

[edit]

The Hayes command set includes commands for various phone-line operations such as dialing and hanging-up. It also includes various controls to set up the modem, including a set of register commands which allowed the user to directly set the various memory locations in the original Hayes modem. The command set was copied largely verbatim, including the meaning of the registers, by almost all early 300 baud modem manufacturers, of which there were quite a few.

The expansion to 1200 and 2400 baud required the addition of new commands, some of them prefixed with an ampersand (&) to denote those dedicated to new functionality. Hayes itself was forced to quickly introduce a 2400 baud model shortly after their 1200, and the command sets were identical as a time-saving method.[6] Essentially by accident, this allowed users of existing 1200 baud modems to use the new Hayes 2400 models without changing their software. This re-inforced the use of the Hayes versions of these commands. Years later, the Telecommunications Industry Association (TIA)/Electronic Industries Alliance (EIA) formally standardized the 2400-baud command set as Data Transmission Systems and Equipment – Serial Asynchronous Automatic Dialing and Control, TIA/EIA-602.

However, Hayes Communications was slow to release modems supporting higher speeds or compression, and three other companies led: Microcom, U.S. Robotics, and Telebit. Each of these three used its own additional command-sets. By the early-1990s, there were four major command sets in use, and a number of versions based on one of these. Things became simpler again during the widespread introduction of 14.4 and 28.8 kbit/s modems in the early 1990s. Slowly, a set of commands based heavily on the original Hayes extended set using & commands became popular, and then universal. Only one other command set has remained popular, the U.S. Robotics set from their popular line of modems.

Description

[edit]

The following text lists part of the Hayes command set, also called the AT commands: "AT" meaning 'attention'. Each command string is prefixed with "AT", and a number of discrete commands can be concatenated after the "AT".

The Hayes command set can subdivide into four groups:

  1. basic command set – A capital character followed by a digit. For example, M1.
  2. extended command set – An "&" (ampersand) and a capital character followed by a digit. This extends the basic command set. For example, &M1. Note that M1 is different from &M1.
  3. proprietary command set – Usually starting either with a backslash (“\”) or with a percent sign (“%”); these commands vary widely among modem manufacturers.
  4. register commands – Sr=n where r is the number of the register to be changed, and n is the new value that is assigned. A register represents a specific physical location in memory. Modems have small amounts of memory on board. The fourth set of commands serves for entering values into a particular register (memory location). For example, S7=60 instructs the modem to "Set register #7 to the value 60". Registers usually control aspects of the modem operation (e.g. transmission strength, modulation parameters) and are usually specific to a particular model.

Although the command-set syntax defines most commands by a letter-number combination (L0, L1 etc.), the use of a zero is optional. In this example, "L0" equates to a plain "L". Keep this in mind when reading the table below.

When in data mode, an escape sequence can return the modem to command mode. The normal escape sequence is three plus signs ("+++"), and to disambiguate it from possible real data, a guard timer is used: it must be preceded by a pause, not have any pauses between the plus signs, and be followed by a pause; by default, a "pause" is one second and "no pause" is anything less.

Syntactical definitions

[edit]

The following syntactical definitions apply:[7]

  • <CR> Carriage return character, is the command line and result code terminator character, which value, in decimal ASCII between 0 and 255, is specified in register S3. The default value is 13.
  • <LF> Linefeed character, is the character recognised as line feed character. Its value, in decimal ASCII between 0 and 255, is specified in register S4. The default value is 10. The line feed character is output after the carriage return character if verbose result codes are used (V1 option is used); otherwise, if numeric format result codes are used (V0 option is used), it will not appear in the result codes.
  • <...> Name enclosed in angle brackets is a syntactical element. They do not appear in the command line.
  • [...] Optional subparameter of a command or an optional part of AT information response is enclosed in square brackets. Brackets themselves do not appear in the command line. When the subparameter is not given in AT commands which have a Read command, the new value equals its previous value. In AT commands which do not store the values of any of their subparameters, and so have not a Read command, which are called action type commands, the action should be done on the basis of the recommended default setting of the subparameter.

Modem initialization

[edit]

A string can contain many Hayes commands placed together, so as to optimally prepare the modem to dial out or answer, e.g. AT&F&D2&C1S0=0X4. Most modem software supported a user supplied initialization string, which was typically a long concatenated AT command which was sent to the modem upon launch.[8] The V.250 specification requires all DCEs to accept a body (after "AT") of at least 40 characters of concatenated commands.[9]

Example session

[edit]

The following represents two computers, computer A and computer B, both with modems attached, and the user controlling the modems with terminal emulator software. Terminal-emulator software typically allows the user to send Hayes commands directly to the modem, and to see the responses. In this example, the user of computer A makes the modem dial the phone number of modem B at phone number (212) 555-0100 (long distance). After every command and response, there is a carriage return sent to complete the command.

Modem A Modem B Comment
ATDT12125550100 User at modem A issues a dial command: AT-Get the modem's ATtention; D-Dial; T-Touch-Tone; 12125550100-Call this number
RING Modem A begins dialing. Modem B's phone-line rings, and the modem reports the fact.
ATA Computer at modem B issues answer command.
CONNECT CONNECT The modems connect, and both modems report "connect". (In practice, most modems report more information after the word CONNECT — specifying the speed of the connection.) Also, at this time, both modems will raise the DCD, or Data Carrier Detect signal, on the serial port.
abcdef abcdef When the modems are connected, any characters typed at either side will appear on the other side. The person at computer A starts typing. The characters pass through the modem and appear on computer B's screen. (User A may not see his own typed characters — depending on the terminal software's local echo setting).
+++ The person at computer B issues the modem escape command. (Alternately, and more commonly, the computer B could drop the DTR, or Data Terminal Ready signal, to achieve a hangup, without needing to use +++ or ATH.)
OK The modem acknowledges it.
ATH The person at computer B issues a hang up command.
NO CARRIER OK Both modems report that the connection has ended. Modem B responds "OK" as the expected result of the command; modem A says NO CARRIER to report that the remote side interrupted the connection. The modems on both sides drop their DCD signals as well.

Compatibility

[edit]

While the original Hayes command set represented a huge leap forward in modem-based communications, with time many problems set in, almost none of them due to Hayes per se:

  • Due to the lack of a written standard, other modem manufacturers just copied the external visible commands and (roughly) the basic actions. This led to a wide variety of subtle differences in how modems changed from state to state, and how they handled error conditions, hangups, and timeouts.
  • Each manufacturer tended to add new commands to handle emerging needs, often incompatible with other modems. For example, setting up hardware or software handshaking often required many different commands for different modems. This undermined the handy universality of the basic Hayes command set.
  • Many Hayes compatible modems had serious quirks that made them effectively incompatible. For example, many modems required a pause of several seconds after receiving the "AT Z" reset command. Some modems required spaces between commands, while others did not. Some would unhelpfully change baud-rate of their own volition, which would leave the computer with no clue how to handle the incoming data.

As a result of all this, eventually many communications programs had to give up any sense of being able to talk to all "Hayes-compatible" modems, and instead the programs had to try to determine the modem type from its responses, or provide the user with some option whereby they could enter whatever special commands it took to coerce their particular modem into acting properly.

Autobaud

[edit]

The Hayes command set facilitated automatic baud rate detection as "A" and "T" happen to have bit patterns that are very regular; "A" is "100 0001" and so has a 1 bit at the start and end and "T" is "101 0100" which has a pattern with (nearly) every other bit set.[10] Since the RS-232 interface transmits least significant bit first, the according line pattern with 8-N-1 (eight data bits, no parity bit, one stop bit) is 01000001010001010101 (start and stop bits italicized) which is used as syncword.

The basic Hayes command set

[edit]

The following commands are understood by virtually all modems supporting an AT command set, whether old or new.

Basic Hayes Command Set
Command Description Comments
A0 or A Answer incoming call  
A/ Repeat last command Do not preface with AT, do not follow with carriage return. Enter usually aborts.
D Dial Dial the following number and then handshake

P – Pulse Dial
T – Touch Tone Dial
W – Wait for the second dial tone
R – Reverse to answer-mode after dialing
@ - Wait for up to 30 seconds for one or more ringbacks
, - Pause for the time specified in register S8 (usually 2 seconds)
; – Remain in command mode after dialing.
! – Flash switch-hook (Hang up for a half second, as in transferring a call.)
L – Dial last number

E0 or E No Echo Will not echo commands to the computer
E1 Echo Will echo commands to the computer (so one can see what one types if the computer software does not support echo)
H0 or H Hook Status On hook. Hangs up the phone, ending any call in progress.
H1 Hook status Off hook. Picks up the phone line (typically you'll hear a dialtone)
I0 to I9 Inquiry, Information, or Interrogation This command returns information about the model, such as its firmware or brand name. Each number (0 to 9, and sometimes 10 and above) returns one line of modem-specific information, or the word ERROR if the line is not defined. Today, Windows uses this for Plug-and-play detection of specific modem types.
L0 or Ln (n=1 to 3) Speaker Loudness. Supported only by some modems with speakers. Modems lacking speakers, or with physical volume controls, or ones whose sound output is piped through the sound card will not support this command. 0 turns off speaker, 1 to 3 are for increasing volumes.
M0 or M Speaker Mute, completely silent during dialing M3 is also common, but different on many brands
M1 Speaker on until remote carrier detected (user will hear dialing and the modem handshake, but once a full connection is established the speaker is muted)
M2 Speaker always on (data sounds are heard after CONNECT)
O Return Online Returns the modem back to the normal connected state after being interrupted by the "+++" escape code.
Q0 or Q Quiet Mode Off – Displays result codes, user sees command responses (e.g. OK)
Q1 Quiet Mode On – Result codes are suppressed, user does not see responses.
Sn Select current register

Note that Sn, ? and =r are actually three separate commands, and can be given in separate AT commands.

Select register n as the current register
Sn? Select register n as the current register, and query its value. Using ? on its own will query whichever register was most recently selected.
Sn=r Select register n as the current register, and store r in it. Using =r on its own will store into whichever register was most recently selected.
V0 or V Verbose Numeric result codes
V1 English result codes (e.g. CONNECT, BUSY, NO CARRIER etc.)
X0 or X Smartmodem Hayes Smartmodem 300 compatible result codes
X1 Usually adds connection speed to basic result codes (e.g. CONNECT 1200)
X2 Usually adds dial tone detection (preventing blind dial, and sometimes preventing ATO)
X3 Usually adds busy signal detection.
X4 Usually adds both busy signal and dial tone detection
Z0 or Z Reset Reset modem to stored configuration, and usually also physically power-cycles the modem (during which it is unresponsive). Z0, Z1 etc. are for multiple stored profiles. &F is similar in that it returns to factory default settings on modems without NVRAM (non volatile memory), but it does not reset the modem

Note: a command string is terminated with a CR (\r) character

Although not part of the command set, a tilde character ~ is commonly used in modem command sequences. The ~ causes many applications to pause sending the command stream to the device (usually for half a second), e.g. after a Reset. The ~ is not sent to the modem.[11]

Modem S register definitions

[edit]
Register Description Range Default value
S0 Number of rings before Auto-Answer 0–255 (0 = never) 0
S1 Ring Counter 0–255 rings 0
S2 Escape character 0–255, ASCII decimal 43 ("+")
S3 Carriage Return Character 0–127, ASCII decimal 13 (Carriage Return)
S4 Line Feed Character 0–127, ASCII decimal 10 (Line Feed)
S5 Backspace Character 0–32, ASCII decimal 8 (Backspace)
S6 Wait Time before Blind Dialing 2–255 seconds 2
S7 Wait for Carrier after Dial 1–255 seconds 50
S8 Pause Time for Comma (Dial Delay) 0–255 seconds 2
S9 Carrier Detect Response Time 1–255 tenths of a seconds 6 (0.6 second)
S10 Delay between Loss of Carrier and Hang-Up 1–255 tenths of a second 14 (1.4 seconds)
S11 DTMF Tone Duration 50–255 milliseconds 95 milliseconds
S12 Escape Code Guard Time 0–255 fiftieths of a second 50 (1 second)
S18 Test Timer 0–255 seconds 0 seconds
S25 Delay to DTR 0–255 (seconds if synchronous mode, hundredths of a second in all other modes) 5
S26 RTS to CTS Delay Interval 0–255 hundredths of a second 1 hundredth of a second
S30 Inactivity Disconnect Timer 0–255 tens of seconds 0 (disable)
S37 Desired Telco Line Speed 0–10

Command options:

  • 0 Attempt auto mode connection
  • 1 Attempt to connect at 300 bit/s
  • 2 Attempt to connect at 300 bit/s
  • 3 Attempt to connect at 300 bit/s
  • 5 Attempt to connect at 1200 bit/s
  • 6 Attempt to connect at 2400 bit/s
  • 7 Attempt to connect in V.23 75/1200 mode.
  • 8 Attempt to connect at 9600 bit/s
  • 9 Attempt to connect at 12000 bit/s
  • 10 Attempt to connect at 14400 bit/s
0
S38 Delay before Force Disconnect 0–255 seconds 20 seconds

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.

V.250 – Defined leading character sequences
Leading
characters
Includes commands related to
+A Call control (network Addressing) issues, common, PSTN, ISDN, ITU-T Rec. X.25, switched digital
+C Digital Cellular extensions
+D Data Compression, ITU-T Rec. V.42 bis
+E Error Control, ITU-T Rec. V.42
+F Facsimile, ITU-T Rec. T.30, etc.
+G Generic issues such as identity and capabilities
+I DTE-DCE Interface issues, ITU-T Rec. V.24, etc.
+M Modulation, ITU-T Rec. V.32 bis, etc.
+P PCM DCE commands, ITU-T Rec. V.92
+S Switched or Simultaneous Data Types
+T Test issues
+V Voice extensions
+W Wireless extensions

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]

Command Description
AT+CPIN=1234 Enter PIN code
AT+CPWD="SC","old","new" Change PIN code from 'old' to 'new'
AT+CLCK="SC",0,"1234" Remove PIN code
AT&V Status
ATI Status (Manufacturer, Model, Revision, IMEI, capabilities)
AT+COPS=? List available networks 0-Unknown/2-Current/3-Forbidden, Longname, Shortname, Numerical-ID, "AcT"
AT+CSQ Get signal strength. Answer: +CSQ: <rssi (more=better)>, <ber, less=better>
ATD*99# Dial access point
AT+CGDCONT=1,"IP","access.point.name" Defines PDP context[12]

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]

Notes and references

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
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 serial 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. Configuration 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 IoT 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 phone 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 phone, 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 phone 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 (BBS) 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 standardized controls persisted as a barrier until solutions emerged to address the fragmentation. Key to this era were AT&T's Bell 103 standard, developed in the early 1960s for full-duplex 300 bps transmission using , and the Bell 212A standard 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 interface 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 interface that allowed software control of the , replacing cumbersome hardware configurations such as DIP 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 terminal software on diverse microcomputers, making operation accessible without specialized hardware 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, configuration, and status reporting. 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 compression 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 BBSes 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 register (V0 for numeric, V1 for verbose, with V1 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 mode transitions during active connections, an of three plus signs ("+++") is used to revert from data mode to command mode, 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 configuration, dialing, or status queries, but does not transmit user over the . This mode is the default state upon or reset, 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 ATA 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 register, 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 RTS/CTS 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 RTS/CTS 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 configuration, 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 AT 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 ATA command off-hooks the modem and initiates a with the remote device, provided the auto-answer ring count (S0 register) 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 ATA typically return result codes like "CONNECT 14400" to indicate the established baud rate.
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 tone 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 protocol handling prior to establishing connections. These commands adjust parameters such as character echoing, result code output, speaker operation, flow control mechanisms, correction protocols, 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 M1 to activate it during off-hook until carrier detection ( default), allowing users to monitor 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 RTS/CTS 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 interference 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 connection 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 configuration and line conditions. The ATI command retrieves product identification and information, helping identify the model and revision for compatibility checks. Subvariants like ATI0 display the basic product code (e.g., "Hayes Compatible 2400"), while ATI1 or ATI2 report ROM checksums for verification, 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 ring 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 mechanism 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 RAM, 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 connection 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 identification string, +GMM for the model identification, +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 (RTS/CTS) methods to manage data flow at higher rates, while +MS enables modulation selection for V.34, specifying carrier 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 ETSI 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 LTE 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 IoT 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 IoT-specific extensions like TCP/IP 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 , , speaker, 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 compression 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 voice 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 flow, such as early VoIP gateways interfacing analog voice with IP networks prior to the .

References

Add your contribution
Related Hubs
User Avatar
No comments yet.