Historical Radio Collection with a Modern Setup

Report: Historical Radio Collection with a Modern Setup

I own an extensive collection of historical radios, featuring both AM and FM receivers. The devices date from 1925 to 1965 and are all fully operational. It is of utmost importance to me that no modifications are made to the radios, preserving their historical integrity and original sound. Especially for devices that are 80 to 100 years old, maintaining their authenticity and museum value is a priority.

Authentic Music for Authentic Devices

In my view, modern music does not suit these historical radios, as it does not align with the sound aesthetics of the time. Instead, I use the web radio station kbrd.org from the USA, which offers a program perfectly tailored to music from 1925 to 1965. This music sounds remarkably good on the old radios – an experience that is incomparable to modern speakers or playback devices.

To provide my radios with this authentic sound, I stream the station 24/7 using a Raspberry Pi running Volumio software. The audio signal is then transmitted to the radios via custom-built transmitters.

Technical Setup

  1. AM Transmitter (Medium Wave):
    The audio signal from the Raspberry Pi is fed into a medium-wave transmitter with 1-watt (1000 milliwatt) output power on the frequency 684 kHz. This allows the historical AM radios in my collection to receive the signal without requiring any modifications to their original design.

  2. FM Transmitter (VHF):
    Additionally, I use the ELV SUP2 FM transmitter, which transmits at around 10 milliwatts and has a range of 100 to 300 meters. This transmitter enables me to supply the FM radios in my collection with the web stream. The transmitter is controlled via its USB interface, allowing the display of RDS data (e.g., station name and song title) on FM-capable radios.

Automation and Service

A custom Bash script handles the control of the transmitters and ensures the reliable and automated operation of both the medium-wave and FM transmission. This script runs as a service on the Raspberry Pi and starts automatically with the system. An advantage of this solution is its independence from specific music software like Volumio, making it versatile and adaptable.

Here is the script:

#!/bin/bash

# Configurable parameters
SERIAL_PORT="/dev/sup2"
BAUD_RATE=19200
DATA_BITS="cs8"
STOP_BITS="-cstopb"
PARITY="parenb -parodd"
MAX_RETRIES=4          # Maximum retries
ACK_SEQUENCE="42 65 0" # ASCII for *A\0
ACK_TIMEOUT=1          # Acknowledgment timeout in seconds
SEND_INTERVAL=15       # Interval between transmissions in seconds
VERBOSE=3              # Verbosity level (0=none, 3=detailed)

# List of band names to keep unchanged
BANDNAME_EXCEPTIONS=("AC/DC" "Pink Floyd" "Led Zeppelin" "Guns N' Roses")

# Function: Logging based on verbosity level
log() {
    local level="$1"
    local message="$2"
    if [ "$VERBOSE" -ge "$level" ]; then
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] $message"
    fi
}

# Function: Configure serial port
configure_serial_port() {
    stty -F "$SERIAL_PORT" $BAUD_RATE $DATA_BITS $STOP_BITS $PARITY
    log 3 "Serial port $SERIAL_PORT configured with $BAUD_RATE baud."
}

# Function: Send message and check acknowledgment
send_serial_with_ack() {
    local message="$1"
    local retries=0

    while [ $retries -lt $MAX_RETRIES ]; do
        exec 3<>"$SERIAL_PORT"
        echo -ne "$message" >&3
        log 2 "Sent: $message"

        # Read response
        local response=""
        local ascii_sequence=""
        local start_time=$(date +%s)

        while true; do
            if IFS= read -r -t 0.1 -n 1 char <&3; then
                response+="$char"
                ascii_sequence+=$(printf "%d " "'$char")

                if [[ "$ascii_sequence" == "$ACK_SEQUENCE " ]]; then
                    log 3 "Acknowledgment received: $response (ASCII: $ascii_sequence)"
                    exec 3<&-
                    exec 3>&-
                    return 0
                fi
            fi

            if [[ $(($(date +%s) - start_time)) -ge $ACK_TIMEOUT ]]; then
                log 2 "Timeout waiting for acknowledgment. Received: $response (ASCII: $ascii_sequence)"
                break
            fi
        done

        exec 3<&-
        exec 3>&-
        retries=$((retries + 1))
        log 2 "No valid acknowledgment. Retry ($retries/$MAX_RETRIES)"
    done

    log 1 "Error: Message could not be confirmed."
    return 1
}

