Changelog

Release notes for VoxDMR. Each release page on GitHub has the full commit list and the signed binaries; this is the human summary.

v0.15.3

DesktopMobile

Released September 2026. Desktop + Android.

Two Android fixes, and a desktop build that reports its own version correctly.

  • The updater stops offering an update you already installed (Desktop). The 0.15.2 desktop binaries carried the previous version number, so the app kept finding itself out of date and asking again on every launch. Installing 0.15.3 ends the loop; nothing else about the desktop app changed.
  • Transmit audio is back to its old level on radios that went quiet (Android). Since 0.15.0, VoxDMR switched the radio’s own gain control off for the neural noise reduction — which ships off, and cost around 12 dB on radios like the Inrico T320. The microphone is now left alone unless noise reduction is actually running. Takes effect from your next over. See Audio settings.
  • Profiles restored from a backup can be deleted again (Android). Delete was hidden for the active profile, which is exactly what a restored profile becomes. See Server profiles.
  • A restored backup keeps your scan list (Android). Favourites came back with every scan flag cleared. See Talkgroups.

v0.15.2

Mobile

Released September 2026. Android.

Three fixes for PoC radios.

  • Transmit audio works again on radios that mis-report their microphone. Some radios accept a request for the least-processed microphone and then hand back one wired to nothing: the over keys up and not a sample leaves. VoxDMR now notices the silence, moves to the next source mid-over, and remembers the radio for later launches. See Troubleshooting.
  • The app no longer opens onto a blank screen (Hytera PoC radios). The PoC softkey was quietly starting a second copy of the app and taking the running one’s engine. There is one copy now, whichever way you open it.
  • Starting on boot is a switch of its own. Settings → Connection → Running in the background ends with Start on boot, which used to come welded to Always on. Radios already set to Always on keep starting on boot.

v0.15.1

DesktopMobile

Released September 2026. Desktop + Android.

A small follow-up to 0.15.0, about how the app shuts down and how it comes back.

  • Quit really quits, and opening the app reconnects (Android). Quitting from the app bar — or from the drawer on a small-panel radio — ended the session and closed the window, but left VoxDMR running in the background. Quit now shuts it down for real, which makes opening the app a fresh start: with Connect when the app opens switched on, it connects and rejoins your last talkgroup in about a second.
  • Coming back to the app no longer fights a reconnect already in progress (Android). Returning to VoxDMR while it was retrying a dropped connection could start a second attempt over the top of the first; it now waits for the one already under way. A password the server has rejected is no longer retried every time you open the app either — repeatedly presenting a bad password to a master is how a DMR ID gets blocked, so it waits for you to correct it. See Auto-reconnect.
  • Website link in About (Desktop). Points at voxdmr.com.

v0.15.0

DesktopMobile

Released September 2026. Desktop + Android.

