Latry is a mobile SvxLink client for amateur radio enthusiasts, enabling digital voice communication across Android and iOS platforms. Built with Qt 6.9, it provides seamless connectivity to SvxReflector servers and HAM TETRA networks with low-latency audio processing.
Website: https://latry.app
Note: Latry is not officially affiliated with the SvxLink project and is intended for hobbyist use. Users should ensure compliance with local amateur radio regulations.
- SvxReflector & HAM TETRA Networks - Seamless connectivity to reflector servers
- Low-Latency Audio - Opus codec with integrated jitter buffer for clear communication
- Simple Tap-to-Talk Interface - Traditional radio-style PTT operation
- Talkgroup Support - Real-time transmission visibility and talkgroup management
- Secure Authentication - Callsign and key pairing for server access
- Cross-Platform Support - Native apps for iOS and Android
- Background Operation - Maintains connection when app is minimized
- Lightweight Design - Focused, efficient client (not a full SvxLink node replacement)
- No Advertisements - Clean, distraction-free interface
- Dark Mode Support - Adaptive UI that follows system theme
- Native iOS VoIP - CallKit integration for system-level VoIP support
- Background Audio - Continues operation when app is backgrounded
- iOS 13.0+ - Optimized for modern iOS devices
- App Store Ready - Configured for TestFlight and App Store distribution
- Foreground Service - Reliable background operation with notifications
- Battery Optimization Bypass - Automatic handling of Android power management
- Wake Lock Management - Prevents device sleep during active communication
- Notification Controls - Quick access to PTT from notification shade
The project uses platform-specific folders due to historical branching differences:
Latry/
├── android/ # Android-specific build (Qt 6.9+)
│ ├── android/ # Android manifest and resources
│ ├── CMakeLists.txt # Android build configuration
│ └── *.cpp/h # Shared C++ source files
│
├── iOS/ # iOS-specific build (Qt 6.9+)
│ ├── ios/ # iOS-specific files and resources
│ ├── CMakeLists.txt # iOS build configuration with advanced features
│ └── *.cpp/h # Shared C++ source files + iOS extensions
│
└── README.md # This file
Note: At some point there were differences between the Android and iOS branches, and it took too long to synchronize and condition the functionalities depending on the platform. The iOS branch is slightly ahead in terms of code changes.
- iOS 13.0 or newer
- iPhone/iPad with microphone and WiFi
- Android 9.0 (API 28) or newer
- Device with microphone and WiFi
- CMake 3.16+
- C++ Compiler with C++17 support
- Opus Audio Codec Library
- macOS with Xcode 14.0+
- Qt 6.9+ with iOS support
- iOS Developer Account (for device deployment)
- Apple Developer Team ID (for code signing)
- Qt 6.9+ with Android support
- Android SDK and NDK
- Java 8 or higher
- Setup Environment
export QT_ROOT="/opt/homebrew/Qt/6.9.0" # Adjust path as needed
export PATH="$QT_ROOT/ios/bin:$PATH"
export CMAKE_PREFIX_PATH="$QT_ROOT/ios"- Configure Build
cd iOS
mkdir build-ios
cd build-ios
cmake .. \
-G Xcode \
-DCMAKE_SYSTEM_NAME=iOS \
-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0 \
-DCMAKE_PREFIX_PATH="$QT_ROOT/ios" \
-DCMAKE_TOOLCHAIN_FILE="$QT_ROOT/ios/lib/cmake/Qt6/qt.toolchain.cmake" \
-DIOS_DEVELOPMENT_TEAM="YOUR_TEAM_ID" \
-DQT_FEATURE_debug_and_release=ON \
-DIOS=TRUE- Build with Xcode
# Open in Xcode
open Latry.xcodeproj
# Or build from command line
xcodebuild -project Latry.xcodeproj \
-scheme Latry \
-configuration Release \
-destination "generic/platform=iOS"- Setup Environment
export ANDROID_SDK_ROOT="/path/to/android-sdk"
export ANDROID_NDK_ROOT="/path/to/android-ndk"
export QT_ROOT="/path/to/Qt/6.9.x"- Configure Build
cd android
mkdir build-android
cd build-android
cmake .. \
-DCMAKE_TOOLCHAIN_FILE="$QT_ROOT/android_arm64_v8a/lib/cmake/Qt6/qt.toolchain.cmake" \
-DQT_ANDROID_ABIS="arm64-v8a" \
-DANDROID_ABI=arm64-v8a \
-DCMAKE_BUILD_TYPE=Release- Build APK
cmake --build . --parallel- Qt 6.x - Application framework
- QtQuick - UI framework
- QtNetwork - Network communication
- QtMultimedia - Audio processing
- Opus Codec - Audio compression
- OpenSSL - Secure communications (Android)
- iOS Frameworks:
- Foundation, UIKit
- AVFoundation, AudioToolbox
- CallKit, PushKit
- UserNotifications
- Network, VideoToolbox
- Android Permissions:
- INTERNET, RECORD_AUDIO
- WAKE_LOCK, FOREGROUND_SERVICE
- POST_NOTIFICATIONS
- REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Latry is specifically designed for amateur radio operators with:
- SvxLink Protocol Support - Compatible with SvxLink reflector networks
- Talkgroup Management - Connect to specific amateur radio talkgroups
- Authentication - Secure key-based authentication for reflector access
- Callsign Integration - Proper callsign identification and display
- PTT Operation - Traditional push-to-talk radio operation
- Host - Reflector server address (e.g.,
reflector.145500.xyz) - Port - Connection port (typically
5300) - Callsign - Your amateur radio callsign
- Authentication Key - Provided by reflector administrator
- Talkgroup - Target talkgroup number
# Set your Apple Developer Team ID
-DIOS_DEVELOPMENT_TEAM="1A2BC3D4E5"
# Configure bundle identifier
-DIOS_BUNDLE_IDENTIFIER="yo6say.latry"- Archive Issues: Enable
QT_USE_RISKY_DSYM_ARCHIVING_WORKAROUNDfor TestFlight builds - FFmpeg Frameworks: Debug binaries are automatically cleaned from frameworks
- Code Signing: Ensure valid Team ID and automatic signing is enabled
- Battery Optimization: App guides users through battery optimization settings
- Background Service: Uses foreground service for reliable VoIP operation
- OpenSSL: KDAB OpenSSL integration for secure communications
This project is published as open source because many people want various functionalities, and implementing all requests takes considerable time. The community is free to add and modify features as needed.
Pull Requests Welcome! I am open to pull requests and will continue to host the application on Google Play and the App Store.
When contributing:
- Follow existing code style and conventions
- Test on both iOS and Android platforms when possible
- Update documentation for new features
- Ensure compatibility with SvxLink reflector protocol
- Consider the platform-specific folder structure
This project is licensed under the GNU General Public License v3.0 (GPLv3).
You are free to:
- Use, modify, and distribute this software
- Create derivative works
- Use it for commercial purposes
Under the following conditions:
- Provide source code of your modifications
- Use the same GPLv3 license for derivative works
- Include license and copyright notices
See the LICENSE file for full details.
Silviu YO6SAY
Amateur Radio Operator & CTO
- Website: latry.app
- iOS App Store: Download Latry
- Google Play Store: Download Latry
Built with ❤️ for the Amateur Radio Community