sdrtrunk-vce - web interface, analytics, optimizations - Testers Wanted!

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
201
Reaction score
24
Location
Cleveland
Yes, another SDRTrunk fork. I know.

But this one is built around a specific goal: making SDRTrunk easier to operate on busy and multi-site systems.

sdrtrunk-vce replaces the constantly shifting Now Playing view with per-site tabs and stable channel rows, so you can see active and idle voice channels at a glance. It also adds:

  • Hold, Avoid, and Clear playback controls
  • Automatic control-channel learning
  • A built-in web console with live activity, browser audio, stats, and history (a modern replacement for Unitrunker)
  • Portable SQLite configuration and long-term statistics
  • DSP and runtime optimizations based on the W6BAZ/bazineta fork

In my testing, VCE used 8.5% less CPU and triggered 25% fewer Java cleanup pauses than the latest tested mainline build, while also running the added signal-health, decode-health, web, and portability features.

It works well on my systems, latches onto control channels much easier, at lower signal strengths. Now I need other people to break it.

screencapture-192-168-64-93-8090-2026-07-17-00_59_41.pngScreenshot 2026-07-17 at 1.02.27 AM.pngScreenshot 2026-07-17 at 1.02.41 AM.pngscreencapture-192-168-64-93-8090-2026-07-17-00_59_58.png

I’m especially looking for users monitoring busy P25 Phase 1/2, simulcast, rotating control-channel, or multi-site systems.

This is an alpha. It imports a copy of your existing XML configuration into its own portable SQLite database and does not overwrite your current SDRTrunk files. Still, make a backup before testing.

Downloads:

Feedback here is welcome.
I posted this to the sdrtrunk Facebook group about a week ago, and i've been fixing bugs, so I know this may open the floodgates to issues I haven't seen yet. Reproducible bugs can be submitted through GitHub Issues.
 

ronenp

Member
Joined
May 8, 2002
Messages
603
Reaction score
38
When I import playlist that have P25Phase1 Control channel it replace it to P25 conventional and it doesnt work there is no way to edit it so i had to create new channel and choose P25Phase1 control channel and then it worked
 

dave3825

* * * * * * * * * * * *
Premium Subscriber
Joined
Feb 17, 2003
Messages
10,763
Reaction score
6,323
Location
Suffolk County NY
Now I need other people to break it.


I actually found your fork the other day and bookmarked it in hopes of trying it out next week, but clearly that did not go as expected.


This is an alpha. It imports a copy of your existing XML configuration into its own portable SQLite database and does not overwrite your current SDRTrunk files. Still, make a backup before testing.

Maybe make that bigger, bold and flashing red because believe it or not, there are people in this world that lack the common sense.


  1. Automatic XML upgrade
    On first launch, the application can locate an older SDRTrunk XML playlist and import it into the portable SQLite database. The original XML remains unchanged.

So I did auto and it did not locate my playlist XML. I then deleted the data folder and re ran, and when it asked, I did browse and used a known good back up. The only systems that got imported were the three I have set for autostart. It did not get the rest of the systems or conventional channels.

Trunking Recorder is not importing the calls for some reason. I did change the recording folder to match where Denny's sdrt is saving to, and where TR is importing from but super busy today and I have not researched that any further yet.

Very nice job with this..

Have not fully read thru everything yet so if its explained, please disregard, but if Denny makes changes, particularly to NXDN, will they reflect in your fork?
 
Last edited:

GTR8000

NY/NJ Database Guy
Database Admin
Joined
Oct 4, 2007
Messages
17,106
Reaction score
16,625
Location
BEE00
The last guy who posted about his SDRTrunk fork, that didn't go so well. In the interest of full transparency, how much of your fork is written using AI, and do you plan on using AI to reply to posts in this thread and/or issues reported directly to your repository? I'm not suggesting that any use of AI is a reason to avoid your fork, however I do think it's fair to state up front how much is your human knowledge of coding vs relying on AI and the end-users to find bugs.
 

dave3825

* * * * * * * * * * * *
Premium Subscriber
Joined
Feb 17, 2003
Messages
10,763
Reaction score
6,323
Location
Suffolk County NY
Trunking Recorder is not importing the calls for some reason. I did change the recording folder to match where Denny's sdrt is saving to, and where TR is importing from but super busy today and I have not researched that any further yet.

Disregard the above.



So I did auto and it did not locate my playlist XML. I then deleted the data folder and re ran, and when it asked, I did browse and used a known good back up. The only systems that got imported were the three I have set for autostart. It did not get the rest of the systems or conventional channels.
It did not pick up on listen/record settings on the 3 systems.
 

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
201
Reaction score
24
Location
Cleveland
When I import playlist that have P25Phase1 Control channel it replace it to P25 conventional and it doesnt work there is no way to edit it so i had to create new channel and choose P25Phase1 control channel and then it worked