Hands-free transmit, neural noise reduction on the microphone, a light theme, a first-run setup wizard, and a car mode that turns a PoC radio into an instrument panel.

  • VOX — transmit by speaking. Arm it and your voice keys the radio; the talk button always overrides it, and a time-out timer is always enforced. It is deliberately out of the way: on Android, Settings → Push-to-talk → Advanced: VOX opens to a five-second press and hold the first time (a held D-pad OK works on radios with no touchscreen); on desktop, five clicks on the same header. ⚠️ Do not use VOX to bridge another radio or a repeater onto BrandMeister — unattended bridging is against their terms and is grounds for having your DMR ID banned. See PTT modes.
  • Neural noise reduction on transmit. A small neural network cleans your microphone before the DMR codec sees it, with a strength slider. The codec sends a model of your voice rather than the sound itself, so background noise corrupts it into the burbly artefacts people blame on DMR — cleaning the input helps far more than cleaning the output would. Roughly +3 to +4 dB in car, hum, babble and hiss. Off by default, and worth leaving off somewhere quiet. See Audio settings.
  • Light theme. Dark, Light, or follow the system, on both platforms. Dark stays the default and looks exactly as it did; the choice survives a restart and is included in a settings backup.
  • First-run setup wizard. A guided first launch on both platforms — network, account, microphone check, vocoder — instead of an empty settings screen. Talkgroup names are now per-network, so a FreeDMR talkgroup no longer shows a BrandMeister name.
  • Bips for received calls, and separate PTT tones. A short high bip when someone starts transmitting on your talkgroup and a low one when they stop, so you can hear the channel go busy without watching the screen. The single “PTT tones” setting is now two — start and stop — so you can keep just the roger beep. See Audio settings.
  • Car mode looks like a radio (PoC radios). On small-panel radios such as the Hytera P50, car mode now draws an instrument face: a legend rail, a state plate, a segmented level meter with peak hold, a time-out bar while you transmit, and hard-edged channel keys. Phones and tablets are unchanged. See Car mode.
  • Home-screen call card (Hytera PoC radios). On radios running the Onego launcher, the home screen shows the talkgroup, who is talking and a running call timer, and VoxDMR appears in the launcher’s card picker. See Radios.
  • Status LED (Hytera radios). The radio’s notification LED follows the session: green for an incoming call, red while you transmit, a slow orange blink while scan is armed, plus optional connection-drop and connected indications. Five independent switches under Display & power.
  • Cleaner microphone capture (Android). VoxDMR now asks Android for the least-processed microphone it can get and switches the vendor noise suppressor, AGC and echo canceller off on the capture session — previously those ran on top of VoxDMR’s own levelling on many handsets.
  • Fixes. The Bluetooth headset mic works again (it was sending nothing at all), and on Hytera radios the volume keys move the volume you are actually listening to. The PTT tone no longer leaks into the start of your transmission. On desktop, closing the last window no longer leaves the process running. Android settings lists clear the navigation bar, the info buttons no longer trap D-pad focus on compact radios, and the app targets Android 16. A talker alias sent as 16-bit text no longer turns into Chinese characters partway through a call. See Troubleshooting.

v0.14.0

DesktopMobile

Released July 2026. Desktop + Android.

Louder receive audio, a QSO log with locations and QRZ links, backups that include your settings, and a much faster vocoder.

  • Louder receive audio. Auto-levelling aims higher, so received audio sounds like a radio instead of a whisper, and a new RX boost (+6 dB) adds more for noisy environments. ⚠️ Upgrading desktop from 0.13.x? Tick the RX AGC checkbox once — your saved config has it switched off. See Audio settings.
  • Back up everything. Backups now include all your app settings, not just profiles. Desktop: Back up all…; Android: Settings → Backup & restore. See Server profiles.
  • The QSO log grew up. Callsigns link out to QRZ.com, and city, state, country and country flags are available as columns. Desktop columns are resizable and rows open a detail view.
  • Bluetooth PTT accessories (Android). External PTT accessories such as the Inrico B01 now work, with proper hold-to-talk, and the Bluetooth mic gets its own level slider. See PTT modes.
  • A much faster vocoder. Transmit encoding is several times faster, clearing up the choppy TX audio on slower phones. Audio quality is unchanged.
  • Make it look how you want. A new Interface screen on both platforms: colours for the call card, talkgroup badge and PTT button, plus text-size controls.
  • voxdmr:// links (desktop). Clicking a voxdmr://tg/91 link opens VoxDMR straight onto that talkgroup.
  • One firmware file instead of two. First-launch setup is a smaller download. Existing installs are unaffected. See Installation.
  • The Homebrew server list updates itself. A Refresh button pulls the current community server directory without waiting for an app update. See Server profiles.
  • Clearer settings (Android). Plain-language labels, with the details behind a tappable (i). Car mode settings are grouped, and a battery-optimization shortcut sits under Display & power.
  • Fixes. Receive latency no longer creeps upward the longer you listen, and the RX meter tracks what you’re actually hearing. Scan clears properly on disconnect and stays reachable during a call. On PoC radios, the LEX knob steps one favourite per detent and the Motorola ION’s channel rocker works. See Radios.

