IPSC3 POC is a cellular push-to-talk radio client for the separate
ipsc-poc gateway. The current client is a Qt 6/C++ Android
application designed as a radio appliance rather than a phone-style app.
Production hardware profiles include the Retevis L71, UDO/Abbree 8900,
UNIWA F400, and ANYSECU 4G-W2Pro.
| Production client | 0.6.3 Build 90, built 30 October 2026 |
| Installers and bundled firmware | Windows x64, Apple silicon macOS and all four radio models: 0.6.3 Build 90 |
| Production radios | Retevis L71, UDO/Abbree 8900, UNIWA F400, and ANYSECU 4G-W2Pro |
| Platform | Android 8/10, ARMv7 and ARM64 |
| Application package | net.ipsc3.poc |
| User interface | 128 x 160 class radio display with physical-key operation and no touch dependency |
| Audio | G.711 PCMU, 8 kHz mono, 20 ms RTP packets |
The production release retains the critical connectivity fix for mobile carriers
that use IPv6 as their primary connection. The RTP socket uses
the resolved server address family instead of being restricted to IPv4 before
DNS resolution. This restores audio registration, transmission and reception
on affected networks. IPv4, native IPv6 and carrier DNS64/NAT64 are supported.
Use the server hostname so the carrier can perform DNS64 translation when
needed; native IPv6 service requires an IPv6-capable server endpoint.
This is the main release on all IPSC3 download sites. Both installers retain
F400 app-private settings transfer with SHA-256 verification, improved
device detection and guided USB debugging setup. Servers authorize 0.6.3 with
the same client-family key as 0.6.2; existing versions remain valid. The normal
Windows and macOS download URLs serve this release. There is no separate beta
download; saved beta links redirect to the current production installer.
The client can make and receive live POC calls, select the complete
talkgroup catalogue announced by the connected IPSC3 server, and exchange
group audio with other POC clients and DMR endpoints through the IPSC3
PCMU/AMBE gateway. The normal IPSC3 scan and parrot services are announced
by the server rather than being hardcoded into the radio. Protocol version
ipsc3-poc/0.4 also provides authenticated client login,
bidirectional private calls, and SMS
routed by Radio ID through the IPSC3 roaming system.
All IPSC3 download sites offer this release for the L71,
UDO/Abbree 8900, F400 and W2Pro as the recommended production release. It
promotes the tested 0.6.2 features and replaces the earlier production/beta
split. Extract the entire ZIP and keep its tools folder with the installer.
Confirm Version 0.6.3 and Build 90, load the radio's existing settings, then
review and sync them. Both installers and all four bundled firmwares are
Build 90, dated 30 October 2026. Android signing certificates and saved
preferences are retained; no factory reset is needed.
- UDO/Abbree 8900 AllStar transmit pacing: an independent IAX worker maintains microphone packet timing during interface stalls, preventing choppy or slowed speech.
- AllStar transmit level: reduced by 6 dB relative to Build 86 for the 8900, with its TX meter reflecting the transmitted level. The 8900's POC audio, receive audio and indication tones are unchanged. L71, F400 and Anysecu calibration and timing are unchanged.
- Diagnostics: AllStar packet and capture timing summaries assist support. Existing 0.6.3 client-family authentication keys remain valid; no server key rotation or factory reset is needed.
Upstream reports operator testing on an 8900 using AllStar node 2002. Other models have build and automated regression coverage, not new hardware field tests. Server-side publication checks do not constitute a handset installation or audio test.
- Anysecu AllStar sync fix: restores the hardware-key accessibility service after AllStar-only sync stops and restarts POC. Saved button assignments are unchanged; the fix prevents Android/vendor key behaviour after a sync.
- Live binding verification: checks that Android has bound the service to a live process, not merely kept an enabled setting. Stale enabled entries are removed and re-added with bounded retries, preserving unrelated accessibility services. Installation and general settings updates share this check.
- Recovery on all sync outcomes: restoration also runs after rejected, failed or cancelled settings writes. Sync reports success only after controls are restored; a recovery failure is reported without hiding an earlier transfer error.
- New Troubleshooting tab: available in both installers even without a connected radio. It explains Developer options, USB debugging and approving the connected computer on the Anysecu W2Pro and UNIWA F400.
To recover an Anysecu affected by an earlier AllStar-only sync, load its existing AllStar settings using the current installer, then repeat Sync AllStar To Radio. A full reinstall or reboot should not be necessary when recovery succeeds. The recovery fix was tested on a physical W2Pro with unchanged settings read back. Windows still needs field validation on a Windows host.
¶ Private Groups and Configuration Backups
- Private POC groups: a member-only Group Private menu is supplied by compatible servers, separately from public talkgroups. Emergency broadcasts have priority over private groups, followed by Administrative, News and ordinary audio. Group reception can interrupt AllStar without changing its selected node. Administrators manage local groups under Configuration → POC. Groups are not federated and do not transmit to DMR. Membership is routing control, not end-to-end encryption.
- Reply dwell: incoming transmit-enabled group audio becomes the PTT reply target, shown as PRIVATE / REPLY. Settings > Broadcast > Group Private > Reply dwell offers Off, 15s, 30s, 1m, 2m and 5m; the default is 1m. Each group over or transmitted reply restarts the timer after audio finishes; it does not expire during RX or PTT. Expiry restores the previous public/AllStar selection. Changing channels cancels immediately; explicit manual selections do not expire. Reconnect clears groups and selections while preserving preferences.
- Configuration backups: both installers add Configuration > Save Configuration / Load Configuration. Versioned UTF-8 JSON transfers Radio IDs and active identity, server, contacts/SMS settings, four talkgroup filters, AllStar and optional common preferences across supported models. Loading stages values for review and never automatically writes to a radio. It excludes hardware calibration, unique device identity, administrative state, inbox, logs and Wi-Fi credentials. Backups are not encrypted and can contain an AllStar password; keep them private.
- Broadcast permissions: rejected broadcast TX permissions no longer cause a false firmware-upgrade requirement or disconnect an otherwise authenticated radio.
- Retained installer fixes: Android 8.1 initial settings, byte-preserving AllStar transfer, private credential storage, caller checks and checksum validation from Builds 79 and 80 remain available. AllStar credentials pass through stdin, not command arguments or shared configuration files.
Initial POC provisioning retains the compatible legacy importSettings
handoff when private writes are unavailable. Unsupported command errors on
stdout are not mistaken for success, and staging files are cleaned up.
- Windows settings transfer: retains the checksum fix when syncing AllStar or other multiline settings. Both installers preserve original UTF-8 bytes and CRLF line endings, with existing size, checksum and rollback safeguards intact. Build 80 also supplies the private writer on older Android utilities for verification and account/channel settings. Download the current installer and sync again; no factory reset, root access or authentication-key change is required.
- Broadcast Alert Only: Settings > Broadcast and web settings include a saved switch, default off. When on, enabled off-channel News, Emergency and Administrative broadcasts play only their alert, not their speech. Select the broadcast's POC talkgroup to listen; changing away suppresses its speech again, and AllStar counts as off-channel. Tone Volume controls the alert; at zero, an off-channel Alert Only broadcast is silent. Category switches, priorities, normal-channel mute, private calls, SMS, location and active-TX protection remain unchanged.
- AllStar: native IAX2/PCMU audio to one outgoing node, named channel presets, paced audio, jitter handling and reconnects. Both installers can verify an account and manage up to 100 node presets. The radio web interface can edit channels, but account credentials are configured only through the installer. POC SMS, position reports and incoming private calls remain available on an AllStar channel. This is not a DMR/AllStar audio bridge and does not support incoming links or hub operation.
- Microphone: Settings > Microphone provides 0, -3 and -6 dB gain above the existing device calibration and optional four-band transmit EQ at 250, 500, 1000 and 2000 Hz, adjustable from -4 to +4 dB in 1 dB steps. EQ defaults to off/flat; changes apply on the next PTT without changing receive audio or local tones. A saved L71 +3 dB selection is reset to 0 dB.
- Broadcasts: News, Emergency and Administrative reception controls retain saved choices through upgrades and restarts. If no preference exists, all three default on. With Alert Only off, enabled broadcasts can override the selected POC or AllStar channel, with Emergency above Administrative above News, but do not interrupt active local transmission. Opening tones mix with the start of voice rather than cutting it off.
- Receive mute: hold Function, P2 or SOS for one second and release. MUTE replaces the channel number while normal-channel audio is muted. Enabled broadcasts, private calls, SMS and position reporting still work. A short press retains its configured action.
- Web controls and diagnostics: corresponding microphone, mute and broadcast settings. Diagnostic broadcast flags reset at app restart and remain subject to authenticated server publication permissions. The four supported handset families can publish News, Emergency and Administrative flags by default; an explicit server restriction still applies. This does not grant web administrator privileges.
Build 83 has been installed on physical L71 and W2Pro radios; both authenticated
and received group catalogues with existing settings retained. The L71 dwell
menu and persistence were checked. Private-group audio was tested on VK before
the server rollout. Equivalent 8900/F400 checks and further live reply-dwell
testing remain useful. Group Private reception defaults on and has matching
web controls. Turning it off suppresses audio locally; protocol version 1 has
no server unsubscribe, so an ignored group can suppress lower-priority traffic.
Account verification may update the account's registered public IP and does not
guarantee that every remote node will accept a connection. The Windows
package needs an interactive Windows installation check; macOS is ad-hoc
signed, not Developer ID signed or notarized, and may require security approval.
Version 0.6.3 authentication is enabled for all four handset families on the
download nodes. The 0.6.3 keys match 0.6.2, and both versions passed live
server authentication checks. The version promotion itself has not been
installed or tested on a connected handset by the server rollout.
- Android 10 ARMv7 radio handset.
- Small non-touch display with a fixed idle, receive, transmit, menu, and error layout.
- Physical PTT, microphone, speaker, directional keys, back key, and configurable function key.
- GPS and Android network location support.
- Privacy-preserving WiFi-assisted indoor location using a fingerprint cache kept only on the handset.
- Red and green status LED patterns for idle, receive, transmit, offline, and low-battery states.
- Can be provisioned as the Android HOME application so the radio boots directly into IPSC3 POC.
- Snake and Invaders are available from the radio menu and use the L71 physical keys.
IPSC3 POC 0.6.1 includes the ANYSECU 4G-W2Pro as a supported production
radio profile. Install it using the main Windows or macOS package on an
IPSC3 Downloads page.
- Dedicated W2Pro client-family authentication and provisioning profile.
- Background-runtime handling tailored for the W2Pro Android environment.
- Normal IPSC3 group calls, private calls, SMS and AI messaging, position reporting, roaming, scan, and Parrot services.
- Windows x64 and Apple silicon macOS provisioning packages.
| Control | Operation |
| PTT | Requests permission from the server. Microphone audio starts only after a PTT grant and stops on release. |
| Up and down | Adjust volume by default, or select the previous/next talkgroup while channel mode is active. |
| Volume/channel key | Temporarily changes the up/down keys between volume and talkgroup selection. |
| Function key | Can select day/night display, open the server menu, toggle GPS, enter standby, or return to the call channel. |
| Red/back key | Returns through radio menus without exposing the normal Android launcher. |
The receive display uses the authoritative source Radio ID, callsign, and
operator name supplied by IPSC3. If the Radio ID is not present in the
RadioID directory, the numeric Radio ID remains the display and routing
identity.
¶ Network and Audio
- A persistent TCP connection carries newline-delimited JSON login, keepalive, talkgroup, PTT, caller, server-side liveness, configuration, server-directory, and GPS messages.
- A separate UDP/RTP socket carries PCMU audio using RTP payload type 0, 8 kHz mono, and 20 ms frames.
- The client sends a silent RTP marker probe from its persistent UDP socket so the server can learn the NAT-safe receive address and port.
- Each installation retains a random
client_instance_id and uses the session SSRC returned by the server, allowing multiple POC radios with the same Radio ID behind one mobile or site NAT address.
- The default control port is
50700. The selected server announces the RTP destination, normally port 50702, in login_ok.
- The client automatically reconnects after control-link loss and periodically refreshes its RTP registration.
- The client negotiates bidirectional RTP recovery with IPSC3. Missing packets are requested once using compact NACK messages, while the server retains a bounded two-second retransmission cache.
- Recovery-capable sessions normally use a 350 ms jitter window and temporarily move to a 700 ms degraded-link window after sustained packet loss. The radio and dashboard display the packet-loss state.
- Presence and routing are maintained centrally. The server does not send clients a partial POC-only user roster; group calls, private calls, and SMS always route through IPSC3 by Radio ID.
More than one POC radio can be configured with the same DMR Radio ID. Each
client generates a random UUID once, stores it as
client_instance_id, echoes it through login authentication, and
uses the RTP SSRC supplied in login_ok. It must not regenerate
the instance ID or cache the assigned SSRC across sessions.
- Each radio may select a different talkgroup and keeps independent scan and RTP state.
- Incoming private calls and SMS ring or display on all available radios using that Radio ID.
- When one radio transmits a group call, another same-ID radio listening to that talkgroup or following it through scan receives the call. Only the transmitting client session is removed from local fanout.
- The first valid SMS acknowledgement completes delivery; later acknowledgements from sibling radios are harmless.
- Only one same-ID radio may transmit at a time.
- Legacy clients without an instance ID remain usable, but reconnecting another legacy client with the same Radio ID replaces the first.
Current field measurements indicate approximately 3.8 MB per day
or 115 MB per 30-day month while a radio remains connected
but carries no voice. A practical allowance is 150 MB per month
for idle operation, GPS reports, reconnections, configuration refreshes, and
normal mobile-network retransmissions.
Active voice adds approximately 0.6 MB for every minute
transmitted or received. Application downloads, Android updates, and other
device traffic are separate. See the
protocol
traffic breakdown for the measurement assumptions.
Every production control connection is authenticated before the radio becomes
online. Each supported binary identifies its client family and sends its exact
release version in the initial login. The server returns a 15-second one-use
challenge; the client answers using HMAC-SHA256 and the securely provisioned
client-family key. There is no cryptographic work in the RTP audio loop.
A failed, expired, unknown-client, or unauthorized-version response does not
create a POC session and cannot use presence, PTT, SMS, GPS, or RTP services.
On reconnect the client must repeat the complete login and challenge flow.
See the protocol reference for exact canonical bytes and base64url handling.
¶ Private Calls and SMS
- A private call is addressed to a destination Radio ID and does not depend on the destination's selected group talkgroup.
- IPSC3 resolves the Radio ID through its current roaming table and can route the call between POC, Motorola/IPSC, and MMDVM endpoints in either direction.
- Every available receiving POC instance gets targeted caller signalling and RTP for its Radio ID. Current group talkgroup selections are unchanged.
- SMS is submitted by destination Radio ID and is accepted into the IPSC3 durable store-and-forward queue.
- The server reports queued, delivered, duplicate, failed, and informational states over the control channel.
- Every received POC SMS requires an acknowledgement using the supplied message ID. The message fans out to all connected instances and the first acknowledgement wins. Failed or offline deliveries follow the server's configured retry and expiry policy.
- Client-originated SMS text is limited to 128 Unicode characters. Delivered text may be longer because IPSC3 adds sender and time information.
- Sending a normal SMS to Radio ID
9998 invokes the IPSC3 AI assistant. Its answer is delivered as an ordinary SMS from 9998, so no additional client message type is required.
- AI response message IDs are opaque unsigned 32-bit values and must be acknowledged without truncation or signed-integer conversion.
- Logged-in dashboard users can send SMS to a live POC Radio ID from the roaming page. Operators and administrators can additionally send call-alert, disable, and re-enable commands over the authenticated control connection.
See the IPSC3-POC Control and Audio
Protocol for the required JSON messages and state transitions.
¶ Server and Talkgroup Selection
On login, IPSC3 sends the complete talkgroup catalogue and a master-backed
list of available IPSC3 POC servers. The radio can select VK, ZL, or another
published server from its menu. Changing server releases PTT, closes the old
control and RTP sockets, reconnects to the selected server, and performs a
fresh login. The selected server and radio identity are retained locally.
Radio ID is the only authoritative client identity. Callsign and name are
resolved by the server from its RadioID database; the client does not claim
or override those values.
- Normal GPS fixes can be reported through the control channel and enter the standard IPSC3 GPS history, roaming, map, and APRS-IS path.
- Android network-provider fixes can be identified separately from satellite GPS.
- The L71 client can learn a WiFi fingerprint against a real fix and later report the cached position as a lower-confidence indoor estimate.
- SSID, BSSID, gateway MAC address, and other WiFi identifiers remain on the radio and are never sent to IPSC3.
- The client beacons every three minutes while moving and every ten minutes while stationary.
The project includes self-contained Windows x64 and Apple silicon macOS
provisioning applications for field setup and updates. The production
installer detects a connected Retevis L71, UDO/Abbree 8900, UNIWA F400, or
ANYSECU 4G-W2Pro. It selects the matching encrypted payload and uses ADB to perform
the following steps:
- Detect the connected Android radio.
- Select an IPSC3 server from the master directory.
- Look up the operator callsign and select the correct Radio ID.
- Extract the matching bundled encrypted firmware for the installation session and verify its integrity.
- Install or update the application without erasing its normal configuration.
- Write the selected Radio ID and initial server settings.
- Grant the required microphone, location, and background-operation permissions.
- Set IPSC3 POC as HOME and disable the stock Retevis PTT application when present.
- Apply supported LED and boot integration, then launch IPSC3 POC.
Provisioning is designed to be repeatable, so the same process can install a
new radio or update an existing one. USB drivers and ADB access must be
available on the desktop computer. Version 0.6.3 Build 90 is the
production package and includes the IPv6 carrier fix, resilient RTP,
broadcast reception, private groups, AllStar, device-specific provisioning
and support diagnostics.
- The supported production profiles are the Retevis L71, UDO/Abbree 8900, UNIWA F400, and ANYSECU 4G-W2Pro; other Android POC radios require appropriate hardware-key, display, LED, provisioning, and client-family authentication profiles.
- Per-user Radio ID authentication and native TLS/WebSocket control transport are planned protocol extensions.
- Audio levels, mobile-network behavior, power use, and installer handling continue to be monitored as the production client is deployed more widely.