Invisible Killer of the Phone Ring

15K4725

Intro: Invisible Killer of the Phone Ring

Several years ago, a scammer woke me up at 4 am. Some nonsense about me "owing to the IRS". A few months later, some clueless telemarketer forgot about the existence of time zones and rang me up at 6 am. "It would be awesome to have a device that turns phone off during the night hours, then turns it back on during the day, all done automatically!" - was an obvious idea that popped into my mind. That was years before I have got myself interested in electronics.

Yes, I am talking about the POTS (plain old telephone service, a.k.a. landline), since modern smartphones have this useful function built in. Now that I know a bit more about electronics and POTS in particular, I figured that turning the entire phone off is actually an overkill. I have built a circuit that achieves all of the following objectives:

  1. It prevents ringing of all the phones in the house that are on the same line, simultaneously.
  2. To the outside caller it just appears like nobody is picking the phone up.
  3. Otherwise, the circuit does not interfere with normal phone operations and calls can be made at any time.
  4. It is powered from the phone line itself. There are no other power sources.
  5. It is practically undetectable by the phone company, because it uses only a very small amount of power during its 6-minute startup, after which it enters a very low power mode using only 4 uA of current.

If you already know all the basics of POTS signaling, or don't care about the underlying principles, then you can skip the next step.

STEP 1: Phone Line Power and Ring Signaling

