How caller ID worked
In North America the exchange sent caller ID with the same kind of modem as early 1200 bit/s data sets: Bell 202 frequency-shift keying, 1200 Hz for a one and 2200 Hz for a zero. It waits for the first ring to finish, sends the data in the silent gap, and the second ring follows on schedule. That is why caller-ID boxes only showed the caller after the first ring.
The burst has a fixed structure. First a channel seizure: 300 alternating bits, a 1200 bit/s whistle that wakes the receiver. Then a mark run of steady ones so it can settle. Then the message, each byte framed by a start and a stop bit. In the multiple-data format (MDMF, type 0x80) the message is a list of tagged parameters: 0x01 for date and time, 0x02 for the number, 0x07 for the name, or 0x04/0x08 with "P" (private) or "O" (out of area) when they are withheld. The older single format (SDMF, 0x04) sends only the date and number. A final checksum byte makes all the bytes add up to zero, so a corrupted burst is simply ignored.
Other countries
Much of Europe, including the UK, sends the data before the phone rings. In the ETSI (European Telecommunications Standards Institute) scheme we model, the exchange first reverses the line polarity. It then sends a 100 ms alert of two tones, 2130 and 2750 Hz. Next comes the data, on V.23 frequencies (1300 and 2100 Hz) at 1200 bit/s. Only then does the phone ring (ETSI EN 300 659-1 §6.1.2). Denmark, the Netherlands and others used plain DTMF instead: a D (or A), the digits, and a closing C, before the first ring (Annex B).
Sources and accuracy
The message layout, checksum, alert tones (the TAS, terminal alerting signal), and UK timings follow ETSI EN 300 659-1. The US timings come from Telcordia GR-30-CORE, which is not freely available, so those segments are marked "approximate". The ringing is shown as the 20 or 25 Hz ringing voltage you would see on a recording of the line, not the sound of a bell. Our 300 baud and caller-ID bursts decode with minimodem, an independent open-source modem.
This page makes sound files for listening and teaching. It does not place calls or set caller ID on any phone line.
Related: SIT tones · 300 baud Bell 103 · dial tones by country.