Commit Graph

204 Commits (f0cb2a399602bf83310050ac8fade3b3dd924827)

Author SHA1 Message Date
Mooneer Salem fe0986d497
Fix compiler error with Hamlib 5.0. (#1477)
* Fix compiler error with Hamlib 5.0.

* Fix typo.

* Bring back old code for Ubuntu 22.04.

* Update CMake to explicitly look for rig_state.h.

* Add PR #1477 to changelog.

* Fix typo.
2026-09-02 21:46:35 -07:00
Mooneer Salem 8df2ffd578
Increment version to 2.4.1 to begin development. (#1473)
* Increment version to 2.4.1 to begin development.

* Add changelog section.
2026-08-25 23:43:56 -07:00
Mooneer Salem 6eaaebcc05
Release version 2.4.0. (#1471)
* Release version 2.4.0.

* Move old changelog out of user manual.
2026-08-24 21:34:09 -07:00
Mooneer Salem d60339922f
Upgrade wxWidgets to 3.3.3. (#1439)
* Upgrade wxWidgets to 3.3.3.

* Add PR #1439 to changelog.
2026-07-20 16:45:51 -07:00
Mooneer Salem 4818cb0fde
Enable TLS connections for FreeDV Reporter. (#1422)
* Enable TLS connections for FreeDV Reporter.

* Add additional ntdll.dll file to exclude list.

* Exclude crypt32.dll from package generation.

* Suppress clang-tidy for FetchContent code.

* Try installing LibreTLS packages before running clang-tidy.

* Use OpenSSL instead for lint.

* Force LibreSSL to be built for 'dist' CI build.

* Add GUI configuration to enable/disable TLS.

* Add PR #1422 to changelog.

* verbose ssh logging

* Revert "verbose ssh logging"

This reverts commit 342525a5fe.

* Fix bug preventing signing of AppImages.

* Revert "Enable TLS connections for FreeDV Reporter."

This reverts commit 4e4e6fb32f.
2026-07-05 11:00:48 -07:00
Mooneer Salem d9982139d9
Upgrade Hamlib to 4.7.2. (#1413)
* Upgrade Hamlib to 4.7.2.

* Add PR #1413 to changelog.
2026-06-23 15:20:14 -07:00
Mooneer Salem b21d3b7750
Debug Windows build size issue. (#1386)
* Debug Windows build size issue.

* Revert previous change and MakeAvailable usage for wxWidgets.

* Use non-deprecated version of FetchContent_Populate.

* Need to provide other parameters to Populate.

* Add EXCLUDE_FROM_ALL for new enough CMake.

* Add PR #1386 to changelog.
2026-06-11 16:38:30 -07:00
Mooneer Salem 4ebe052a95
Clear CMake deprecation warnings in FreeDV. (#1383)
* Clear CMake deprecation warnings in FreeDV.

* Clear DBus CMake warnings.

* Add PR #1383 to changelog.
2026-06-09 19:33:46 -07:00
Mooneer Salem 2722510606
Remove freedv-backend and freedv-integrations code from freedv-gui (#1368)
* Remove FreeDV integrations and all common files in favor of freedv-backend versions.

* Fix CI due to use of freedv-backend.

* Add README pointing to new location of integrations.

* Add missed file.

* Fix linker errors.

* Clean up AppImage generation script.

* Make sure we have loss.py available when running loss test.

* Fix macOS lint failure during CI run.

* Fix include file paths in Windows build.

* Need to include fdv_util for OmniRig.

* Try hardcoding RADE search path for Windows installer.

* Make sure prerequisite files exist for reporting tests.

* Add PR #1368 to changelog.

* Update to use samplerate.

* Revert "Update to use samplerate."

This reverts commit 16ceb638f3.
2026-05-31 23:15:31 -07:00
Mooneer Salem 0105613f17
Flex: Use version number without Git hash for waveform registration. (#1359)
* Flex: Use version number without Git hash for waveform registration.

* Add PR #1359 to changelog.
2026-05-23 00:08:27 -07:00
Barry Jackson d7fe11ee4e
Fix missing Hamlib defines when building from source (#1353)
* Add missing defines when building Hamlib from source.

When building Hamlib from source (BuildHamlib.cmake always fetches 4.7.1),
HAMLIB_USE_FRIENDLY_ERRORS and HAMLIB_CONST_WORKAROUND were never defined,
causing a -Werror=deprecated-declarations build failure on rig_get_conf().
The system Hamlib path already sets these via a version check; mirror them
here since the bundled version is known to support both.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add PR #1353 to changelog.

---------

Co-authored-by: Barry Jackson <barjac@mageia.org>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Mooneer Salem <mooneer@gmail.com>
2026-05-20 00:24:42 -07:00
Mooneer Salem e04e746a51
Update Hamlib to 4.7.1. (#1314)
* Update Hamlib to 4.7.1.

* Add PR #1314 to changelog.

* Work around SmartSDR race condition on connect.

* Ensure that radio gets frequency change on start.

* Revert previous changes, didn't seem to fix the problem.

* We'll need to suppress up to the first two frequency/mode updates.

* Revert "We'll need to suppress up to the first two frequency/mode updates."

This reverts commit e537d92e8a.

* Make frequency and mode changes more atomic.

* Revert "Make frequency and mode changes more atomic."

This reverts commit 31e45b8224.

* Prevent frequency update timer from firing during initial frequency/mode setting.

* Update frequency/mode on connection start.

* Add bugfix to changelog.
2026-04-30 18:28:34 -07:00
Mooneer Salem 97c464b7fc
Enable use of remote USB token for signing automated Windows builds. (#1312)
* Temporarily disable all but Windows CI builds for testing.

* Add logic to Windows CI build to sign with remote USB token.

* Temporarily disable ARM build to reduce runtime.

* Fix syntax errors.

* Fix another syntax error.

* Add forgotten pipe symbol.

* Fix SSH tunnel specification.

* Use full path to SSH key.

* Add separate SSH_USER secret for configuring SSH username.

* Need to create .ssh folder.

* Need to specify port for ssh-keyscan.

* chmod 600 private key.

* Need to pass -N to ssh to keep tunnel up.

* Create SSH tunnel just prior to building.

* Explicitly specify localhost for port forward hostname.

* Keep SSH connection alive.

* Ran into known segfault issue on 24.04.

* Update pkg-config.

* Kill SSH after completion of build.

* Revert "Temporarily disable ARM build to reduce runtime."

This reverts commit db1cee1ce9.

* Add macOS/Linux and GH Action info to documentation.

* Revert "Temporarily disable all but Windows CI builds for testing."

This reverts commit 4b76d359f3.

* Add additional information to documentation about remote USB keys.

* Add code signing documentation link to README.

* Add PR #1312 to changelog.

* Add support for signing with a second certificate.

* Fix typos.

* Ensure installer components get secondary signed too.

* Fix spurious codec2-related signing error.
2026-04-30 07:28:53 -07:00
Mooneer Salem 813fb4e91e
Fix sudden compilation errors related to Opus. (#1299)
* Fix sudden compilation errors related to Opus.

* Revert unintended ccommit.

* Include rade_api after Opus to ensure correct config flags exist.

* Fix remaining x86_64 compiler errors.

* Add PR #1299 to changelog.
2026-04-19 17:41:52 -07:00
Mooneer Salem 4394d37851
Remove Speex in favor of RNNoise. (#1276)
* Remove Speex in favor of RNNoise.

* Fix Linux compiler errors.

* Fix clang-tidy failures.

* Additional compiler error fixes.

* Add --enable-x86-rtcd for non-macOS builds as well.

* Add PR #1276 to changelog.

* Clarify in Filter dialog that NR is during TX.

* Should not divide/multiply by SHRT_MAX.

* Remove missed Python initialization logic from initial C port.

* Ensure line appears at y=0 on plots when fully silent.

* Change offset so that the zero line is right at y=0.
2026-04-03 08:03:10 -07:00
Mooneer Salem b200766857
Use C port of RADEV1. (#1251)
* WIP integration of radae_nopy.

* Use tmiw fork of radae_nopy.

* Add additional unit test debugging.

* Update to reflect making RADE a shared library again.

* Fix Windows installer generation.

* TBD: Disable Windows reporting test as Python isn't available for mock rig.

* Remove rade_integ.

* Remove Python from binary builds.

* Forgot to remove rade_integ from lint.

* Additional CI build fixes.

* More build fixes.

* Fix Flex/KA9Q compiler errors.

* Attempt to fix macOS tests.

* Force Homebrew macOS.

* Try venv for macOS.

* Fix remaining macOS test failures.

* Python is actually on the GitHub runner, let's see if RADE Reporting test will work.

* Update documentation and add PR #1251 to changelog.
2026-03-17 16:07:16 -07:00
Mooneer Salem 44e4dd9d8c
Update wxWidgets to 3.3.2. (macOS/Windows/AppImage only) (#1244)
* Update wxWidgets to 3.3.2. (macOS/Windows/AppImage only)

* Fix patch and deprecation failures.

* Add PR #1244 to changelog.
2026-03-03 16:16:31 -08:00
Mooneer Salem 6a4cc08f89
Update Hamlib to 4.7. (#1226)
* Update Hamlib to 4.7.

* Disable libusb on macOS.

* Update pkg-config.

* Use official 4.7.0 release.

* Add PR #1226 to changelog.
2026-02-16 07:30:19 -05:00
Mooneer Salem abc62e6b4b
Force numpy to 2.3.x due to illegal instruction errors. (#1230)
* Force numpy to 2.3.x due to illegal instruction errors.

* Need to force explicit numpy version.

* Add PR #1230 to changelog.
2026-02-15 13:53:45 -08:00
Mooneer Salem ad2537fefc
Windows/macOS: Update Python to 3.14.3. (#1221)
* Windows/macOS: Update Python to 3.14.3.

* Add PR #1221 to changelog.
2026-02-11 14:36:12 -05:00
Mooneer Salem fe11db9e2e
macOS: Add /Applications shortcut to generated DMG. (#1206)
* macOS: Add /Applications shortcut to generated DMG.

* Add PR #1206 to changelog.
2026-01-31 14:32:00 -08:00
Mooneer Salem 89a406b717
Enable Linux AppImage builds for Profile Guided Optimization (PGO). (#1173)
* Enable Linux AppImage builds for Profile Guided Optimization (PGO).

* Fix typo.

* Fix another typo.

* oops, need to install pulseaudio.

* Need to set PYTHONPATH.

* Make sure dbus is installed.

* Don't strip symbols (debugging).

* Some fixes that should hopefully reverse performance regression.

* Enable temporal-profile.

* Use lld for linking instead.

* Add PR #1173 to changelog.

* Enable PGO for macOS DMG builds.

* Don't use LLVM Clang.

* Revert macOS PGO changes.

* Use -O3 for AppImages.

* Have CMake add PGO flags.

* Enable PGO again on macOS.

* Fix typos.

* Force Apple ld.

* Make absolutely sure we're using Apple ar and ranlib.

* Use Release for DMG build.

* Enable verbose build output for debugging.

* Force /usr to be first in PATH.

* Force LLD linker.

* Oops, need CMAKE_LINKER_TYPE instead.

* Use same Clang as in lint.

* Override ar path.

* AppleClang on macOS 26 supports PGO.

* Need to install Homebrew LLVM for profdata.

* Try deferring LLVM 19 install until time to run profgen.

* LLVM without LTO.

* Adapt use of libtool from LLVM.

* Try forcing libtool usage in Codec2 too.

* Disable verbose build.

* Explicitly pass CMAKE_AR and CMAKE_RANLIB into dependent projects.

* Fix typo.

* Use LLVM 20 instead of 21.

* Ensure all macOS dependencies use -O3 and 11.0 min.

* Cache Python generation during macOS build.

* Fix typos.

* Revert previous changes.

* Make sure FreeDV Reporter window is visible during PGO data collection.

* Fix waterfall rendering issue with multiple plots displayed at once.

* Disable PGO on macOS except for official releases.

* Revert logging previously committed.

* Linux: test -O3 only, no PGO.

* UdpHandler: fix crash when unable to resolve DNS.

* Revert "Linux: test -O3 only, no PGO."

This reverts commit 26da306b48.

* Revert "Disable PGO on macOS except for official releases."

This reverts commit a7cc6852db.

* Allow DMG generation to run during lint.

* Ensure debug symbols are enabled even for Release builds.

* Linux: allow AppImages to build during lint.

* Add documentation for building with PGO.

* macOS: Try performing non-universal instrumented build to improve CI performance.

* Enable LTO for macOS DMG build.

* Revert "Enable LTO for macOS DMG build."

This reverts commit 6e54a1c39d.

* Another attempt at enabling LTO for macOS.

* Revert "Another attempt at enabling LTO for macOS."

This reverts commit 60080db6b2.

* Upgrade MinGW LLVM to 20251216.

* Experiment: collect profiling data for legacy modes as well.

* Disable PGO on macOS due to long build times.

* No difference in CPU usage when profiling legacy modes, so just profile RADE.

* Forgot to change utmode back to RADEV1.
2026-01-28 13:00:49 -08:00
Mooneer Salem 8a240f8a99
Add button to record decoded audio. (#1145)
* Add button to record decoded audio.

* Fix TSan bug discovered in a merged PR's build.

* Make Record buttons horizontal.

* Add additional Tools menu option for decoder recording.

* Consolidate all Record logic to single button.

This commit does the following:

* Removes all Tools->Start Record File... options from menu bar.
* Reverts back to single Record button on main window.
* Record button now pops up file dialog with additional controls for raw/decoded recording.
  (default raw recording)

* Remove Quick Record options as they are no longer necessary.

* Revert "Remove Quick Record options as they are no longer necessary."

This reverts commit 0d0c069d48.

* Add additional config option for decoded recordings.

* Replace file chooser with simpler record setup dialog.

* Remove unused config items.

* Add PR #1145 to changelog.

* Build LAME and mpg123 into FreeDV version of libsndfile.

* Add MP3 format as option for recording.

* Update control labels.

* Fix non-macOS build.

* Fix mpg123 build as well.

* Fix Windows build.

* Disable MP3 support if system sndfile doesn't support it.

* Need to invert test.

* Try regenerating autoconf files for mpg123 to work around Windows build failure.

* Need libltdl-dev for autoreconf to work.

* Disable MP3 recording when recording raw audio.

* Swap ordering of filters for the voice keyer dialogs.

* Allow voice keyer to be turned on during TX.

* Allow voice keyer file to be selected during TX.

* Default suffix to drop-down list entry or FreeDV Reporter selection.

* Revert "Swap ordering of filters for the voice keyer dialogs."

This reverts commit a504063ff2.

* Try installing git from Homebrew to work around macOS CI problem.

* Revert "Try installing git from Homebrew to work around macOS CI problem."

This reverts commit e4cdeb47f1.

* Force not retrieving submodules.

* Explicitly disable submodule recursion.

* Try macos-26 for lint.

* Uninstall Homebrew git due to libiconv problems.
2026-01-08 10:07:26 -08:00
Mooneer Salem 8f23911e66
Fix GitHub Actions failures on Linux (#1149)
* GHA: Try forcing PulseAudio to 48000 Hz sample rate.

* Fix syntax errors.

* Experiment: try building AppImages with LLVM instead of gcc.

* Oops, accidentally deleted something I shouldn't have.

* Fix accidental word wrap.

* Fix again.

* Try to work around compiler error.

* Use system zlib for Linux wxWidgets.

* Add clarifying comments.

* Update integration READMEs to use rade_integ_src.

* Add PR #1149 to changelog.

* Make sure audio doesn't suspend on idle.

* Try alternative method of screenshotting.

* Try another way of starting screen capture tool.

* Only take screenshot if failed.

* Only pass outbound audio if all samples available.

* Revert "Only pass outbound audio if all samples available."

This reverts commit 6aa73f3e36.
2025-12-28 08:10:15 -08:00
Mooneer Salem 88ac98a370
Upgrade Python 3.14.0->3.14.2. (Windows/macOS only) (#1124)
* Upgrade Python 3.14.0->3.14.1. (Windows/macOS only)

* Actually, looks like 3.14.2 was just released.

* Add PR #1124 to changelog.
2025-12-07 18:26:53 -08:00
Mooneer Salem b023b97d11
Upgrade built-in Python to 3.14.0. (#1109)
* Upgrade built-in Python to 3.14.0.

* Need to update GH environment for Windows Python 3.14.

* Forgot to adjust path for pip.

* Additional forgotten change.

* TEST ONLY: Use non-main for RADE.

* Use Python 3.14 for AppImages.

* Need to exclude 3.14 DLL during installer step.

* Update ASAN suppressions for 3.14.

* Revert "TEST ONLY: Use non-main for RADE."

This reverts commit 14b711b5a9.

* Use rade_src instead of rade_integ_src.

* Update AppRun scripts.

* Upgrade custom PyTorch macOS wheel to 2.9.1 and Python 3.14.

* PYTHONOPTIMIZE doesn't seem to work on macOS now.

* Apparently PYTHONOPTIMIZE was in there twice.

* Reenable PYTHONOPTIMIZE, disable built-in mimalloc.

* Disable mimalloc in GH Actions as well.

* Try reenabling mimalloc just for Linux.

* Add PR #1109 to changelog.

* Remove mimalloc altogether.

* Forgot to clean up mimalloc code in source files.

* Lock PyTorch release inside GH Actions.
2025-11-30 19:02:40 -08:00
Mooneer Salem 539bd55969
Set thread names for additional threads in system. (#1103)
* Set thread names for additional threads in system.

* Fix linting errors.

* Add additional thread names for Mac and Windows.

* Use const reference for SetThreadName.

* Fix more linting errors.

* Fix PortAudio compiler error.

* Add missed thread names.

* VOX tone atomic doesn't need seq_cst.

* Only wake up non-RT playback thread if FIFO is less than half full.

* Only wake up the TX/RX threads after all audio received.

* Optimized RADE is only for radio integrations.

* Add missed changes.

* Need to build integ in order for lint to work.

* remove invalid target.

* Fix additional Linux compiler failures from previous changes.

* Additional compiler fixes.

* Exclude duplicate tests.

* Fix macOS CI failure.
2025-11-24 14:55:13 -08:00
Mooneer Salem 9010d9be8a
Update VC Redistributable again. (#1102)
* Update VC Redistributable again.

* Add PR #1102 to changelog.

* Run brew directly due to GH failures.
2025-11-23 11:10:42 -08:00
Mooneer Salem b486ca8356
Use last working version of Opus. (#1083)
* Use last working version of Opus.

* Try change to improve mpp test reliability.

* Adjust the noise level the other way.
2025-11-05 11:55:56 -08:00
Mooneer Salem 4d4e556969
Force all compiler warnings to report as errors. (#1076)
* Force all compiler warnings to report as errors.

* Fix missed errors.

* Additional Linux and Windows compiler fixes.

* Additional macOS audio compiler error fixes.

* Fix Windows build once and for all.

* Fix remaining uninitialized warnings.

* Fix data race in Socket.IO handling.

* We want to immediately fail when running sanitizers, not re-attempt tests.

* Revert accidental removals in macOS CI config.

* Add PR #1076 to changelog.
2025-11-01 13:54:30 -07:00
Mooneer Salem 4118ae7bff
Update Visual Studio Redistributable link to the latest. (#1074)
* Update Visual Studio Redistributable link to the latest.

* Add PR #1074 to changelog.
2025-10-31 16:16:42 -07:00
Mooneer Salem c4bd1e5f52
Add support for BBWENet BW expander. (#1065)
* Prototype BBWNet BW expander.

* Add new Speaker Audio section in Filter window.

* Add PR #1065 to changelog.

* Add BBWENet to FreeDV rig integrations.

* Resolve compiler warnings in Flex waveform.

* Further warning cleanup while compiling Flex waveform.
2025-10-29 12:38:27 -07:00
Mooneer Salem 394dc76e4f
Add KA9Q radio integration to FreeDV source tree. (#1066)
* Reorganize FlexRadio integration so we can share code with KA9Q console app.

* Fix rtkit file path.

* Use same variable for both static and non-static Speex DSP library.

* Update Linux CI to reflect new paths.

* Refactor more common code for use by other integrations.

* Create skeleton KA9Q appplication, need to read/write from/to stdin/stdout to get basics up.

* Need to link against fdv_os_wrapper in common.

* Actually fix Linux linker failure in Flex waveform.

* Allow software name to be passed into ReportingController.

* Read audio from stdin and write to stdout.

* Fix crash on shutdown due to threads not being freed.

* Add pauses to make sure audio is handled live (i.e. not faster than RT).

* Add command line options to freedv-ka9q tool.

* Flesh out ka9q README.

* Clean up AppImage generation and enable CI for KA9Q integration.

* Add missed speex dependency.

* Forgot to change references to APPEXEC.

* Fix app paths for AppImages.

* Force AppImage file name.

* Use separate desktop files to avoid needing to override linuxdeploy.

* Use echo instead of ls for AppImage name generation.

* Fix test-appimage and enable verification on ARM targets.

* Need to use pattern, not glob.

* Need to use step ID.

* More fixes.

* Re-add accidentally deleted ./ from Fedora container execution.

* Add arm64 Fedora testing.

* Use RADE main again as a test.

* Revert "Use RADE main again as a test."

This reverts commit 60559ef0bc.

* Switch to raw file I/O.

* Update command line usage message.

* Add PR #1066 to changelog.

* Fix compiler error.

* Report RX only to FreeDV Reporter to indicate we can't TX.

* Fix crash on shutdown.

* Actually have audio process live.

* Fix typo in build_linux.sh.

* Enable ThreadSanitizer checks for CI builds.

* Make sure we're not actually checking for test results with tsan.

* Enable sanitizers on 22.04 and ARM runners.

* Suppress sanitizer errors in Ubuntu 22.04.

* We probably need Clang 22 to have Ubuntu 22.04 RTsan tests work properly.

* Use LLVM 22 for ASAN too to see if that will suppress the final leaks.

* Add missed lock in onRecvEnd.

* [no-ci] Update documentation.

* [no-ci] Further tweaks to user manual wording.
2025-10-29 08:42:48 -07:00
Mooneer Salem d716e41769
Flex waveform development (#1018)
* Create infrastructure to build freedv-flex binaries.

* Begin porting some ezDV Flex files to freedv-gui.

* Do not build Flex waveform for Windows.

* Port FlexVitaTask from ezDV, link to main() to print available radios.

* Fix Linux compiler error.

* Disable mimalloc for Flex waveform.

* Port FlexTcpTask from ezDV.

* Add beginning of initialization logic for waveform.

* Set up IRealtimeHelper for Flex waveform.

* Adjust FIFO usage to match what FlexVitaTask expects.

* Add linkage between TCP and VITA tasks.

* Use correct FIFO size calculation.

* Force single-threading for PyTorch/numpy.

* We don't need verbosity for RADE.

* Need to let the VITA task know about the radio IP too.

* Enable rtkit.

* Use rtkit for FlexVitaTask too.

* Fix issue causing minPacketsRequired_ to continually increase.

* Adjust MAX_VITA_SAMPLES to reflect no longer doing resampling itself.

* Fix spelling mistake.

* Update comment.

* Try previous TX scale factor to make a TX level 100 = ~100W.

* Tweak TX scale factor so we don't actually overdrive the signal.

* Don't build waveform by default.

* Enable AppImage generation for waveform.

* Update wrong script reference in CI build.

* Use correct filename generated by linuxdeploy.

* Warning cleanup.

* Tweaks to hopefully help reduce dropouts.

* timestamp_type defs from Flex SDK didn't work for some reason.

* Make sure we're always sending stuff back to the radio.

* Try ms-disable-python-gc again as it has a ~10% CPU usage reduction on RX.

* Try implementing timestamp type changes from Flex waveform SDK again.

* No difference with unconditional reads.

* Use Semaphore for pausing TX/RX threads.

* Actually eliminate audio dropouts.

* Connect UDP socket to slightly reduce system CPU consumption.

* Fix memory corruption from recent changes.

* Revert "Use Semaphore for pausing TX/RX threads."

This reverts commit cf7d076ef1.

* Normalize incoming audio so that we don't clip when converting to int16.

* Initial support for sending EOO.

* Add 40ms additional silence to ensure SmartSDR fully transmits EOO.

* Add the 40ms of silence elsewhere to avoid interference with regular freedv-gui.

* Add hooks to at least get FreeDV Reporter connections up and running.

* Add spotting support for FreeDV Reporter.

* Update README based on attempting to compile for rPi.

* Send waveform cleanup commands on startup (avoiding duplicate FDVU/FDVL entries in SmartSDR for Mac).

* Forgot to actually use report_wo role for FreeDV Reporter.

* Work around segfault when switchingn away from FDVU/FDVL.

* Fix stuttering issue on beginning TX.

* Integrate AGC to Flex waveform.

* Fix waveform compiler errors.

* Sleep for as long as it takes to find a radio on the network.

* Add support for processing SSDR_RADIO_ADDRESS envionrment variable.

* Fix compiler errors.

* Ephemeral ports for VITA don't actually work.

* Use same version number as FreeDV proper, cleanup FreeDV Reporter init.

* Support reporting the grid square if the radio has a built-in GPS.

* Add Speex noise reduction to TX pipeline.

* Code cleanup.

* Fix deadlock during radio discovery.

* src/os only needs wxWidgets if on Windows.

* Add missing packages for building Flex AppImage.

* GPS updates use a different delimiter than other update types.

* GitHub runner is forcing Ubuntu 24.04 for ARM.

* Revert "GitHub runner is forcing Ubuntu 24.04 for ARM."

This reverts commit e267fe216b.

* Add cleanup and logging to FreeDV Reporter logic.

* Need to capture newGridSquare.

* Bail out on empty grid square.

* Refactor ReportingController to separate file.

* Report RX prior to receiving callsign.

* Generate waveform Docker container.

* Need Docker Buildx action.

* Fix AppImage filename.

* Check for null before trying to report RX.

* Increment to 2.0.3.

* Fix compiler errors from previous merge.

* Fix typo from previous PR.

* Force mimalloc to be built in Release mode.

* Forgot to support universal macOS build for mimalloc.

* Switch Flex container to Ubuntu, install AppImage prerequisites.

* Remove add-apt-repository call.

* Can't rely on using FUSE, try --appimage-extract-and-run.

* Initialize sync_ variable to avoid spurious calls to FreeDV Reporter.

* Do appimage-extract during container build process.

* Extract AppImage prior to running Docker.

* Add debugging to make sure we're deploying the correct contents.

* Include mimalloc config from main FreeDV application.

* Add README for the Flex waveform.

* Fix typos in README.

* Add PR #1018 to changelog.
2025-10-20 12:34:40 -07:00
Mooneer Salem df704a0fab
Reduce CPU usage in Xwayland process when using AppImage. (#1064)
* Reduce CPU usage in Xwayland process when using AppImage.

* Reduce Xwayland CPU usage in the Spectrum plot as well.

* Have separate avmag arrays for each plot.

* Fix typo from previous PR.

* Avoid duplicate MoveToPoint calls.

* Remove spinlock for RX spectrum.

* Spectrum plot: reduce the number of lines drawn without affecting visual quality.

* Experiment: disable arch-specific optimizations for mimalloc.

* Use 5Hz steps.

* Fix typos in spectrum plot calculation.

* From Radio and similar: Use single filled path to represent plot.

* Remove 1 dB minimum difference requirement for Spectrum plot.

* Make sure spectrum plot arrays are cleared on start.

* Warning cleanup.

* Reenable mimalloc optimization flags for Macs.

* Use GenericFIFO for scalar plots.

* Reduce the amount of gray rendered in waterfall before actual RF spectrum is shown.

* Don't redraw text on Spectrum plot unless necessary.

* Add PR #1064 to changelog.

* Don't force Xwayland on AppImage.

* Add Xwayland instructions to Troubleshooting section of manual.
2025-10-19 09:03:03 -07:00
Mooneer Salem 89e12a5644
Reduce memory allocations in main thread. (#1035)
* Reduce memory allocations in main thread.

* Cache configured FreeDV Reporter colors.

* Move capture into FreeDV Reporter GUI handlers.

* Further constant cleanup in FreeDV Reporter.

* Try disabling mimalloc to see if it helps the macOS tests run.

* Revert "Try disabling mimalloc to see if it helps the macOS tests run."

This reverts commit 81a20cbd3f.

* Define strings inside respective objects to hopefully avoid minmalloc-related crash on macOS.

* Make const strings member variables.

* 25% reduction in allocations by waterfall rendering code.

* Further memory allocation reduction in the waterfall plot.

* FreeDV Reporter: reduce allocations during handler processing.

* Only save callsign to wxString if non-empty.

* ebur128 should be compiled in release mode.

* Add PR #1035 to changelog.

* Don't wait for extended tests to finish to test the AppImage.
2025-09-24 19:27:08 -07:00
Mooneer Salem 93a01c7e19
Use EBU R 128 based loudness measurement to implement AGC. (#1024)
* Switch AGC implementation to WebRTC.

* Forgot to check in files.

* Add PR #1024 to changelog.

* WebRTC only supports a limited set of sample rates.

* inMicLevel needs to be 0.

* Forgot some calls to make AGC work.

* Unconditionally enable AGC setting in Filter window.

* Test to increase AGC level.

* Adjust target level so that peaks are +/- 0.4.

* Reduce target level a bit.

* Revert "Reduce target level a bit."

This reverts commit 6282992544.

* Add 4dB pad after AGC.

* More tweaks.

* First pass at AGC implementation using libebur128.

* Try defining CMAKE_POLICY_VERSION_MINIMUM to get around GH build error.

* Swap attack/release naming to match actual definitions.

* Equalizer and speech in plotting should be based on pre-AGC audio.

* Warning cleanup.

* Fix CMake issues on ebur128 in GitHub environment.

* Avoid overshooting target gain.

* Remove CMake debugging.

* current = target AGC check not 100% correct, so don't bother.

* Set limiter level to -1 dB.

* Switch voice keyer button label based on state.

* Add 'Switch to' to beginning of Analog/Digital button.

* User manual update.

* Only update Voice Keyer button on state transitions.

* Revert "Equalizer and speech in plotting should be based on pre-AGC audio."

This reverts commit 206a4d4fcb.

* To Spkr/Hdphns -> Frm Decoder.

* Add 'Modem' to Start/Stop button label.

* all.wav is too long for rade_reporting_mpp, use shorter TX file to improve pass rate.

* Increase silence threshold to -33 LUFS.

* Oops, speech out plot should be before equalizer.

* g_agcEnabled needs memory_order_release on modification.

* Suppress monitor audio from 'From Decoder' plot during TX.
2025-09-16 12:17:39 -07:00
Mooneer Salem b8c66668bc
Update Hamlib to version 4.6.5. (#1030)
* Update Hamlib to 4.6.5.

* all.wav is too long for rade_reporting_mpp, use shorter TX file to improve pass rate.

* Add PR #1030 to changelog.
2025-09-16 00:37:53 -07:00
Mooneer Salem 6dbb3b7f8f
Debug and fixing of unit tests (#1023)
* Add tooling to enable debugging of hung tests.

* Force rebuild.

* Revert "Force rebuild."

This reverts commit 6f13e7382b.

* Add five minute timeout for unit tests.

* Fix max time calculation and increase to 10mins.

* Increase timeout to 20 minutes.

* We were actually calculating the counter wrong.

* Use atomics for UT related globals.

* Force build for more testing.

* Revert README change.

* Add retry logic for hdiutil due to known bugs.

* Encode EOO as a single unit.

* Revert GitHub debugging.

* Add PR #1023 to changelog.
2025-09-14 00:52:50 -07:00
Mooneer Salem 8dcee0d0c5
Linux: fix rendering bug for mic/speaker slider when transitioning from TX to RX. (#1021)
* Remove space between number and 'dB'.

* Linux: redraw mic/speaker level slider on update to ensure it remains in sync.

* Add PR #1021 to changelog.

* Make sure redraw happens on some environments.

* Revert accidental change to RADE build config.
2025-09-07 10:16:48 -07:00
Mooneer Salem 24cdc906d6
Use rigerror2() for friendlier Hamlib errors. (#1020)
* Use rigerror2() for friendlier Hamlib errors.

* Try GH mirror of Opus.

* Make sure we don't use rigerror2() for Ubuntu 22.04.

* Add PR #1020 to changelog.
2025-09-07 02:13:38 -07:00
Mooneer Salem 12844f67c5
Second pass at pipeline optimization. (#975)
* Don't write UT features until the end of TX/RX.

* Attempt 2 at preventing spurious Linux asan failures.

* Add PR #975 to changelog.

* Revert "Attempt 2 at preventing spurious Linux asan failures."

This reverts commit 8f53d1a980.

* Another attempt at preventing spurious asan failures.

* Revert back to k6aq.net hosted wheels.

* Resolve warnings in pipeline tests.

* ResampleStep: skip processing if no samples available.

* TapStep: execute in separate thread.

* Fix issue causing mic audio to stop when using Speex.

* Add a bit more time between loads.

* Use -O3 for libsamplerate to see if that helps.

* Revert "Add a bit more time between loads."

This reverts commit 1273d6531e.

* Disable content caching during CI build.

* Add printout of sysctl for debugging.

* Try speexdsp resampling to see if we can reduce CPU usage.

* Slightly increase quality.

* Increase quality again.

* Fix monitor functions not producing audio.

* Reenable Instruments tracing.

* Experiment: update librade to grab sync and SNR while running RX.

* Update SNR retrieval to make sure it happens on RX thread.

* Bump up resample quality again.

* Go back to libsamplerate.

* Use same semaphore wait time calculation for macOS as with other platforms.

* Try 20ms time quantum.

* Try 40ms.

* Back to 60ms.

* Wait needs to be based on start of work.

* Revert "Go back to libsamplerate."

This reverts commit 86d1c640ff.

* Try maximum quality on speex resampler first.

* Go back to calling fwrite() immediately on FIFO read.

* Revert resampler changes, again.

* Try experimental RADE branch again.

* Out of left field: try 2.9ms quantum like what Chrome uses.

* Improve reliability of Linux rade_loss test.

* Smooth out longer than expected semaphore waits on macOS.

* Fix compiler errors.

* Put quantum back to 60ms.

* Fix compiler error.

* More experimentation with time quantums.

* Use relaxed atomic semantics for macOS worker counter.

* Back to 2.9ms due to mpp test failures.

* Disable processing stats.

* Time quantum should match buffer size.

* Remove unneeded variable.

* Time quantum was accidentally getting set to 0.

* Try to reduce standard deviation for macOS wait time.

* Revert previous change, try just halving the wait time.

* Try to reduce likelihood of scheduler contention on macOS.

* macOS: Set lower thread QoS for non-audio threads.

* Using infinite wait for ThreadedObject.

* Force lowest possible latency.

* We can reference the activity ID directly.

* Avoid crash on stop from previous changes.

* Revert recent PulseAudioDevice changes in case those are causing 22.04 tests to fail.

* Try different macOS flag to improve responsiveness.

* Remove memset call from TX handling.

* Disable real-time threading on macOS.

* Use setiopolicy_np() to make sure writing RADE features doesn't interfere with the rest of the app.

* Resample input file for rade_loss test to lower CPU usage.

* Try soxr resampler for further CPU usage reductions.

* Forgot missed file.

* On macOS CI runs, we should also use the Homebrew soxr package.

* Revert soxr adoption, does not meet real time safety guidelines.

* Try deferring feature file writes until the end again.

* Turn on PYTHONOPTIMIZE.

* Read/write entire blocks from FIFO, not just single samples.

* Warning cleanup.

* Allow partial output if FIFO gets empty.

* Remove unneeded memset().

* Fix race condition preventing user from properly being hidden from FreeDV Reporter on startup.

* Downgrade additional pipeline threads to Utility QoS.

* Try malloc-free FIFO for RADE steps.

* Use 2048 samples instead.

* Use PreAllocatedFIFO in RADE steps to avoid cache misses.

* Use MKL enabled version of numpy for Intel macOS.

* Try Intel MKL version of PyTorch for macOS.

* Fix GH compiler issue on macOS ARM.

* Replace sleep_for with semaphore for TapStep.

* Only signal semaphore every 100ms like with previous sleep_based impl.

* Replace additional sleeps with semaphore waits.

* Fix compiler error.

* Adjust timing thresholds for dumping feature debug data.

* macOS: reenable real-time threading as a test.

* Make sure both RX and TX threads start processing at the same time.

* Update missed shared_ptr reference.

* Remove hidden allocation due to use of lambdas.

* Undo FIFO size reduction.

* Suppress spurious PlaybackStep completion messages.

* Fix CI compiler error.

* Use Time Profiler to get a better idea as to why RADE steps intermittently take longer to execute.

* g_voice_keyer_tx should use acquire/release.

* Revert "Use Time Profiler to get a better idea as to why RADE steps intermittently take longer to execute."

This reverts commit 711f83be0c.

* Only grab TX status once through the GUI timer.

* Only get sync once per timer run.

* Remove use of wxThread from TxRxThread.

* Use relaxed for retrieving sync status.

* Test: disable Mic In plot.

* Try using relaxed memory ordering.

* Revert "Use relaxed for retrieving sync status."

This reverts commit 364bc62e8c.

* Revert "Try using relaxed memory ordering."

This reverts commit bac5a8a799.

* One more attempt at using Speex resampler.

* Add optimizations for PlotScalar in case it's impacting test runs.

* Reenable lower quality level for plots.

* Try quality level 6.

* Actually fix spurious playback complete log messages.

* Back to quality level 10.

* macOS: Begin wait from end of work.

* Try DISPATCH_TIME_FOREVER.

* Revert "Try DISPATCH_TIME_FOREVER."

This reverts commit a913e8573e.

* Revert "macOS: Begin wait from end of work."

This reverts commit 7c719a3e3c.

* Add crazy hack to inhibit the UI thread while the pipeline is executing.

* Try checking pipeline spinlock every time we have to redraw something.

* Try actually sleeping instead of yielding.

* Revert crazy hack.

* Use separate RX thread instead of ThreadedTimer.

* Begin splitting GUI timer work into separate timers.

* Only update sync and TX state on the timers that need it.

* Defer item updates until highlights are updated.

* Delete accidentally added files.

* Try smaller block sizes.

* Try bigger block size for comparison.

* Re-disable real-time threading.

* Preallocate what we need to output RX/TX features.

* No need to duplicate bitmap to draw onto graphics context. (Reduces number of mmap() calls req'd on macOS.)

* Reenable real time threading.

* Force 50ms time quantum regardless of buffer size.

* Update reporting timers to attempt to guarantee that only one is active at a time.

* Add safety offset to BlackHole virtual audio device.

* WIP: Reduce CPU usage in PlotWaterfall.

* Fix compiler errors and rendering bugs.

* Fix compile error for real this time.

* Don't update FreeDV Reporter window if it's not actually visible.

* Back to 60ms time quantum.

* Back to 50ms.

* Slightly adjust how IsShownOnScreen() suppresses updates.

* Just use an array instead of map for PlotScalar.

* Prevent propagation of changes to FreeDV Reporter window unless something actually changed.

* Tweak Speex resampler quality again.

* Resample level 7.

* Don't need to recreate ThreadedTimer thread every time we need to restart.

* Try not running xctrace to see if we're close to fixing the issues.

* Wait a bit more time between loop iterations when playing UT recordings.

* Revert "Try not running xctrace to see if we're close to fixing the issues."

This reverts commit decff7a5b2.

* Add Time Profiler to xctrace files.

* Make all FreeDV Reporter rows invisible when window is not visible.

* Make FreeDV Reporter object synchronous.

* Add support for queuing on parent object thread instead of own.

* Fix Linux segfault.

* Use macOS Dispatch for ThreadedObject.

* Try disabling threading in TapStep.

* Reenable threading for TapStep.

* More quality level tweaking.

* Re-disable separate threading.

* Only allocate memory for feature storage if necessary.

* Use GCD for TapStep.

* Fix compiler error on Linux.

* Tweak maximum sizes of FIFOs based on recorded max usage during ctests.

* Additional adjustments to FIFO sizes.

* More tweaks of FIFO sizes for Linux.

* Disable workflow telemtry for macOS runs.

* Fix syntax error.

* Revert "Use GCD for TapStep."

This reverts commit e1522a7ab3.

* Fix memory violations when using PlotScalar.

* Fix rendering bugs from previous optimization.

* Try only returning numInputSamples at a time from vocoders.

* Revert src/pipeline to last passed build.

* Quality level 8 works better locally.

* Try 40ms blocks on macOS.

* Reduce the number of context switches while handling FreeDV Reporter traffic.

* Try reducing FIFO sizes again.

* Try reverting PyTorch upgrade.

* Didn't fully revert PyTorch changes.

* SoX is ignoring errors from Core Audio, use buffer sizes known to work.

* SoX divides by 8 to produce frame size sent to CoreAudio.

* Reset resampler back to last known working level.

* Update Linux/macOS audio code to match Windows implementation more closely.

* Try 40ms blocks again.

* Add middle click reset support for speaker/mic level.

* Revert "Try 40ms blocks again."

This reverts commit 3ca16e0335.

* Have FreeDV itself load test.wav due to performance limitations in GH environment.

* GitHub Actions: Disable iCloud (!)

* Need to set config value and not the slider (middle-click).

* Disable xctrace collection.

* Disable mic/speaker level slider unless modem is active.

* Return to libsamplerate for ResampleStep.

* MacAudioDevice cleanup.

* Remove unneeded warning message.

* Need memory_order_acquire for legacy sync state.

* Try RADE main branch again.

* Debugging: see if anything else is running that shouldn't be.

* GitHub: disable Spotlight too.

* Fix typo in README.

* Reenable macOS runner debugging.

* Include mimalloc for a bit extra boost.

* Disable mimalloc ctests.

* Disable macOS debugging again.

* mimalloc wasn't actually being used on macOS.

* mimalloc: decrease purge interval.

* Fix hidden memory allocation during TX output handling.

* Fix additional hidden memory allocations.

* Unit test: make sure rade_loss shows sync state.

* More hidden memory allocation removals.

* Further reduce duplicate memory allocations.

* Fix voice keyer bug reported by @barjac.

* More cleanup of unneeded allocations.

* Fix mini versions of scalar plots (discovered during testing).

* Remove some wxAsyncCallEventFunctor instances from gprof profile.

* Fix compiler error.

* Additional refactoring and memory allocation reduction.

* Extend purge delay a bit just in case.

* Allow GitHub Actions to re-execute test in case of an intermittent failure.

* Fix typo in rade_reporting test.

* Minor reduction in allocations during FreeDV Reporter RX handling.

* Use std::atomic for PlaybackStep.

* Revert "Use std::atomic for PlaybackStep."

This reverts commit 0ee65a38eb.

* Return nullptr to PlaybackStep if not actively playing.

* PlaybackStep: wait for main thread to finish stopping TX instead of previous approach.

* Fix rendering issue going between TX and RX.

* Fix issue where VK monitor plays previously TX audio prior to current VK cycle.

* Fix segfault in Hamlib on pressing Stop.

* Add missed destroying check while setting PTT.

* Additional cleanup in rig_control due to previous commits.
2025-08-30 09:18:53 -07:00
Mooneer Salem 468e35cd52
macOS: Upgrade PyTorch to 2.7 (and NumPy to 2.3). (#1003)
* macOS: Upgrade PyTorch to 2.7 (and NumPy to 2.3).

* Add PR #1003 to changelog.

* Remove torchaudio as it's not needed.
2025-08-18 16:18:34 -07:00
Mooneer Salem 8c17fec50a
Various FreeDV Reporter fixes (#993)
* Prevent highlights from being updated if already deleted.

* Try Cleared() instead of ItemDeleted() due to weird redraw behavior on macOS.

* Fix race condition preventing user from properly being hidden from FreeDV Reporter on startup.

* No need to have libgit_version be dynamic.

* Force deselection of any newly selected rows if a user disconnects.

* Add potential workaround for Linux users and random selections.

* Partial revert of refresh deselection.

* EVT_MOTION isn't recognized on Windows for wxDataViewCtrl, suppress random highlight fix for it and macOS.

* Add PR #993 to changelog.
2025-08-09 01:42:42 -07:00
Mooneer Salem 7fe1e6f619
Fix UI bugs when using wxWidgets 3.3. (#990)
* Fix warning messages on startup when using wxWidgets 3.3.

* Fix warnings in Filter dialog.

* Finally fixed main window sizing issues.

* Update Windows/macOS wxWidgets patch for 3.3.
2025-08-04 13:06:31 -07:00
Mooneer Salem 9844d662ea
Update Hamlib to v4.6.4. (#989)
* Update Hamlib to v4.6.4.

* Add PR #964 to changelog.
2025-08-03 15:12:43 -07:00
Mooneer Salem 4fb96ca528
Fix compile failure when compiling from tarball. (#985)
* Fix compile failure when compiling from tarball.

* Add PR #985 to changelog.
2025-07-27 00:43:34 -07:00
Mooneer Salem 5d2a24ea40
Add Hamlib as a build dependency if we're building it ourselves. (#959)
* Add Hamlib as a build dependency if we're building it ourselves.

* Add PR #959 to changelog.
2025-07-05 13:31:05 -07:00
Mooneer Salem 469b22dbc7
Make explicit various codec2 dependencies to avoid compile race condition. (#957)
* Make explicit various codec2 dependencies to avoid compile race condition.

* Add PR #957 to changelog.

* No need to use build_rade as the dependency if we're using rade.

* Forgot to check in a change.

* Looks like we need the larger FIFO after all.

* Use SRC_SINC_FASTEST for plots.

Should be low to no-impact as previous RADE testing showed only a slight quality
decrease vs. SRC_SINC_MEDIUM_QUALITY.

* Update changelog.

* Back to SRC_LINEAR.

* Update comments.

* Don't fail fast for Linux builds.

* Add libsamplerate deps where appropriate.

* Add sndfile deps.

* Revert "Add sndfile deps."

This reverts commit dc00a3b7cd.

* Revert "Add libsamplerate deps where appropriate."

This reverts commit 65c4766c20.

* Reenable processing stats.

* Try building with -O3.

* Try building using LTO.

* Revert "Try building using LTO."

This reverts commit 2536a15dd2.

* Revert "Try building with -O3."

This reverts commit 8b9b824a88.

* Revert "Reenable processing stats."

This reverts commit 5b0d31b1a2.
2025-07-05 10:37:10 -07:00
Mooneer Salem 55bae2255b
Fix issue with Git hash not appearing in Windows installer name. (#951)
* Fix issue with Git hash not appearing in Windows installer name.

* Add PR #951 to changelog.

* Use actual installer filename in GH Action.
2025-06-28 02:43:48 -07:00