First, read this excellent page (from which I borrowed the ring detector idea) for all the gory details. In short, with all phones on-hook the incoming phone line bears an open circuit DC voltage of ~50 V (it's 51 V at my house). This is a pretty lousy, unregulated power source because of its relatively large output resistance. Thus, connecting any practical load drops the voltage precipitously. For example, picking the phone off-hook drops the line voltage below 8 V (6.7 V in my case).

Jason Smith, who proposed to draw electricity from the phone line in this Instructable, measured the resistance of POTS line at 628 ohm. Thus, drawing only 75 mA from his line drops voltage 10-fold. I don't recommend drawing any sizable power from the phone line on permanent basis, since both current and voltage drop will be detected by the phone company, who will send a tech to investigate. But because phone wire lengths and quality of their insulation vary, the company will tolerate some voltage drop. Conservatively, I figured that a temporary line voltage drop down to 47 V and a small current below 10 mA won't raise any alarms. Of course, in the long term the line voltage should be above 48 V at all times with current being as small as possible. Read Hermon Labs report and this blog for useful details.

An incoming call signal, which rings your phone, features the ~80 V (RMS) AC current! Yes, your eyes are not deceiving you: that's ~ 250 V peak-to-peak sinusoid. And, it is usually overlayed on top of the regular 50 V DC. The first figure above shows typical ringing signal on my line. Note that the voltage swings between -68 V and +168 V. There are four 2-second rings separated by 4-seconds of silence. It is during these silence periods the calling party receives progress signal (a.k.a. ring-back). The second figure zooms on the first ringing signal. When I pick up my phone, the company computer detects impedance load on the line and stops the ringing signal. And this exactly is the basic operational principle of my circuit:

  1. Detect incoming ringing signal.
  2. Quickly connect sufficient impedance so that the phone company drops the signal before any of my phones ring.

STEP 2: The Circuit

Parts (refer to the diagram above):

  1. Ring detector
    • C1 = Capacitor 470 nF, 400 V, non-polarized
    • D1 and D2 = Zener diodes 1N4742A, 12V
    • D3 = plain vanilla diode 1N4148
    • R1 = Resistor 10 kOhm, 1/4 W
    • Optocoupler (I used 4N35)
  2. Power management
    • R2 = Resistor 15 kOhm, 1/4 W
    • D5 = plain vanilla diode 1N4148
    • U1 = Voltage regulator LM2936, 5V
    • C2 = Supercapacitor, 0.1 F, 5.5 V, of EDLC type
  3. Ring tripper
    • R3 = Resistor 15 kOhm, 1/4 W
    • R4 = Resistor 680 Ohm, 1/2 W
    • M1 = N-type MOSFET transistor, 2SK2545

Although most parts can be substituted by their equivalents, the last two parts in "power management" are critical to the operation of this circuit and to its invisibility in particular. LM2936 is an awesome regulator with an ultra-low quiescent current. 99.99% of time, when the circuit is in its dormant state, the LM2936 let's sip through only 4 uA (yes, 4 microamperes, as I measured it empirically) of current! Thanks to that, the line voltage is back at its normal 51 V value. The circuit is totally invisible! Not to mention we are being nice to the phone company. ;) When I used the vanilla LM317, as much as 2.8 mA was flowing in waste - not acceptable.

The supercapacitor acts like a battery storing the charge needed during the milliseconds of circuit operation. The line voltage doesn't even budge at that time. 0.1 F seems like an overkill for this particular application, but the circuit is designed with the future expansion in mind. For example, in testing my fully charged supercap could supply power to a Trinket Pro microcontroller and to the real time clock for full 10 seconds! Otherwise, in dormancy the supercap holds the charge very well at the rock solid, regulated 5 V.

The only time power is drawn from the phone line is at the initial charge-up. My tests revealed that the supercap is charged from 0 to 5 V in about 6 minutes. The line voltage drops at its lowest initial point to 47 V, but then it steadily climbs up to 51 V. Quite reasonable, IMHO. Thanks to R2, the charging current is no larger than 3 mA at its peak.

STEP 3: How Does This All Work?

The incoming ringing AC signal, as shown in the first image of Step 1, triggers the ring detector sub-circuit. Details of its operation have been described elsewhere. In short, the C1 allows only AC current to pass through, while the role of two opposing Zener diodes is to filter out AC signals with peak voltage smaller than 12 V, such as dialtone and speech. Ringing signal easily passes this barrier and induces LED in the optocoupler. This turns the optocoupler's transistor on and allows current to pass from C2 through optocoupler and R3 to the ground. Voltage that builds up on R3 activates the MOSFET's gate, the MOSFET turns on and allows the current pass directly between phone line wires via the R4 resistor.

The net effect is that shortly right after the ringing signal starts the phone line sees connected impedance of 680 ohms. In other words, the phone company computer "thinks" someone picked the phone up (since going off-hook puts impedance on the line) and cuts the ringing off. This is illustrated in the first image above by the blue trace; compare it to the first image in Step 1. (The yellow trace is the MOSFET's gate voltage.) Instead of the regular 2 seconds, the ringing signal is cut short to about 0.1 second (second image). Moreover, peak-to-peak voltage is squashed down to the (-36 V, 78 V) range. Compare it to the unaffected regular signal in the third image. Apparently, this is not enough to trigger ringing recognizer in modern phones (at least in all the phones I have at home), so they remain silent. What's interesting is that the caller hears the normal progress signal, like nothing happened, and thinks that nobody is home. ;)

So far, I have described only the analog part of the device mentioned in Introduction. Obviously, this circuit knows nothing about the time of the day and squashes rings regardless. In this form, it's ideal for either heavenly patient people, who will always remember to plug it in in the evening and out in the morning, or as a toy for pranksters. :) For regular users, it still needs a digital part where a real-time clock (RTC) turns it on and off at preset times. See the next step...

Ah, one more thing: To indulge StuartB44, let me point out that connecting anything to phone lines may be illegal in some countries. In other words, if you do it, you are responsible.

STEP 4: Adding the Real Time Component


One way to add time control is to pair a real-time clock (RTC) chip with a microcontroller unit (MCU) - along with an independent power source, because MCU is likely to draw a sizable amount of current. My ambition is to power everything from the phone line and still keep the circuit "invisible". Certainly, it is possible to put the MCU in a dormant state, then wake it up with interrupts generated by RTC, etc. You are welcome to do so, if you wish. I have got a simpler idea where the MCU is not needed at all for the regular circuit operation, only for its setup. Take a look at the diagram in the first image.

What replaces a complicated MCU in making on/off decisions is a very simple T flip-flop chip. Read its Wikipedia page if you are not familiar with this fundamental element of digital electronics. In short, its output, Q, toggles between 0 and supply voltage upon receiving clock impulses. (I have actually built it from JK flip-flop, M74HC112, by tying both the J and K inputs to the supply line.) Hence, it provides a nice "translator" between time pulses and on/off states.

Now, how do we use the state of Q output to connect/disconnect impedance to/from the phone line? Simple. In the analog part of our circuit the signal from ring detector activated MOSFET transistor acting as a switch. Thus, a second MOSFET paired with the first one in a logical AND configuration should be the simplest solution. Indeed, the 680 ohm resistor, R4, connects to the phone line only when: 1) ring is detected; AND 2) the flip-flop's Q output is high.

