I converted a rotary phone into a meeting handset

Meeting Risks Increase When You May Be Busy

As you may remember, or may not entirely know, I have somewhat of a fascination with old rotary phones. Sometimes, when people come to know about this attraction, they donate their old rotary phones to me, so I have a small collection.

The other thing that fascinates me is meetings. Well, I say “attraction”, but really it’s more of a burning hatred. One day, a few months ago, I was in one such meeting, as I have been every day since then, and I jokingly pretended to be angry about something.

One of my coworkers laughed and said, “I bet if it was a phone call, you would have just turned off the phone,” and fear spread over me. Why was not I have a phone handset I can bang? Had I really become a puppet-driven corporate puppet of my former, carefree self? The ups and downs of capitalism? “No”, I decided, “because that sentence doesn’t make any sense”.

However, I had a phone I could use for this project, 30% of the knowledge required, and 100% underestimation of how difficult the other 70% would be. Armed with all these numbers, I immediately started trying to figure out how I could do this.

phone small

The phone I used (artist’s illustration).

The phone I used is an old Siemens rotary phone, shown in the image to the right. That image is not actually a picture of the phone, but ChatGPT’s best effort, because I’m too lazy to try to figure out where I placed the phone to take a picture of it. However, rest assured, the image is almost identical to what the phone looks like, except for a slightly higher 8 and a slightly lower 3.

The nice thing about these older phones is that nothing on them is attached to anything else, making it possible to modify them without making any permanent changes to the phone, something I really wanted to avoid. I don’t really think it matters much, but I don’t like breaking/replacing these old phones at all. I like to make reversible changes wherever possible and luckily phones allow this.

connector small

I made the connector.

The phone’s board has these metal tabs that stick out, and the cables have a corresponding connector that opens around the tab, which makes good electrical contact and uses friction to make sure they don’t slip out. Since I didn’t want to make any permanent changes to the phone, I didn’t want to remove these tabs, or add anything to them. I just wanted to connect a cable to them in the easiest way possible.

To do this, I designed and 3D-printed a very small connector (the small, purple piece of plastic, shown in the photo at right), which I used to hold a wire on top of the tab. It worked quite well, the cable made good contact, and was relatively stable, as long as you didn’t pull on it at all.

With the connections out of the way, I can move on to the electronics themselves, and where they go. Another advantage of these old phones is that they are much larger than the circuits inside them, meaning the interior is very, very spacious, with plenty of room for all the extra bits I wanted to use.

Since I wanted to be able to use the phone as a meeting handset, I figured I needed something that would function as a keyboard/soundcard combo. The keyboard would actually be responsible for “hanging” the meeting, i.e. sending the appropriate keystrokes to the active window to exit whatever meeting I was in. The soundcard will feature a microphone/speaker combo that can be used as an input and output device for meeting software to play and record sound through the phone’s handset. I figured, since I’m at it, I might as well put the rotary dial to work, and type whatever number I dialed on the keyboard, just because I can.

To do all this, I needed a capable microcontroller, and I had just the thing: the RP2040 by Raspberry Pi is powerful enough to be used as a sound card, and it can be made to show up on a computer as a USB device.

Of course, if the RP2040 acts as a USB device that is a combination sound card/keyboard, I would have to spend a lot of time learning about the USB device, sound card, keyboard, and how the RP2040 works, which is a prospect I enjoyed with considerable enthusiasm, no one said, and especially not I. Instead, we now have LLMs, and we can make them do the dirty work we don’t want to do, like program stuff for our stupid side-projects. This is literally why LLMs were created and no one could convince me otherwise, so I decided to use Claude Opus 4.1 (the best coding model at the time) to help me move forward on my goal towards self-realization, and got to work.

Unfortunately, Opus was only available at a $200/month subscription, which was a bit much for a silly side-project, so I decided to use the API instead for a few hours of coding. I mean, it’s an LLM, Michael. What could be its price? Ten dollars?

I asked Cloud to write some code to turn the RP2040 into a sound card using TinyUSB, I tested it and told Cloud how it didn’t work, he wrote more code, etc. After half an hour and fifty dollars, I realized I had spent fifty dollars on this, and it was not sustainable because, if anything, the code was getting worse and worse the more the cloud fixed it. It was time for Plan B.

Plan B is embarrassing, because it involves an element of me admitting defeat, but I think Claude was actually the one who lost. Anyway, I decided that the RP2040 sound card approach was a dead-end, since I didn’t know anything about the RP2040 or sound cards, and I would have to change my strategy. I would use a USB hub with two separate devices, a sound card and a keyboard, and the hub would pair them and allow them to use a USB cable to connect to the host computer.

I could still use the RP2040 as a keyboard, so I connected it to the phone’s hook and rotary dial, and wrote some code to measure pulses and send keystrokes if the handset was placed on hook. After verifying that it was working properly, I moved on to the second and by far the most difficult part of my plan, finding an off-the-shelf sound card.

original soundcard small

The sound card I bought was completely ready.

I ran to my trusty shopping website, Amazon (the US’s AliExpress), but all the USB sound cards there were a little more expensive than necessary, so then I went straight to the source, AliExpress. There, I got just what I needed: a USB sound card for $1.69, and the sexual reference wasn’t lost on me. Well done, AliExpress.

When the sound card arrived, I tested it on my computer, saw that it worked fine, and took it apart. I removed the two 3.5mm jack connectors and added pins in their place, with the intention that the phone’s connectors would slide over the pins rather than over the phone’s metal tabs. In fact, it worked beautifully and the handset made a very strong connection with the sound card. I plugged the latter into my computer and confirmed that I could listen and record from the handset.

soundcard small

Soundcard, wrapped in electrical tape.

Then I took the USB connector apart to save space and soldered four wires where it used to be. I soldered the other part of those wires to the hub, from where I isolated the corresponding connector, and tested to see if it worked. Amazingly, it happened! The computer recognized the sound card and audio with the handset worked properly. I also connected the RP2040 keyboard to the hub, and confirmed that also worked well, sending various keystrokes while hanging (Ctrl + Shift + E for zoom, Ctrl + W for zoom, rm -rf / for teams etc).

To clarify, the RP2040 doesn’t actually know what software you’re using for the call, it just sends all the keystrokes one after the other.

guts small

insider

On the image to the right, you can see everything connected together. The red square on the right side of the phone is the USB hub, from which wires come out and go to the sound card, which is connected to the handset. At the other end, a short USB cable leads to the RP2040, which is attached to the hook and rotary dial.

It took a little trial and error to find the hook connectors, but nothing terrible. The hook is a simple switch, so the address is from a GPIO pin that gets pulled down when the phone is hung. The rotary dial similarly has a second switch that opens and closes very rapidly, a number of times equal to the number you dial. The RP2040’s software simply counts these openings and closings, waits a few milliseconds to see if there are any more of them, and if not, simulates typing the number counted by a keyboard.

Here’s a video of the entire incident, including a shot of the money hanging:

I love it.

epilogue

I hope this post makes sense, it was a bit of a stream of consciousness but it was a very simple build, nothing really involved or complicated. The most complicated part was probably the RP2040 keyboard emulation, and even that was very simple, because LLM did it himself.

If you have any feedback, questions, or hate mail, you can find me on BlueSky, or email me directly.



Leave a Comment