# Initialization messages
initialize_device() {
    send_serial_with_ack "*RF:ON\n"
    send_serial_with_ack "*FREQ:9950\n"
    send_serial_with_ack "*POW:118\n"
    send_serial_with_ack "*RDS:ON\n"
    send_serial_with_ack "*RDSY:27\n"
    send_serial_with_ack "*RDSP:$(pad_message 'KBRD 680 Pirate ' 16)\n"
    send_serial_with_ack "*RDST:$(pad_message 'Music from 1920-1970 without advertising' 32)\n"
}

# Main loop
main_loop() {
    last_song=""
    while true; do
        current_song=$(mpc current)
        if [ -z "$current_song" ]; then
            log 2 "No song is playing."
            sleep $SEND_INTERVAL
            continue
        fi

        if [ "$current_song" != "$last_song" ]; then
            log 1 "New song detected: $current_song"
            clean_song=$(clean_song_title "$current_song")
            split_song "$clean_song"
            last_song="$current_song"
        fi
        sleep $SEND_INTERVAL
    done
}

# Start script execution
configure_serial_port
initialize_device
main_loop

Preserving the Original Sound

The primary focus of this project is on preserving the original sound of the historical radios. Old music played through devices from 1925 to 1965 delivers an impressive audio quality that modern devices cannot replicate. The unique tonal character – shaped by the technology of the speakers and amplifiers of the time – creates a listening experience like no other.

Conclusion

By combining modern streaming technology with historical broadcasting techniques, I am able to preserve the authenticity of my collection. The devices remain in their original state, and the sound remains true to how it was experienced decades ago. This system bridges the gap between past and present while respecting the historical integrity of the radios.

Hey @WolfHenk,

Interesting project. Integrating historical radios with modern streaming is a nice touch. Keep in mind that transmitter power limits vary by country, so it’s worth checking local regulations.
Have you considered developing a Volumio plugin for this? It could make the setup more accessible to others with similar interests. If you’re interested, I’d recommend looking into the plugin system—I’ll also discuss this internally with the devs.

Kind Regards,

1 Like

Hi @nerd,

Thanks for your message! I’m well aware of the national regulations regarding broadcasting, but in my case, I choose to ignore them—my house is in an area with plenty of space, so interference isn’t an issue. In a city, however, it would be more noticeable, and one would have to use coaxial cables with individual connections to the radios to operate the SUP2 properly.

Medium wave presents an even greater challenge. With too little transmission power, the signal quickly drowns in the noise floor caused by modern electronics—everything from cheap Chinese LED power supplies to network devices and even electric toothbrushes. Broadcasting in this range is quite difficult nowadays.

The idea of turning this into a Volumio plugin is fantastic!
However, I lack the experience with modern programming. Back in the '80s, I was proficient in BASIC, but I never really got comfortable with Java & Co.
That said, I’d be happy to contribute by providing the SUP2 transmitter’s limit and adjustment values and by designing a detailed and understandable user concept for the plugin.

In other words, I can handle the “pro” of programming—but the “gram” (grammare, meaning writing) would have to be done by someone else. If anyone is interested in taking on that part, I’d gladly offer my support!

Best regards,
WolfHenk

For sure like the idea, but there are some but’s…

The commercial FM-Band 87.5 - 108 MHz is actively monitored, due to extreme high prices they have sold those frequencies to radio stations. (fines varies between 2500 and 15000 euro)
In Europe, the max allowed power transmitted by a personal FM-transmitter is 50nW. No clue if theses old radio’s are able to tune in on these weak signals.

Hi @Wheaten,

Yes, I’m fully aware of the strict FM transmission regulations and the high penalties. However, I deliberately operate at such low power that the signal wouldn’t even be detectable when driving past my property. To measure it, someone would have to specifically track and test my setup or file a complaint. Of course, I would never do this in a city.