It is the RTC chip that sets the Q output low or high. Initially, I experimented with Adafruit's PCF8523 breakout board, but found it inadequate for my purposes: it features only one alarm. Ah, if you are not sure what I am talking about: modern RTC chips can be set to store a particular date and/or time in their memory. When real time reaches the stored value, RTC outputs an interrupt signal on one of its pins. This alarm can periodically repeat itself, e.g., every day if hour/minute/second registers are set while day/month/year ones are ignored. But we need to trigger the T flip-flop at two different times per day, thus we need two independent alarms. Another of Adafruit's products, the precision DS3231 RTC has two alarms, but the problem here is that when either is triggered the resulting interrupt signal is a permanent change from high to low voltage. Resetting it back to high requires intervention from an MCU… Bummer.

PCF85263, a newer RTC chip from NXP Semiconductors, however, is perfect in this respect. It has two independent alarms and its interrupt signals can be configured as pulses. In addition, it's SO8 package perfectly matches that of PCF8523, so I simply desoldered PCF8523 from the breakout board and soldered PCF85263 in its place. Works like charm!

In summary, the additional parts needed for time control are:

  • U4 = M74HC112, dual JK flip-flop triggered by the negative edge of clock pulse.
  • U2 = PCF85263, real time clock along with the required 32 kHz oscillator crystal, Y1, and decoupling capacitor, and battery backup, and I2C pullup resistors… Ugh, just get PCF8523 from Adafruit and swap the RTC chips.
  • Q1 and Q2 = two IRF630B, N-channel MOSFET transistors. (So, you ask, what happened to the 2SK2545? Well, I simply did not have two of these, so I used IRF630B.)
  • R5, R6, and R7 = Pullup resistors 10 kOhm, 1/4 W

There is a very important caveat you must be aware of (and of which I learned the hard way): the M74HC112 flip-flop will draw a relatively large current unless all of its input pins are connected! The chip has actually two JK flip-flops; I used only one leaving the other unconnected and was surprised by a huge power draw. But after securing all the unused input pins to the ground the supply current dropped to a single digit uA range. Make sure you leave the unused output pins, Q and ~Q, on both JKs unconnected!

How it works? To set it up, I connect an MCU (Arduino Mega in my case) to the P1 connector: ground pin to the ground, the SCL and SDA pins to their counterparts, and two digital pins to CLR and PR, respectively. What are these, you ask? When a JK flip-flop is first powered up, its Q and ~Q outputs are in a random state. Hence, the M74HC112 chip has preset, PR, and clear, CLR, pins that let the MCU initialize Q and ~Q to a state appropriate for the time of the day. Read the data sheet for more details. Next, the MCU transmits instructions setting the alarms, interrupt type, etc., to the RTC through SCL/SDA pins using I2C protocol. After this setup the MCU is disconnected and the circuit flies on its own solely from the phone line. For example, during the daytime MCU would set the Q output to a low state, then set the first alarm sometime in the evening hours range and the second in the morning range. When the first alarm is triggered, the RTC sends a short rectangular impulse, as illustrated in one of the images above, whose falling edge would flip the Q state from low to high activating the Q2 MOSFET. The circuit would the kill incoming phone rings during the night when the Q1 is activated. In the morning the second alarm pulse would deactivate Q2 and all phone rings would be allowed during the day since the state of Q1 wouldn't matter.

