Standalone SSTV Decoder on a Pi Pico

What if you could watch pictures come out of thin air — no computer, no fancy SDR, just a $4 microcontroller and a bit of code? This project turns a Raspberry Pi Pico into a standalone SSTV decoder that takes an audio feed from your radio and displays images live on a small TFT screen. It’s one of those “because I can” builds that shows how far a simple ADC, some clever DSP tricks, and a few kilobytes of RAM can go.

The idea is simple: instead of piping audio into MMSSTV or QSSTV on a PC, the Pico does all of the tone detection itself. No Linux, no drivers, no waterfall. Just plug in audio and let the board paint the picture one line at a time. It’s surprisingly reliable and makes a fun lightweight tool for field ops, POTA, or just casual weekend tinkering on 20 meters.

What Is SSTV?

Slow Scan Television (SSTV) is a mode designed for transmitting still images over narrowband radio channels. Instead of sending video like analog TV, it sends one image over the span of roughly 30 to 120 seconds depending on mode. The signal uses audio tones between 1200 Hz and 2300 Hz, which can ride along a standard SSB transmission.

Because it's simple and extremely durable, SSTV is still popular today. You’ll find plenty of activity on 14.230 MHz and 7.171 MHz, and the ISS occasionally sends SSTV during special events. Decoding the signal feels a little like watching a picture being faxed over the air.

Each SSTV mode defines timing, sync pulses, and tone frequency mapping. The receiver tracks those tones and turns them into color and brightness values for each pixel.

Why the Pico?

The Raspberry Pi Pico hits a sweet spot: it’s tiny, easy to program, and has enough horsepower to perform FFTs fast enough for SSTV. Its dual ARM cores give you room to sample audio on one core and update the TFT display on the other without dropping frames.

With just a handful of wires, you turn a bare microcontroller into a portable SSTV terminal. No OS, no boot time. Just power it up, feed it audio, and the decoding starts in seconds.

Parts You’ll Need

  • Raspberry Pi Pico (or Pico W)
  • 1.8″ ST7735 or similar SPI TFT display
  • 3.5 mm audio jack for input
  • Voltage divider resistors (to keep input under 3.3 V)
  • Optional: small speaker for pass-through monitoring
  • Breadboard or jumper wires

Tip: The Pico’s ADC maxes out at 3.3 V. If you’re pulling audio from a radio’s speaker output, use at least a 10:1 divider to avoid clipping or damaging the board.

How It Works

The Pico samples incoming audio at a fixed rate and runs an FFT on small chunks of data. For each pixel column, the firmware identifies which frequency is strongest and maps it to the expected tone for the current SSTV mode.

Once the decoder identifies sync pulses, it locks into a line and starts reading pixel tones. The Pico draws the image to the TFT line-by-line, with the top of the picture appearing almost immediately. Even with the Pico’s limited RAM, the firmware streams each line directly to the display, avoiding the need to buffer a full image in memory.

Supported modes currently include Martin M1, Martin M2, Scottie S1, and a few experimental test patterns.

Schematic and Code

You’ll find the wiring diagram, source code, and the ready-to-flash UF2 file on GitHub:

View Project on GitHub

Once flashed, power the Pico, connect audio from your rig, and tune around the usual SSTV watering holes. With a good clean signal, images come through with surprising clarity.

Optional Add-Ons

  • 3D-printed case for portable operation
  • 18650 battery module for cordless use
  • OLED or LED display for signal strength or SNR
  • Audio passthrough jack for real-time monitoring

You don’t need to transmit to test anything. Use the SSTV audio samples included in the video above and play them straight into the Pico — it will decode them the same way it handles a live on-air signal.

Troubleshooting

The decoder loses sync or the picture slants sideways

This usually means the Pico isn’t getting a clean enough sync pulse. Lower the audio level slightly and make sure your radio is in USB mode with no filters enabled. Noise reduction and heavy AGC can also confuse the tone detector.

The image colors look wrong or washed out

Clipping at the ADC is the most common cause. If your radio’s audio is too hot, the tone peaks flatten and the decoder misreads their positions. Add more attenuation to your voltage divider or turn your rig’s volume down until the colors look normal.

The picture has horizontal gaps or broken lines

That’s typically the Pico missing a few FFT windows. This can happen if the USB power source is noisy or your wiring picks up interference. A short, well-shielded audio cable helps a lot here. Battery powering the Pico often cleans this up too.

The decoder never locks on a mode

Verify the frequency. Most HF SSTV is sent on 14.230 MHz USB, and being even 200–300 Hz off-frequency can throw off the tone spacing. If your radio allows it, switch to a wider filter or turn off DSP features like notch/NR.

Weak signals decode poorly or not at all

SSTV works best with a strong, clean SSB signal. If you’re pulling in a marginal one, try widening your filter and reducing RF gain slightly to lower the noise floor. An external antenna or preamp can also make a big difference.

I hear the tones, but the Pico displays only noise

Double-check your ground. A missing or loose ground between the radio and the Pico leads to unpredictable ADC readings. Also make sure you're feeding audio into the correct Pico pin the firmware expects.

FAQ

Do I need any special filters or isolation to feed audio into the Pico?

No. For most radios, a simple resistor divider is enough. If your radio has a loud speaker output, just make sure to keep the level below 3.3 V at the Pico’s ADC pin.

What SSTV modes does the firmware support?

Right now it handles Martin M1, Martin M2, and Scottie S1. The firmware is open source, so adding more modes is possible if you want to tinker.

Can this decode ISS SSTV transmissions?

Yes, as long as the ISS is running one of the common SSTV event modes. You just need a decent VHF antenna and the audio fed into the Pico.

Does the Pico store received images?

The current firmware renders images directly to the TFT screen without saving them. Adding SD card storage is technically possible, but not included by default.

Will this work with a Baofeng or other handheld?

Yes, as long as you pad the speaker output down. Some handhelds are a little noisy, so expect mixed results unless the signal is strong.

Final Thoughts

Watching a full-color image materialize from nothing but audio tones still feels a bit like magic, especially when the entire process runs on a microcontroller smaller than a matchbox. The Pico makes a perfect SSTV workbench companion for field days, POTA, or just casual tinkering.

If you enjoy lightweight radio projects, this one is worth the hour it takes to build. It’s cheap, fun, and brings a classic ham radio mode to life in a new way.

Loading files...