-
iperf3-gui v0.1.0
StableCI / Analyze & Test (push) Failing after 30sreleased this
2026-08-26 13:44:11 +00:00 | 15 commits to master since this releaseRelease 0.1.0
First working release. Before this, the app had never completed a single
iperf3 test; it now runs client-mode TCP tests on device and reports results
live.Features
- Client-mode TCP throughput testing, iperf3 3.19 compiled into the app as a
native library (libiperf3jni.so) for armeabi-v7a and arm64-v8a - Configurable server, port, duration and parallel streams
- Live per-interval output while the test runs, plus mean/peak/sample figures
- Stop a run in progress; copy the transcript
- Results consumed as structured --json-stream events, so retransmits and CPU
utilisation are reported and a chart can be driven without re-parsing text - Headless entry point (lib/main_headless.dart) that runs a test with no UI
Fixes that made it work
- The output pipe was joined before its write end was closed, deadlocking
every test; the pipe is gone entirely, replaced by iperf3's json_callback - The blocking test ran on the Flutter platform thread, freezing the UI and
making live output and stop unreachable; it runs on a worker thread - The reader thread freed state the caller then read and freed again
- Release builds aborted on the first callback because R8 renamed the JNI
callback methods
Verified on a Sony XQ-AS72 (Android 12, arm64) against a local iperf3 server:
release APK, 806 Mbit/s single-stream and 889 Mbit/s across four streams, each
matching the server's own figure. Thread and fd counts return to baseline
across consecutive runs.Known limitations
- armeabi-v7a builds but has never been run
- UDP (-u), reverse mode and bidirectional tests are unexercised
- Release APK is signed with debug keys; no signing config yet
- 48.6MB APK: both ABIs in one artifact, no --split-per-abi
Downloads
- Client-mode TCP throughput testing, iperf3 3.19 compiled into the app as a