Supported RDS features - windytan/redsea GitHub Wiki
Redsea outputs UTF8-encoded newline-delimited JSON, which means every line is a valid JSON object containing one or several of the properties below.
The line-per-group design has some limitations; for instance, multi-group data like radiotext is not displayed in real time unless --show-partial is specified.
Meta
These fields are locally generated descriptions of the group or stream.
Name
Type
Description
bler
integer
Block error rate, or the percentage of blocks that had errors before error correction, when --bler is specified. Averaged over the last 12 groups. For hex input, this is the percentage of missing blocks.
channel
integer
For multi-channel MPX input, the number of the channel this group was received on (zero-based).
raw_data
string
Raw group data in hexadecimal format (enable with -R or --show-raw).
Which data stream this group was received on (0 to 3). Only if --streams was specified.
time_from_start
real number
(v1.3+) The position of the first bit of each group in the input file, in seconds (enable with --time-from-start) – see Time and timestamps.
Basic info
Name
Type
Description
callsign
string
(USA/RBDS only) The station's call sign letters, back-calculated from the PI code.
callsign_uncertain
string
(USA/RBDS only) Call sign letters that may be incorrect due to incompatibility with RDS-TMC (all stations with a PI code where the first nybble is a 1).
group
string
Group type for this group.
pi
string
The station's 16-bit Program Identification code as a hexadecimal number (0xABCD). This is often, but not always, the Block 1 or Block 3 of the group. If a spurious error corrupts the PI code a cached version will be used. Use --show-raw to see the original data.
prog_type
string
Type of programming running at the moment on this station.
tp
boolean
Traffic Program flag - true if this station broadcasts traffic announcements.
Group 0A, 0B
Name
Type
Description
alt_frequencies_a
array of integers
Alternative frequencies for this program (kHz, method A).
alt_frequencies_b.tuned_frequency
integer
Tuned frequency (kHz) that this alternative frequency list is for.
alt_frequencies_b.same_programme
array of integers
These stations broadcast the same programme.
alt_frequencies_b.regional_variants
array of integers
A regional variant is running on these frequencies.
is_music
boolean
Music/speech flag; true if music is currently playing.
partial_alt_frequencies
array of integers
When --show-partial is specified, the currently accumulated list of alternative frequencies is printed whenever more AFs are received.
partial_ps
string
When --show-partial is specified, the value of the internal Program Service name variable is printed for every 0A group.
ps
string
Program Service name; an 8-character identifier for this station.
ta
boolean
Traffic Announcement flag. If this and tp are both true, a traffic announcement is currently being broadcast on this program. If only ta is true, this program specifies a traffic information frequency via EON.
Group 1A, 1B
Name
Type
Description
country
string
ISO 3166-1 country code for this program.
has_linkage
boolean
This station is currently broadcasting a common program with other stations identified by EON PI. (This is the Linkage Actuator bit.) Removed in recent versions of the RDS standard. Some stations may use this for other purposes now.
in_house_data
array of uint16_t
The contents of these bits are defined by the operator.
language
string
Language of this program, in English. Removed in recent versions of the RDS standard. Some stations may use this for other purposes now.
prog_item_number
integer
A numeric identifier for the currently running program. Removed in recent versions of the RDS standard. Some stations may use this for other purposes now.
prog_item_started
object
The Program Item number decoded as its starting time with day of the month (day) and 24-hour time of day (time). Removed in recent versions of the RDS standard. Some stations may use this for other purposes now.
Group 2A, 2B
Name
Type
Description
radiotext
string
A RadioText message of up to 64 characters. Trailing whitespaces are trimmed.
enhanced_radiotext
string
A RadioText-like text channel with UTF-8 support. Trailing whitespaces are trimmed.
partial_radiotext
string
When --show-partial is specified, the value of the internal RadioText variable is printed for every 2A group.
Group 4A
Name
Type
Description
clock_time
string
Date and time at the transmitter, formatted to RFC 3339. If present, this field is sent once at every minute edge, +/- 0.1 sec. See Time and timestamps.
Group 5A, 5B
Transparent data channels can be used to send any kind of freeform data. Some stations appear to treat the "channels" as addresses to a long string of text, so this interpretation is used here, too.
Name
Type
Description
transparent_data.address
integer
Address of this channel (0–31).
transparent_data.as_text
string
The data in this group as text.
transparent_data.raw
string
The data in this group as hexadecimal.
transparent_data.full_raw
string
When 128 bytes are received contiguously, the channels will be concatenated and printed here.
transparent_data.full_text
string
When 128 bytes are received contiguously, the channels be concatenated and printed here (interpreted as radiotext).
Group 10A
Name
Type
Description
pty_name
string
Program type name: A description for the PTY sent as text.
Group 14A
Some stations transmit information about programmes on other channels. This will be under the other_network object in group 14A.
Name
Type
Description
other_network.alt_frequencies
array of integers
Alternative frequencies for the program, often including the current carrier frequency.
other_network.broadcaster_data
string
Broadcaster-defined freeform data.
other_network.has_linkage
boolean
The other station is currently broadcasting a common program with other stations identified by EON PI. (This is the Linkage Actuator bit.)
other_network.kilohertz
integer
Carrier frequency for the other station.
other_network.linkage_set
integer
When has_linkage is true, this station is currently transmitting common audio with other stations having the same linkage_set number and country code.
other_network.pi
string
The other station's 16-bit Program Identification code as a hexadecimal number ("0x12AB").
other_network.prog_item_number
integer
A numeric identifier for the currently running program.
other_network.prog_item_started
object
The Program Item number decoded as its starting time with day of the month (day) and 24-hour time of day (time).
other_network.prog_type
string
Type of programming running at the moment on the other station.
other_network.ps
string
Program Service name; an 8-character identifier for the other station.
other_network.ta
boolean
Traffic Announcement flag. A traffic announcement is currently being broadcast on the other station.
Group 15A
Name
Type
Description
long_ps
string
Longer alternative to PS with UTF-8 support. Trailing whitespaces are trimmed.
partial_long_ps
string
When --show-partial is specified, the value of the internal Long PS variable is printed for every 15A group.
ODA info
These will be under the open_data_app object.
Name
Type
Description
open_data_app.oda_group
string
The group type that carries this Open Data Application.
open_data_app.app_name
string
A human-readable name for this Open Data Application.
open_data_app.message
array of uint16_t
Application-specific data.
open_data_app.non_file_oda_data
string
Hex string of RDS2 data in group C.
open_data_app.file_oda_data
string
Hex string of RDS2 data in group C.
open_data_app.app_data
array of int
In group C
open_data_app.data
array of int
In group C
In case of an unsupported ODA app, raw data is printed in the unknown_oda object:
Name
Type
Description
unknown_oda.app_name
string
A human-readable name for this Open Data Application.
unknown_oda.raw_data
string
Hex-encoded raw data, grouped by spaces. Bad data is replaced with dashes.
RadioText Plus
RadioText+ (radiotext_plus) is broadcast by some stations to tag substrings of RadioText, like artist names and song titles.
Name
Type
Description
radiotext_plus.item_running
boolean
True if the item this RT+ is referring to is currently running.
radiotext_plus.item_toggle
integer
Alternates between 0 and 1 to indicate that the item changed.
radiotext_plus.tags
array of objects
One or more substrings tagged with content-types (see below).
tags is an array of objects like so:
Name
Type
Description
content-type
string
One of many available RT+ content-types for this substring, such as programme.homepage, item.composer, or info.news.
data
string
RadioText content tagged with the content-type.
TMC
Some stations broadcast traffic messages via TMC. An appropriate location database is required to make sense of the location codes. Additionally, the location codes may be encrypted.
Redsea does not have a safety classification of any kind and should never be used for navigation or relied upon for emergency information. See the license.
System info
Name
Type
Description
tmc.system_info.activity_time
integer
(TMC enhanced mode) Position of the start of the activity/window sequence, referenced from the minute's edge, in seconds.
tmc.system_info.delay_time
integer
(TMC enhanced mode) The time in a time slot during which 8A groups may be transmitted (seconds).
tmc.system_info.encryption_id
integer
Encryption ID for an encrypted service.
tmc.system_info.gap
integer
Number of groups between successive 8A groups; for battery saving purposes.
tmc.system_info.is_encrypted
boolean
True if the location information of messages is encrypted.
tmc.system_info.is_on_alt_freq
boolean
True if alternative frequencies carry TMC.
tmc.system_info.scope
array of string
One or more of inter-road, national, regional, urban.
tmc.system_info.service_id
integer
Identifies this TMC service.
tmc.system_info.window_time
integer
(TMC enhanced mode) The time in a time slot during which transmission of 8A groups is suspended (seconds).
Message
Name
Type
Description
tmc.message.coordinates
array of objects
List of coordinate pairs along the affected route. A coordinate pair has a North latitude (lat) and East longitude (lon) as floating-point numbers. (requires location database)
tmc.message.description
string
Human-readable description of the event.
tmc.message.direction
string
Whether this event affects only one direction (single or both).
tmc.message.encrypted_location
uint16_t
Location code in its encrypted form.
tmc.message.event_codes
array of integers
List of event codes, or references to the event code list.
tmc.message.extent
string
The event affects this many points from the point location. This is represented as a string to allow for negative-direction zero-extent events (-0).
tmc.message.location
integer
Location code, or reference to the location database.
tmc.message.road_number
string
Human-readable road number for the event (requires location database).
tmc.message.span_from
string
Human-readable starting point for the event, for instance an intersection on a highway (requires location database).
tmc.message.span_to
string
Human-readable end point for the event, for instance an intersection on a highway (requires location database).
tmc.message.update_class
integer
Message replaces previous messages of this class.
tmc.message.urgency
string
Message urgency: normal (none), urgent (U), extremely urgent (X).
RDS/DAB cross-referencing
Name
Type
Description
dab.ensemble_id
string (0xABCD )
dab.channel
string
dab.kilohertz
integer
dab.mode
string
RFT
RFT is a type of file transfer over RDS2 streams that can be enabled with --streams. A typical RFT application is sending the station logo as an image.
Sometimes these lines will get very long and copy-pasting from terminal is not easy. You can use this string
of commands to save the first file in a pre-recorded signal to disk: