Releases: RdWing/dvmconsole
Release list
DVM Console NEO 0.8.0
DVM Console NEO 0.8.0
Console NEO comes to iPhone and iPad. Monitor channels, transmit, build
patches, and review recorded calls wherever you take your console. Version 0.8.0
brings these core console capabilities to mobile, powered by the same radio and
audio runtime as desktop, with a touch interface built for each device. Moving
your saved configurations and tone patterns between devices is easier, too.
This release was republished to correct microphone access in the signed macOS
packages. If the microphone permission prompt did not appear in the original
0.8.0 download, replace the app with the updated package.
Highlights
- Your console, now on iPhone and iPad. Join the public TestFlight beta and take Console NEO with
you. Use the compact touch list on iPhone or spread out with Cards and List on
iPad. iPad remembers your preferred view and switches to List temporarily when
the window narrows. - Hold an iPad card's title and drag it to any grid position, including empty
space. Other cards stay put. In mobile List, hold a row and drop it onto
another row in the same zone to insert it there. The dragged row stays above
its neighbors. Card positions and List order save independently for each
configuration. - The mobile status ribbon shows the RX-enabled channel count and receiving
channel names. FNE and zone headings show activity dots and channel names, and
tapping receiving status reveals the active channel. Wide iPad lists use
multiple columns, with connection controls in FNE headings. - Build a configuration in mobile Studio: add channels, enter aliases and
encryption keys, attach files, and review saved revisions. Save and reload
confirmations appear in centered dialogs. To move a configuration to another
device, export a ZIP bundle from the Configuration Library on desktop or
mobile, then import it through Files, including iCloud Drive. You can also
transfer saved tone patterns between devices, including patterns longer than
30 seconds. - Keep listening in the background while connected to an FNE or playing a web
stream. Stopping every source clears the live player and releases idle audio.
Play saved recordings while disconnected; when playback finishes, the app
releases audio if nothing else needs it. Returning to the app or using the
speaker control retries paused listening. - Set up mobile audio with hold/toggle PTT, talk-permit tone, receive mute
during transmit, mic gain/EQ/AGC and presets, per-protocol receive processing,
and per-FNE receive buffering. Mic gain spans −12 to +12 dB. PTT mute status
keeps expanded List rows at a stable height. Optional RX filters and
compression affect local listening, while recordings and forwarded patch audio
stay independent of those settings. - Keep your place in desktop Event History as new calls arrive. When you return
to the top, History follows the newest entries again. Mobile History includes
playback, filtering, export and retention controls. Recording deletion
requires a second tap on the same button to confirm. - Both Apple Silicon and Intel macOS packages are signed with Developer ID and
notarized by Apple, with stapled tickets for offline Gatekeeper checks.
Mobile also includes tones, web streams, groups and patches, multi-select TX,
P25 subscriber commands, searchable Help and diagnostics. This release improves
touch spacing, larger-text layouts, safe-area backgrounds, PTT release handling
and recording-playback indicators.
Join the mobile beta
Open the public TestFlight invitation on your iPhone or iPad.
Install TestFlight if prompted, then accept the invitation and install Console NEO.
Use TestFlight for beta updates and feedback. An App Store release is planned
after beta testing; mobile builds are distributed separately from desktop packages.
Before upgrading
Desktop continues to use the NEO application-data location introduced in 0.7.0.
Back up configuration and operator settings before upgrading.
See the mobile guide
and changelog for details.
Packages
Extract desktop ZIP archives before launching; make Linux AppImages executable.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.8.0-osx-arm64.zip |
| Intel macOS | dvmconsole-0.8.0-osx-x64.zip |
| Windows x64 | dvmconsole-0.8.0-win-x64.zip |
| Windows ARM64 | dvmconsole-0.8.0-win-arm64.zip |
| Linux x64 | DVMConsole-0.8.0-x86_64.AppImage |
| Linux ARM64 | DVMConsole-0.8.0-aarch64.AppImage |
| iPhone and iPad | Public TestFlight beta |
Both macOS packages are signed with Developer ID and notarized by Apple.
Windows packages and Linux AppImages remain unsigned.
Safety and compatibility
macOS 14 and newer is supported; macOS 12 and 13 remain best-effort targets.
Linux requires PipeWire and GLIBC 2.34 or newer. The iPhone/iPad deployment target
is iOS 15; qualification on iOS 15 hardware remains outstanding. Serial and
OS-global keyboard PTT, independent physical channel outputs, and floating
windows remain desktop capabilities.
On iOS, locking the screen or switching apps releases manual PTT and cancels
tones. Listening and recording depend on iOS audio execution and interruptions;
there is no guaranteed background duration. Test audio routes, clear and secure
calls, patches, and recordings with the devices and networks you intend to use.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This is an independently maintained downstream of
DVMProject/dvmconsole.
DVM Console NEO 0.7.0
DVM Console NEO 0.7.0
Version 0.7.0 brings NEO to Linux and Windows ARM64, makes first-time
configuration easier, and improves everyday transmission, listening, and
recording. It also strengthens recovery when devices, connections, or storage
fail.
Highlights
- Linux x64 and ARM64 AppImages and Windows ARM64 packages join the existing
macOS and Windows builds. Linux uses PipeWire audio and supports global
keyboard PTT through X11 or a compatible Wayland desktop. - Configuration Studio makes it easier to start from scratch with FNEs, zones,
channels, aliases, keys, web streams, and group definitions. Navigation stays
where you put it, and large configurations take less work to edit and save
while retaining custom YAML fields. - PTT prepares the microphone immediately and holds its audio back through the
talk-permit tone and a short settling period. Multi-channel release starts
together, keyboard control is more reliable, and lost global capture releases
keyboard PTT safely. - RX and TAR selections survive device and recording failures. Receive recovery
avoids shutdown stalls, and alert sends restore listening after failures.
Alerts and microphone PTT cannot start over one another. Receive audio
handles device changes and simultaneous calls more reliably, with fewer
allocations during busy operation. Cards and List avoid unnecessary updates,
and List retains keyboard expansion without changing saved card layouts. - Right-click any of the three toolbar alert buttons to assign a saved tone
pattern or imported audio. Both send to ALERT-enabled channels. Short
uppercase names keep the toolbar compact, and the tone window shows
destinations alongside searchable preset lists with Load and Send controls. - Patches can preserve inbound source IDs. Local RX tone and compression
adjustments affect only listening, leaving TAR recordings and forwarded audio
unaffected without interrupting patch decoding.
Under overload, destinations discard
stale queued audio and report skipped or shortened forwarding instead of
accumulating long delays. Source TAR recordings remain intact, and closing a
session stops pending patch audio while finishing active call-end signaling. - TAR recovers recording-folder ownership after configuration changes, reports
failures more clearly, and protects interrupted work. A second console can
read recordings but cannot record into another live console's folder.
Event History stays responsive during playback, and the active recording's
play control changes to stop. Intel Macs correctly distinguish separate
recording files, and canceled playback releases its input. - Settings imports transfer card positions and receive selections between
installations. Unreadable settings are protected from automatic overwrite,
file recovery is stronger, and diagnostic exports redact more identifying
information. Repeated settings changes and large preset libraries do less
work on the interface thread. Active searches remain available after deleting
their last matching preset. - Web streams have movable receive-only cards with volume controls matching
channel cards. Local encryption keys are scoped to their FNE system, and DMR
offers optional channel-key matching for receive. - A refreshed README introduces the NEO branding and puts downloads and setup
instructions near the top. The updated user guide explains settings transfer,
microphone preparation, recording recovery, and what happens when patches
cannot keep up.
Before upgrading
NEO now keeps its settings and managed configurations in
DVMProject/dvmconsole-neo, separate from the earlier shared
DVMProject/dvmconsole folder. On a pristine first launch, an optional assistant
can copy selected settings, profiles, managed configurations, and their
companions. Nothing is preselected. Existing recordings, logs, unknown files,
and the original folder are left alone.
Existing unscoped encryption keys remain readable; choose an FNE system when
creating new keys in Studio. Apple Voice Processing has been retired, and
saved selections move to DVM Console processing. Windows communications
processing remains available.
When moving to another computer, import and load the matching codeplug before
importing settings. Enable Restore selected channels on startup to restore
its saved receive selections. Codeplug YAML alone does not carry card positions.
Check audio routes, patch membership, transmit selections, and recording policy
on the destination; start web streams deliberately there.
If TAR was disabled following a recording error in an earlier build, check the
recording folder and re-enable TAR on the affected channels. Use a separate root
for each simultaneously running console that needs to record.
Packages
Extract the complete ZIP before starting NEO. On Linux, make the AppImage
executable before running it.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.7.0-osx-arm64.zip |
| Intel macOS | dvmconsole-0.7.0-osx-x64.zip |
| Windows x64 | dvmconsole-0.7.0-win-x64.zip |
| Windows ARM64 | dvmconsole-0.7.0-win-arm64.zip |
| Linux x64 | DVMConsole-0.7.0-x86_64.AppImage |
| Linux ARM64 | DVMConsole-0.7.0-aarch64.AppImage |
The packages are unsigned and not notarized.
Safety and compatibility
macOS 14 and newer is supported; macOS 12 and 13 remain best-effort targets.
Linux requires PipeWire and GLIBC 2.34 or newer. Global keyboard PTT on Wayland
also requires desktop support for the GlobalShortcuts portal. Test audio,
PTT, secure/clear calls, patching, and recording with the devices and FNEs you
intend to use. Simultaneous-call capacity depends on the host, protocols, and
routing; the release does not promise lossless patch forwarding under overload.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For setup and operating instructions, see the
user guide. The
changelog lists
changes since 0.6.2 and earlier version history.
DVM Console NEO 0.6.2
DVM Console NEO 0.6.2
Version 0.6.2 fixes managed configuration handling, Configuration Studio,
keyboard PTT, receive metering, and shutdown recording finalization.
Configuration workflows
- File > Import Codeplug makes the managed-library boundary explicit, while
Open Recent now lists recently opened managed revisions instead of source
paths. - Studio uses file pickers for encryption-key and RID-alias companions. RID
aliases use one FNE owner chooser and one native Choose file… picker. The
selected file is copied into that configuration's managed draft, only the
selected FNE receives a portable reference to the copy, and the original and
other FNE lists remain unchanged. - A new configuration can proceed directly from FNE system to channel. Studio
creates the first zone when needed and creates managedkeys.clearand
aliases.ymlcompanions when their first entries are added. - Full export uses the current draft's key and alias contents. YAML and copied
companions are read back byte-for-byte before success is reported. A missing
optional companion is reported and omitted without preventing the YAML
export. Sanitized support copies use valid non-secret placeholders for
removed operational values, so they still pass the normal import validator. - Import can recover zone entries that were accidentally placed in the YAML
systemslist. The managed copy is repaired with a warning; the imported
source file is never rewritten.
Studio reliability
- Import, activation, save, reload, and storage-picker completion return to the
Avalonia UI thread before changing window state. - Adding, duplicating, or deleting an FNE system no longer leaves duplicate or
unstable Studio rows. Selection changes no longer feed editor events back
into collection rebuilds or cause a stack-overflow crash. Duplicated zones
receive unique channel and stream names, and validation issues open the
affected stream or field. Undo no longer loses its Redo branch to generated
editor events while restored bindings settle. - Invalid hexadecimal key-ID text remains visible as a validation error without
replacing the previously valid key ID. Read-only documents consistently
disable key, alias, group, system, stream, and zone mutation controls. - Channel rows are editable in place for name, destination, mode, DMR slot,
encryption algorithm, receive-only state, and card size. Inline edits remain
synchronized with the inspector and use the same validation and Undo/Redo
history. Name receives the largest flexible share, Destination stays compact
so Mode and Slot remain usable, and the slot control is hidden on non-DMR
rows. Studio switches to its compact channel list when the inspector would
otherwise squeeze those columns below usable widths. - Zones and channels appear only in the hierarchy beneath their FNE system.
The FNE Systems page can create the selected system's first zone and channel,
the whole navigation rail scrolls even when the pointer is over the tree, and
a selected zone branch remains collapsed when the operator closes it. - A single Add creates and selects a RID alias row. Its RID and alias update
in place as they are entered; no extra placeholder row or delete pass is
required. FNE selection resolves the exact managed alias copy when source
files share a filename; if the selected FNE has no alias file, Add creates
its portable managed file and first editable row. Import/replace copies an
external list into the selected FNE's managed draft, leaves the source and
other FNEs unchanged, and keeps internal runtime paths out of the RID list. - Closing a dirty draft offers Save, Discard, or Cancel. If an immutable
revision commits but materialization or settings reconciliation fails, Studio
identifies the recoverable revision instead of claiming that nothing was
saved. - Studio commits against the managed identity carried by the document being
edited, so a stale window identity cannot revise a different library entry.
Saving a new configuration now offers to disconnect and load it immediately;
added and duplicated FNE systems are present when the session reloads. - When a restored catalog refers to a revision that is no longer present, the
managed library repairs the entry from its existing current pointer or newest
valid revision. An entry with no recoverable revision is deactivated instead
of crashing application startup. - Configuration Studio now opens centered within the current display's usable
working area, including on 1920x1080 displays with Windows desktop scaling.
PTT, receive, and shutdown
- Space PTT remains usable on channel controls. Toggle-mode card PTT and global
or active-system keyboard PTT remain keyed when the DVM Console
window loses focus, while physical key release, suspension, and shutdown
still release transmit state. - Clicking a channel's visible Release control always unkeys the live
transmission, including when another PTT source started it or internal source
state became desynchronized. - Global and active-system PTT menus mark the currently applied key, including
the disabledNoneoption. - The P25 logical-call continuation window is 0.9 seconds, closer to the DMR and
NXDN windows. FNE client identification now usesNEO_<version>. - Recording finalization no longer waits out a fixed shutdown grace period after
work has completed. Blocked finalization remains bounded and cancelable. - Alert/QCII pattern fields are explicitly labeled Frequency and
Duration (sec). - Rapidly changing receive streams no longer let an older stream's decaying
level blank the current call's audio meter. Configuration Studio uses plain
numeric text fields, without spinner buttons, for FNE Port, Peer ID, and RID
aliases. DMR slot selection uses a1/2dropdown in both the channel table
and inspector. - Live call-history updates and recording-catalog refreshes no longer modify
the same history collection at once during session teardown.
In-app documentation
The searchable guide now includes Configuration Troubleshooting. Its
Configuration Studio, managed companion, TAR, Event History, tones, audio, and
settings instructions match the current controls and storage behavior.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.6.2-osx-arm64.zip |
| Intel macOS | dvmconsole-0.6.2-osx-x64.zip |
| Windows x64 | dvmconsole-0.6.2-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- Existing 0.6.1 managed configurations and operator settings do not require a
migration. YAML remains the interoperable import/export format. - This release does not change FNE packet formats, vocoder payloads, encryption
signaling, or the supported macOS 14+ and Windows x64 targets. - Import compatibility repair and shorter P25 logical episode grouping affect
managed presentation and history behavior; they do not modify the imported
source file or over-the-wire traffic. - Automated tests and package checks do not replace live FNE, radio,
microphone, speaker, Bluetooth, serial PTT, system-wide keyboard PTT, or
Windows hardware acceptance on the destination systems.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.6.1
DVM Console NEO 0.6.1
Version 0.6.1 is a small hotfix for the compact List workspace. It also expands
the bundled network-disabled demo.
Hotfixes
- Restore List control colors and PTT input, including hold, toggle, and
keyboard Space operation. Expanded rows also stay in place while their detail
panel opens or closes. - Save the exact main-window size and position before Quit completes.
- Provide a larger multi-zone workspace in the network-disabled demo.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.6.1-osx-arm64.zip |
| Intel macOS | dvmconsole-0.6.1-osx-x64.zip |
| Windows x64 | dvmconsole-0.6.1-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- FNE packet formats, vocoder payloads, transmit pacing, encryption signaling,
and codeplug structure are unchanged. - Existing 0.6.0 managed configurations and operator settings do not require
migration. - The expanded demo is network-disabled and does not contain operational system
data. - Live FNE, radio, microphone, speaker, Bluetooth, serial PTT, and Windows
hardware acceptance remain separate tests on the destination systems.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.6.0
DVM Console NEO 0.6.0
Version 0.6.0 completes the first portability refactor. It keeps macOS and
Windows as the supported runtime targets while separating the console runtime,
shared Avalonia presentation, audio, vocoder, storage, and optional physical
PTT capabilities needed by future Linux, iOS, and Android hosts.
This release is based on the complete v0.5.5 runtime baseline. It includes the
v0.5.4 configuration-save, TAR correlation, typed FNE state, cancellable web
stream, receive lifecycle, decoder ownership, mixer-tail, and native-audio
reliability changes, plus the v0.5.5 canceled-stream Off-state correction.
Operator changes
- File > Configuration Library manages configurations as immutable app-owned
revisions. Opening an external YAML codeplug imports it; later saves never
overwrite that source file. - File > New Configuration can create a complete configuration in Studio.
YAML remains available through full and sanitized export. - View > Channel view > Cards/List selects the desktop renderer. Cards stay
the default and retain their existing geometry and colors. List is virtualized,
grouped by system and zone, and becomes the temporary renderer below 600
logical pixels. - Card layout, routes, gain, balance, recording policy, encryption selections,
groups, patches, and authorized web-stream state are stored per managed
configuration. A compatible legacy layout is attributed during first import. - Configuration Studio and Console Settings use denser desktop rows while
retaining responsive phone-width layouts and accessible touch targets. - Event History retains the newest 5,000 current-session calls and events even
when they do not have TAR recordings. The compact Activity sidebar continues
to show at most 100 matching entries, and TAR catalog retention is unchanged.
Portability boundaries
DvmConsole.Applicationowns the application-session façade, stable IDs,
immutable runtime snapshots, commands, meters, logs, lifecycle coordination,
recording playback, generated audio, web streams, and patches without an
Avalonia dependency.DvmConsole.Presentationowns reusable Avalonia controls, pages, view models,
styles, responsive policy, List rendering, Configuration Studio, and the
Configuration Library without desktop lifetimes, pickers, filesystem paths,
serial ports, or native APIs.- Audio is split into abstractions, managed DSP/codecs, macOS CoreAudio,
Windows WASAPI, and desktop selection projects. The Windows adapter is the
only audio project that references NAudio. - Vocoder abstractions are separate from the current native implementation.
- Focused/global keyboard and serial PTT live in desktop-only projects. The
application accepts no physical PTT factories, leaving on-screen PTT
available to a future mobile host. - Configuration, asset, and recording APIs use stable IDs and stream/document
handles. Desktop-only path and reveal-in-file-manager behavior stays in the
desktop host.
Reliability and efficiency
- Runtime control snapshots are content-deduplicated; meter samples and logs do
not rebuild the full console state. List meters are coalesced per dispatcher
turn and ignore visually insignificant changes. - Programmatic gain restoration no longer feeds back as an operator command.
- TAR playback decodes a first block before opening the output endpoint and
records source, decoder, prefetch, endpoint, and first-output timing. - Configuration Library filesystem work runs away from Avalonia synchronization
contexts while remaining compatible with the existing synchronous startup
bridge. - Filesystem identities follow the target platform's case rules, avoiding
accidental recording or revision collisions.
Removed
- The unused external FFmpeg fallback and
DVM_FFMPEGenvironment variable.
Managed PCM WAV, MPEG/MP3, and Ogg Opus decoding remain supported. - The abandoned high-quality Bluetooth option and macOS native activation ABI.
Ordinary Bluetooth route handling, cold-profile safety, Keep Mic Warm, and
Apple Voice Processing remain unchanged.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.6.0-osx-arm64.zip |
| Intel macOS | dvmconsole-0.6.0-osx-x64.zip |
| Windows x64 | dvmconsole-0.6.0-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Evidence and support boundary
Automated validation covers architecture boundaries, migrations, immutable
revisions, settings compatibility, desktop behavior, media/runtime behavior,
PTT release paths, and headless responsive rendering. Package checks cover
architecture, native libraries, documentation, privacy strings, private-data
exclusion, and size/file-count budgets.
This release does not claim Linux, iOS, or Android runtime support. Live FNE,
radio, default-device, Bluetooth, microphone, serial, and Windows hardware
acceptance remain distinct tests on the destination systems.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.5.5
DVM Console NEO 0.5.5
Version 0.5.5 is a reliability update for configuration saves, recording
history, FNE session state, web streams, and audio teardown. It also replaces
several duplicated lifecycle policies with shared implementations so the live
runtime and its validation paths make the same decisions.
Fixed
- Configuration Studio now reads the latest editor state before it plans and
commits a save. It rejects duplicate destination paths, checks for external
file changes at commit time, keeps staged secrets and backups private,
and adopts the saved settings snapshot in the running application. - Configuration validation accepts supported system, mode, card-size, and
encryption tokens without depending on letter case or surrounding spaces. It
rejects a system port that cannot reserve the adjacent metadata port. - YAML updates preserve empty known collections and no longer use list position
as a fallback when placing vendor fields. - A web stream can be stopped while its connection or decoder is still opening.
Slow startup work no longer holds the control gate needed by Stop or disposal,
and a canceled start now reliably finishes in theOffstate. - New TAR recordings carry the receive episode that produced them. History uses
that identity before applying a bounded time-based fallback for older files,
which keeps rapid calls on the same channel from sharing the wrong recording. - Clear and Secure recording filters exclude calls whose encryption state is
still unknown. Recording path containment follows the case-sensitivity rules
of the host filesystem. - FNE connection state and login retry cadence now follow typed peer state and
transport events instead of diagnostic message wording. Compatible UDP
receives return promptly after shutdown. - NXDN late entry starts from the configured privacy policy, while explicit
clear metadata can still override it. DMR and NXDN receive sessions no longer
retain unused encryption state. - Analog transmit sends a padded final PCM frame before the call terminator.
Full and partial PCM frame handoffs are not replayed if a downstream callback
fails. - Mixer lanes remain owned until the output device accepts their final samples.
macOS playback and capture release native streams and high-quality Bluetooth
overrides after startup, pump, stop, or disposal failures. - WAV, MPEG, Opus, and FFmpeg readers reject overlapping reads and coordinate
cancellation with disposal. MPEG startup can be cancelled even when decoder
construction blocks. - Desktop state changes that resume after asynchronous work return to the UI
dispatcher, and settings write failures are reported through the application
error path.
Engineering changes
- Configuration saving and settings persistence now have dedicated
coordinators instead of being owned by window event handlers and the main
view model. - Filesystem path identity is centralized so save planning and recording
containment use the same platform rules. - The allocation-free receive stream state machine is the canonical lifecycle
engine. The immutable reducer adapts its input through that engine rather
than maintaining a second policy implementation. - Application-owned FNE code has nullable analysis enabled and uses a finite
compatibility suppression list for pinned upstream source. - macOS CI now builds and tests the native CoreAudio component. The capture ring
is allocated after the device's negotiated sample rate is known.
Operator behavior
- Existing YAML codeplugs and operator settings do not require migration.
- Existing TAR recordings remain readable. New recordings add receive-episode
identity to their embedded catalog metadata. - FNE login retry intervals remain 5, 10, 20, 40, and 60 seconds, capped at 60
seconds and reset after a successful connection or operator restart. - Stopping a web stream during startup now cancels the pending start instead of
waiting for the network or decoder operation to finish.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.5.5-osx-arm64.zip |
| Intel macOS | dvmconsole-0.5.5-osx-x64.zip |
| Windows x64 | dvmconsole-0.5.5-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- FNE packet formats, vocoder payloads, transmit pacing, encryption signaling,
and codeplug structure are unchanged. - Automated tests cover configuration transactions, recording correlation,
stream cancellation, FNE retry state, receive lifecycle, reader ownership,
native audio cleanup, and transmit tails. - Live FNE, radio, Bluetooth, serial PTT, and audio-device acceptance still
requires testing on the affected systems and routes.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.5.3
DVM Console NEO 0.5.3
Version 0.5.3 fixes a transmit-target validation gap found after 0.5.2. A DMR
channel could remain keyable on its locally configured timeslot even when the
connected FNE advertised that talkgroup on the other slot. The FNE could reject
the call start and later report the console's end packets as non-call
terminators.
The console now treats each FNE-sourced talkgroup table as authoritative for
every transmit path.
Fixed
- DMR transmit targets must match both the advertised talkgroup and timeslot.
P25, NXDN, and analog targets are matched by destination ID. - Channel PTT, multi-channel PTT, patches, alerts, pages, DTMF, and generated
tones all consult the endpoint's current authority immediately before a call
starts. - A refreshed table updates the channel controls and warns the operator when a
target becomes unavailable. If that target is already active, DVM Console
ends the affected console or patch transmission cleanly. - Disconnect clears the old authority before reconnect. Ordered notifications
and session identities prevent delayed callbacks from an outgoing connection
from overwriting the replacement connection's table. - Talkgroup activation and deactivation announcements are length-checked and
parsed at the FNE transport boundary. Malformed announcements are rejected
without interrupting normal protocol traffic.
Operator behavior
- Unavailable controls are disabled. DMR warnings name the rejected talkgroup
and timeslot. - A later table can restore a channel without reconnecting or reloading the
codeplug. - No codeplug or operator-settings migration is required.
Engineering improvements
- A shared transmit-target policy covers console voice, generated audio, and
patch forwarding. Each path keeps its existing transmission implementation. - The FNE transport session passes traffic timing and talkgroup observers
separately from its transport-encryption compatibility facade. - Inbound frames are validated once before talkgroup observation and protocol
delivery. - Regression tests cover DMR slot mismatches, P25 and other destination checks,
tone and patch rejection, active-call teardown, ordered reconnect
notifications, malformed tables, and duplicate validation removal.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.5.3-osx-arm64.zip |
| Intel macOS | dvmconsole-0.5.3-osx-x64.zip |
| Windows x64 | dvmconsole-0.5.3-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- Existing YAML codeplugs and operator settings remain compatible.
- FNE wire formats, encryption behavior, vocoder payloads, transmit cadence,
jitter-buffer targets, mute policy, and TAR recording delivery are unchanged. - Automated tests cover the authority and transmission-lifetime paths. Live
FNE, radio, and audio-device acceptance still requires testing on the affected
systems and routes.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.5.2
DVM Console NEO 0.5.2
Version 0.5.2 is a hotfix for receive audio and session-lifetime problems
reported after 0.5.1. It also makes routine patch and multi-select changes apply
without a YAML save or FNE reconnect, and adds a setting for local generated-tone
monitoring.
Fixed
- Confirmed P25 terminators now release the physical receive stream promptly,
including short calls that have not filled the live-playback startup cushion.
If voice definitively restarts a reused stream ID, the new stream receives a
fresh decoder while the logical call episode keeps its established output
lane. - Patch forwarding now closes a source when the ordered receive worker reaches
the terminator. Audio already held by the adaptive jitter buffer is processed
first, so patching does not need a second fixed terminator hold. - A failed patch target now releases its route before reporting the failure, so
the next audio block can restart the target instead of remaining attached to
the failed outbound session. - System and zone mutes now apply when a live-speaker lane is created and when
receive playback resumes after transmit. Muted resources still decode, update
call state, feed patches, and deliver audio to TAR for recording. - FNE connect, disconnect, and replacement transitions are serialized. A
disconnect cancels an in-progress start, and the outgoing session releases its
FNE peer identity before the replacement becomes active. - Session-owned callbacks are ignored after disposal begins. The shutdown
deadline now covers the complete application cleanup sequence, including
auxiliary windows and settings writers. - Final shutdown now stops FNE sessions before the remaining audio and UI
cleanup. A peer waiting in exponential login retry is cancelled immediately
instead of delaying Quit until its current retry interval ends.
Operator changes
- Configuration Studio applies group membership, direction, and enabled state
directly to the active codeplug's operator settings. Apply changes keeps
Studio open, while Apply & close applies the same state and closes the
window. Neither action rewrites YAML, disconnects FNE sessions, or reloads the
codeplug. - Group definition changes, including add, rename, type change, and delete,
remain YAML changes and still use Review & Save. - General settings now include Monitor generated tones locally. Turning it
off skips the attenuated local monitor for generated tones, DTMF, presets, and
QCII pages without changing the transmitted audio.
Engineering improvements
- Live speaker admission now uses one mute policy, while decoded-sample delivery
to TAR remains independent from speaker playback. - Patch receive processing has one ordered boundary for call-state observation,
decoding, and source teardown. - Session replacement and final shutdown separate FNE quiescence from the
remaining audio and UI disposal work. This prevents overlapping peer identity
ownership during reload and avoids carrying login backoff into shutdown. - Regression coverage includes short P25 calls, stream-ID reuse, mute-scope
composition, TAR capture while muted, transmit-to-receive restoration,
patch-target recovery, overlapping connection transitions, stale UI
callbacks, bounded shutdown, login-backoff cancellation, immediate group
state, and disabled local tone monitoring.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.5.2-osx-arm64.zip |
| Intel macOS | dvmconsole-0.5.2-osx-x64.zip |
| Windows x64 | dvmconsole-0.5.2-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- Existing YAML codeplugs remain compatible. Operator settings migrate to
schema 9 automatically; the local tone monitor remains enabled unless the
operator turns it off. - FNE packet formats, encryption behavior, vocoder payloads, transmit cadence,
and jitter-buffer targets are unchanged. - Automated tests cover the reported lifecycle and audio-policy paths. Live
Windows audio, radio, FNE, reload, and shutdown acceptance still requires
testing on the affected workstation and route.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.5.1
DVM Console NEO 0.5.1
Version 0.5.1 is a hotfix for a reported Windows transmit audio problem.
Diagnostic logs showed outbound P25 vocoder packets slipping well beyond their
intended cadence. The delay from each late timer wakeup was being carried into
the packets that followed, so a busy or coarse-grained scheduler could make a
transmission progressively slower and uneven.
Fixed
- Outbound audio now follows absolute 20 ms frame-start deadlines. Encoding,
transport work, and a late timer wakeup count against the current interval
instead of extending every later interval. - A wakeup that is less than one frame late keeps the next established deadline.
If transmission falls a full frame behind, the cadence starts again from the
current time rather than emitting an immediate catch-up burst. - Patch forwarding uses the same absolute scheduler. Its first frame still waits
for one interval, and its bounded queue still stops a patch that has become
too stale to transmit safely.
Engineering improvements
- Patch cadence startup now uses a named factory instead of a boolean option,
making the intended first-frame behavior explicit at the call site. - The cadence contract now states that each instance belongs to one serial
transmit stream. - Deterministic tests cover repeated timer overshoot, sub-frame and whole-frame
lateness, delayed patch startup, non-tick clock frequencies, and recovery
without packet bursts.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.5.1-osx-arm64.zip |
| Intel macOS | dvmconsole-0.5.1-osx-x64.zip |
| Windows x64 | dvmconsole-0.5.1-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- No codeplug or operator-settings migration is required.
- FNE packet formats, encryption behavior, vocoder payloads, transmit queue
limits, and patch teardown behavior are unchanged. - Automated tests reproduce scheduler delays deterministically. Windows radio,
FNE, and audio-device acceptance still requires testing on the affected
workstation and route.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.
DVM Console NEO 0.5.0
DVM Console NEO 0.5.0
Version 0.5.0 introduces Configuration Studio, a graphical way to maintain the
same interoperable YAML codeplug DVM Console already loads. It brings systems,
zones, channels, streams, groups, encryption keys, aliases, and file management
into one draft-and-review workflow without changing the main operator workspace.
Added
- Configuration Studio opens as a separate modeless window from File >
Configuration Studio. File > New Configuration starts a new draft, and
View > Groups opens Studio directly on the Groups page. - The navigation tree follows FNE system, zone, and channel ownership. Dense
tables keep large configurations scannable, while the inspector edits the
selected record and reports field errors as they occur. - The slide-out zone layout editor uses the same channel-card template,
dimensions, colors, and two-dimensional canvas as the main console. Its
controls are disabled, but cards can be selected and moved to prepare the
saved layout. - Review and save groups changes by codeplug, local key file, alias file, and
operator settings. Studio checks for external edits, validates the staged
set, creates restricted backups, replaces files atomically, and restores
earlier files if a later write fails. - Full interoperable export retains codeplug credentials, addresses, stream
URLs, identifiers, and references to local key material. Sanitized support
export removes those values. Review either copy before sharing it. - TAR History now shows a stop control while a recording is playing. Generated
tones, DTMF, pages, and alerts also play through an attenuated local monitor;
the transmitted PCM is unchanged.
Changed
- Studio presents YAML
mode: p25as P25 Phase 1. P25 Phase 1 channels do
not show a slot field, while DMR slots are displayed as whole numbers. - Encryption editors use named, protocol-aware algorithm choices. Studio derives
algorithm IDs and required key lengths for P25 Phase 1, DMR, and NXDN, and
keeps the0xprefix visible for hexadecimal key IDs. - Group name and type stay in the YAML codeplug. Membership, one-way direction,
source order, and enabled state are stored as operator settings scoped to the
normalized codeplug path. Saving as a new path copies that state without
removing the original. - Unknown YAML mapping fields are retained while their containing records remain
in the draft. Edited sections use canonical formatting. Anchors, aliases,
custom tags, duplicate keys, and multi-document files open read-only because
Studio cannot rewrite them safely. - Saving the active codeplug does not hot-apply topology changes. Studio offers
a save-only path or a disconnect-and-reload path that uses the existing safe
session replacement flow.
Fixed
- Validation details now identify the severity, section, exact field path, and
plain-language cause. Errors block saving; warnings remain visible without
blocking it. - Add, duplicate, delete, reorder, algorithm-selection, and layout commands no
longer terminate Studio when a draft is incomplete or a selection changes.
The channel list keeps its own scrollbar while the layout drawer is open, and
a selected overflow row no longer flickers at the drawer boundary. - Renames, duplicate display names, reorder operations, undo and redo, and Save
As now retain stable draft identities. Group and layout settings follow the
intended record instead of relying on its current display name. - Delayed FNE status and P25 KMM callbacks are ignored after session teardown,
preventing them from scheduling work against a disposed console. - Generated-audio monitoring and TAR playback cancellation are idempotent, and
a local monitor-output failure does not interrupt the radio transmission. - Malformed Opus, configuration, FNE, and recording inputs are rejected earlier.
Receive episode and stream bookkeeping is bounded, and recording scans and
retention cleanup do not follow linked paths outside the configured root.
Packages
Extract the complete archive before starting DVM Console NEO.
| Platform | Package |
|---|---|
| Apple Silicon macOS | dvmconsole-0.5.0-osx-arm64.zip |
| Intel macOS | dvmconsole-0.5.0-osx-x64.zip |
| Windows x64 | dvmconsole-0.5.0-win-x64.zip |
The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.
Safety and compatibility
- Existing YAML codeplugs remain the source of truth. Studio does not add group
membership or other operator-only state to the codeplug schema, so compatible
older DVM Console versions can continue to load files saved by Studio. - Existing global group settings migrate to the last active codeplug when its
path is known. The settings schema update is automatic. - Comments and hand formatting inside rewritten sections are not guaranteed to
remain unchanged. Studio shows this limitation in review and records backups
under the DVM Console application-data folder. - P25 Phase 2 is not active. The YAML value
mode: p25continues to mean P25
Phase 1.
DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.
This repository is an independently maintained downstream version of
DVMProject/dvmconsole.
For the complete history, see the
changelog.