Published: December 16, 2025

← Back to Home

Every year I set up a simple Grinch decoration that looks like it’s taking the lights off the house. It is “Fully festive with minimal effort” - it does the job with almost no fuss, but one year we decided to make it a little more theatrical by adding a tiny FM radio broadcast that plays the Grinch song in a perpetual loop.

This is how I did it using an older Raspberry Pi 3, a short length of wire on GPIO 4, and a small open-source project I forked: https://github.com/dahln/PiFmRds.


Hardware & repo

Photos:

Raspberry Pi with wire attached

The Grinch decoration in action

Preparing the audio

I purchased the Grinch song I wanted to transmit and copied it to a Music folder on the Pi (I created the folder myself):

mkdir -p /home/pi/Music
scp my-grinch.mp3 pi@<pi-ip>:/home/pi/Music/

PiFmRds accepts WAV audio, but I like keeping the original MP3s. To avoid permanently converting files I stream a live conversion using sox and pipe the WAV output into the transmitter binary.

The command I run

From the Pi’s home directory (the PiFmRds binary lives in PiFmRds/src after building):

while true; do \
  sox -t mp3 /home/pi/Music/*.mp3 -t wav - | sudo ./PiFmRds/src/pi_fm_rds \
    -freq 107.3 -ps GRINCH -rt 'GRINCH' -pi GRCH -audio -; \
done &

Notes:

Build & wiring summary

  1. Clone my fork and follow the README to install dependencies.
  2. Build with make (run in the PiFmRds directory).
  3. Attach a short wire to GPIO 4 (this acts as the antenna). Keep the wire short and away from people.

A couple of practical reminders

Keep shining!