Monthly Archives: June 2025

FreeDV 2.0.0 released

FreeDV 2.0.0 has been released, containing the first official release of the RADE V1 mode previously trialled over several preview releases. Radio Autoencoder (RADE) technology is a new approach to sending speech over HF radio. It combines Machine Learning (ML) with classical DSP to send high quality speech over HF radio at SNRs as low as -2dB in a bandwidth of 1500 Hz.

As part of this effort, deprecated modes (700C, 800XA, 2020 and 2020B) have been removed from the application. Additionally, this contains numerous bug fixes and non-RADE specific enhancements from the last official release (1.9.9.2).

It can be downloaded using the following links:

Windows: https://github.com/drowe67/freedv-gui/releases/download/v2.0.0/FreeDV-2.0.0-windows-x86_64.exe
macOS: https://github.com/drowe67/freedv-gui/releases/download/v2.0.0/FreeDV.dmg

More information about this release, including changelog, can be found on GitHub release page: https://github.com/drowe67/freedv-gui/releases/tag/v2.0.0

David May 2025 – arXiv RADE paper, ML frame sync & timing, BBFM analog simulation

arXiv HF RADE paper

The paper “RADE: A Neural Codec for Transmitting Speech over HF Radio Channels” that Jean-Marc and I have been writing has been submitted to a conference, and posted on arXiv. This paper is a professional engineering level description of RADE – covering the problem we set out to solve, design, details on training, and evaluation. Part of our ARDC grant commitments to document our technology to a professional level. Thanks Jean-Marc for working with me on this paper, and Bill and Jan for reviewing.

During review of the paper, I found a potential issue in RADE V1 that may affect HF channel performance. The RADE encoder outputs QAM symbols, that are mapped to OFDM carriers in a certain sequence. I found a difference between the mapping used for training and at run time. Initially I though this was a bug, and we might be able to gain some improved performance by fixing it. Unfortunately experiments designed to address the issue made no difference in performance. However the exercise gave us some clues about how RADE handles multipath fading – what matters (and what doesn’t) with the RADE system and HF channels. It also showed the value of writing up the work in spotting issues with complex systems.

ML Frame Sync and Fine Timing

This month I worked on two more building blocks required for RADE V2, frame sync and fine timing. For RADE V1 we used the location of known (pilot) symbols to implement these algorithms. While this approach works, the injection of pilot symbols requires an overhead of about 3 dB of SNR and 500 Hz in RF bandwidth. RADE V2 is designed to work without pilot symbols, so the challenge is to develop ML versions of frame sync and fine timing that can work off the information that is present in the payload data symbols alone.

This month I developed a ML network to handle frame sync, informal tests show it works at a range of SNRs and channel conditions. This could be used to drive a sync state machine, and indicate if the receiver has valid output (squelch). It senses sync state every 20-40 ms, much faster than RADE V1 (120ms), which will lead to faster acquisition and a faster PTT turn around.

To address fine timing I’ve been exploring just how the prototype V2 models handle timing errors over OFDM. To train a ML system you need to tell it where the “goal posts” are, so a good understanding of OFDM timing is required to inform the training process. Now that I have a framework for fine timing, I’m designing and building a prototype ML fine timing estimator.

Baseband FM (BBFM)

This month I worked with Tibor Bece to design and prototype an analog FM simulator that we can use to compare with the RADE BBFM system. FM is pretty complex, so we have developed a linearised channel model that we use for training and simulation. It can simulate AWGN and land mobile radio (LMR) fading channels. I’ve also updated the draft BBFM paper that documents this project. Once we’re happy with the analog FM simulation, we will compare RADE with analog using the automatic speech recognition (ASR) framework, and generate some samples of the system running over real UHF radios.

Mooneer’s FreeDV Update – May 2025

This month had several themes:

  • Promoting RADE at several major events
  • Cleaning up bugs prior to an official 2.0 release

Along with attending Dayton Hamvention (where I gave a brief talk about FreeDV for ARDC at their panel as well as a longer one for the Digital Modes forum), I also gave a talk about RADE for RATPAC, which is a group that meets several times a week over Zoom. The presentation was recorded and placed on YouTube:

On the software development side, I was fixing several issues discovered during testing:

  1. On macOS, the new AVAudioFoundation-based audio handling didn’t like it when devices went away. I needed to add a hook in order to detect when devices change and recover as best as possible.
  2. The FreeDV Reporter window seemed to flicker a fair bit initially as well as cause crashes when exercising certain functionality. Minor updates here resolved both issues.
  3. Some additional audio and GUI related crashes were also resolved based on user testing.

Additionally, I also performed some initial work on improving the real-time safety of the audio threads. This involves removing known unsafe constructs (such as locking and dynamic memory allocation) and otherwise ensuring that the variance between execution runs remains as close to the same as possible. This is expected to be more of a long-term effort given that both Codec2 and librade use dynamic memory allocation (and in the case of the latter, an entire Python interpreter).

More information can be found in the commit history below:

(Note that all commit logs above were generated with the following command line:)

git log --author="member@email" --after "Month 1, 2025" --before "Month 31, 2025 23:59:59" --all