Mooneer’s FreeDV Update – March 2025

This month was spent further improving the audio handling inside freedv-gui. The rationale for doing so was severalfold:

  • To improve reliability of the CI/CD pipeline on certain platforms (namely macOS and Windows),
  • To fix reported dropout/resync issues when using virtual audio cables (as commonly done for SDR radios), and
  • To reduce the amount of time required to transmit EOO.

This was accomplished via the following code changes:

  • Increasing the execution frequency of the receive processing code (from every 20ms to every 10 ms).
  • Implementing the native audio APIs for macOS (Core Audio/AVAudioEngine) and Windows (WASAPI) versus using PortAudio.
  • Reducing the FIFO sizes used for transmit as they were much too large.
  • Updating the CI/CD pipeline to avoid repeatedly rebuilding dependencies (macOS-only).

After implementing the above changes, CI/CD tests became much more reliable on all platforms except x86_64 macOS. Audio dropouts reported by SDR users also decreased significantly, as well as the time to go from TX to RX when in RADE (from ~900ms to ~300ms in local testing). All in all a very good usability improvement, especially for RADE users.

EDIT: I forgot to mention that some FreeDV Reporter connection reliability bugs were fixed as well last month, ensuring that users can quickly be listed on it again in case of network dropouts, etc.

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

Mooneer’s FreeDV Update – February 2025

This month was focused primarily on preparation for and attending Orlando HamCation (more information about our experience at that event here). However, there were some improvements made to the FreeDV application in the meantime:

  • The official 80/160 meter calling frequencies were tweaked based on user input to better fit with the Japanese band plan.
  • Fixed an issue preventing suppression of the User Message tooltip for shorter messages in the FreeDV Reporter window.
  • Fixed an issue causing the User Message column to randomly change sizes on user connection and disconnection.
  • Tweaked the SNR display in the main window to only show whole numbered SNRs (i.e. no decimals). This was done to make it more obvious that slow/fast SNR calculations were occurring.
  • Updated Hamlib in the macOS and Windows builds to 4.6.2. As part of that, loading the Hamlib supported radios was also changed to prevent issues with the names changing during runtime.
  • The “short” timeout for RX display in FreeDV Reporter was lengthened to five seconds to reduce flickering in the FreeDV Reporter window.
  • The ezDV implementation of FreeDV Reporter support was adapted for freedv-gui to eliminate a dependency on the sioclient-cpp library. This also has the effect of fixing issues with users being unable to reconnect if the FreeDV Reporter server goes down (or if there are network issues causing the connection to drop).

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" --all > commit.log

FreeDV Experience at 2025 Orlando HamCation

The FreeDV project recently came back from Orlando, FL, where it had a booth in the North Hall at Orlando HamCation. At the booth, we had a demo of the RADE work we’ve been working on, including two headsets (one playing “analog” audio as what would be transmitted through a microphone and the other playing receive audio after being transmitted and received using RADE). We additionally had internet access in the booth so we were able to show a live view of FreeDV Reporter:

RADE and FreeDV Reporter display at the FreeDV booth.

Over the course of the weekend, we had significant interest in the FreeDV booth. On top of that, nearly everyone who listened to the RADE demo were impressed by the audio quality, especially when compared to the existing state of the art in digitial voice.

Additionally, Mooneer K6AQ gave a talk about RADE on Friday afternoon of the hamfest. For those who missed the talk or want to refer back to the slides, they’re available in PDF format below:

FreeDV at Orlando HamCation – February 7-9, 2025

FreeDV will have a booth at the North Hall of Orlando HamCation this weekend (near the HamCation prize booth). If you happen to be in the area, come check us out! More information about HamCation can be found at https://www.hamcation.com/.

Additionally, Mooneer K6AQ will be giving a talk about/demoing FreeDV’s new RADE mode tomorrow (February 7) at 3:30pm in CS II (the set of popup tents in the back of the fairgrounds). Hope to see you there too!

Mooneer’s FreeDV Update – January 2025

This month was spent firming up the preview release that just came out. This involved fixing various bugs discovered by the RADE test team, such as various crashes that began occurring during the implementation of SNR and RADE text support (required for FreeDV Reporter to fully work with RADE). Audio quality was also improved and the transmission of the End Of Over (EOO) block was also made more reliable, ensuring that users reported received signals to FreeDV Reporter and PSK Reporter more often.

Speaking of PSK Reporter, this is the worldwide map of activity over the last 24 hours as a result of this work, indicating heavy interest in RADE and FreeDV more generally:

