# 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","