Unfortunately, that’s expected behavior in this alpha. Standard SDRTrunk doesn’t distinguish between conventional P25 and trunked P25, but my build needs to so it can place conventional channels in the correct tab and log their metrics properly.

I’ve added a weighted scoring classifier to improve that detection. The next alpha will make a best-effort determination of whether a system is conventional or trunked, which should handle most of these cases going forward.

The last guy who posted about his SDRTrunk fork, that didn't go so well. In the interest of full transparency, how much of your fork is written using AI, and do you plan on using AI to reply to posts in this thread and/or issues reported directly to your repository? I'm not suggesting that any use of AI is a reason to avoid your fork, however I do think it's fair to state up front how much is your human knowledge of coding vs relying on AI and the end-users to find bugs.

That’s a fair question. I do use AI quite a bit as a force multiplier, especially for navigating an unfamiliar codebase, working through possible fixes, and refactoring. I don’t blindly copy and paste code or automatically accept patches, though. I need to understand the problem, review what is being changed, and test it before I commit anything.

For some context on my background, I’m relatively new to desktop application development, but I’m not new to building software in this particular space. In early 2014, I built ScanEyes, site/application that recorded trunked-radio traffic as individual timestamped MP3 calls, and provided a searchable web interface for browsing and playback. It also included playlists, user permissions, contextual talkgroup and radio-ID searches, and call-activity timelines. As far as I can document, it was the earliest publicly demonstrated RTL-SDR implementation of call recording and browser-playback model that later became familiar through projects and services such as Rdio Scanner, Trunking Recorder and Broadcastify Calls. I mention that not to claim expertise in every part of SDRTrunk, but to make clear that I’m not approaching radio systems, call metadata, recording workflows, or web-based call management from zero.

I may use AI to help analyze an issue, organize technical information, or improve the wording of a response, but I do not plan to automate replies in this thread or turn repository issues over to an AI bot. Anything posted under my name will have been reviewed by me, and I will remain responsible for the answer.

I’m still learning SDRTrunk’s internals, and i haven’t been involved with its development since its inception, so i will undoubtedly miss things. That is one reason I’m looking for testers. But I’m not treating end users as a substitute for understanding or maintaining the code. I take responsibility for investigating reports, validating fixes, and deciding what gets merged.

Disregard the above.




It did not pick up on listen/record settings on the 3 systems.
Could you privately message me your xml file? I have a few systems that I test migrations with prior to releases, but it can't always capture every use case and configuration.
 

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
That’s a fair question. I do use AI quite a bit as a force multiplier, especially for navigating an unfamiliar codebase, working through possible fixes, and refactoring.
Which AI are you using? Your fork looks interesting and I will test it out.
 

Whiskey3JMC

_/|\_Surf's up, Happy DX!
Premium Subscriber
Joined
Jul 16, 2006
Messages
10,647
Reaction score
9,356
Location
Simulcastylvania, TE

GTR8000

NY/NJ Database Guy
Database Admin
Joined
Oct 4, 2007
Messages
17,106
Reaction score
16,625
Location
BEE00
To be fair, the short-lived Kennebec fork did have a Windows installer, however that was the very rare exception to the rule.
 

Whiskey3JMC

_/|\_Surf's up, Happy DX!
Premium Subscriber
Joined
Jul 16, 2006
Messages
10,647
Reaction score
9,356
Location
Simulcastylvania, TE
Currently testing the MacOS version on a virtual machine (and quite frankly an OS) I don't give a lick about, that way if it somehow borks up my legacy sdrtrunk stuff, so be it. On a positive note: unlike the aforementioned Kennebec fork (a bit of a fiasco to say the least IMHO) this one looks to have correctly imported my playlist.xml and alias lists after being politely prompted to do so on the first launch. First question to the OP: Is there a way to filter out the "idle" frequencies and only show what is active like the original sdrtrunk? I've perused the settings & am not seeing one. The signal decode percentages for the control channel are nice additions.
1784407894458.png

Really liking the web interface, it provides interesting insight & analysis and a real time system view. Very cool :cool: . If all continues to go well then I'll continue testing on my Linux box...
 

NNJIPScan

Member
Feed Provider
Joined
Nov 6, 2012
Messages
62
Reaction score
45
Been testings for a couple of days now.

Strong work here, with noticable fixes from alpha1 to 5. The added web features are great.
 