This cycle repeats indefinitely until the MCU is connected again to change the alarm(s), or until something breaks, or the phone company comes knocking. ;) In the embedded video, I connected an LED to the unused ~Q pin in a way that lists it up when ~Q is low => it indicates the high state of the Q pin. Next, I instructed the RTC to send an interrupt pulse every second to test the system.

Lastly, was it all worth the effort? Take a look at the last two images: under normal operation the circuit (without the LED) draws only 10 uA of current and the line voltage remains at a very healthy 51 V! In spite of more connected components the "killer" still remains "invisible". :)

18 Comments

I added an IR sensor to my Pi3 and modified the python program to read the Remote that came with my Raspberry Pi Pico Advanced Kit. If you want this version use PhoneSleep.py if not use OrigPhoneSleep.py instead. The IR sensor connects to Pi pins 17 (+3.3V), 25 (GND), and 29 (GPIO5). I used a 3.3V 38Khz (TSOP38238) sensor. Now I can take a nap and enable/disable phone ringing from my bed.

I improved the ring detector, by adding a bridge rectifier so that both positive and negative halves of the AC ring waveform get detected. Attached are the improved schematic and support documents. I also added these files to the project zip file downloadable from my cloud server here:
https://u.pcloud.link/publink/show?code=XZhC5OVZNEsNz1hkOXyTdkR3SYz9Vm5wAg6k
Why does it matter? With the previous design (in sleep mode), you would occasionally hear a partial ring on cheap Chinese phones with the piezo ringers if the AC ring signal started on the negative half of the sine wave. Higher quality and AT&T phones didn't have this issue. With this improved design, ring detection occurs much faster, so you don't hear ANY RING even on the cheaper phones!
I also added an improvement to the python script. Since the unit is designed to operate without a keyboard, monitor or mouse, the only way to gracefully shut it down was to connect via ssh and issue a shutdown command. With the new python script, a long button press (5-sec) will locally shutdown the pi. Just hold down the button until the LED starts blinking and you can be sure the Pi will gracefully shut down. Wait until the Pi’s LEDs stop flashing before powering down.
Hi Barry,
Thank you for the improvement! Yours is an awesome piece of work.
Thanks for noticing and appreciating my work. I had a lot of fun building this gadget, and I use it regularly to get a better night's sleep.
I made a modified version of this project which uses a Raspberry Pi 3B+ as the 5V power source and automatic timer. I wrote a python program to enable/disable ringing at any time of day, (chosen on the command line). In my modified version, 4 wires go between the Pi and the unit +5V, GND, GPIO18, and GPIO23. GPIO18 is an output controlling whether the ringer is enabled/disabled. GPIO23 is an input with an internal pullup resistor which gets grounded by a push-button switch. This switch is used to toggle the ringer enable/disable state manually if you don't want to wait for the automatic timer. The PN2222 (Q3) acts as a 3.3V to 5V level-translator for GPIO18. The PN2907 (Q2) conditionally delivers +5V to the Opto-Coupler (IC1). When Q2 is off, the opto-coupler cannot drive the mosfet's gate (Q1), so the phone rings normally. When Q2 is on, +5V gets to IC1 so so the ring detector and opto-coupler drive the gate of Q1 and the phone ring is interrupted before you even hear it ring. To make the program launch automatically at boot, copy the PhoneSleep.desktop (minus the .txt) to $HOME/.config/autostart. You will need to customize the "Exec=..." line to match the directory location of your PhoneSleep.py script, and to choose your preferred wake and sleep times. Once the Pi is setup (including wifi connectivity), you no-longer need the keyboard, mouse or monitor, you only need to attach the pi power cord, and phone line. The last two photos show the unit in this final-use configuration. You can download a zip file containing all of the files for this project at this link: https://u.pcloud.link/publink/show?code=XZhC5OVZNEsNz1hkOXyTdkR3SYz9Vm5wAg6k
This circuit is also featured in the MagPi Magazine Issue 132, page 28: https://magpi.raspberrypi.com/
Hi Barry, thank you very much for this report! You should write your own Instructable. :)
It's amazing what you can do with this circuit when you add power source. I should have written it 15 years ago, when landline phones were plentiful. Nowadays these are disappearing (I've disconnected mine 2 years ago) and it won't be long before the last POTS carrier in the US will go out of business. In fact, it was 2008 (long before I knew anything about electronics) when I talked to my coworker (a holder of EE degree) to design a similar circuit and patent it. Well, he "didn't have time" back then. ;)