v0.13.2

DesktopMobile

Released July 2026. Desktop + Android.

A small bugfix and polish release across both platforms.

  • Scan notification tracks the active talkgroup (Android). While scanning, the playback notification now updates to show the talkgroup you’re actually hearing instead of the armed set. See Talkgroups.
  • Accessibility disclosure (Android). The About screen now surfaces the accessibility disclosure.
  • Windows DMR ID database update fixed (desktop). Updating the offline DMR ID database no longer fails on Windows with “os error 5” (access denied). See Talkgroups.
  • About blurb broadened (desktop). The About text now describes VoxDMR beyond BrandMeister, reflecting support for other DMR networks.

No config, paths, or protocol semantics changed.

v0.13.1

DesktopMobile

Released July 2026. Desktop + Android.

A bugfix release for Homebrew (“Others”) networks.

  • Homebrew audio routing. Fixed audio routing on Homebrew (“Others”) networks, so transmissions now bridge correctly between masters on the network — ADN, TGIF, FreeDMR, and similar. Affects both desktop and Android. See Server profiles.

No config, paths, or protocol semantics changed.

v0.13.0

DesktopMobile

Released July 2026. Desktop + Android.

A big follow-up to v0.12.0: VoxDMR can now watch a whole set of talkgroups at once, resolve callsigns offline, drive from a glanceable car screen, and it grew a proper activity log — plus a wave of PoC-radio hardware support and desktop settings that finally match Android.

  • Talkgroup scan. Flag any of your favourites for scan, arm it, and VoxDMR monitors them all at once — it locks onto the first talkgroup that goes active, plays it, holds briefly to catch a reply, then resumes (first-come-wins). Your own DMR ID is always monitored and takes priority. Keying PTT during the hang window commits to that talkgroup; you can also stop scan mid-call to park on what you’re hearing. Hold time is a slider (0–30 s, default 4 s). See Talkgroups.
  • Always receive private calls. VoxDMR now permanently subscribes to your own DMR ID alongside the selected talkgroup, so a private call addressed to you is no longer dropped while you’re listening to a group. Automatic, no setting.
  • Offline DMR ID database. An optional, downloadable copy of the radioid.net user database so DMR IDs resolve to callsigns instantly and offline. Opt-in — download, update, or delete it from Settings → DMR IDs on desktop or the DMR ID database screen on Android. Lookups fall back to the radioid.net API when an ID isn’t local.
  • Car mode (Android). A large, glanceable full-screen driving mode: big RX callsign, idle → RX → TX colour states, tap-to-PTT, and auto-enter on charge, on a chosen Bluetooth device, on app start, or via a bound hardware key. Under Settings → Car mode.
  • PTT talk-permit tones. An opt-in setting (off by default) that plays a rising beep when you key up and a falling beep when you release — synthesised locally, never sent on-air. Desktop: Settings → Audio → Transmit; Android: Settings → Push-to-talk. On Android the TOT time-out warning now beeps too.
  • Homebrew, overhauled. The Others protocol grows up: the old three-entry server list is replaced by the community Pi-Star DMR_Hosts.txt directory (~1200 grouped, searchable entries with password prefill and an Account required note), the login hash format defaults to Auto, and profiles gain static talkgroups, an ESSID/peer ID, a default timeslot, and editable dashboard identity. You now actually hear your static talkgroups scanner-style, and cross-master TX/RX works. See Server profiles.
  • Activity log. Desktop and Android converge on one event log (connection, scan, TX/RX, profile, backup, firmware, DMR-ID-database events) with a Verbose toggle (off by default) and copy/share for bug reports. Desktop gets an on-screen Event Log card (Settings → Connection); the QSO log gains a Time / Callsign / Name / Talkgroup column chooser on both platforms.
  • More PoC & keypad radios (Android). Lock-screen and backgrounded hardware PTT (via an accessibility service, for the Hytera P50 and similar), rotary-knob talkgroup cycling (Meig P50/P60), scanCode binding for keycode-0 GPIO buttons (Motorola LEX L11e), a Bluetooth-headset mic option, a menu-toggle key, wake-on-key, and launch-on-boot for Always-on mode. See Radios.
  • Desktop parity. Push-to-talk settings move to a dedicated PTT tab (with bindable next/prev-talkgroup and scan-toggle hotkeys), and desktop picks up the scan hang-time slider, level-meter/dB toggles, and the QSO-log column chooser to match Android.
  • Manual audio levels by default. The RX/TX auto-leveler introduced in v0.12.0 now defaults off on a fresh install, and the TX AGC toggle was removed entirely — the TX slider is now always a plain manual mic gain (2 dB/step, 7 = 0 dB, ±12 dB), with the soft limiter still applied. RX AGC stays available as an opt-in. See Audio settings.
  • Reliability. Auto-reconnect always restores your last talkgroup (the hardware knob no longer goes dead after a reconnect), and BrandMeister (Rewind) DMR IDs are capped at 7 digits in the profile editor.

