David Feb 2026 – annual report, Claude C Port, V2 test plan, sine wave robustness

I started this month with writing our annual report to ARDC, who have been kindly supporting our work since 2023. It’s been a great year for FreeDV. We believe we have achieved most of the goals set for the ARDC grant, using just a fraction of our budget. Highlights include:

  1. With RADE V1 we have a high SNR (rag chew) mode that exceeds the quality of SSB.
  2. We have improved low SNR operation such that RADE V1 exceeds the quality of SSB at low SNRs.
  3. Maintained and improved our freedv-gui application, and supporting technology such as the FreeDV QSO finder.
  4. Promoted FreeDV and RADE technology online using our website and at Ham/professional conferences.
  5. Met our goals for a greatly expanded and growing user base.
  6. As a bonus outcome, we have developed the BBFM technology that uses machine learning for high quality, robust speech communication over VHF/UHF.

RADE V1 C Port using AI

In February Peter Marks, a member of our FreeDV project leadership team, has performed some remarkable work with Claude Code – generating a C port of RADE V1 in one day. I estimate this work would take 3 months of my time, requiring a wide range of skills. To verify the port I applied a suite of automated tests that we use for the Python version of RADE V1. Most passed, but there are few small issues that need addressing.

This availability of RADE V1 as a pure C library opens up several exciting possibilities, such as making life easier for packaging and distributing RADE, smaller downloads and embedded operation inside radios on smaller processors.

However the use of AI raises the question of maintenance and continued Quality Assurance. Even if the code is efficiently generated – we still need some assurance that it works and will keep working as the AI adds more code. An appropriately skilled human still needs to be responsible for reviewing the work of the coder (AI or human) and signing off the work. It’s not OK to have efficiently generated code that has subtle bugs. The use of AI for large coding tasks is a new and exciting paradigm, and we need to work out the best way to use the technology but retain appropriate levels of quality. The FreeDV project leadership team is currently pondering this question.

RADE V2 Test Plan, AGC and Robustness to Sine waves

A simple automatic gain control (AGC) was developed and tested to handle varying signal levels into the V2 receiver. It can handle +/- 20 dB range of input signals and based on a series of spot tests and performance curves it doesn’t appear to add any measurable distortion. ML networks tend to be sensitive to input level, hence the need for some sort of AGC.

Now that most of the RADE V2 algorithms are written, I have been proceeding through a suite of tests. Over the years we have worked out just how to break digital voice systems over the air, so we simulate each of these conditions first, as issues are much easier to find and fix in simulation that over the air. These tests and the results have been documented in a test plan/report. I moved quickly through several tests, then came to a screeching halt when testing acquisition with sine waves present.

This is a common scenario – e.g. someone tuning up on a frequency near a valid RADE signal. Turns out the RADE V2 receiver was happily obtaining sync on a sine wave, which locked out any valid RADE signals. Once again, V2 sync is more complicated than V1 due to the absence of pilot symbols. A few days of R&D followed, and now we have an acquisition system that is more robust to in-band sine waves.

The figure below illustrates the problem with sine waves. This is a mesh plot of the autocorrelation of the input signal, which we use to determine if a signal is present. Time flows from right to left in this plot, from 0 to 1000 symbols (about 20 seconds at 50 symbols/s). We peak pick this at each time step to determine the timing offset, which is between 0 and 160 samples. The central mountain is a valid RADE V2 signal with a timing offset of about 80 samples. The horizontal bar starting near 0,0 is the sine wave, which doesn’t have a clear central peak. I’m using the ratio of the maximum of the minimum at each time step to distinguish sine waves from valid RADE V2 signals.

I also worked through some issues when one V2 signal closely follows another, and performed several other tests such as modelling sample clock offsets between the transmitter and and receiver, and frequency drift of the Rx. The 99% occupied bandwidth (OBW) is just 860 Hz and the spectrum much cleaner than RADE V1.

The next step in the test plan is to send some “stored file” V2 signals over the air using SSB radios, debug the issues this throws up, and confirm the results over real world radios and channels are similar to simulation.