from Wikipedia, the free encyclopedia
Data transmission of a Telebit T2000 modem, XMODEM protocol, no protocol spoofing. Data throughput approx. 145 characters / second. The constant switching of the transmission direction is audible; the acknowledgment of a data block with a length of 128 bytes consists of only one byte.

The XMODEM (sometimes also X-MODEM ) is a simple send-and-wait ARQ protocol with a fixed packet length that regulates secure data transmission . It was developed in 1977 by IBM sales engineer Ward Christensen and is public domain .

XMODEM was the first widely used data transmission protocol and contributed significantly to the expansion of mailboxes . In 1978 Christensen himself set up the CBBS (Computerized Bulletin Board System), the first mailbox for exchanging messages. It is usually implemented on the serial protocol .


Ward Christensen and Randy Suess met in 1975 as members of CACHE , a local Chicago computer club . As was customary at the time, they used compact cassettes for data storage. One way of transferring the data to it was to use a 300 baud acoustic coupler for audio transmission to the cassette player. Ward Christensen wrote a simple program for this in January 1977 to beep the data from the floppy to the cassette . The program formed blocks of 128 bytes, the block size of CP / M floppy disks, and a simple checksum . He published it under the name MODEM.ASM .

Dave Jaffe later wrote a program called BYE to allow remote users to access a CP / M system and operate it from there. In order to be able to transfer files between the systems, MODEM was adapted so that it did not output any status messages on the console . During the download or upload period, the telephone connection was used purely for file transfer and not disrupted at the same time as the console outputs from MODEM. This small change led to the new name XMODEM and was the starting signal for one of the most widely ported file transfer protocols at the time , as it was adapted to almost every hardware environment and enabled the cross-system transfer of binary computer files. The latter solved a major problem, since otherwise the systems would not allow a common data exchange.


XMODEM works in a block-oriented manner, the data to be transmitted is divided into units ( blocks ) of equal size . The blocks always have a size of 132  bytes and can be filled with any characters if necessary. Receipts consist of a single character.

Block structure
Offset length content
000 001 ASCII character Start Of Header (SOH, 01h)
001 001 Block number
002 001 One's complement of the block number
003 128 Data
131 001 Checksum . The checksum is the arithmetic sum of the data bytes modulo 256 and is therefore prone to errors; Double errors in the same bit position cancel each other out.

The transmission is initiated by the recipient by sending a NAK. A checksum received without errors is confirmed with an acknowledgment ( ACK , 06h). An error has occurred if the checksum is not the same as the calculated checksum. The block is rejected with negative acknowledgment (NAK, 15h) and then resent up to ten times. The end of a transmission is indicated by the sender with End Of Transmission ( EOT , 04h). This must also be confirmed with an ACK.

At the beginning of the 1980s, the block size was expanded (XMODEM 1K) and the cyclical redundancy check was used for error checking (XMODEM CRC) . The YMODEM and ZMODEM protocols, which were developed later, corrected many of the weaknesses of the first XModem version.

Change in the meaning of XMODEM

Once specified, XMODEM quickly became popular as a simple way of exchanging files over serial connections. Intermediate modems and analog telephone networks enabled files to be accessed worldwide. With the spread of the Internet into the commercial and private sectors, this practice lost its relevance in the late 1990s and disappeared from the perception of its users. Information and applications that used to be found in mailboxes are now usually accessed via HTTP and either read on the browser or downloaded from the web server .

Continue to be used XMODEM and its variants ( XMODEM 1K , XMODEM CRC ) and successor ( Ymodem , Zmodem ) but, for example, to peripherals System updates (so-called flash - updates ) to supply. One appreciates the simplicity of the protocol, which does not require complex operating system interactions, in contrast to FTP, for example .

Some companies even use variations of this protocol when, instead of the asynchronous, serial interface ( RS232 , V.24 ), another technology such as USB or the SSP connection of a microcontroller is used. By far the most frequent use, however, is likely to be the system update of devices that already have a serial interface. These are, for example, modems , ISDN terminal adapters , some types of cell phones or routers .

XMODEM and the like can be used via the serial emulation of the Bluetooth protocol or the IrDA infrared interface, where available. This is useful for transferring files to and from handheld devices of all kinds.

An extension to XMODEM with 32 KiB block length (XMODEM / 32k) was implemented in 2002 by Fa ADONTEC to the. Data transfer rate for error-free high-speed connections such as ISDN or TCP / IP - networks ( Intranet , Internet ) to increase. An extension with a 64 KiB block length (XMODEM / 64k) was implemented in 2007. Both extensions are backwards compatible.

Individual evidence

  1. MODEM.ASM. In: vintagecomputer.net. October 10, 1977, accessed February 19, 2018 .
  2. ^ Ward Christensen, Randy Suess: The Birth of the BBS. In: Chinet. 1989, accessed February 18, 2007 .

Web links