A free, open-source, multi-platform application for sending files and messages, using the codec2 HF modems
 
 
 
 
 
 
Go to file
Steve Pinkham 3a56ebdb35 perf(audio): lower RX latency with blocksize=0 and set the input ring depth explicitly
blocksize=4800 makes PortAudio hand the RX callback fixed 100 ms blocks,
so received audio sits in the input buffer for up to 100 ms before the
demodulator can see it, and that delay is paid again on every ARQ
turnaround. With blocksize=0 PortAudio delivers whatever is available
(small blocks in the 10 to 50 ms range in our measurements), cutting the
RX buffering delay to a fraction of the old fixed block.

On its own, blocksize=0 also shrinks the negotiated input ring. We
measured 40 ms total where blocksize=4800 had negotiated 200 ms on a
CM108 USB codec, which makes short processing stalls more likely to
drop audio. The explicit latency=0.2 closes that gap: it requests a
200 ms ring built from small periods, so the stream keeps the old depth
while gaining the low latency.

The explicit ring depth also makes the negotiation deterministic on
virtual devices. On snd-aloop (the ALSA loopback used for hardware-free
testing) the default "high" latency maps to only two periods. At 100 ms
periods that double buffer misses its service deadline on a fixed cycle
and the capture stream drops audio continuously from the moment it
opens, leaving the modem deaf on that device class. With an explicit
depth the same stream runs clean; we measured buffer 12000 frames with
2400 frame periods and zero overflows, identically on two machines.

TX stays at blocksize=2400; only the RX side changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 07:20:19 -04:00
.github Merge remote-tracking branch 'origin/develop' into develop 2026-07-23 09:15:49 +02:00
.obs update workflow 2025-09-22 09:51:47 +02:00
documentation
freedata_gui Merge branch 'main' into develop 2026-07-23 09:19:18 +02:00
freedata_server perf(audio): lower RX latency with blocksize=0 and set the input ring depth explicitly 2026-07-23 07:20:19 -04:00
tests test(audio): cover the real-time-safe RX audio callback / worker split 2026-07-23 07:20:19 -04:00
tools Merge pull request #1052 from as3ii/ruff2 2026-01-10 21:41:48 +01:00
.gitignore Removed setup.py, fixed build of pip module 2025-11-11 23:19:20 +01:00
.prettierignore
.stignore
CONTRIBUTING.md Prettified Code! 2026-06-02 18:49:23 +00:00
Dockerfile Install only required dependencies 2025-11-11 23:22:22 +01:00
LICENSE
README.docker.md Prettified Code! 2025-04-05 08:04:20 +00:00
README.md adjusted readme 2026-07-23 08:51:17 +02:00
add-osx-cert.sh
entrypoint.sh Add Dockerfile and build action 2025-01-03 16:30:13 +00:00
freedata-nsis-config.nsi
pyproject.toml Update nuitka requirement from <=4.1.2 to <=4.1.3 2026-07-01 16:12:43 +00:00
requirements.txt Update nuitka requirement from <=4.1.2 to <=4.1.3 2026-07-01 16:12:43 +00:00

README.md

FreeDATA

[!NOTE] Development has slowed due to limited maintainer time.

[!WARNING] Latest release accumulated many changes towards the 0.18.x release, including a new broadcast feature for group chats. If you run into issues, please fall back to the more stable release, v0.17.8.

FreeDATA is a versatile, open-source platform designed specifically for HF communications, leveraging codec2 data modes for robust global digital communication. It features a network-based server-client architecture, a REST API, multi-platform compatibility, and a messaging system.

Please keep in mind, this project is still under development with many issues which need to be solved.

CodeFactor Modem tests

FreeDATA_main_screen.png

FreeDATA_chat_screen.png

Installation

Please check the wiki for installation instructions Please check the 'Releases' section for downloading precompiled builds

Credits