Nixon Phone

2026

Project GitHub Repository

In approximately 2013, my aunt gave me a red rotary dial Western Electric Model 500 telephone for christmas. This was brought on by my having converted several similar phones to work as field telephones for use at the Boy Scout camp that I was working at in the summers. I discussed this conversion in one of the oldest pages on this website. This phone sat as mostly a tchotchke for twelve years. In 2025, I had it sitting next to a beige model 500 on my credenza and a college friend visiting made the comment that he had expected to hear Richard Nixon when he picked up the handset. I realized at that moment that I should make that reality.

As a result of Watergate, it is well known that Nixon recorded a lot of happenings in the White House. Part of the recordings included his own tapped phone lines. The quality of these recordings is variable, but some sound as good as you would have expected to have had heard if you had Nixon in the flesh connected over copper wires. These tapes have been digitized and can be downloaded from Nixon Library. I found a couple existing ESP32 based MP3 player projects online, so I knew it would be possible to use an ESP32 to play audio from an SD card out of a DAC. I had previously played around with SLICs (Subscriber Line Interface Circuits), so I just needed to design a PCB to hook everything together.

Completed Nixon Phone

The result is a micro USB powered box that plays out random audio files from a micro SD card and then gives you dialtone when the call has ended. For fun, I added support for two phones. If you dial zero (pulse dialing support only), the other phone will ring and allow for a normal conversation between the two phones until either end hangs up. There is no ADC, so you can't use this box as a general purpose ATA (analog telephone adapter), but it seems like the ESP32 has the processing power to support SIP allowing for a complete DIY ATA solution.

Hardware

In 2016, the year that I graduated from undergrad, CadSoft sold EAGLE to Autodesk. Autodesk quickly changed the subscription model from a perpetual license to a monthly or yearly recurring charge. After trying out KiCad and being bewildered by the insane separation between library symbol and footprint, I bit the bullet and paid $100 for the yearly Autodesk EAGLE subscription. I continued to pay $100 per year and likely would have in perpetuity, but Autodesk decided to discontinue EAGLE and migrate users to Fusion 360. About 2 years ago the native Linux version of Autodesk EAGLE stopped working, so I started running it in Wine, but the discontinuation date of June 7, 2026 was approaching, so I decided to give KiCad a second try.

The End of EAGLE

Thankfully, KiCad got a lot better over the last ten years. It is possible to assign sane mappings between schematic symbols and footprints, and the interface was much less clunky than I remembered. Importing from Eagle works reasonably well, so I was able to import an existing project with an ESP32 in the project box form factor that I like to use. I completed the schematic and layout mostly on the plane to and from visiting my parents for Christmas.

Completed PCB Layout

The circuit is pretty straightforward. The SLICs are connected to each other and to a DAC using some analog muxes. With two or phones, you can get away with using muxes to switch the circuits, but if you want to build a small exchange, you may want to consider a crosspoint switch part like AD8113 which can connect 16 phones together and allow any one to call any other. For the analog phone interface, I followed the reference design for the AG1171 SLIC.

MUX and SLIC Circuit

I selected PCM5102 for the DAC because it is used in a bunch of other open source projects. Its definitely overkill for the audio quality needed for this project, but it derisked the software. It uses I2S which the ESP32 has hardware support for. I also followed its reference design implementation and was careful to try and give it a clean analog supply. In my last attempt at Audio with an ESP32, I learned that the load steps from processors cause pretty significant voltage changes at the 5V input from USB as a result of the resistance of the USB cable. I powered the analog side of this chip (as well as the MUXes) from a dedicated 3.3V linear voltage regulator powered off of 5V.

I2S DAC

Annoyingly, I ran out of pins on the ESP32 and had to add an I2C IO expander to set the MUX control lines. My other projects in this form factor have had OLED screens, but I decided that was unnecessary here and instead added two LEDs to communicate whether the board is powered and whether a phone is off hook, but that is why the I2C lines have OLED in the name. There is still a header to install an OLED screen, but I did not design the end plates to accept one. Since the SLICs expect 5V logic levels and the ESP32 has 3.3V outputs, I used SN74LV1T34 single supply level shifters to drive those signals.

