How Revertive Pulsing Works

Or, how to think like your great-grandparent the electrical engineer

4 min readJan 3, 2016

I went looking for this information before writing this. There are plenty of sites that will tell you revertive pulsing is a method of trunk signaling where the terminating office sends pulses to the originating office rather than the originating office sending pulses the other way. You might find some talk of it selecting brushes and groups.

The best description I could work out, the most detailed, was that revertive pulsing is a system where if you are the originating office, the terminating office winks at you repeatedly until you flash it. While ridiculous, this is sort of accurate.

2016 Jan 3: This is partially reverse-engineered and I have not yet built equipment that implements it. However, from testing (manually triggering relays and touching things with -48V for fun) and conversation with an experienced lineman, this is accurate.

None of this will tell you what the wire protocol looks like. So, here it is. This will also cover how to call a panel on a trunk, which should be easily enough to emulate — so it should be possible to interact with an outgoing or ingoing trunk speaking revertive pulsing using this information.

Note that the pulse speed is not important. The pulses need to be short enough that they do not release the trunk, but they can happen at any rate — this was one of the strengths of RP in panel and early crossbar offices.

It’s a two-wire trunk. Tip is used for battery (-48V of course) and signalling, and ring is for ground.

Let’s start with the schematics. Things outside the schematic are out of scope of this document.

The terminating office provides battery. The RP signalling is performed by the RP SEND relay — a pulse is indicated by the tip being connected to groundrather than battery.

The DETECT relay detects trunk seizure and forward signalling — it’s ignored while RP SEND is grounded (or this wouldn’t work).

To sieze the trunk, the originating office closes the SEIZE relay, which is like going off-hook (and closes RP DETECT). The terminating office immediately begins pulsing — when TIP is grounded, RP DETECT is opened.

The pulses from RP DETECT are counted. When enough pulses have been counted, the originating office opens the SEIZE relay. To start the next pulse train, the originating office closes SEIZE again. If all digits are available, this can be a flash — otherwise, the selector does not have a timeout and will wait for further pulses.

The actual equipment used to perform the counting and trigger the pulsing is out of scope for this document, but in the case of a WeCo panel, the originating office shown here is a sender and the terminating office is a district, incoming, or final frame where a commutator generates the pulses. The district frame is out of scope as it is part of the originating equipment; once a trunk is seized, the incoming frame is first operated to select the final frame, then the final frame (via the incoming frame) to select the subscriber.

All incoming numbers on a trunk are four digits. This does not mean four pulse trains are used — there are five to select a subscriber, starting with the incoming frame. These are:

  • Incoming Brush
  • Incoming Group
  • Final Brush
  • Tens
  • Units

In a WeCo panel office, the Brush corresponds to one of five stacked banks of contacts. Each of these on the incoming frame service a total of 2,000 subscribers. To select a Brush, the number used is the phone number divided by 2,000. This can be determined from only the first number. There are five brushes, numbered from 0–4; the number of pulses sent is n+1.

Groups correspond to final frames. There are four for each Brush. The incoming group is the phone number modulo 2,000, divided by 500 (each group services 500 subscribers). These too are numbered 0–4. Each group has multiple contacts, each of which connects to a selector on the final frame — once the group is selected, the incoming selector seeks to a free final frame selector.

The final frame also has five banks of contacts, each corresponding to 100 subscribers. The final brush is based on the hundreds position in the number — it is the number modulo 500, divided by 100. These are, again, numbered 0–4.

The last two numbers seek into the bank; the first set of pulses is sent every ten contacts (and seeks to the proper tens place), and the second set of pulses is sent for every contact, seeking to the subscriber line. These, too, are numbered 0–9, and the number of pulses to be counted is n+1.




Weakly catlike AI trapped in a queer girl's Twitter account. Fascinated by the magic of the mundane.