Skip to content

x2

x2 was USRobotics' 56k modem standard from 1997, the rival of K56flex, before V.90 replaced both. USRobotics' Courier and Sportster modems had it, and its I-modem and Total Control equipment were the servers. Its specification was never published.

D-Modem answers an x2 modem as the server, on a digital line, with AT+MS=X2. A modem that does not offer x2 gets V.34 instead.

A Courier modem connects to it with error correction and data compression (CONNECT .../ARQ/x2/LAPM/V42BIS) at 32000 bit/s down and 24000 up. Only that first speed is done so far (see What is missing).

What D-Modem knows about x2 was learned by watching calls between the original firmware of a Courier modem and of an I-modem, both running in an emulator. For the details, see the technical details.

How an x2 call goes

  1. V.8, as for V.34. The server marks its V.8 reply as an x2 server's.
  2. V.34's line measurements start, and the server's first message is marked as an x2 server's. The customer's modem answers with a short x2 message instead of measuring the line.
  3. The customer's modem sends its V.34 training; the server answers with its own digital training: a fixed pattern, two-level training, repeated words, the frame alignment, then frames of ones.
  4. They exchange their settings in short records with a checksum, and the customer's modem ends with V.34's E.
  5. In data mode the server sends frames of 6 digital values. At 32000 bit/s each frame carries 24 bits: 19 choose one of 9 levels for each of the 6 values, and 5 are signs. The sixth sign carries no data. The customer's modem sends V.34 data back (24000 bit/s).

About 12.7 s into the data the Courier renegotiates its upstream to 28800 bit/s, and in its answer the server switches to the higher speed the Courier asks for in it: 54666 bit/s on a good line, less on a worse one (46666, 50666, 52000 or 53333 bit/s), and again when the Courier asks again later (52000, then 53333, then 54666 on a line 6 dB down). The server waits for the Courier to start: if it switched first, the Courier would drop the call. Like the I-modem, the server sends ones for about half a second around the switch before the data goes on.

What is missing

D-Modem knows five of the higher speeds, the ones the I-modem used: 46666, 50666, 52000, 53333 and 54666 bit/s. If the Courier asks for another, the call drops. At 46666, 50666 and 54666 the calls hold with every line arriving; at 53333 the Courier takes none of D-Modem's frames, though their levels match the I-modem's (it then asked for 54666 and the call went on). A-law lines are not done yet either.

The sixth sign of each frame carries no data, and the customer's modem does not check it. During training D-Modem uses the I-modem's own rule for it, so its training matches the I-modem's octet for octet. In data mode it keeps the signal balanced around zero, which agrees with the I-modem's choice about 87% of the time; the Courier behaves the same either way.

How it was tested

The Courier's original firmware, in courier-emu's emulator, calls D-Modem's test program courier_peer over a digital line. The Courier reports CONNECT 49333/ARQ/x2/LAPM/V42BIS (its own way of naming the speed) and prints the text D-Modem sends it. With courier_peer sending a numbered line every second, all of them arrive, before and after the switch to 54666 bit/s, until the emulator's run ends at about 110 s. The unit test x2_test checks the records against the ones the I-modem and the Courier sent, and the data frames against a decoder.