For February, the focus is going to be on promoting the work we’ve done as a project. We’ll be at Orlando HamCation in just a few days (North Hall, booth 119, as well as a talk given by me on Friday February 7th at 3:30pm)–hope to see you all there!

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" --all > commit.log

FreeDV 2.0.0-20250130 released

This is the second preview release of FreeDV containing the new RADE mode. For more information about RADE’s development, check out the blog posts on the FreeDV website:

https://freedv.org/davids-freedv-update-feb-2024/
https://freedv.org/davids-freedv-update-march-2024/
https://freedv.org/davids-freedv-update-april-2024/
https://freedv.org/davids-freedv-update-may-2024/
https://freedv.org/davids-freedv-update-june-2024/
https://freedv.org/davids-freedv-update-july-2024/
https://freedv.org/davids-freedv-update-august-2024/
https://freedv.org/mooneers-freedv-update-august-2024/
https://freedv.org/mooneers-freedv-update-september-2024/
https://freedv.org/davids-freedv-update-september-2024/

Changes versus the first preview release:

* Signal to noise ratio (SNR) is now displayed while receiving RADE signals.
* Received signals are now reported to FreeDV Reporter (without callsigns) once per second. Once a callsign is received (at the end of the transmission), the callsign is reported to both FreeDV Reporter and PSK Reporter.
* Fixed bug preventing sync indicator from turning green with RADE.
* Visual Studio Redistributable is now installed if your PC does not already have it. (This is required for the Python packages FreeDV uses.)
* Fixed bug preventing Request QSY button from being enabled in RADE mode.
* RADE has been renamed to RADEV1 in the UI and FreeDV Reporter.
* macOS binaries are now signed and notarized, avoiding the need for the workaround in the previous build.
* Fixed issue causing FreeDV to segfault on exit when RADE is running.
* Python files are now precompiled to improve startup time.
* Core RADE code is now in C (versus Python).
* Uninstaller now fully cleans up after Python.
* Audio chain is cleaned up to improve audio quality.
* README has been updated to clarify Linux instructions and to provide a link to a script to auto-build with RADE support. (Thanks @barjac!)
* Maximum SNR displayed in the main window is now 40 dB to reflect real-world testing.
* “devel” in the version string is shortened to “dev” and incremented to “dev2” to reflect the second preview build.

Limitations:

* Multiple RX mode is not supported. If you choose RADE and push Start, that’s the only mode you can work; you’ll need to stop, choose another mode and start again to work FreeDV with the existing modes.
* Squelch cannot currently be disabled with RADE. It’s unknown at this time whether disabling squelch is possible.
* Due to compilation problems, 2020/2020B modes are disabled.
* There is currently no Windows ARM build; this will hopefully be included in a future preview build. You may be able to use the 64-bit Intel/AMD Windows build in the meantime.
* Minimum hardware requirements haven’t been fully outlined, so your system currently may not be able to use RADE. Future planned optimizations may improve this.

Other notes:

* The below builds are significantly bigger than previous releases. This is due to needing to include Python and the modules that RADE requires. Planned porting to C/C++ will eventually negate the need for Python.
* The Windows build includes Python but not the modules that RADE requires. As part of the install process, the version of Python built into FreeDV will go out to the internet to download the needed modules.
* As development is expected to happen quickly, these preview builds have a six month expiry date (currently July 30, 2025).
* 32-bit Windows is no longer supported due to its likely inability to work with RADE.

More information and download links can be found at https://github.com/drowe67/freedv-gui/releases/tag/v2.0.0-20250130.

Mooneer’s FreeDV Update – December 2024

This month involved more improvements to the FreeDV GUI application. One improvement involved the unit test framework; it’s now possible to capture the features decoded by RADE (prior to being fed into the FARGAN codec). This is useful for quantifying changes in the receive pipeline and ensuring that what’s encoded by RADE is also mostly returned by the decoder on a clean channel.

The biggest improvement, however, is the implementation of the same LDPC based callsign encoding and decoding system that’s used in the legacy FreeDV modes. This data is placed in what’s known as the End Of Over (EOO) block at the end of the RADE transmission and allows the application to report received callsigns to FreeDV Reporter and PSK Reporter, albeit only at the end of the transmission. FreeDV Reporter specific logic was added to mitigate this by reporting that a RADE signal is being received once a second while still in sync (just with no callsign), hopefully still allowing people to see that someone’s possibly decoding them in real time.

Since we’re touching the FreeDV Reporter logic, it was also a good opportunity to make some significant changes to the FreeDV Reporter service and website. First, the “left the chat”/”entered the chat” messages were removed by PLT request in order to make it easier to see actual chat messages. Next, the separate popup window for viewing who’s in the chat was removed in favor of an always-visible bar at the bottom of the chat tab containing the callsigns of the users that are logged into chat. The message backlog was also extended to 30 days (from 7 days) and preserved into a database so that the chat messages aren’t lost in the event that the FreeDV Reporter server needs to be restarted.

