Skip to content

Supported RDS features

Oona Räisänen edited this page Aug 20, 2024 · 25 revisions

Redsea outputs 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 immediately unless --show-partial is specified.

The schema.json is an attempt at being an up-to-date version of the data types.

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).
rx_time string Time at decoder (enable with --timestamp) – see Time and timestamps.

Basic info

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.
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).
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.
country string ISO 3166-1 country code for this program.
enhanced_radiotext string A RadioText-like text channel with UTF-8 support. Trailing whitespaces are trimmed.
group string Group type for this group.
has_linkage boolean This station is currently broadcasting a common program with other stations identified by EON PI. (This is the Linkage Actuator bit.)
in_house_data array of uint16_t The contents of these bits are defined by the operator.
is_music boolean Music/speech flag; true if music is currently playing.
language string Language of this program, in English.
long_ps string Longer alternative to PS with UTF-8 support. Trailing whitespaces are trimmed.
partial_alt_kilohertz array of integers When --show-partial is specified, the currently accumulated list of alternative frequencies is printed whenever more AFs are received.
partial_long_ps string When --show-partial is specified, the value of the internal Long PS variable is printed for every 15A group.
partial_ps string When --show-partial is specified, the value of the internal Program Service name variable is printed for every 0A group.
partial_radiotext string When --show-partial is specified, the value of the internal RadioText variable is printed for every 2A 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_item_number integer A numeric identifier for the currently running program.
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).
prog_type string Type of programming running at the moment on this station.
ps string Program Service name; an 8-character identifier for this station.
pty_name string Program type name: A description for the PTY sent as text.
radiotext string A RadioText message of up to 64 characters. Trailing whitespaces are trimmed.
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.
tp boolean Traffic Program flag - true if this station broadcasts traffic announcements.

Other Networks (EON) info

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.

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.

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

Transparent data channels

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).