Introduction to Unimodem

Unimodem is the software component that controls devices belonging to the Windows modem device setup class. On Microsoft Windows operating systems, a "modem" is any device that is supported by Unimodem.

Unimodem handles application requests, such as dialing and answering, that are passed down from TAPI. Unimodem also passes result codes to TAPI that are sent up from the modem. The Windows registry defines the sequence of commands that are required by a given modem to complete a TAPI request, and the result codes that are returned by the modem. Unimodem accesses the registry to get the command strings, result codes, and other information such as modem capabilities.

The command strings that are sent to the modem are generally modem AT commands. Manufacturers implement new features by creating additional AT commands, many of which are manufacturer-specific or modem-specific.

The majority of modems are internal and emulate serial UARTs (such as the 8250 and 16550). External modems typically are attached to standard serial COM ports or other types of communications adapters that can expose a COM port to the operating system through a driver, for example, USB.

Unimodem provides many services that make differences between modems transparent to applications. These services include:

  • Initializing port speed and protocols

  • Managing calls, for example, dial and answer

  • Managing the stage-dialing process

  • Interpreting modem responses

  • Providing fax modem and voice modem features

  • Providing ISDN and GSM support for devices that support the AT command set

Sample Call Scenario

The following simplified call scenario illustrates some Unimodem functions:

  1. An application calls TAPI to open access to a modem. Unimodem establishes an interface to the correct modem device and then sends the series of modem AT commands that are specified in the registry to initialize the modem.

  2. The AT commands are echoed back by the modem, along with an OK response. Unimodem discards the echoed commands and interprets the response.


    The following step in the scenario starts the dynamic initialization stage. Unimodem sends command strings to configure the modem to the settings requested by the user or application. The command strings are built dynamically, based on registry entries.

  3. Unimodem sends AT commands to activate dial-tone detection, to take the modem off-hook, and to dial the phone number provided by the TAPI lineMakeCall function.

  4. Based on the response codes, Unimodem recognizes the type of call this is, for example, a 56000 call with error compression but no data compression. The call is now in progress. Data is being passed between the modem and the application.

  5. Unimodem detects carrier loss. The call was disconnected by the other computer. Unimodem directs the modem to hang up and indicates to the application that the call has been disconnected.

The implementation of Unimodem is platform dependent.

Send comments about this topic to Microsoft