I see you've investigated this in depth. However, even though you designed a cleaver circuit to mimic an answered phone (680 ohm across the line when the FET turns on) and therefore stopping the ring signal, wouldn't a timer that switches off the phones work equally well/ Since you would never receive an emergency call, both ideas would accomplish the exact results. Nice project though and I like to see others design things with their thinking and elctronic knowledge.

With this circuit you can still make outgoing calls with your phone when the ringer would be silent.

Thank you. Yes, timed switch would also work (although you wouldn't be able to make calls). There are many ways to skin a cat. ;)

In fact, Amazon sells an ordinary switch + RJ11 jack combo for $15!

https://www.amazon.com/Telephone-connected-Interru...

Amazing what nowadays people make money on. :)

Just came across this, and cool! Agree with Gerry_D comment about modifying so that only the FIRST ring gets block. I have the robo blocker (via spectrum) and I do get a chirp of the first ring I'd like to block. But let the subsequent rings come through. This is on my cable modem voice line, so phone company is not involved, is an analog voice line (yes VOIP) but as far as this device it's all analog. So go ahead and hack away! Open to suggestions please.
What you "really" need to do, and practically the whole USA will beat a path to your door, is to develop it further so that it allows ringing after the first ring. Then ALL users of NOMOROBO will want one. The "tele-monsters" are blocked by NOMOROBO, but only after the first ring. Reason is that the caller ID is sent over the phone line AFTER the first ring. Then NOMOROBO identifies it as a scammer and hangs up on them. So with NOMOROBO, one always gets one ring. Silence this first ring and one ring only, then you will have a real winner. ;-)
Thank you for an interesting suggestion. I looked Nomorobo up and learned that it (currently) works only on VoIP lines. Hence, creating the "first ring killer" would be a whole new project which would be, I suspect, quite different from this Instructable designed for POTS lines...

I love any landline phone hack, having done quite a few myself. However, as you say there are many ways to skin a cat. My phone just has a 'ringer-off switch' :-)

Thank you. Wow, you've been very productive: 53 Instructables! However (correct me if I'm wrong), none of these involves phone hacks. Please share at least some these since I'm at the moment interested in landline phone electronics.

About the ringer-off switch: Do you solemnly swear to dutifully and manually turn the ringer off every evening and back on every morning? :)

Although my phone has such a switch, too, I am not that disciplined. I have better things to do than remembering about the switch all the time... This is what machines are for.

You should also point out that it is illegal to mess around with the phone companies equipment. Adding anything to their line could cause you problems if they do find out.

I believe the MCU delay is caused indeed by the boot process which waits for 2 seconds in case you want to upload a program to it via USB, not just start the sketch. This is fine for most sketches, but if you need immediate reaction, there are other options: 1). you could burn your code into the MCU via AVR programmer kit (available from Adafruit), thus eliminating the bootloader and the delay, or 2). use a different MCU, like esp8266 which does not have this issue (they use pin states to set the chip to upload mode). The NodeMCU I used for my instructable starts sketch execurion immediately.

Thank you for excellent tips!