August 26th, 2024 @ Christian Bertram’s website

Ericofon internet radio

The unmodified green Ericofon with its original grey cable

The above is a 1971 Ericofon, a telephone with an iconic sculptural design. The Ericofon, being the first one-piece handheld telephone, uniquely integrated its rotary dial into the handset.

The unmodified Ericofon laying on its side, exposing its dial

During May 2024, I turned my unit into an internet-connected time-traveling radio. By dialing a country code and a year, I can now listen to a piece of music from the requested country and decade. A tiny computer inside the phone reads the dial, fetches a song, and plays it. This was inspired by Caroline Buttet’s similar project using a classic desk phone and a map. On this page, I share my experience with my version of the project.

History

In the 1950s, Ericsson Company of Sweden released the Ericofon, which achieved widespead success, selling more than 2.5 million units. Among the Swedish people, the telephone earned the name “Cobra”. The phone is considered to have had a significant influence on industrial design, and has been exhibited by the Museum of Modern Art. For incredible amounts of information on the Ericofon, see Richard Rose’s website. I bought my unit through a Danish online used goods marketplace.

Opening it up

After unscrewing four screws at the base of the phone, it’s easy to open it up.

The Ericofon laying on its side with the base detached. Internal mechanics and electronics attached to the base are showing.

The top-most electronics form the ringer mechanism, which I removed to make room for the computer. This exposes the dialing mechanism below, consisting largely of gears and mechanically actuated switches.

The base of the Ericofon with the ringer removed.

Interestingly and usefully, the phone body turned out to contain a paper schematic.

The internal paper schematic of the Ericofon.

Fitting a computer inside

My computer of choice was the Raspberry Pi Zero 2 W, a 65mm × 30mm single board computer with built in WiFi capability. This computer crucially has General-Purpose Input/Output (GPIO) solder pads, to which I’ve attached five wires.

The Raspberry Pi Zero 2 W with soldered on wires.

Two wires deliver power and ground. One wire is an input connected to the big red button (the hang-up button) at the base of the Ericofon. Another wire is an input connected to a dial-triggered switch. A final wire is a Pulse-Width Modulated (PWM) output connected to the speaker through the low pass filter pictured below. The Raspberry Pi Zero 2 W doesn’t have built in analog sound output, but the combination of a PWM GPIO output and a low pass filter works fine. I set up the audio ouput following a nice Adafruit tutorial.

The low pass filter constructed from two capacitors and two resistors on a protoboard.

I was hoping to provide power through the original Ericofon cable, but this didn’t work out. The conductors in the cable were very thin, causing a total resistance of over one ohm. Halfway through booting, the computer would draw enough current for the resulting voltage drop across the cable to pull the voltage across the computer below its operating range, causing it to crash. The original phone operated at higher voltages and much lower currents, so the thin conductors make sense. I considered putting some serious voltage conversion inside the shell, but the total power might still make the cable too hot. I just chose to replace the original coiled grey cable with a white USB cable that has a thicker power conductor.

At boot, the Raspberry Pi automatically connects to WiFi, after which I can obtain a remote terminal connection through SSH. I wrote a Python script acting as a state machine reading inputs and controlling output.

Reading the dial

To have the Raspberry Pi read the digits dialed into the phone, I first had to gain an understanding of the dialing mechanism. The phone network handles dialing by following a very simple protocol called pulse dialing. When I dial e.g. a three, the phone sends three pulses on the line. (Dialing zero sends ten pulses.) I’ll admit I wasn’t old enough to know this already. Luckily, it was pretty self-explanatory when playing with the mechanism: Dialing a three causes a switch to open three times.

To let the computer read the pulses, I simply had to wire an input to the switch. The mechanism turned out to throw me one curveball, though. When I also wired an input to the hang-up button, I accidentally shorted the dialing pulse switch. In an effort to preserve the phone, I was trying to avoid modifying the original electronics, other than screwing parts loose, and attaching GPIO wires to original connectors, but after studying the schematic, I deemed this impossible. Soldering a small wire between two points allowed me to monitor both switches.

Fetching music

Obtaining music from many countries and decades is of course an important part of this project. Instead of trying to curate it myself, I used an amazing website called radiooooo.com. Please go check it out! You can explore their collection of music by travelling around their world map and list of decades from 1900 to present. It’s great fun. They don’t have an API, but by making the right HTTP calls, I was able to fetch songs programatically. I hope they don’t mind.

Before playing the music, there are some other sounds to play. When the phone is picked up and ready, a dial tone is played, and after dialing, ringback tones are played. If no music matching the country and decade was found, a busy tone is played. I generated these tones using Audacity, trying to match how they would sound in 1970s Denmark.

Wiring it all up

I wired power to the computer, inputs to the switches, output to the filter, and filter to the speaker.

The opened Ericofon with the Raspberry Pi wired up.

Now I just had to close it up. Originally, I planned to fit the computer inside the neck of the Ericofon. It didn’t fit, but luckily it did fit into the base, atop the dialing mechanism. After reattaching the base to the body using the four screws, the only external sign of my fiddling was the new cable.

Source code

I’ve published the code running on the Raspberry Pi in a GitLab repo. When the Ericofon is picked up, GPIO3 is driven low, causing boot if the computer is not already on. I’ve set up the script to run automatically after boot. When the phone has been standing still for an hour, the script shuts down the computer.

Video demonstration

Here I’m dialing country code 34 (Spain) and 1962.

Thanks for following along :)