config.toml (desktop) and the Android settings gain scan (scan_talkgroups, scan_hang_secs — default 4, scan_toggle_key/next_tg_key/prev_tg_key), ptt_tones_enabled (off), log_verbose (off), the qso_col_* toggles, the Homebrew fields, and — on Android — the car_mode_* keys. rx_agc and tx_agc now default off (see the note under v0.12.0). The offline DMR ID database is a downloaded file, not a config key. Desktop crates are voxdmr 0.13.0 / voxdmr-core 0.2.0.

v0.12.0

DesktopMobile

Released June 2026. Desktop (now incl. macOS) + Android.

The biggest release yet: VoxDMR now rides out connection drops on its own, macOS gets its first official build, the audio engine levels itself, transmitting respects an active call, your profiles are portable, and keypad/PoC radios get full D-pad navigation.

  • Auto-reconnect. When the link drops unexpectedly — a timeout, a server-side error, or a network change (Wi-Fi ↔ cellular) — VoxDMR reconnects on its own with exponential backoff (~2 s growing to a ~60 s cap, jittered, unlimited retries) and re-subscribes to your last talkgroup, so you land back where you were. It stops only on a deliberate disconnect or an authentication failure. On by default; toggle it in Settings → Connection on desktop or Settings on Android. Shared by both frontends. See Auto-reconnect.
  • macOS desktop build. macOS is now a release target — a native Apple Silicon (arm64) .app shipped in a .dmg, with an in-app microphone-permission prompt on first launch and smooth CoreAudio receive playback. This clears the “macOS isn’t a release target yet” limitation noted back in v0.7.0. Intel Macs aren’t built yet.
  • Self-levelling audio. An always-on auto-leveler now sits on both the transmit and receive paths — an AGC with an adaptive noise gate and a soft limiter — so a hot microphone no longer over-drives the vocoder and quiet stations come up to a consistent level. The TX/RX level sliders nudge the target up or down (±dB) rather than acting as a raw gain. Prefer to set levels yourself? Each direction has an AGC toggle that switches to a plain manual gain (changed in v0.13.0 — the leveler now defaults off and the TX toggle was removed; see the v0.13.0 entry above). See Audio settings.
  • Half-duplex busy lockout. Pressing PTT while a call is coming in no longer cuts off the inbound audio. Transmit is held until the channel clears, with a “Receiving — wait to transmit” cue — standard half-duplex etiquette, on both desktop and Android.
  • Profile backup & restore. Export your server profiles to a file and import them back, with per-conflict resolution and an optional include-passwords toggle. The format is shared between desktop and Android, so profiles move freely between them. See Server profiles.
  • Per-profile favourites. Talkgroup favourites are now scoped to the active profile (your existing global favourites are migrated automatically), so each network keeps its own list.
  • Built for keypad & PoC radios (Android). Full D-pad navigation with a visible focus ring on every control, a scroll/select mode for long lists, a rotary TG-cycle knob debounce (one detent = one favourite), an optional “Hide status bar” setting, and a searchable drill-down settings layout — so VoxDMR is fully usable without a touchscreen.
  • Refreshed UI. A redesigned connection screen merges your identity into a single hero card with quick-swap profiles and friendly server labels; the talkgroup picker moves private-call onto a per-row menu; and the QSO log pins to the newest call with a wider source column.
  • Identity reported to networks. VoxDMR now reports a platform- and architecture-aware version string to DMR masters (e.g. VoxDMR 0.12.0 (android32) or (linux)), with the project URL pointing at voxdmr.com.

