FT8 on Android — modernized.
🌐 ft8af.app · 💬 Join the Discord
A fork of FT8CN that takes the excellent original and brings it forward: a Jetpack Compose UI, full English localization, dozens of bug fixes, and a pile of new operating features built for real on-the-air use.
Run FT8 natively on your Android phone or tablet, drive your radio over USB CAT, decode the band, and work the world from anywhere.
- Jetpack Compose UI with a Material 3 dark theme
- Localized in 7 languages: English, Simplified Chinese (ZH-CN), Traditional Chinese (ZH-TW), Russian (RU), Spanish (ES), French (FR), and Japanese (JA)
- Active QSO Monitor — collapsible panel above the TX strip showing the current contact at a glance
- Caller queue so you stay on target during an active QSO instead of bouncing to whoever's loudest
- CQ / Stop toggle button right on the TX strip
- TX1 / TX2 time slot toggle for picking your transmit period
- Configurable spectrum width and continuous waterfall scrolling
- UTC timestamps drawn on the waterfall at FT8 period boundaries
- TX volume control wired to the hardware volume buttons
- USB CAT control and USB audio reliability fixes (auto-connect race conditions, multi-port handling, serial control)
- Rig model, control mode, and audio device pickers in the new Compose Settings
- FT-891 bandwidth correctly set to 3000 Hz in DATA-USB mode
- TX marker frequency alignment fixes
- Cloudlog configuration dialog and automatic log upload
- QRZ automatic log upload
- 58+ bug fixes across two "bug bash" passes: NPE crashes, resource leaks, threading issues, Android lifecycle bugs, encoding errors, RTL support, lint errors for Android 12+
Grab the latest APK from the Releases page, or build it yourself:
cd ft8af
./gradlew installDebugThe FT8 DSP core is a vendored copy of kgoba's ft8_lib, pinned to a specific upstream commit — see ft8af/app/src/main/cpp/ft8_lib/FT8_LIB_PIN.txt for the exact hash. App-specific JNI glue lives alongside it in ft8af/app/src/main/cpp/ft8af_glue/. All of it is built from source by the NDK/CMake toolchain into a single libft8af.so, so a fresh clone or worktree builds with no manual copying.
Historical note: the app formerly shipped a closed prebuilt libft8cn.so — a JNI wrapper around kgoba ft8_lib @ 6f528128. It is no longer used and no longer present in the repository; the from-source build replaced it entirely.
Massive thanks to BG7YOZ, the original author of FT8CN, and N0BOY, who hosts the original repository and did the early translation work. None of this exists without their work — this fork stands entirely on their shoulders.
Most of the changes in FT8AF were vibe coded on I-70 at 70 mph on the way to and from Hamvention. Laptop on the passenger seat, radio in the back, Claude in the loop. Some of the best debugging happens at highway speed.
Built by: