Standard Modem Command Sets and INFs
Updated: December 4, 2001
On This Page
Modem Command Sets
International standards now exist for all common modem functions. Microsoft, modem IHVs, and other ISVs should be implementing and using these command sets to simplify development work and improve the end-user experience.
Almost all modems are controlled using "AT commands." These commands originated with the Hayes Smartmodem, first introduced in 1981. This model was used and extended by many competing companies, such that there is a common basic dialect and a number of proprietary variations to cover extended data modem functions: identification, port control, modulation, error control, data compression, testing, and so on. Dialects included Hayes, Microcom/Compaq, USR/3Com, Rockwell, Lucent, and Multitech.
The common basic dialect was standardized as TIA-602. TIA, ITU, and other organizations have standardized extensions for extended data, fax, voice, video (H.324), and various cellular modems. The standard for extended data modems is ITU-T recommendation V.250 (also known as V.25ter). These AT command set standards are summarized in ITU-T Supplement to V.25ter, available at http://www.itu.int/itudoc/itu-t/aap/sg16aap/history/v250amd3/index.html. .
Microsoft designed Unimodem in Microsoft Windows 95 to accommodate all of these proprietary data modem dialects. Therefore, Unimodem defines registry keys for common data modem control functions. These Windows modem control registry keys are supported in Windows NT 4.0, Windows 98, Windows 2000, and Windows XP. These registry keys are documented in the Windows DDK.
This system is flexible and extensible, but it does not scale well. Modem manufacturers are prolific; thousands of distinct models have been created, most of them since Windows 95 was shipped. Windows 95 supported about 900 distinct modems. Windows 98 covers approximately 2700 distinct modems, but it was (colloquially speaking) out of date the day it shipped. The Windows 98 disk footprint for modem INFs is over 5 MB, and the footprint for Windows 2000 is larger.
It takes substantial effort by modem IHVs, Microsoft WHQL, and the Microsoft Windows product team to keep up with this system, which is difficult and outmoded; it needs to be replaced with true Plug and Play capabilities.
Step 1: Implement the standard data modem command set, V.250
Functionally, modems are mature. We have data, fax, voice, video, and cellular functions standardized. V.90 Issue 1 was ratified. Most of the innovation in modems now is in implementation--migrating the functions into Windows drivers to save hardware cost while designing those drivers to tread carefully on the rest of the system. There is no market reason not to implement a common command set.
Step 2: Use standard modem INFs
Microsoft has prototyped modem INFs based on V.250, T.31 (fax), and V.253 (voice). Modem IHVs can use these INFs in three ways:
Every modem should generate a compatible ID, as well as a unique ID, if it is attached by a capable bus such as PCI, COM port, or CardBus. This allows the modem class installer to make a better fit for the modem than would be provided as a "standard modem" defined in Mdmgen.inf.
For a new modem and INF design, the IHV can replicate the command and response sections in their INFs and use them for testing. This would remove risk factors in performance and WHQL validation testing. That INF should also work in all versions of Windows 32-bit operating systems. An alternative INF could be generated using #include directives. That INF would not work in older operating system versions, but it would work in Windows 2000 and later versions.
Step 3: Use the capabilities query features
The V.250 (V.25ter) command set has a bonus feature: it is discoverable from the driver. All the commands are either universal (TIA-602) or testable, using the AT+<command name>=? syntax. In response to the test syntax, the modem reports the range of values it can support.
The V.250 +GCI covers country of installation, but Unimodem does not yet use it.
V.250 does not yet specify standard responses for delayed or blacklisted calls, although Unimodem in Windows 98, Windows 2000, and later versions can use them. To support delayed and blacklisted responses, the modem's unique ID INF should contain the necessary registry keys.
Call to action for standard modem command sets and modem INFs: