Android and iPhone app

Download TetraPoland

A software TETRA radio on your phone. Install it and connect to the TetraPoland network over mobile data or Wi-Fi — no hardware to buy. On Android it also runs on PoC radios: it supports the hardware PTT key and the group knob (including models we have never seen — you teach the app your own keys), and on hardware with no touchscreen you drive it from the keypad.

TetraPoland
AndroidPoC radiosversion 1.7.42026-08-16
⬇ Download app (universal) · 5,5 MB

Works on any Android phone — recommended

Smaller builds (advanced)
TetraPoland
iOSversion 1.0.42026-08-16
⬇ Get it on iPhone (TestFlight)

Requires iOS 16.0 or newer · build 64

How to install
  1. Install TestFlight from the App Store — Apple’s official app for testing apps.
  2. Open the link above on your iPhone — it adds TetraPoland to TestFlight.
  3. If TestFlight asks for an invite code, enter YYPG2ZnR — it is the tail of the link.
Operating manual

Not sure what comes next?

The full manual walks you through it step by step — from the SELF CARE password and the first login to talkgroups, scanning, the map and background operation, for Android and iPhone in one document.

Screenshots

Main screen — large PTT button, talkgroup selector, network connection statusTalkgroup picker — list of talkgroups with favorites and searchContacts with search and per-contact actions: message, PTT and callSDS messages — individual and group conversationsSettings — network, audio, contact import, GPS, scanner and hardware buttons

How to install

Android — the APK

1
Download the APK
Tap the download button — your phone saves the .apk file.
2
Allow installation
On first install Android asks permission to “install from unknown sources” for your browser or file manager — enable it.
3
Open and install
Tap the downloaded file, confirm the installation and launch TetraPoland.
4
Play Protect warning
Play Protect sometimes warns about apps installed outside the Play Store. If it does, expand “More details” and choose “Install anyway” — a standard notice for apps distributed outside the store.

iOS — TestFlight

1
Install TestFlight
Get TestFlight from the App Store — Apple’s official channel for testing apps before they reach the store.
2
Open the invitation
Tap “Get it on iPhone (TestFlight)” above on your iPhone — TetraPoland then shows up in TestFlight.
3
Install and test
Tap “Install” in TestFlight. If it asks for an invite code, enter YYPG2ZnR.

What the app does

Android — what's new

  1. v1.7.42026-08-16latest
    • No more position scatter on the map. The app listens for positions from both GPS and the mobile network — and a cell-tower reading can be off by hundreds of metres, yet went to the map like any other, corrupting the distance trigger for the reports after it. Readings with accuracy worse than 100 m are now rejected — in the GPX track too.
    • A position counts as sent only when it actually left. When the hub link happened to be down (during a reconnect, say), the app could mark a position as sent although it never arrived — then go quiet for the full reporting interval, up to an hour. A failed send now retries on the next reading.
  2. v1.7.32026-08-16
    • Private calls now reach radios too. In the "Users online" list the call button used to appear only next to app users — radios had none. Every entry now carries both buttons: a PTT (simplex) call and a phone-style (duplex) one, whether the other side is a phone running the app or a radio on a site.
    • A question before the call goes out. The call buttons next to contacts, favourites and online users now ask "Really place this call?" and say plainly which kind it is: duplex rings like an ordinary phone and both sides talk at once; simplex is a PTT conversation, one side at a time. A stray touch while scrolling a list no longer rings anyone's radio. The iPhone app gets both changes in the same release.
  3. v1.7.22026-08-11
    • A Galaxy Watch app. The watch works as a remote: transmit from your wrist, switch between favourite talkgroups and see who is speaking without taking the phone out. Audio can optionally move to the watch as well — receive, transmit or both. Note: the watch support ships as it stands — transmitting and receiving from the wrist have not yet been confirmed by listening, so treat that part as still to be proven in the field.
    • PoC radios: teach it your buttons instead of waiting for a profile. Until now the buttons only worked on models written into the code — every new radio meant a report to us and a new version of the app. Settings → Hardware buttons now has an "Other radio" profile: tap a row, press the key on the radio, and the app remembers it. Three functions can be taught — PTT and both channel steps, which covers the group knob most PoC radios are built around. For hardware that sends a software signal instead of a key press there is a separate field for its name; the release signal is derived automatically. The standard PTT signals used by some radios and by key-bridging apps are recognised too.
    • The radio's own display follows the call. On radios with their own status screen and LED the app can now hand them the talkgroup name, the speaker and the transmit state — until now the hardware insisted nothing was happening while a call was in progress. A switch in Settings → Hardware buttons, off by default, as an ordinary phone has nobody listening.
    • Usable without a touchscreen. Some PoC radios have no touch at all — a keypad and a knob. The selected control now has a visible ring and the centre key activates it; on such hardware the selection starts on PTT, so the first press transmits.
    • Three switches for working from a radio. The screen may be allowed to sleep (it used to stay lit whenever the app was up front — on a radio in a pocket that is current spent for nothing). The on-screen PTT button can be hidden when the hardware has its own. Pressing the hardware PTT can wake the screen and raise the app, so you can see that you are transmitting.
    • Background work finally visible. Settings gained a row showing whether the app is allowed to run without battery restrictions — without it the system suspends the app after half a minute or so and the session drops. One tap takes you to the right place in the system. The permission itself is now asked for once rather than on every launch. The background keepalive is steadier too: the alarm that guards the session is now an exact one rather than "some time later", because Android could stretch a five-minute interval to nine minutes and more.
    • The English build is complete. A few places spoke Polish regardless of the language setting.
  4. v1.7.12026-08-02
    • The app uses less battery when nothing is happening. A review of what it does in the background turned up several things running around the clock for no reason. The audio level meter was read six times a second even with the screen off, when nobody can see it — it now runs at full rate only while you are transmitting or receiving. The alarm that keeps the connection alive woke the phone every thirty seconds although its real work comes round once every five minutes; it now wakes when it has something to do, and copes better with Android's power saving as a side effect. The voice sending loop could, in one particular case, keep running after a transmission ended and carry on until the app was restarted — it now stops by itself. WiFi low-latency mode, which switches the adapter's power saving off, is taken for the duration of a call instead of permanently. Searching for a Bluetooth PTT button ran at full power indefinitely when the button was switched off — after half a minute it now drops to a low-power search. None of this changes how the app behaves; it changes how much current is spent waiting for a call.
    • The map replaces Settings on the bottom bar. On the bar you reach with a thumb while working, a map is worth more than a screen you set up once. Settings have not gone anywhere — they are in the menu under the three lines, as before. The map opens inside the app rather than in the browser: switching to the browser puts the radio in the background, and you would have to switch back before you could transmit. The iPhone app does the same.
  5. v1.7.02026-07-31
    • A private call now survives a change of network. When the phone hops from WiFi to mobile data — leaving the house, driving out of the garage — the link to the server drops and is rebuilt. That usually takes a fraction of a second, but until now a private call ended right there, and the other side was never told: they were left holding a dead phone. The call now waits for the network to come back and carries on. If it does not come back, the call ends by itself and — this is new — the server tells the other party, including when the other party is a radio.
    • A phone-style call no longer hangs forever when the other side disappears. If not a second of audio arrives for twenty seconds — their phone died, or they closed the app — the call hangs up on its own. PTT calls have had that safeguard for a long time; phone-style calls had none.
    • The green handset next to iPhone users. In the "Users online" list, people using the app on an iPhone had no call button and were shown as radios. You could of course call them — just not from that list. They now get the handset and the phone icon like everyone else.
  6. v1.6.92026-07-30
    • A BrandMeister login is now required — for some people this needs action. The app now signs in everywhere with your DMR ID and SELF CARE password: to the Polish hub as much as to BrandMeister. Anyone who used to connect with just a callsign and the shared password will, after updating, see "Enter your DMR ID and SELF CARE password in Network settings" and will not connect until they do. The reason is not paperwork: under the old login the server had no way to confirm who you really were and had to take the number the app claimed on trust. Your identity is now verified against BrandMeister, and the number you present on the network has to match it. The SELF CARE password lives at brandmeister.network → SelfCare → Hotspot Security.
    • You can finally see who is calling while the app is in the background. A private call — PTT or phone-style — now raises a proper call notification with the caller's name, and on a dark or locked screen it opens the app by itself. Before, a ringtone played and nothing said what was ringing or who to answer.
    • Group calls get one quiet notification. A single entry, rewritten as things change, showing the active talkgroup and who is speaking. It never rings, never vibrates and never multiplies with each transmission.
    • New icons for scan, and for logging in and out. Scan now uses the sign radios use — a "Z" with an arrow — instead of a flatbed-scanner glyph. The network login shows a power switch rather than a WiFi symbol, which suggested the state of the phone's internet rather than your registration on the TETRA network.
    • PTT latch in private calls. The same switch as on group calls: PTT can be latched instead of held, and the choice is remembered between calls.
    • Exit and Kill App moved above the call history — the history grows with every conversation, so those two kept drifting further down.
  7. v1.6.82026-07-29
    • Private calls are no longer encrypted — end-to-end encryption of person-to-person calls has been removed from the app, and with it the switch in the network settings, the twelve-digit code to read aloud, and the padlock on the call screen. The change matters most for phone-style calls (the green handset): those were always encrypted, and now they are not. PTT calls already went in the clear for most people, since the switch was off by default. Treat a private call like any other radio traffic — do not assume nobody along the way is listening. Group calls, SDS messages and GPS positions were never encrypted, and nothing changes for them.
    • Phone-style calls now reach every version — an encrypted call required the other side to run an app speaking exactly the same mechanism, or the attempt simply failed. The call now takes the ordinary path, the same one the server can carry onward to the TETRA network, BrandMeister and Hytera.
  8. v1.6.62026-07-27
    • BrandMeister groups (91 and above) work again with a suffixed ID — if you added a two-digit suffix to your number, the app logged in correctly and showed "connected", yet identified itself to the gateway with a number that does not fit the TETRA network format. The gateway accepted it without complaint and then forwarded nothing at all — the channel was simply dead. The suffix is now used for the login only, while on the network itself you identify with your real seven-digit number.
    • No more dropping out every few minutes — the connection could die even while the network was perfectly fine, for two unrelated reasons. On the server: the app refreshes its presence every few minutes, and the server mistook that refresh for a second device signing in and disconnected the first one — you, often mid-conversation. In the app: a phone holding both WiFi and mobile data reports changes on the network you are not using either, and the app tore down a healthy connection on every one of them. The server-side fix already applies to everyone, whatever app version they run.
  9. v1.6.52026-07-27
    • Private calls visible to your Bluetooth kit — a car hands-free set, a motorcycle display or a helmet intercom now shows an incoming private call and lets you answer or hang it up with its own button, just like a regular phone call. Until now the kit had no idea you were talking at all. It can be turned off in Settings → Network ("System call integration"). Group channels are not affected — a channel is not a call.
    • A second device on the same account (DMR ID suffix) — the ISSI / DMR ID field accepts a two-digit BrandMeister suffix, e.g. 260012301. The phone then logs in to BrandMeister as its own device instead of pushing the other one off, while your number on the network stays the same. It requires an extra ID registered to your callsign.
    • Say it plainly: the SELF CARE password — the most common setup mistake, so the field now states which password it wants and where to get it (SelfCare → Hotspot Security). It is not your BrandMeister website password, nor a hotspot one. When a login is refused, the app says so instead of just showing "disconnected".
    • Faster, calmer BrandMeister login — the BrandMeister gateway accepts roughly one login per account per minute, and the app used to retry every few seconds, which kept the block alive by itself. It now waits out its window, stops retrying pointlessly, and no longer drops the link just because a talkgroup went quiet for a while.
  10. v1.5.92026-07-25
    • In-app updates — TetraPoland now checks for a newer version by itself and offers it in a dialog with the list of changes. Tap "Update" and the app downloads the right file for your phone and starts the installation. The first time, Android asks for a one-off permission to install apps from this source. Tapping "Later" keeps it quiet until the next release.
    • Private call without ringing (direct mode) — a new switch in Settings → Network. Turned on, the person you call joins the PTT conversation immediately, without answering — the standard's "direct set-up". Turned off (the default) keeps the usual ring-and-answer. Two-way calls always ring.
    • Safer contact deletion — the bin icon is gone from the list, where it sat right next to the green handset and made it easy to delete a contact instead of calling it. Long-press a contact instead and a menu with the delete option appears.
    • Echo (9990) fix — calling the echo service from the app dropped after two seconds; it now waits for you to press PTT.
  11. v1.5.82026-07-12
    • Improved Bluetooth — the app no longer holds your Bluetooth headset open permanently (no more constant hiss or "channel takeover" that cut other channels off the loudspeaker). When your device supports Bluetooth LE Audio, audio and mic run at higher quality; classic headsets keep working with the mic. During silence the audio link goes idle, so the headset stays quiet.
    • Consistent volume control — the hardware rocker always adjusts receive volume, and the system remembers a separate level for speaker, earpiece and Bluetooth.
    • Fixed audio startup — after launch audio goes straight to the loudspeaker (or your headset if connected), with no need to toggle the output manually.
  12. v1.5.62026-07-11
    • Hardware and Bluetooth button mapping — assign the PTT button (and P1/P2/EVA on Motorola EVOLVE) to a specific channel or contact: one press switches to that channel and transmits, or calls that person. The programmable keys can also trigger functions: next/previous channel and scan on/off.
    • Two-way (duplex) calls now default to the earpiece — like a regular phone; loudspeaker and Bluetooth are still available in the audio-output picker.
  13. v1.5.52026-07-10
    • Call audio output picker: loudspeaker / earpiece / Bluetooth — one switch for group, PTT and two-way calls. Loudspeaker by default (radio-style); a Bluetooth headset shows up in the picker when connected.
    • Join a group call already in progress — stepping onto a group while someone is talking now plays the call immediately (it used to stay silent until the next PTT press).
    • Audio fixes: consistent microphone sensitivity regardless of the output route; automatic switch to a Bluetooth headset when connected.
    • A PTT (simplex) call now hangs up by itself after 20 s with no transmission — with an on-screen countdown.
    • You can no longer call or message your own number.
  14. v1.5.12026-07-10
    • Private calls now take absolute priority over group traffic — group activity during a private call no longer interrupts it or wedges the app.
    • Fix: a duplex call no longer jumps to the PTT screen mid-call, the mic no longer mutes one-way, and the call can always be hung up.
    • Screen locked to portrait — rotating the phone no longer loses the call screen.
    • Incoming call screen: large caller name, an E2EE padlock, and phone-style handsets (drag to answer/reject).
    • Signal-quality meter fixed — it no longer shows empty on a good connection.
  15. v1.5.02026-07-09
    • Private calls between app users: two-way (like a normal phone, with ringtone and vibration) and PTT with call alerting.
    • E2EE encryption of private calls — the hub relays them but never holds the key and cannot listen in.
    • Verification code on the call screen — 12 digits; read them to each other, they must match on both phones.
    • Post-quantum protection — the key combines the X25519 curve with the ML-KEM-768 algorithm, so calls recorded today cannot be decrypted in the future.
    • A new, faster and more resilient network link (QUIC): switching from Wi-Fi to LTE now takes seconds instead of minutes.
    • Security fix: private PTT calls used to reach everyone logged in — they now reach only the person you called.
    • Call duration, ringback tone, ringtone with vibration, answer and hang-up clicks.
    • Favourites with the same actions as Contacts; contact-import progress counted in records and translated.
    • Fixes for echo, one-way audio and the app crashing during calls.
  16. v1.3.602026-07-08

    BrandMeister login fixes: the BM link no longer dies permanently after a transient gateway rejection, hub and BM log in sequentially (no account collision), and the hub remembers your device after the first login. Sparser retries on a wrong password to avoid account lockouts.

  17. v1.3.592026-07-08

    New, more secure network login: your BrandMeister account (DMR ID + password) now also authenticates the Polish hub connection. Clear messages when access is denied.

  18. v1.3.582026-07-05

    Swipe-scroll in settings and side panels on small screens. Auto-start and language moved to the end of the settings list. Fixed the secure connection (SSL) on older Android phones.

  19. v1.3.572026-07-04

    Simplified audio path (removed mic sidetone and noise gate) and more stable reconnection to the BrandMeister network.

  20. v1.3.552026-07-04

    End-of-transmission tone (roger beep) at the end of each transmission.

  21. v1.3.532026-07-04

    Clean transmit audio — fixed the metallic voice distortion.

  22. v1.3.522026-07-04

    Record your travelled route to a GPX file, plus lighter GPS position reporting (longer battery life).

  23. v1.3.512026-07-04

    Ready-made audio profiles (Motorola / Quiet / Indoor), SDS quick replies and muting groups in the scanner.

  24. v1.3.502026-07-04

    Configurable talkgroup scanner — adjustable hold time and reply mode.

  25. v1.3.492026-07-04

    Improved Bluetooth headset handling during transmission.

  26. v1.3.482026-07-03

    Bluetooth Low Energy PTT buttons (multiple models) plus smarter position reporting.

  27. v1.3.472026-07-03

    Send your GPS position to the network map on tetra-poland.pl.

  28. v1.3.432026-07-03

    Reliable background operation — the app no longer disconnects when minimised or with the screen off.

  29. v1.3.362026-06-27

    Delivery and read receipts for SDS messages (ticks next to messages).

  30. v1.3.332026-06-27

    SDS and scanning fixes — favourites picker when sending, group priority, more reliable reports.

  31. v1.3.322026-06-27

    BrandMeister: correct switching and affiliation of the selected talkgroup (no more mixing all groups at once).

  32. v1.3.272026-06-27

    Stabilised BrandMeister connection — automatic receive recovery and reconnection after a stall.

  33. v1.3.112026-06-26

    Encrypted BrandMeister password and stronger privacy (less data in logs).

  34. v1.3.82026-06-26

    BrandMeister network login — talkgroups numbered ≥91 via your DMR ID and BrandMeister password.

iOS — what's new

  1. v1.0.4 (64)2026-08-16latest
    • Position sharing actually starts. With network autostart off, GPS would not start despite its switch being on — only flipping the switch again helped. It now depends solely on its own switch.
    • A stale position no longer poses as fresh. The first reading after launch can be one the phone memorised hours earlier, sometimes somewhere else entirely — and it went to the map as current. Stale readings, and ones with accuracy worse than 100 m, are rejected, and every sent position carries the real time of its reading, so the map can place it honestly.
    • A position counts as sent only when it actually left. A send attempted while the link was down no longer vanishes silently — it retries on the next reading.
    • Cleanup on reconnect and a quicker audio comeback. Every reconnect to the server used to leave a trace in the app's memory — over many days those traces add up. When the app returns to the front, the audio path that keeps it alive in the background is now checked and resumed immediately instead of waiting for the watchdog. The whole GPS path also writes its progress to the diagnostic log.
  2. v1.0.4 (63)2026-08-16
    • Private calls now reach radios too. In the "Users online" list the call button used to appear only next to app users — radios had none. Every entry now carries both buttons: a PTT (simplex) call and a phone-style (duplex) one, whether the other side is a phone running the app or a radio on a site.
    • A question before the call goes out. The call buttons next to contacts, favourites and online users now ask "Really place this call?" and say plainly which kind it is: duplex rings like an ordinary phone and both sides talk at once; simplex is a PTT conversation, one side at a time. A stray touch while scrolling a list no longer rings anyone's radio. The Android app gets both changes in the same release.
  3. v1.0.4 (62)2026-08-11
    • The radio no longer mutes your car audio. After switching the audio output — speaker or earpiece — the app stayed in phone-call mode and silenced the car radio and music, even with the talkgroups quiet. In that same state an older problem came back: an incoming call silenced reception completely instead of merely ducking it. The symptom was confusing, because it went away after the first PTT press and returned the next time the output was switched. Call mode is now entered only when it is genuinely needed: while transmitting, or when you pick the earpiece yourself — where silencing the room is exactly what you are asking for. Switching back to the speaker hands the audio back to other apps at once.
    • Still to do: while actually transmitting the app still takes the audio exclusively and asks the car for hands-free mode, so the car radio will dip for the length of each over.
  4. v1.0.4 (61)2026-08-10

    English that is actually English. Switching the language left most of the app in Polish — and not for one reason but three. The translation file was missing half its entries: whole screens, among them hardware buttons, the delete dialogs and the receive-quality legend, had no English at all. A dozen places could never translate, because text glued together from two pieces, or passed as a variable, bypasses the lookup entirely. And strings built in code — hub and BrandMeister status banners, Bluetooth button states, import progress, notifications — were assembled before the language was even known. All three holes are closed and the translation file has been rewritten at 247 entries. The system permission prompts speak English too; until now they came up in Polish whatever the phone was set to.

  5. v1.0.4 (60)2026-08-07

    Keep the screen on. A new switch in Settings: the screen no longer dims while the app is up front — say, in a car mount. On by default; turn it off if you prefer the screen to sleep as before. Nothing changes in the background — the phone dims as usual, so the battery does not suffer outside the car.

  6. v1.0.4 (59)2026-08-05
    • A phone call no longer kills the radio. A missed call does not shut reception down — the radio comes back on its own, with no unlocking and no re-login. After an answered call the app returns to the talkgroup the first time you pick the phone up.
    • Reception plays alongside other apps. Network voice no longer pauses your music or podcast — it plays on top. Transmitting still takes the audio exclusively.
    • PTT tones. A short beep confirms the channel is yours after pressing PTT; an optional roger beep, audible to the other side, closes the over (off by default, as it occupies the channel).
    • A map inside the app. The Map button opens the tetra-poland.pl map without leaving the app, and Settings can optionally report your own position to that map (off by default).
    • Wireless PTT button (Bluetooth LE). Settings → Hardware buttons: PTT-Z01 and AnyTone/ELET profiles plus HM-10 modules; transmits with the screen locked too. Still awaiting confirmation on a real button.
    • Receive-quality bars. Bars next to the group name show receive quality; tapping shows the threshold legend. Right after login the 5 bars are an assumption, not a measurement.
    • Steadier in the background, lighter on the battery. The background keepalive actually runs now, a link recovery no longer loses the selected group, and the level meter no longer rebuilds the screen a dozen times a second.
  7. v1.0.4 (50)2026-08-01
    • The scanner listens only to the groups you ticked. Until now it let traffic in from groups that were not on the list — usually 91 and 260 — and when two of them were busy at once it mixed them into one unintelligible stream. The selected group now always wins; a scanned one is only let through while the selected group is silent. There is also a new Talkback switch (Settings → Scanner): turn it off and PTT always transmits on the group you are sitting on.
    • SDS messages: statuses, deletion and a sender. One tick means sent, two mean delivered, two green mean read. A message and a whole conversation can finally be deleted: hold the message, or swipe the conversation in the list. In a group conversation you can see who wrote — previously every message looked the same.
    • Leaving WiFi coverage no longer cuts you off for minutes. When the phone moves to mobile data — driving out of the garage, leaving the house — the app now notices by itself and switches the link within a second. Previously the system reported no failure at all, so the app waited in silence for up to two minutes.
    • Closing the app logs you out of the network. The hub and BrandMeister are now told immediately, instead of waiting for the connection to expire on its own. This also removes the "account in use at the gateway" message when logging back in.
    • BrandMeister is connected only when it is needed — that is, when you use talkgroup 91 or above. Groups 1–90 are the Polish hub and need no outside link.
    • The orange microphone dot goes out the moment you release PTT. It used to stay lit permanently, even while merely listening, and reception was quiet then, as if routed to the earpiece instead of the speaker. The microphone is now held only while transmitting. Known limitation: the first PTT press after a pause has about half a second of delay — the app is switching audio mode.
    • Smaller things: an incoming-call notification while the app is in the background; ISSI, GSSI and DMR ID rendered as one unspaced string everywhere; separate icons for apps and radios in the online-users panel; Settings → Import can now delete imported groups and contacts (groups 1–90 stay); the build number at the bottom of Settings.
  8. v1.0.32026-07-30
    • Only your own, verified DMR ID logs in — the Polish hub now admits only identities BrandMeister has confirmed. The shared password is gone: previously any number would do, and such a client showed up on the network as ISSI 0.
    • Private calls are no longer encrypted — same as on Android. An encrypted call only ever worked against another copy of the app and could not be bridged to a radio or BrandMeister.
    • Answering a scanned group — after a call on a scanned talkgroup ends, PTT keeps answering that group for a few seconds instead of the selected one. The delay is configurable; scanned traffic is now amber so it cannot be mistaken for your own group.
    • An ISSI and caller line under the group selector, as on Android.
    • Faster BrandMeister login — the needless start-up wait is gone, as is a double login the gateway refused.
    • Network settings apply at once — saving rebuilds the connection; changing an ID or suffix used to need an app restart.
    • Audio processing off by default — noise reduction, TX AGC and the compressor now start disabled; they changed how the voice sounded on a TETRA link.
    • Scan list from favourites and PTT HOLD in a private call.
Operating manual About the app ← Back to home