Whiskey3JMC

_/|\_Surf's up, Happy DX!
Premium Subscriber
Joined
Jul 16, 2006
Messages
10,647
Reaction score
9,356
Location
Simulcastylvania, TE
First question to the OP: Is there a way to filter out the "idle" frequencies and only show what is active like the original sdrtrunk?
On 2nd thought perhaps it's good to keep them there, a bit like DSDPlus. Still would be nice to have a way either to sort columns (by clicking column header?) or filter only what you want to see
 

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
201
Reaction score
24
Location
Cleveland

Alpha 5 Released​

Added​

  • A one-time What’s New window. Starting with this release, a summary opens automatically the first time you run each new public version. It does not interrupt later launches. You can open it again from the Help menu.
  • Bug reports from inside the application. Help > Submit Bug Report lets you describe a problem, attach extra screenshots, and either send the report or save a ZIP for manual upload. Before anything is collected, the window explains exactly what is included and requires your consent.
  • More useful browser playback details. The web player now keeps aliases together with their talkgroup or radio ID and shows the system, channel, frequency, slot, decoder, encrypted-call status, and call length when available.

Changed​

  • P25 conventional imports are classified more accurately. A conventional P25 frequency imported from RadioReference now becomes a P25 Conventional channel instead of a trunked P25 control channel.
  • Older XML playlists are handled more carefully. Single-frequency P25 entries that look conventional are converted to P25 Conventional during a first-time import, while entries with strong signs of a trunked system are kept as trunked channels. Existing channels in an already-created portable database are not changed automatically.
  • Radio-system numbers are easier to read. Compact web tables use the familiar hexadecimal form, while detail pages show labeled hexadecimal and decimal values together where both are useful.

Long term goals:​

My long-term goal is to evolve sdrtrunk-vce into a web-first, self-contained radio platform while keeping the Java decoder, DSP, tuner, recording, playback, streaming, and statistics engine intact. The browser will gradually replace Swing and most radio-related JavaFX screens, eventually providing live monitoring, scanner audio, recordings folder browsing, spectrum and waterfall displays, playlist and alias editing, streaming and RadioReference management, tuner control, and radio preferences. Sensitive changes will require authenticated accounts and permissions, with HTTPS and secure session support. A small local JavaFX utility will remain for web-server configuration, certificates, local services, initial setup, and recovery.
This work will be developed feature-by-feature on a highly unstable experimental branch, while main remains usable and continues receiving fixes, VCE improvements, and upstream updates from the official sdrtrunk project.

What this means for you: For now, expect mostly bug fixes and smaller improvements rather than major new features. Development is splitting into two branches: a stable main branch for regular use and a highly experimental branch for the web-first transition. Eventually, you’ll be able to securely monitor and manage nearly every part of SDRTrunk from any modern browser, while retaining a small local application for initial setup, server administration, and recovery.

Which AI are you using? Your fork looks interesting and I will test it out.
I'm using Codex GPT 5.6
On 2nd thought perhaps it's good to keep them there, a bit like DSDPlus. Still would be nice to have a way either to sort columns (by clicking column header?) or filter only what you want to see
You can on web :)
Well that's a shame. Any hope of WAN connectability in the future?
View attachment 204162
I’m cautious about encouraging people to expose the application directly to the internet. Secure WAN access requires more than simply forwarding a port, and a configuration mistake or security flaw could leave your system exposed. I haven’t done enough security testing of Java’s built-in HTTP server in this use case to feel comfortable allowing unrestricted public access by default.

For remote access, I recommend using a private network such as Tailscale. It allows you to connect without opening ports on your router and is generally easier to configure securely.

Alternatively, you can use a Cloudflare Tunnel as a reverse proxy. It provides an additional layer between SDRTrunk and the public internet, but requires more setup and is currently an unsupported, use-at-your-own-risk configuration.
 

Whiskey3JMC

_/|\_Surf's up, Happy DX!
Premium Subscriber
Joined
Jul 16, 2006
Messages
10,647
Reaction score
9,356
Location
Simulcastylvania, TE
Trying to add an NXDN talkgroup range identifier for a local system, not showing up
1784468685374.png

Shows up fine in legacy SDRTrunk (nightly)
1784468841688.png
 

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
201
Reaction score
24
Location
Cleveland
I don't see any way to import an existing .xml playlist.
You can import any compatible XML playlist when setting up sdrtrunk-vce for the first time. After the database has been created, however, there isn’t a way to import or merge another playlist.
sdrtrunk-vce keeps all systems and alias lists together in one configuration. Could you explain what you’re trying to do with the additional playlist?
 
Top