Last Updated: September 2026 · Pre-release / in active development
Plain-language summary
Ham Voicing is an internet digital-voice client for licensed amateur radio operators. We (Unixeer) run no server, keep no account for you, and collect no analytics, tracking or ads. Your callsign, grid, email and network credentials are stored only on your device. Your voice is processed entirely on your phone — when you key up it travels over the internet to the amateur-radio voice network you chose to connect to, and never to Unixeer. Those networks are operated independently, and on the air your transmissions are public amateur radio.
1. Information We Store Locally
The following is stored only on your device. Ordinary preferences use the standard platform store (SharedPreferences on Android, NSUserDefaults on iOS); secrets such as network passwords, tokens and API keys are kept in the platform secure store (Keychain on iOS, encrypted preferences backed by the Keystore on Android). On the rare device whose keystore is broken and refuses those calls, the app saves them in its own private storage with basic protection instead — a real downgrade, so the app says so plainly in the Networks panel of Settings rather than claim protection it did not apply. None of this is sent to any Unixeer server.
- Callsign — used to identify you on the voice networks and to pre-fill the Support form.
- Maidenhead grid locator — if you type it in; used for display and station info. It is text you enter yourself: the app has no location permission and never reads your position from the device.
- Email address — if you type it in; used to pre-fill the Support form.
- Per-network credentials — the IDs, node numbers, passwords or tokens you enter for each network (M17, EchoLink, AllStarLink). Secrets are held in the secure store described above.
- App preferences — which networks you have enabled, your last-used network and reflector or node, the audio-cue setting, theme (light/dark) and font scale.
2. Microphone & Your Voice
Ham Voicing uses your device microphone to capture your voice when you press push-to-talk (PTT). Audio is captured only while you are transmitting.
- All audio is processed entirely on your device. Capture, encoding, decoding and playback happen on the phone itself.
- Your encoded voice is sent over the internet to the voice network you have connected to, so other operators can hear you — that is the core purpose of the app.
- Your voice never reaches a Unixeer server. We do not receive it, do not record it and do not store it. The app keeps no voice recordings on your device either.
- Without microphone access you can still listen; the app cannot transmit.
3. Permissions the App Requests
Here is every permission the app itself requests in the shipping build, and what each one is for. Nothing in this list is used to gather information about you — each entry exists because a part of the app cannot work without it.
Android
- INTERNET — reach the voice servers and reflectors you connect to.
- ACCESS_LOCAL_NETWORK — reach a node or hotspot sitting on the same Wi-Fi as your phone.
- ACCESS_NETWORK_STATE — detect whether a usable connection exists before trying to connect.
- RECORD_AUDIO — capture your voice while you are keyed up (tap PTT to key up, tap again to unkey).
- MODIFY_AUDIO_SETTINGS — route received audio to the loudspeaker or the earpiece.
- VIBRATE — the short haptic tap that accompanies the connection sound cues (logged in, link opened, link lost). Keying and unkeying themselves do not vibrate.
- FOREGROUND_SERVICE — keep receiving while the app is in the background.
- FOREGROUND_SERVICE_MEDIA_PLAYBACK — the typed form of that permission Android 14 and later requires.
- WAKE_LOCK — keep the CPU awake so audio does not break up during a QSO.
- POST_NOTIFICATIONS — Android 13 and later needs this to show the ongoing notification that tells you the app is still connected.
About BLUETOOTH
The app's Android permission list includes BLUETOOTH. Ham Voicing does not ask for it and does not use it. It is merged in by the open-source audio library the app is built on (flutter_sound), which supports Bluetooth audio routing. We would rather tell you that plainly than leave you to find an unexplained permission.
Because it is not something the app needs, its hardware feature is explicitly marked not required — so a device with no Bluetooth radio still installs and runs Ham Voicing normally.
For the same reason, all three hardware features the app declares — microphone, bluetooth and bluetooth_le — are marked as not required. None of them blocks installation on a device that lacks the hardware.
iOS
- Microphone access (NSMicrophoneUsageDescription) — capture your voice for transmission.
- Local network access (NSLocalNetworkUsageDescription) — reach servers, reflectors or a node on the same Wi-Fi as your phone.
- Background audio (UIBackgroundModes: audio) — this is a background mode rather than a permission prompt. It lets the app keep receiving, so you keep hearing the channel when you switch away from the app or lock the screen.
iOS asks for microphone and local network access with a system prompt the first time each is needed. You can change either at any time in Settings → Privacy, or in the Ham Voicing entry in the iOS Settings app.
4. Transmission to Third-Party Voice Networks
When you connect and key up, the app transmits your voice and your callsign over the internet to the amateur-radio voice network, reflector or node that you choose — M17, EchoLink or AllStarLink.
- These networks and their reflector and node operators are independent third parties, not operated by Unixeer. Each has its own policies and infrastructure, which are outside our control.
- Through those networks' gateways your transmissions may reach the air. On the air, amateur radio transmissions are public — anyone may receive them, and your callsign identifies you.
- Review the terms and privacy practices of any network you connect to before using it.
5. Licensing & Responsible Operation
A valid amateur radio license is required to transmit. You are solely responsible for operating within your license class, privileges and local regulations, and for the content of your transmissions.
6. What We Do NOT Collect
- No Unixeer account, sign-up or login — you authenticate directly with each network using your own credentials.
- No analytics, no crash-reporting telemetry sent to us.
- No device identifiers (no IDFA, no GAID).
- No advertising or third-party tracking SDKs.
- No location. The app requests no location permission and reads no position from your device.
- No voice. Your audio is processed on the device and goes only to the network you connected to.
- We never receive your callsign, grid, email or credentials — they stay on your device and go only to the networks you choose.
7. Children's Privacy
Ham Voicing is intended for licensed amateur radio operators. The app shows no advertising, has no in-app purchases, and sends no personal data to Unixeer. Use of the amateur radio voice networks requires a valid license. The app is designed to comply with COPPA, GDPR-K and equivalent child-privacy frameworks.
8. Data Retention & Deletion
All settings and credentials are stored only on your device. The surest way to delete them is from inside the app: Delete network credentials in the Networks panel wipes every saved network login, and Reset all settings to defaults clears the rest, including your callsign, grid and email. Clearing the app's data on Android does the same. Uninstalling removes the app's own storage, but on iOS an entry already written to the Keychain can outlive the app and reappear if you reinstall — so clear your credentials in Settings first if you want them gone for good. There is no Unixeer account or server data to request deletion of. Any record of your activity held by a network you used is governed by that network's own policy.
9. Network Activity & Third-Party Components
By design, Ham Voicing makes the network connections needed to join and talk on the voice networks you select. It also opens your mail app when you tap "Send email" on the Support page; if no mail app is set up, the address is copied to your clipboard instead so the support channel never dead-ends.
The app is built on standard open-source packages, including shared_preferences and flutter_secure_storage (local and secure storage), url_launcher, permission_handler, flutter_sound and audio_session (microphone capture, playback and audio routing), flutter_foreground_task (the ongoing notification while receiving in the background), and the Codec2 and GSM 06.10 voice codecs compiled into the app. The full licence text for every component is in the app under About → Licences & Notices; the voice-codec licences are also reproduced on the Licences & Notices page here. Unixeer integrates no advertising, analytics or tracking SDKs.
10. Changes to This Policy
This policy is revised whenever the app changes in a way that affects it — for example if a permission is added or removed. The current version always appears at this URL and ships with the app.
11. Contact
Questions about privacy? Email [email protected]. We typically reply within a few days.