I2S DAC

While I have added microSD card holders to projects previously, this is my first time actually installing one on the board rather than having it be a possible future extension. I was happy to find out that this worked on the first try and that there wasn't a years old issue lingering in my SD card holder footprint.

ESP32 and SD Card Slot

Software

The software here is 100% AI generated. This is my first project where I've really let the vibe coding run wild to the point that I have no real conception of the flow of the software. Understanding the software or honing my software skills is not the point of this project. If I had to spend a week struggling to get this to play audio files and then end up with something that still crashes randomly, I would have been much less likely to do it.

I brought the board up in stages. I first had Cursor attempt to play a sine wave. It succeeded, but the result was choppy. I told it that, and it added buffering or something which fixed it. I then had it implement play back of WAV files and had it write a script to convert MP3 files to WAV. I knew WAV would work, and modern microSD cards are large enough that space efficiency is irrelevant, so I just stuck with that instead of adding the decoding complexity of MP3s. I only encountered one hardware issue while bringing up the board: the digital outputs from the SLIC have low drive strength and are probably implemented as open drain outputs with a weak pullup. Since I added a voltage divider to bring these 5V outputs down to 3.3V, the load of that resistor divider was keeping the outputs at logic low at all times. I removed the low side of the resistor divider and let the ESD diodes of the ESP32 handle the ~microamps of current and fixed the issue.

I added a few extra features, again, by just having Cursor do the work iteratively. I didn't add tone dialing support since that would require an ADC or DTMF decoder chip, but it was easy to add pulse dialing support. With only two phones, there's not much use for being able to dial multiple numbers, so I set it up such that dialing zero would ring the other phone if you have two phones connected. There is negligible crosstalk or noise in normal operation, but the ringing generators draw enough current that there is a noticeable ringback signal which lets you know that the other line is ringing.

I have said it before and will say it again: AI for code is great, but using AI to produce long form writing is a cancer. Humans are the end consumers of long form writing while the end consumer of code is sand that has been tricked into thinking.

Construction

I sized the board to slot into an extruded box from MWRF Source that I've previously used on a number of other projects. The end plates are also PCBs and have holes for the connectors, LEDs and buttons. The buttons aren't really needed, but I carried them over from the project I based this on. Presently, they ring each respective phone when pressed.

Assembled PCBA

The ESP32 dev board I designed around is the "ESP32-DevKitC V4." This board has a micro USB connector, though, and I thought why not install a USB-C version of the same board? Well there are dozens of different manufacturers of these boards, and the new one that I bought the USB-C version of the board from changed the distance between the two connectors to be a bit tighter. I can still use them, but I have to bend their leads inward.

Back of Nixon Phone Box

I kept things simple on the back plate, but had some fun with the front plate.

Selecting the Tapes

I started with the 'Select Conversations' curated by the Nixon Library and then spent a couple evening listening to a bunch of other tapes at random. If audio quality was poor of if there wasn't anything remarkable in the first 30 seconds, I moved onto the next conversation and didn't download it. I tried to get a good mix of conversations which include:

To avoid the problem of a truly random shuffle sometimes giving you the same files back to back, I had the files assigned a random order when the board is powered on. The files will be played in that order and then looped. In total, I selected 106 files which add up to something more than 8 hours of Audio.

In an odd turn of events, after completing this project I met John Ehrlichman's daughter at a St. Patrick's day party where I was drinking green dyed Miller Light. I noticed a coffee table book titled "The White House Doodles of John Ehrlichman" and started flipping through it. Another guest asked "oh did Jan bring that?" The book belonged to the host, but I was then introduced to Jan Erlichman and was cajoled into explaining this project.

Credenza Phones that Now Do Play Nixon Tapes