# fm radio

Published articles for fm radio.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Tuning in FM Radio on a 3D Printer Heatbed

DevFeed: [Tuning in FM Radio on a 3D Printer Heatbed](<https://devfeed.tech/articles/tuning-in-fm-radio-on-a-3d-printer-heatbed-10485.md>)

Original publisher: [Read original article](<https://www.jeffgeerling.com/blog/2026/tuning-in-fm-radio-on-a-3d-printer-heatbed/>)

Author: jeff@jeffgeerling.com (Jeff Geerling)

Published: 2026-05-28T14:00:00Z

Content type: opinion

Language: en

Sources: [Jeff Geerling](<https://devfeed.tech/sources/jeff-geerling.md>)

Topics: [3D](<https://devfeed.tech/topics/3d.md>), [Nanovna](<https://devfeed.tech/topics/nanovna.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [3d-printer](<https://devfeed.tech/tags/3d-printer.md>), [3d-printing](<https://devfeed.tech/tags/3d-printing.md>), [fm-radio](<https://devfeed.tech/tags/fm-radio.md>), [geerling-engineering](<https://devfeed.tech/tags/geerling-engineering.md>), [nanovna](<https://devfeed.tech/tags/nanovna.md>), [pcb](<https://devfeed.tech/tags/pcb.md>), [radio](<https://devfeed.tech/tags/radio.md>), [rf](<https://devfeed.tech/tags/rf.md>), [sdr](<https://devfeed.tech/tags/sdr.md>), [signal](<https://devfeed.tech/tags/signal.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

The article tests whether a 3D printer heatbed can act as an FM radio antenna. Measurements with a NanoVNA found several potentially suitable frequencies, although the heatbed traces are not optimized for radio-frequency use. Near a high-power FM tower, the heatbed received a clear stereo signal.

### Source excerpt

Pooch from Repkord dropped by my studio while he was in St. Louis, and asked a simple question: Can a 3D printer's heatbed act as an antenna? A fair question, as many an antenna is embedded in a PCB these days... and the traces on a PCB heatbed like the one used in Prusa's Core One look kinda like an antenna, if you squint the right way. Really, anything (or anyone) can be an antenna, given enough power.

## Redsea 0.7, a lightweight RDS decoder

DevFeed: [Redsea 0.7, a lightweight RDS decoder](<https://devfeed.tech/articles/redsea-0-7-a-lightweight-rds-decoder-21648.md>)

Original publisher: [Read original article](<https://www.windytan.com/2016/10/redsea-07-lightweight-rds-decoder.html>)

Author: Oona Räisänen (noreply@blogger.com)

Published: 2016-10-02T19:10:00Z

Content type: article

Language: en

Sources: [Oona Räisänen](<https://devfeed.tech/sources/oona-raisanen.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [dongle](<https://devfeed.tech/tags/dongle.md>), [fm-radio](<https://devfeed.tech/tags/fm-radio.md>), [json](<https://devfeed.tech/tags/json.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [sdr](<https://devfeed.tech/tags/sdr.md>), [shell-script](<https://devfeed.tech/tags/shell-script.md>), [software](<https://devfeed.tech/tags/software.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This article summarizes the current state and possible future development of redsea 0.7.6, an RDS decoder. It describes supported input streams, line-delimited JSON and hexadecimal output, and efforts to keep the C++ implementation lightweight enough for real-time use on a Raspberry Pi 1. It also notes ongoing sensitivity issues with weak signals.

### Source excerpt

I've written about redsea, my RDS decoder project, many times before. It has changed a lot lately; it even has a version number, 0.7.6 as of this writing. What follows is a summary of its current state and possible future developments. Input formats Redsea can decode several types of data streams. The command-line switches to activate these can be found in the readme. Its main use, perhaps, is to demodulate an FM multiplex carrier, as received using a cheap rtl-sdr radio dongle and demodulated using rtl_fm. The multiplex is an FM demodulated signal sampled at 171 kHz, a convenient multiple of the RDS data rate (1187.5 bps) and the subcarrier frequency (57 kHz). There's a convenience shell script that starts both redsea and the rtl_fm receiver. For example, ./rtl-rx.sh -f 88.0M would start reception on 88.0 MHz. It can also decode an "ASCII binary" stream (--input-ascii): 0001100100111001000101110000101110011000010010110010011001000000100001 1010010000011010110100010000000100000001101110000100010111000010111001 1001000010110000111111011101101011001010101110100011111101000011100010 100000011010010001011100001 Or hex-encoded RDS groups one per line (--input-hex), which is the format used by RDS Spy: 6201 01D8 E704 594C 6201 01D9 2217 4520 6201 E1C1 594C 6202 6201 01DA 1139 594B 6201 21DC 2020 2020 Output formats The default output has changed drastically. There used to be no strict format to it, rather it was just a human-readable terminal display. This sort of output format will probably return at some point, as an option. But currently redsea outputs line-delimited JSON, where every group is a JSON object on a separate line. It is quite verbose but machine readable and well-suited for post-processing: {"pi":"0x6201","group":"0A","tp":false,"prog_type":"Serious classical","ta":tru e,"is_music":true,"alt_freqs":[87.9,88.5,89.2,89.5,89.8,90.9,93.2],"ps":"YLE YK SI"} {"pi":"0x6201","group":"14A","tp":false,"prog_type":"Serious classical","other_ network":{"pi":"0x6205","

## Receiving RDS with the RTL-SDR

DevFeed: [Receiving RDS with the RTL-SDR](<https://devfeed.tech/articles/receiving-rds-with-the-rtl-sdr-21642.md>)

Original publisher: [Read original article](<https://www.windytan.com/2015/02/receiving-rds-with-rtl-sdr.html>)

Author: Oona Räisänen (noreply@blogger.com)

Published: 2015-02-08T19:10:00Z

Content type: tutorial

Language: en

Sources: [Oona Räisänen](<https://devfeed.tech/sources/oona-raisanen.md>)

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [development](<https://devfeed.tech/tags/development.md>), [dsp](<https://devfeed.tech/tags/dsp.md>), [fm-radio](<https://devfeed.tech/tags/fm-radio.md>), [linux](<https://devfeed.tech/tags/linux.md>), [perl](<https://devfeed.tech/tags/perl.md>), [receiver](<https://devfeed.tech/tags/receiver.md>), [signal](<https://devfeed.tech/tags/signal.md>), [software](<https://devfeed.tech/tags/software.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

This article explains redsea, a command-line RDS decoder that supports RTL-SDR receivers through rtl_fm. It describes the tool's dependencies and operation, including the C99 DSP receiver, signal synchronization, symbol decoding, and subsequent RDS group processing by redsea.pl.

### Source excerpt

redsea is a command-line RDS decoder. I originally wrote it as a script to decode RDS from demultiplexed FM stereo sound. Later I've experimented with other ways to read the bits, and the latest addition is to support the RTL-SDR television receiver via the rtl_fm tool. Redsea is on GitHub. It has minimal dependencies (perl core modules, C standard library, rtl-sdr command-line tools) and has been tested to work on OSX and Linux with good enough FM reception. All test results, ideas, and pull requests are welcome. Update 12/2016: Redsea has seen a lot of development since this post was written; see Redsea 0.7, a lightweight RDS decoder. What it says The program prints out decoded RDS groups, one group per line. Each group will contain a PI code identifying the station plus varying other data, depending on the group type. The below picture explains the types of data you'll probably most often encounter. A more verbose output can be enabled with the -l option (it contains the same information though). The -t option prefixes all groups with an ISO timestamp. How it works The DSP side of my program, named rtl_redsea, is written in C99. It's a synchronous DBPSK receiver that first bandpass filters ① the multiplex signal. A PLL locks onto the 19 kHz stereo pilot tone; its third harmonic (57 kHz) is used to regenerate the RDS subcarrier. Dividing it by 16 also gives us the 1187.5 Hz clock frequency. Phase offsets of these derived signals are adjusted separately. The local 57 kHz carrier is synchronized so that the constellation lines up on the real axis, so we can work on the real part only ②. Biphase symbols are multiplied by the square-wave clock and integrated ③ over a clock period, and then dumped into a delta decoder ④, which outputs the binary data as bit strings into stdout ⑤. Signal quality is estimated a couple of times per second by counting the number of "suspicious" integrated biphase symbols, i.e. symbols with halves of opposite signs. The symbols are being sa