QK4 Android is a phone-focused Android client for Elecraft K4 transceivers. It preserves the proven radio-control, TCP/TLS, panadapter-stream, and TX/RX audio architecture of QK4 while replacing its desktop-oriented interaction model with a landscape touch interface.
The application is under active development and is intended for testing with an Elecraft K4/K4D on the same network. Version 0.7.4 is available as a release-signed ARM64 APK.
QK4 Android is a derivative of QK4, created by Mike Garcia, KF5O. Android development and phone UX adaptation are by worldwideDX.com.
This repository retains the GNU General Public License v3 used by the upstream project. See LICENSE.
- K4 profile management and TCP/TLS connection
- RX audio streaming for the main and sub receivers
- Microphone audio and PTT transmission
- VFO A/B display, tuning, direct frequency entry, and selectable tuning steps
- Touch tuning from the panadapter
- Spectrum and waterfall display, including mini-pan
- Main, sub, radio-control, display, function, and message controls
- RIT/XIT jog control
- CW text decoding
- F1-F8 macro editing and execution
- Android landscape layout and touch-safe scrolling
- Local non-decaying Peak Hold and local WTR CLRS waterfall brightness control
- Release-signed APK distribution support
See docs/PROJECT_STATUS.md for the verified state and next work.
| Item | Current development target |
|---|---|
| Platform | Android 8.0 (API 26) or later |
| ABI | ARM64 (arm64-v8a) |
| UI | Landscape phone; compact layout for typical phone displays |
| Framework | Qt 6.11.1 |
| Android API | Minimum 26, target 34 |
| Radio | Elecraft K4/K4D |
Other platforms remain present in the inherited QK4 source, but this repository's supported product target is Android. Physical acceptance testing has been performed on a Samsung Galaxy S26 Ultra; test other phone families before treating them as validated.
Install:
- Qt 6.11.1 with the Android ARM64 kit and a matching Windows desktop host kit
- Android SDK, platform tools, and NDK
- Android Studio's bundled Java runtime or another compatible JDK
- CMake and Ninja, normally installed by the Qt Maintenance Tool
The ARM64 Opus headers and static library used by the current Android build are kept under third_party/android/opus so the repository does not depend on the original development PC's directory layout.
From PowerShell or Command Prompt:
build-android.cmd -Action Doctor
build-android.cmd -Action Configure
build-android.cmd -Action ApkTo make a distribution APK, use the external release keystore and the temporary signing environment variables documented in docs/BUILD_ANDROID_WINDOWS.md:
build-android.cmd -Action Apk -DeploymentType ReleaseTo install on a connected phone with USB debugging enabled:
build-android.cmd -Action InstallThe script discovers normal Qt and Android SDK locations. Any nonstandard location can be supplied through these environment variables:
| Variable | Purpose |
|---|---|
QK4_QT_ANDROID |
Qt Android ARM64 kit directory |
QK4_QT_HOST |
Matching Qt Windows host kit directory |
ANDROID_SDK_ROOT |
Android SDK directory |
ANDROID_NDK_ROOT |
Android NDK directory |
QK4_JAVA_HOME |
Preferred JDK directory for this build |
JAVA_HOME |
Fallback JDK directory |
QK4_CMAKE |
Full path to cmake.exe |
QK4_NINJA |
Full path to ninja.exe |
QK4_OPUS_ROOT |
Alternate Android Opus installation |
Detailed setup and troubleshooting are in docs/BUILD_ANDROID_WINDOWS.md. For a transfer checklist, including what is intentionally not stored in Git, see docs/PORTABILITY.md.
android/ Android manifest, Gradle configuration, and icons
src/audio/ Opus and Qt audio engine
src/controllers/ UI and radio orchestration
src/dsp/ Spectrum, panadapter, and waterfall rendering
src/models/ K4 state and CAT response handling
src/network/ TCP/TLS and K4 streaming protocol
src/settings/ Local application settings
src/ui/ Shared and Android-adapted widgets
third_party/android/opus/ ARM64 Android Opus development files
.codex/skills/ Repository-local Codex development skill
Radio profiles and passwords are runtime data and are not stored in this repository. Do not commit profile exports, logs containing credentials, keystores, signing passwords, APKs, build trees, or phone screen captures.
Production distribution requires a private Android signing key. Keep signing credentials outside the repository and provide them only through the supported build environment.
Read AGENTS.md before making changes. The central rule is to preserve QK4's known-good connection, audio, and radio-control methods. Android work should adapt presentation and input behavior without inventing alternate radio plumbing.