config.toml (desktop) and the Android settings gain the auto_reconnect, rx_agc, and tx_agc flags. auto_reconnect defaults on; rx_agc and tx_agc shipped defaulting on in v0.12.0 but now default off as of v0.13.0 (and tx_agc no longer has any effect). Older configs without them pick up those defaults. No other config, paths, or protocol semantics changed.

v0.10.0

DesktopMobile

Released May 2026. Desktop + Android.

The headline change: VoxDMR is no longer BrandMeister-only, and no longer single-server. You can configure as many profiles as you want, each pinned to its own network and credentials, and switch between them with a tap.

  • Homebrew (MMDVM_HBP) protocol alongside the existing Rewind protocol. That brings TGIF Network, FreeDMR, ADN.systems, and any other MMDVM-based DMR network into VoxDMR. The TX/RX path is the same — Homebrew traffic encodes audio with the same AMBE+2 vocoder and shows up in the same call card.
  • Curated Homebrew server list. When you pick the Others protocol, the server picker offers TGIF Network, FreeDMR United Kingdom, and ADN Portugal (2681) out of the box, plus a Custom server… option for anything not listed. The list ships in the binary; PR additions on GitHub.
  • Hash format toggle for Custom Homebrew servers — Raw (the HBlink/MMDVMHost convention used by every major network) or Hex ASCII, for the rare network that wants the old format. Curated entries default to Raw.
  • Server Profiles. Settings → Connection grew a PROFILES card. Each profile bundles a label, DMR ID, callsign, protocol, server, password, and its own talkgroup favorites + aliases. Switching profiles disconnects, swaps the whole config, and reconnects.
  • Per-profile talkgroup aliases. Right-click a TG (or long-press on Android) to give it a custom name that overrides the database. The alias is scoped to the active profile — your BrandMeister and TGIF profiles can label 91 differently. Falls back to the official name when no alias is set.
  • Sectioned TG picker. The picker on the main window now groups results into DMR ID (when you type a numeric ID), Favourites, and Results. Headers appear only when they have rows. The DMR ID section exposes both Use as talkgroup and Use as private call affordances so custom IDs become first-class.
  • Android app. The whole protocol/profile stack ships in the Android client too — same Rust core, Material 3 Flutter UI, bottom-sheet server pickers, long-press to rename. Available now on Google Play.
  • Localisation. Settings, the setup wizard, modals, toasts, and main-view labels are extracted into a string catalogue. English and Portuguese (Portugal) are available now; the language picker lives in Settings → Interface on desktop and Settings → About on Android.

Config migration: existing config.toml files get the active connection promoted to a single profile labelled “Default” with the Rewind protocol — your DMR ID, password, master, favorites, and aliases are preserved untouched.

v0.9.0

Desktop

Released May 2026.

Adds in-app auto-update. VoxDMR now checks for new releases on launch and on demand, and can install them without leaving the app — no separate download trip, no installer to find.

  • Prompt on launch. When a newer build is published, VoxDMR opens a modal with the version, a What’s new link, and three choices: Update now, Skip this version (silenced forever), or Remind me later (24-hour cooldown).
  • Manual check. Settings → About has a Check for updates button. The result — Checking…, You’re on the latest, Update available, or an error — appears inline below the button so you don’t have to glance away to read it.
  • Verified, atomic install. The binary is downloaded with progress + cancel, SHA-256 verified against the release’s SHA256SUMS file, and atomically swapped into place — Windows-safe, even with the .exe running. A mismatched checksum aborts and never overwrites the existing build.
  • Clear post-install state. When the install finishes you get a one-click Restart now, or you can keep working and pick up the new build on next launch. If you dismissed the modal mid-flow, the footer status line confirms the install in green so the work isn’t silent.
  • Footer-as-toast. Transient update messages share the right-hand status slot in the footer for ~5 seconds instead of pushing the rest of the UI down.

