matt.toigo

WHY CONSUME WHEN YOU CAN CREATE?

Old Radio Rebuild

December 4th, 2021 build

Radio Shell

I have a 1959 Vintage Zenith Vacuum Tube Radio which I really dig, but it started to get terrible reception and likely needed work. I fix a lot of stuff, but decided I was going to call it on this one and didn't feel like figuring out how to restore a 60 year old radio. I was thinking about gutting the radio and rebuilding it with new electronics in it, but decided it was a little too cool as it was and a friend was interested in rebuilding it properly so I gave it to him.

I had already started thinking about how I would rebuild it, done some research, and wanted to, so I ended up looking for a slightly less vintage radio to gut instead. On ebay I found a busted GE 7-4115B from around 1980 which I liked the look of and was cheap. Size wize it seemed big enough to fit the components I'd need to put in it and wasn't too massive for where I wanted it in my kitchen. I pulled everything out of the radio being careful to keep the face of it looking the same and also saved the pieces supporting the volume knob. There are also some prefab raspberry pi projects which let you do streaming, bluetooth, and spotify streaming, but I didn't want all that and wanted it to work exactly how I wanted.

Planning

I wanted something really simple to use. Simple meaning that no phone/computer are required and it works every time. My goals for building it were:

Components

Radio

Computer

I'd done some work with a full size raspberry pi on the arcade cabinet and also used a smaller raspberry pi zero for a CUPS print server to convert a normal laser printer to a network printer. All it would really need to do was stream music so it seemed like a pi zero would have plenty of power for that so I ordered one.

Amp

I wanted to try to use the stock speaker in the radio which meant I'd need to connect the two speaker wires to a stereo mini out from the raspberry pi. I looked at some larger amps, and then found this great cheap little one. It also happened to support Bluetooth which I hadn't planned on making work, but seemed like a nice bonus for no effort.

Connecting Everything

Radio

I wanted to get everything working outside of the radio first obviously before I crammed it all in there. Luckily everything worked as expected and I had sound from the pi playing through the radio speaker without too many hassles.

  1. I flashed raspbian to a micro SD card, booted up the pi, plugged some headphones into it and made sure it was sending audio out.
  2. The pi zero has HDMI mini out for audio, so this converter was necessary to switch it to stereo mini out which the amp would need.
  3. A standard 1 ft stereo mini cable to connect the HDMI converter to the amp.
  4. The pi outputs 2 channel stereo and the amp is designed to be wired to two speakers, but the radio only has one speaker. This converter changes the signal from stereo to mono so we get everything we should over the one speaker rather than just half of the audio.
  5. The amp is wired to the two stock speaker wires on the one speaker in the radio shell.
  6. The pi and the amp both take standard power adapters.
  7. The pi and amp just run power cords to a small power strip that sits in back. To turn everything on/off you just flip the single switch on the power strip.
  8. I had some pieces of acrylic laying around so I cut and drilled them and used small brass standoffs to connect the pi and amp boards to.
  9. Very luckily the original volume knob on the radio slid right into the knob mount on the amp once the amp was glued down in the right place.

Programming the Raspberry Pi

Radio

There are two scripts running on the Raspberry Pi and a single file used to track which stream was played last. All of these files live at /home/pi/radio/ and you can check them out here on github. The two scripts are run on startup by placing the following entries in /etc/rc.local

/etc/rc.local

/home/pi/radio/play.sh
python3 /home/pi/radio/button.py

/home/pi/radio/play.sh

Source at: https://github.com/mtoigo/pi-radio/blob/main/play.sh
The first is a script to play a streaming station. It reads from an array of streaming URLs, uses a local file (current_stream) to track which one was last played, kills any existing versions of the player, plays the next stream, and then writes back to the local file to track the new station is being played. This is used to play music on startup and anytime it is called again it will play the next station.

/home/pi/radio/button.sh

Source at: https://github.com/mtoigo/pi-radio/blob/main/button.py
The second script is used to wait for a button press and then run play.sh to switch to the next station. I set this up using this tutorial which I used previously to setup a shutdown switch on my arcade cabinet. I drilled a hole in the side of the radio and then used this button and connected it to the GPIO pins on the pi. I called a friend who's much better at small electronics (and had all the supplies) than I am so he helped solder the pins onto the pi, solder some of the button connections, and tidied it up nicely with some heatshrink.

/home/pi/radio/current_stream

You'll need to create a file at /home/pi/radio/current_stream with just the character 0 in it and make sure the file is writable using chmod.

Remote

One of the entire points of building the radio the way I did was that I wanted it to work without a cell phone, but after setting it up I would be sitting down eating breakfast and want to change the station, but didn't feel like geting up to press the button. I happen to get really lucky and there's an easy solution without much work. If you buy the pro version of the mobile SSH client Juice for Android, it has support for a feature called snippets. Assuming you configured the pi with a reserved IP on your router, you can save the connection details in Juice and then automatically run a snippet whenever you connect. I setup the snippet /home/pi/radio/play.sh && exit and then it lets you add a shortcut to your homescreen. The end result is a single icon on my phone homescreen that I can tap to change the station.

Finishing Up

Radio

Overall everything turned out great. I like how the old radio looks sitting on a shelf in my also old looking kitchen. I flip a switch to turn it on in the mornings without having to mess with bluetooth on my phone and can easily change stations. It takes about 45 seconds to boot up and only takes about 2 seconds for a station to switch after pressing the button or icon on my phone homescreen. This setup is nice because it will also work perfectly for any old radio or stereo/speaker cabinet. The following things maybe could have been a little better, but I can live with them.