Repository navigation
FreeDV 2.4.1 has been released, including bug fixes since 2.4.0. These changes are outlined below:
- Bugfixes:
- Add logic to prevent FIFO sizes that are too small to allow TX thread to function. (PR #1474)
- Fix RX/TX level-meter gauge contamination. (PR #1475) - thanks @barjac!
- Fix Hamlib-related build failure with Hamlib 5.0~git. (PR #1477)
- macOS: Fix dyld error on startup when enabling sanitizers in build. (PR #1478)
- Fix potential equalizer bug that could introduce corrupted audio. (PR #1480)
- Fix uninitialized value read during waterfall plot render. (PR #1481)
- Match std::atomic memory ordering to what each atomic actually synchronises. (PR #1482)
- Remove use of mutexes in audio path during callsign decode. (PR #1486, #1493)
- Tighten audio thread timings on macOS and Windows. (PR #1494)
- Harden audio FIFO handling and WASAPI stop timing. (PR #1496)
- Fix crash when testing Easy Setup with an invalid audio configuration. (PR #1500)
- Various data race cleanups. (PR #1502)
- Avoid page cache miss on startup when loading RADE. (PR #1506)
- Stop playback of RX file before TX start. (PR #1507)
- Fix horizontal lines in waterfall on HiDPI/fractionally scaled Linux displays. (PR #1514)
- Reduce GUI thread paint and FreeDV Reporter overhead. (PR #1515, #1530)
- PulseAudio: give each device its own connection. (PR #1523)
- Fix possible deadlock on playback completion. (PR #1533)
- Windows: add logic to detect audio device stalls. (PR #1537)
- Keep RX muted after TX until the radio confirms PTT off. (PR #1536, #1603, #1605)
- Fix FreeDV hanging when starting the Voice Keyer with a cloud-backed file. (PR #1534)
- Fix data races on settings read by the audio threads. (PR #1535)
- Prevent a closed network connection from terminating FreeDV with SIGPIPE. (PR #1540)
- Fix equalizer bass/treble filters being designed for the wrong sample rate. (PR #1542)
- Fix frequency list entries occasionally being saved 1 Hz low. (PR #1542)
- Fix text settings containing e.g. "$HOME" being altered when loaded. (PR #1542)
- Hamlib/OmniRig: fix frequency/mode requested prior to connecting not being applied. (PR #1542)
- Reject stereo files in "Play File - From Radio" instead of playing them at half speed. (PR #1542)
- Fix possible crashes when stopping while using a serial port for PTT input. (PR #1542)
- Hamlib: fix limit on time spent waiting for the radio not always being applied. (PR #1542)
- FreeDV Reporter: fix incorrect distances/headings when one's own grid square is incomplete. (PR #1542)
- FreeDV Reporter: fix stations sorting in the wrong order when their frequencies are more than about 2.1 GHz apart. (PR #1558)
- Fix crash when closing FreeDV right after stopping with a radio connected. (PR #1543)
- FreeDV Reporter: fix idle filter menu check marks after cancelling a custom idle time. (PR #1547)
- FreeDV Reporter: disable Request QSY once a request has been sent. (PR #1547)
- Voice keyer: fix button not showing "Stop Voice Keyer" while the voice keyer is running. (PR #1549)
- Voice keyer: fix newly recorded file being forgotten the next time FreeDV starts. (PR #1549)
- Fix Load Default Configuration reloading the configuration in use instead of the default one. (PR #1549)
- Linux: fix Load Default Configuration loading an empty configuration rather than the default one. (PR #1557)
- Logging: fix logged contacts sometimes being timed a second early. (PR #1552)
- Fix FreeDV being unable to exit after pressing Start with a sound device that couldn't be opened. (PR #1559)
- Fix possible crash when an audio device fails to open before FreeDV has asked to be told of its errors. (PR #1559)
- Linux: fix audio pausing for up to two more seconds after FreeDV's audio processing has been held up for more than two. (PR #1559)
- Settings: fix a typed-in frequency losing its last three digits when switching from kHz to MHz and pressing Apply. (PR #1559)
- Linux: fix crash on pressing Start with no sound server (PipeWire/PulseAudio) running. (PR #1555)
- Linux: report losing the sound server while running, and fix Stop getting stuck afterwards. (PR #1555)
- Fix each use of Adjust Monitor Volume leaving a hidden popup behind. (PR #1555)
- Filter: fix equaliser changes being ignored if the window was opened before pressing Start. (PR #1552)
- Fix each use of Log QSO leaving a hidden window behind. (PR #1552)
- Recording: restrict a pasted recording suffix to the same characters as a typed one. (PR #1552)
- FreeDV Reporter: fix a direction of 0 being shown for stations without a usable grid square after changing the band filter. (PR #1564)
- macOS: fix the last block of audio being sent to the radio over and over after transmitting, rather than silence. (PR #1564)
- Fix a saved main window size too small to be of use being kept. (PR #1564)
- Rig control: fix FreeDV briefly going back to the previous frequency after changing it (and so e.g. choosing the wrong sideband for analog mode when switched to straight after changing band). (PR #1564)
- macOS/Windows: fix possible crash or garbled log output when some audio device and thread errors are logged. (PR #1564)
- Windows: fix the main window being too small to show the waterfall and spectrum the first time FreeDV is started on a high DPI display. (PR #1565)
- Windows: fix FreeDV Reporter not removing what's left of a flag from the status message after part of it is deleted. (PR #1565)
- Fix a possible crash when FreeDV is asked to exit again while it's exiting with the FreeDV Reporter window open. (PR #1565)
- Fix Test PTT sometimes staying greyed out after a radio or serial port that couldn't be opened. (PR #1565)
- Fix silence being mixed into the first half second of each transmission. (PR #1567, #1568)
- Fix the voice keyer's RX pause and wait for a reply, the slow SNR display and the statistics reset after losing sync running twice as fast as intended. (PR #1571)
- Fix the spectrum plot's sync tuning line being drawn using an uninitialized value until the plot's first update. (PR #1572)
- FreeDV Reporter: fix stations that connected or transmitted within the same second sorting in a random order. (PR #1573)
- Fix a data race on whether FreeDV is running, between the window and the thread that starts and stops it. (PR #1575)
- Fix data races between the window, audio and processing threads on squelch, resync count, sound card count, PortAudio counters, debug switches, recording state and EQ filter re-apply flags. (PR #1578)
- Fix data races on the transmit mode selection when changed while FreeDV is running, and on the queue holding received text characters. (PR #1578)
- Linux: Fix Options frequency list scrollbar on first open. (PR #1579)
- Fix data races between the window and the threads that start/stop FreeDV and process audio on the frequency offset display, the list of active reporters and the audio device latency check at the end of TX. (PR #1583)
- macOS: fix a possible crash when an audio device that failed to start, or was already stopped, is stopped again. (PR #1583)
- Windows: fix audio devices closing their timing handles while the audio processing thread could still be waiting on them, and undoing the 1 ms timer resolution request twice. (PR #1583)
- Prevent duplicate contacts from being restored. (PR #1589)
- Disable Log QSO button if logging is disabled. (PR #1589)
- Keep a typed FreeDV Reporter status message when the saved list closes. (PR #1590)
- Stop the radio recording budget at zero instead of wrapping it. (PR #1592)
- Windows: Fix issue preventing audio devices that don't support raw mode from starting. (PR #1594)
- PlotScalar: draw the trace when the plot is wider than its sample count. (PR #1597) - thanks @barjac!
- Linux/FreeDV Reporter: fix uninitialized value deciding whether a selection is honored. (PR #1606)
- Allow microphone and speaker devices below 16 kHz (such as Bluetooth headsets in call mode) with a warning instead of refusing to start. (PR #1608)
- FreeDV Reporter: fix possible crash when repeatedly connecting and disconnecting. (freedv-backend PR #44)
- FreeDV Reporter: fix exiting FreeDV taking up to 60 seconds when the server stalls setting up the secure connection; give up on it after 10 seconds instead. (freedv-backend PR #63)
- FreeDV Reporter: fix memory leak when FreeDV exits just as FreeDV Reporter connects. (freedv-backend PR #75)
- Recording: fix up to the last 100 ms of audio being lost when a recording stops, and log when audio has to be dropped. (freedv-backend PR #71, #72)
- Fix conversion of 16-bit audio to floating point going slightly past full scale. (freedv-backend PR #60)
- Fix buffer overruns when one RADE receive call decodes several frames and when resampling 8 kHz audio by large ratios. (freedv-backend PR #78)
- Fix the audio pipeline rebuilding its resampler when the sample rate is unchanged but not when it changes, and freeing the kept resampler twice. (freedv-backend PR #78)
- FreeDV Reporter: refuse a secure connection if TLS 1.2 or certificate hostname checking can't be enforced. (freedv-backend PR #78)
- macOS/FreeDV Reporter: fix endless loop and log spam when the connection closes while sending. (freedv-backend PR #78)
- Fix network and threading code continuing after a failed socket or semaphore setup, Linux semaphore waits ending early on a signal, and a macOS crash on an empty background task. (freedv-backend PR #78)
- Windows: fix exiting FreeDV taking 20 seconds or more while logging heavily. (freedv-backend PR #78)
- Build system:
- Windows versions are now built with llvm-mingw 20260908 (PR #1489)
- Ccache support extended to third party dependencies. (PR #1498, #1505))
- Fix bundled libsndfile build on lib64 systems and strncpy build error. (PR #1510)
- Only use system libraries that can actually be linked. (PR #1521)
- Optimizations to reduce full rebuild time. (PR #1538)
- Build bundled wxWidgets and LibreSSL optimized and without debugging information, and only use ccache in CI for the builds that compile them. (PR #1561)
- Add unit tests for non-GUI code. (PR #1542)
- Add tests of whole transmissions through the TX/RX threads without sound cards. (PR #1567)
- Resolve build failure on OpenSUSE Tumbleweed. (PR #1577)
- Fix Windows build failures with newer llvm-mingw (clang/libc++) releases. (freedv-backend PR #51)
- Fix Windows build with older mingw-w64 headers that don't declare SetThreadDescription. (freedv-backend PR #60)
- macOS: fix RNNoise build failure with newer Xcode versions. (freedv-backend PR #59)
- Fix build errors with GCC 16 and with OpenSSL 4 deprecations. (freedv-backend PR #41, #73)
- Documentation:
- Update documentation to reflect new repo URL. (PR #1569)
- Other:
Available binary releases (click Assets to expand the section and retrieve download links):
- FreeDV-2.4.1-windows-x86_64.exe (64 bit Windows for Intel/AMD)
- FreeDV-2.4.1-windows-aarch64.exe (Windows on ARM)
- FreeDV.dmg (ARM/Intel macOS, Big Sur/11.0 or later required)
- FreeDV-2.4.1-x86_64.AppImage (AppImage for Linux for Intel/AMD)
- FreeDV-2.4.1-aarch64.AppImage (AppImage for Linux for ARM systems, e.g. Raspberry Pi 5+)