Stable channel only — pre-releases are excluded. The check hits a fixed public repo (jcalado/voxdmr-site); no telemetry, no analytics, no registration. config.toml gains an [updates] section that records skipped versions and the Remind me later timestamp; older configs without it pick up the documented defaults.

v0.8.0

Desktop

Released May 2026.

Adds a Time-Out Timer (TOT) so a stuck PTT or a long-winded transmission can’t hold a talkgroup indefinitely — standard radio behavior, finally available client-side.

  • Four modes: Off, Warn only, Warn then cutoff (default), Hard cutoff. Configurable in Settings → Interface.
  • Visual + audible warning. The TX timer under the PTT button counts down (gray → amber → red); a short beep plays through your local audio output device at the warning threshold and again on cutoff. Sidetone never goes to the network.
  • Sensible defaults. 180 s duration, 15 s warning lead, both warning surfaces on. Duration capped at 190 s — anything higher would be silently dropped by BrandMeister’s own forwarding cutoff.
  • Auto-release on cutoff. Reaching the duration triggers a clean PTT release for you; press fresh to keep talking.

Adjacent UX polish:

  • The top status card now flips to Transmitting → TG … in red while you’re keyed up, instead of staying on Idle.
  • The settings window opens 150 px taller and the right-hand panel scrolls when content overflows, so growing tabs (Interface in particular) stay usable on smaller screens.

config.toml gains a new [tot] section; older configs without it pick up the documented defaults. No env vars, paths, or protocol semantics changed.

v0.7.0 (first public release)

Desktop

Released April 2026. Linux x86_64 + Windows x86_64.

The first build of VoxDMR distributed as a downloadable binary. Everything before this was internal and not announced.

What ships:

  • BrandMeister DMR client with full RX and TX over the Rewind protocol. Authenticate with your DMR ID and a hotspot security password, subscribe to talkgroups, transmit and receive AMBE+2 voice.
  • Runtime firmware loading. The MD-380 firmware needed by the AMBE+2 vocoder is fetched from third-party sources on first launch (or supplied manually for offline machines). The binary itself contains zero firmware bytes, which is what makes shipping it possible. SHA-256 verified before being accepted.
  • Live talkgroup activity indicator. Favorites show a colored dot driven by BrandMeister’s last-heard WebSocket feed: green = active, amber = recent traffic with the speaker’s callsign, gray = idle. 30-second TTL.
  • Configurable PTT. Push-to-talk or toggle modes. Spacebar by default; rebind to almost any single key.
  • Audio meters. 24-segment LED-style TX and RX meters with peak-hold, color zones (green / yellow / red), and a CLIP latch indicator.
  • Talkgroup picker. Search the bundled BrandMeister database by name or ID, save favorites, drag-reorder, mark private-call destinations. Custom IDs accepted via Enter.
  • Live master directory. The connection settings pull the current list of BrandMeister masters at launch, with a baked-in fallback if the API is unreachable.
  • Cross-platform. Native Linux (ALSA / PipeWire / PulseAudio via cpal) and Windows (WASAPI). Single binary per platform; no installer, no system services.

Known limitations:

  • macOS isn’t a release target yet.
  • The Windows binary isn’t code-signed yet. SmartScreen will prompt on first launch. Click More infoRun anyway.
  • HTTPS downloads (firmware fetch, master directory) don’t honour system proxy settings. Use the manual-files path or run from an unproxied network.

See the release page for binaries and SHA-256 sums, and the installation guide to get going.