This guide walks you through assembling a compact, low-power internet radio that streams stations reliably over Wi‑Fi. You’ll end up with a small device that plays thousands of online stations through your speakers or headphones, and you’ll learn how to make the connection stable enough for daily use. No soldering or advanced networking is required—just basic computer skills and a few inexpensive parts.
What You’ll Need
- A Raspberry Pi Zero 2 W (or any Raspberry Pi with Wi‑Fi), with a microSD card (8 GB or larger)
- A USB Wi‑Fi adapter if your Pi lacks built‑in wireless (not needed for Zero 2 W)
- A USB power supply (5V/2A recommended) and a micro‑USB or USB‑C cable
- A 3.5mm audio cable or USB speakers/headphones
- Another computer to write the SD card and access the Pi remotely
- An Ethernet cable and a USB‑to‑Ethernet adapter (optional, for initial setup)
- Free software: Raspberry Pi Imager, and an OS image (we’ll use Raspberry Pi OS Lite)
Step-by-Step
- Flash the OS onto the microSD card. Download Raspberry Pi Imager to your computer. Insert the microSD card, open Imager, choose “Raspberry Pi OS Lite (32‑bit)” (no desktop needed), select your SD card, and click Write. Wait for it to finish.
- Enable SSH and Wi‑Fi before first boot. After flashing, the SD card will appear as “boot”. Create a file named
ssh(no extension) in the root of that partition. Also create a file namedwpa_supplicant.confwith the following content, replacingYOUR_SSIDandYOUR_PASSWORD: - Boot the Pi and find its IP address. Insert the SD card, connect power, and wait about a minute. On your router’s admin page, look for a new device named “raspberrypi” and note its IP. If you can’t find it, use an Ethernet cable temporarily or use the Raspberry Pi Imager’s advanced options to set a static IP.
- Connect via SSH. From your computer, open a terminal (or use PuTTY on Windows) and type
ssh pi@<IP_ADDRESS>. The default password israspberry. Change it immediately withpasswd. - Update the system. Run
sudo apt update && sudo apt upgrade -y. This ensures you have the latest security patches and software. - Install an internet radio client. A lightweight and reliable choice is
mpvplusyoutube-dl(oryt-dlp) for stream handling. Install withsudo apt install mpv yt-dlp. - Test audio output. Connect your speakers or headphones to the 3.5mm jack (or USB). Run
speaker-test -c 2to confirm sound. If silent, runsudo raspi-config→ “System Options” → “Audio” and select the correct output. - Add your favorite stations. Create a playlist file, e.g.,
stations.m3u, with one stream URL per line. You can find direct stream URLs from station websites or directories like radio-browser.info. For example:http://stream.example.com:8000/stream. - Play a station. Test with
mpv --no-video <URL>. If it plays, you’re ready to automate. - Make it auto‑start on boot. Create a systemd service so the radio starts automatically. Write a script
radio.shthat runsmpv --no-video --playlist=stations.m3u, then create a service file at/etc/systemd/system/radio.servicewith the proper ExecStart line, enable it withsudo systemctl enable radio. - Set up a simple remote control (optional). Install
socatand create a small script that listens for commands like “next” or “stop”. Or use an IR remote with LIRC if you prefer physical buttons. - Optimize Wi‑Fi reliability. Place the Pi near your router, avoid microwave interference, and consider setting a static IP in your router’s DHCP reservation to prevent address changes.
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US
network={
ssid="YOUR_SSID"
psk="YOUR_PASSWORD"
key_mgmt=WPA-PSK
}
Common Mistakes
- Forgetting to create the
sshfile—then you can’t connect remotely. - Using the wrong country code in
wpa_supplicant.conf—Wi‑Fi may not work. - Choosing a desktop OS image—it wastes resources and complicates headless setup.
- Not updating the system—old software may have bugs that cause stream dropouts.
- Assuming every stream URL is permanent—some change; test regularly.
Tips
- Use a wired Ethernet connection for the most stable listening, if possible.
- For better audio quality, use a USB DAC (digital‑to‑analog converter) instead of the built‑in 3.5mm jack.
- Set up a cron job to reboot the Pi daily at 4 AM—clears any memory leaks and refreshes network connections.
- Keep a backup of your SD card image so you can restore quickly if the card corrupts.
- If you want to control it from your phone, install a simple web interface like
myMPDorympd.
Troubleshooting
- No sound at all: Check the audio output with
speaker-test. If silent, runalsamixerand unmute channels (press M). Also verify the volume is not at zero. - Stream buffers or cuts out: Test with a different station; if all stutter, your Wi‑Fi signal is weak. Move the Pi closer to the router or use an Ethernet adapter. Also try a lower‑bitrate stream.
- Can’t SSH in: Confirm the Pi is on the network by pinging its IP. If no response, re‑check the
wpa_supplicant.conffile for typos. You may need to re‑flash the SD card. - Service doesn’t start on boot: Check the service status with
systemctl status radio. Look for errors in the script path or permissions. Make the script executable withchmod +x. - Audio is choppy only on certain stations: Some stations have unstable servers; try a different stream or lower the buffer size in mpv by adding
--demuxer-max-bytes=1M.
Frequently Asked Questions
Can I use an old smartphone instead of a Raspberry Pi?
Yes, but it’s more complex and less reliable. You’d need to keep the phone charged and running a radio app, and battery swelling is a risk if left plugged in 24/7.
How many stations can I add?
As many as you want—the playlist file can hold hundreds of URLs. The only limit is the Pi’s memory, which is plenty for thousands.
Do I need a microphone or camera?
No, the radio is receive‑only. You don’t need any input devices.
Can I listen to podcasts or audiobooks?
Yes, if the source provides a direct audio stream URL. Podcast episodes often have direct MP3 links that mpv can play.
Will it work with my Bluetooth speaker?
Yes, you can add a Bluetooth adapter and pair it, but the setup is more involved. For simplicity, use a wired speaker or a USB speaker that acts as a sound card.
How do I change stations without a keyboard?
You can use a simple web interface like ympd that lets you control mpv from your phone’s browser. Or set up physical buttons using GPIO pins.
Related
Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.
More cards in this drawer
- Hide PHP Version HTTP Header: How To
- CentOS Stream for Developers: A Practical Guide
- How to Replace a Game Controller Battery Safely
- Man-Sized 3D Printer? Why You Probably Don’t Need One100.0 cm³/h
- Scroll Horizontally with Mouse Wheel by Holding Shift5.00 min/km
- iPadOS 16 Supported Devices: Full List