Besides the above, there were some other minor fixes with the Windows installer/uninstaller along with logic added to detect whether microphone permissions have been granted. RADE is also now called RADEV1 in the FreeDV application to differentiate it versus a future version 2 of RADE. Some infrastructure was also added to be able to sign macOS builds (required to avoid errors involving “damaged” applications in newer versions of macOS).

In any case, we’re now going to focus on additional testing prior to releasing a new preview build of FreeDV for general usage. Hopefully we’ll have additional updates on that soon.

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, 2024" --before "Month 31, 2024" --all > commit.log

Mooneer’s FreeDV Update – November 2024

This month was focused on improving the integration of RADE with the freedv-gui application. One way this was done is through the creation of an automated test framework in the latter. This framework allows for the injection of audio into the receive or transmit chain and analysis of the result. Currently, we can retrieve the number of times FreeDV goes in and out of sync as well as analyze the loss between the result decoded by freedv-gui and the loss from the RADE reference decoder.

Another benefit of this automated test framework is that we can now automate testing of the FreeDV receive and transmit chain as part of our Continuous Integration process (CI). CI allows FreeDV developers to get immediate feedback when a change breaks existing functionality versus waiting until a user reports breakage after a release, improving the user experience. That said, there was significant initial effort involved in getting virtual audio devices working in our CI environment (and in the case of Linux testing, getting a working virtual GUI environment running).

On the RADE side, some minor work was done as part of the C port to ensure that freedv-gui could still compile. This involved ensuring that files weren’t defined more than once, as well as removing the version of libopus built by FreeDV in favor of the RADE version.

Further improvements will be made in our testing process over the next few months to ensure that freedv-gui produces the best result from RADE and integrates functionality currently missing from RADE (such as reporting of received callsigns).

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, 2024" --before "Month 31, 2024" --all > commit.log

Mooneer’s FreeDV Update – October 2024

This month, additional work was done to clean up bugs encountered in the C API for the RADE library. One bug in particular involved an interaction between the threading already present in freedv-gui and the threads Python itself creates (i.e. for PyTorch); this bug resulted in extremely slow operation and even deadlocks in some cases.

Once this work was completed, it was time to integrate it into RADE. This work culminated into the first preview release of FreeDV with RADE support. Initial feedback thus far has been extremely positive, indicating that we’re on the right track with meeting the goals set out in the ARDC grant.

Further work over the next few months will involve fixing bugs discovered by users of this preview release as well as work on adding missing functionality (such as received callsign reporting) and a port of the main logic in the library to C to reduce/eliminate the need for Python.

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, 2024" --before "Month 31, 2024" --all > commit.log

RADE Preview (FreeDV 2.0.0-20241018) Released

This is the first preview release of FreeDV containing the new RADE mode. For more information about RADE’s development, check out the blog posts on the FreeDV website:

As this is the first preview release, there are some limitations:

  • As RADE currently doesn’t return the signal’s signal to noise ratio (SNR), it’s not currently possible to receive it and the other FreeDV modes at the same time (as in, if you choose RADE and push Start, that’s the only mode you can work; you’ll need to stop, choose another mode and start again to work FreeDV with the existing modes).
  • Squelch cannot currently be disabled with RADE. It’s unknown at this time whether disabling squelch is possible.
  • Due to compilation problems, 2020/2020B modes are disabled.
  • There is currently no Windows ARM build; this will hopefully be included in a future preview build. You may be able to use the 64-bit Intel/AMD Windows build in the meantime.
  • Minimum hardware requirements haven’t been fully outlined, so your system currently may not be able to use RADE. Future planned optimizations may improve this.
  • FreeDV Reporter does not currently report receiving RADE signals, but will report that you are using it and when you’re transmitting.

Other notes:

  • These preview builds are significantly bigger than previous releases. This is due to needing to include Python and the modules that RADE requires. Planned porting to C/C++ will eventually negate the need for Python.
  • The Windows build includes Python but not the modules that RADE requires. As part of the install process, the version of Python built into FreeDV will go out to the internet to download the needed modules.
  • As development is expected to happen quickly, these preview builds have a six month expiry date (currently April 18, 2025).
  • 32-bit Windows is no longer supported due to its likely inability to work with RADE.

More information and download links can be found at https://github.com/drowe67/freedv-gui/releases/tag/v2.0.0-20241018.