For me, the main focus is on the RDS signal. The cheap Chinese FM transmitters (aren’t they even allowed up to 80 nW?) don’t support RDS, which is why I recommend them to city dwellers when they ask me about adding Bluetooth to vintage radios.

Most importantly: I do not recommend connecting the SUP2 to an antenna. According to the manufacturer, it is only legally allowed to be operated via a fixed coaxial connection. Anyone interested in this device should strictly follow the manufacturer’s guidelines.

Best regards,
WolfHenk

I just read through the April 2018 thread “Turn your Volumio Pi into an FM radio station” in DIY and Tweaks by user @Randy with great interest.
He uses a ready-made Chinese I²C module:
“These are I2C modules based on the KT-0803K FM transmitter on an IC.”

My Thoughts:

The topic of FM transmitters is becoming increasingly relevant.
Especially now, as discussions about the shutdown of FM radio in Germany are intensifying, and DAB+ has become mandatory in cars—a move clearly aimed at phasing out FM receivers. This reminds me of the disastrous shutdown and destruction of nearly all European AM stations—a massive loss for radio culture.

RDS is another decades-old but valuable enhancement to FM technology, yet @Randy’s solution does not support RDS, even though he apparently has a working Volumio plugin.

This is where the CJMCU-4713 module with the SiLabs SI4713 chip comes in—it supports built-in RDS. However, this chip dates back to the early 2000s and is now considered obsolete. Still, there don’t seem to be many viable alternatives.

Idea: A Raspberry Pi HAT as an FM Transmitter

A Raspberry Pi HAT powered by 5V and I²C could provide a clean, easy-to-replicate solution for an FM transmitter with RDS.

Why this makes sense:
:white_check_mark: Simple connection to the Raspberry Pi
:white_check_mark: Compatibility with Volumio
:white_check_mark: Built-in RDS support
:white_check_mark: Standalone hardware without external modules

I have the knowledge and skills to design such a PCB in KiCad and integrate the CJMCU-4713 as a plug-and-play module. Technically, this wouldn’t be a big challenge—but the real question is: Is there any interest in this?

In the end, it would likely only appeal to radio collectors and enthusiasts. What do you think?

  • I am interested in a FM transmitter HAT for the Raspberry Pi?
0 voters

Hello @Wheaten,

You responded with a simple poll: “Are you interested in a HAT?”

But it’s not that simple. Volumio itself is a niche product within the radio collector community. I’m probably the only Volumio user among a collectors’ community of several hundred, while I know at least 25 people who have developed complex homemade FM solutions – including the GFGF concert transmitter and several other AM projects.

Additionally, in the radio collector community, few are interested in digital technology. Most use purely analog solutions, often devices from the amateur radio field or homemade constructions.

From a Volumio perspective, such a HAT would be the niche within the niche. Even if the poll in the Volumio forum receives two votes, that would already be a lot. But this just shows that the right target group is not represented here. I’ve been using Volumio for several years, but it was only recently that I discovered there are people in this forum who also broadcast FM. That’s why I wrote my original post.

There are numerous reports in the forum of people outfitting tube radios with Volumio – but the original “radio” function was lost along with the old technology. Exactly this, however, is not what we want to happen.

The real goal is to preserve the historical substance and the original radio technology – not to convert it and replace it with digital technology.

Therefore, I don’t believe a poll in this forum would be truly informative. The interest should instead be gauged directly within the radio collector community, where the focus is on preserving classic radio technology.

I did add the poll, as you asked if there would be interest? If I misunderstood I am happy to remove it.

Hello @Wheaten,

no, no, it’s absolutely okay. Feel free!
I’m actually okay with it, and the more I think about it, the more I like the idea behind it.

Take the concept from me, combine it with some other elements, like @Randy’s, and transform it into a 20 Euro Transmitter HAT with plug-and-play functionality.
Just attach it to the Pi, install the plugin, and click two buttons. It should automatically find a free frequency, ask for your approval to use it, and then go “on air”…

Also, I found a way to detect when the web radio crashes. This could be really useful!