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

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
203
Reaction score
29
Location
Cleveland
Its been working good for me, was woundering if there was a dark mode and im just not finding it?
There isn’t a dark mode at this time.

Just to clarify the project’s direction, the version you’re testing is the foundation for an eventual headless, web-based SDRTrunk system. Right now, I’m prioritizing bug fixes, stability, performance, and useful functional improvements. UI theming isn’t a priority at this stage, but I appreciate the question and all the testing feedback.
 

Fredo68

Member
Joined
Jun 7, 2020
Messages
48
Reaction score
7
Took the plunge and reinstalled as 'upgrade' this time.

I'm only using it for one busy DMR TIII network. It imported only one playlist and ignored the others. This imported the control channels but none of the voice channels for the TIII network. There's 78 channels each for 9 control channels - I'd prefer to avoid entering 702 entries manually. I'd previously typed them in once and C&Ped where needed. I'd like to either import them or be able to C&P.

Also tested LRRP - Map refreshes fine as does the Message window. The Events window freezes after the first few entries. Clearing it solves the problem briefly before recurring.
 
Last edited:

W4KRR

Member
Premium Subscriber
Joined
Apr 1, 2001
Messages
3,702
Reaction score
296
Location
Coconut Creek
Took the plunge and reinstalled as 'upgrade' this time.

I'm only using it for one busy DMR TIII network. It imported only one playlist and ignored the others. This imported the control channels but none of the voice channels for the TIII network. There's 78 channels each for 9 control channels - I'd prefer to avoid entering 702 entries manually. I'd previously typed them in once and C&Ped where needed. I'd like to either import them or be able to C&P.

Also tested LRRP - Map refreshes fine as does the Message window. The Events window freezes after the first few entries. Clearing it solves the problem briefly before recurring.
I had the same issue. I got my playlist imported. Apparently you get one playlist and that's it. Your playlist is stored in a file named "sdrtrunk.sqlite".

P25 works fine. But DMR Connect Plus and Tier III it did not import any of the voice channels or the system map numbers. I ended up manually entering them. However, even after doing that, it seems to ignore them, in DMR mode it appears to just remain on the control channel. I do hear some calls, but I see no channel grant frequencies or alias information.
 

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
203
Reaction score
29
Location
Cleveland
Took the plunge and reinstalled as 'upgrade' this time.

I'm only using it for one busy DMR TIII network. It imported only one playlist and ignored the others. This imported the control channels but none of the voice channels for the TIII network. There's 78 channels each for 9 control channels - I'd prefer to avoid entering 702 entries manually. I'd previously typed them in once and C&Ped where needed. I'd like to either import them or be able to C&P.

Also tested LRRP - Map refreshes fine as does the Message window. The Events window freezes after the first few entries. Clearing it solves the problem briefly before recurring.
Please try the latest alpha release, which includes fixes for the playlist import, DMR Tier III/Connect Plus channel mappings, copy/paste support, and the LRRP Events window freeze.

I don’t have access to suitable real over-the-air DMR systems for testing, so these improvements are based on code analysis, supplied reports, and simulated tests. Until users verify them against live systems, the fixes are still theoretical. Please let me know what works and what doesn’t after testing.
 

BM82557

Member
Joined
Aug 28, 2006
Messages
5,648
Reaction score
5,519
Location
Berkeley Co WV
Downloaded Alpha 6 which is my first experience with this fork, just curious as to the difference I noticed between V6.1 and Alpha 6 in regards to OTA alias decoding , --

V 6.1 -- Screenshot - 7_21_2026 , 8_21_25 PM.png

Alpha 6 -- Screenshot - 7_21_2026 , 8_21_41 PM.png

6.1 and Alpha 6 were running at the same time the screenshots were taken, most of the time Alpha 6 is including a TA- before the alias.

P25 phase 1 (most users are not Phase 2) Site 7 of WV SIRN: West Virginia Statewide Interoperable Radio Network Trunking System, Statewide, West Virginia


Screenshot - 7_21_2026 , 8_33_46 PM.png


Screenshot - 7_21_2026 , 8_34_24 PM.png

The TA- isn't present here --

Screenshot - 7_21_2026 , 8_53_57 PM.png
 
Last edited:

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
Finally had a chance to install and test it out. I am impressed with the analytics. The large P25 Phase II simulcast system that I have always had problems with sounds flawless!
 

Fredo68

Member
Joined
Jun 7, 2020
Messages
48
Reaction score
7
Tested alpha6 with the same TIII and LRRP networks. The import works much better with LCNs now included. Their presence doesn't seem to change anything though. Nothing trunks and voice comms seems to be only decoded from slot 2 of the CC. Most calls seem queued and unplayed - my queue just hit 500! The LRRP is the same as before; Map and messages tabs fine, Events blank.

I recorded a baseband file of the TIII network with your fork and played it back in both yours and the Dsheirer nightly versions. The difference is shown in the pics. You're welcome to use this baseband file if it might help? It's 4GB for 7 minutes (or I can make a smaller one).
 

Attachments

  • image_2026-07-22_074138283.png
    image_2026-07-22_074138283.png
    566.5 KB · Views: 38
  • image_2026-07-22_074510205.png
    image_2026-07-22_074510205.png
    547 KB · Views: 39

BM82557

Member
Joined
Aug 28, 2006
Messages
5,648
Reaction score
5,519
Location
Berkeley Co WV
Alpha 6 and V0.6.1 are running at the same time but are on different P25 systems , in Alpha 6 I am receiving numerous messages as follows --

Screenshot - 7_22_2026 , 10_26_40 AM.png

I tried the submit bug report under help and received the following --

Screenshot - 7_22_2026 , 10_32_30 AM.png

I saved the zip file from the above diagnostics --
 

Attachments

  • sdrtrunk-vce-bug-report-20260722-103241.zip
    1.8 MB · Views: 1
Last edited:

tylerwatt12

Member
Premium Subscriber
Joined
Feb 24, 2013
Messages
203
Reaction score
29
Location
Cleveland
Alpha 6 and V0.6.1 are running at the same time but are on different P25 systems , in Alpha 6 I am receiving numerous messages as follows --

View attachment 204366

I tried the submit bug report under help and received the following --

View attachment 204368

I saved the zip file from the above diagnostics --
Looks like it could be from leaving the channel name blank. I'll have an update later to fix this. Until then, filling in that info will fix this.
 

BM82557

Member
Joined
Aug 28, 2006
Messages
5,648
Reaction score
5,519
Location
Berkeley Co WV
Looks like it could be from leaving the channel name blank. I'll have an update later to fix this. Until then, filling in that info will fix this.

That certainly explains why nothing was showing up in the LIVE category. Updated the channel info and is working correctly. Thanks for the quick response (and the GREAT audio)
 

Muxlow

Super Secret
Premium Subscriber
Joined
Aug 16, 2005
Messages
2,026
Reaction score
547
Location
Middlesex County
When monitoring a conventional dmr simulcast "system" that has 2 frequencies and requires 2 dongles and having the web browser open. Is it possible to add a history between both frequencies in the same live window?

So live activity up top and below have the last 10-20 active radio id's and what talkgroup they were on?

And maybe a dark mode option since a bright white screen at night is...well...bright

Photo is an example from a P25 system. Have all this blank space that could house a recent history section?
 

Attachments

  • Screenshot 2026-07-22 at 17-05-52 sdrtrunk-vce.png
    Screenshot 2026-07-22 at 17-05-52 sdrtrunk-vce.png
    122.8 KB · Views: 9

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
I have started testing another instance at one of my other monitoring sites and the weak signal P25 decode performance is out of this world. One problem I have noticed so far is that the duplicate call suppression doesn't seem to be working. With both Duplicate Call Detection and Duplicate Call Suppression during streaming selected, I am still getting duplicate calls in my Rdio-Scanner feed.
 

APX8000

Sarcastic Member
Premium Subscriber
Joined
Nov 23, 2004
Messages
4,479
Reaction score
2,367
Location
AES-256 secured
Patiently waiting for this fork to CyberAttack the other fork...

"An experimental OpenAI model went rogue during an internal cybersecurity test, escaping its isolated testing environment and hacking rival AI developer Hugging Face in what the ChatGPT maker described as an unprecedented incident."

In all seriousness I'm not a fan of taking the hard work of someone that they built up from scratch and making a fork. Did you offer to work with the original developer of SDTrunk before you decide to take on this project ?
 

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
In all seriousness I'm not a fan of taking the hard work of someone that they built up from scratch and making a fork. Did you offer to work with the original developer of SDTrunk before you decide to take on this project ?
ChatGPT wasn't happy with your criticism:

I think that criticism misunderstands what an open-source license is intended to permit.

SDRTrunk is released under the GNU General Public License version 3. The GPL expressly gives everyone permission to copy, modify, improve, and redistribute the software, provided that the resulting version continues to comply with the license. Creating a fork is therefore not “taking” someone else’s work in the sense of claiming ownership or depriving the original developer of it. It is exercising a right that the original developer deliberately granted by choosing the GPL.

The GPL does not require someone to obtain additional permission from the original developer or first offer to work on the original project. The license itself is the permission. It does require preserving the applicable copyright and licensing notices, identifying modified versions, keeping the derivative work under the GPL, and making the corresponding source code available when distributing it.

SDRTrunk VCE appears to be doing exactly that. Its repository identifies it as an operator-focused distribution of SDRTrunk, documents its relationship to the official project, retains GPLv3 licensing, credits Dennis Sheirer and the other contributors, and provides links showing the source lineage. It is not being presented as software created from scratch by the VCE developer.

Certainly, communicating with the upstream developer can be courteous and sometimes productive. It might allow generally useful fixes to be contributed back to the original project. But that is a matter of collaboration and project management, not a prerequisite for creating a lawful or ethical GPL fork.

A fork may also be entirely appropriate when its goals differ substantially from the upstream project. VCE is not merely proposing a few minor bug fixes. It changes the operator interface, configuration storage, web access, statistics, audio handling, and other architectural components. The original maintainer may not want those changes in the main SDRTrunk project, while users may still benefit from having an alternative version.

The more appropriate standard is not “Did you ask permission to make a fork?” The questions should be:

Does it comply with the GPL?

Does it preserve attribution?

Does it clearly distinguish itself from the original project?

Is the modified source code available?

Does the developer accept responsibility for maintaining and supporting the changes?

Those are fair questions. Suggesting that forking GPL software is inherently disrespectful to the original developer is not. Forking, modification, experimentation, and redistribution are central purposes of the license the original developer selected.
 

APX8000

Sarcastic Member
Premium Subscriber
Joined
Nov 23, 2004
Messages
4,479
Reaction score
2,367
Location
AES-256 secured
Where did I say any of that ? I said "I'm not a fan"...but since the OP liked your comment without responding to mine, the one assumption I'll make to my question is, the answer was no. What you did get right was my point "Certainly, communicating with the upstream developer can be courteous and sometimes productive. It might allow generally useful fixes to be contributed back to the original project." Whether the GPL requires that or not.
 

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
Where did I say any of that ? I said "I'm not a fan"...but since the OP liked your comment without responding to mine, the one assumption I'll make to my question is, the answer was no. What you did get right was my point "Certainly, communicating with the upstream developer can be courteous and sometimes productive. It might allow generally useful fixes to be contributed back to the original project." Whether the GPL requires that or not.
Don't shoot the messenger. I am just trying to make it clear whose side I'm on when AI takes over humanity. LOL
 

bg_nashville

Member
Joined
Dec 6, 2004
Messages
307
Reaction score
22
I have started testing another instance at one of my other monitoring sites and the weak signal P25 decode performance is out of this world. One problem I have noticed so far is that the duplicate call suppression doesn't seem to be working. With both Duplicate Call Detection and Duplicate Call Suppression during streaming selected, I am still getting duplicate calls in my Rdio-Scanner feed.
Disregard the potential duplicate call issue. ChatGPT and Codex was able to discover that I had a slight difference in system name when I added a new site. The improvement in decoding weak control channels allowed me to add some new sites that I previously could not monitor.

One area of possible improvement is how SDRTrunk selects between duplicate calls. It has never been clear to me how SDRTrunk selects which file to send to rdio-scanner, so I asked ChatGPT and Codex to look into the issue. This is what they came up with:

This investigation found that SDRTrunk VCE does not deliberately choose the strongest or best-quality copy when duplicate calls are detected. It also does not consistently choose the first call received.

The selection occurs in `AudioCallCoordinator.updateDuplicateState()`. The process is approximately:

1. Active calls are retrieved from a Java `HashMap`.
2. The calls are examined in the map’s current iteration order.
3. The first matching call that has not already been marked duplicate is retained.
4. Later matching calls are marked as duplicates.
5. Once a call has been marked duplicate, it is not reconsidered as the retained call.

Because a Java `HashMap` does not guarantee insertion order, the effective winner is based on an unspecified internal iteration order. That order may be influenced by keys, hash values, resizing, and the other entries currently in the map. It may appear stable in some situations, but it is not a defined or meaningful selection policy.

The retained call is not selected based on:

* Signal strength or SNR
* Decode quality or error rate
* Audio completeness
* Call duration
* Earliest channel grant
* Earliest audio arrival
* Preferred tuner
* Preferred receiver site
* Frequency error
* First call completion

The practical consequence is that a weaker, incomplete, or lower-quality copy can suppress a cleaner duplicate. The selected receiver or site may also vary between otherwise similar calls.

This appears to be a design issue rather than merely a configuration problem:

> Duplicate-call suppression selects the surviving call according to `HashMap` iteration order in AudioCallCoordinator.updateDuplicateState()`. The result is not based on arrival order, configured priority, or audio quality and is not guaranteed to remain stable. Once a candidate is marked duplicate, it cannot later become the retained call.

A minimum improvement would be to make selection deterministic by using an explicit comparator, for example:

1. Earliest coordinator registration time
2. Earliest call start time
3. Stable call identifier as a final tie-breaker

That would not necessarily select the best audio, but it would make the result predictable and testable.

A better long-term approach would keep all duplicate candidates eligible until sufficient information is available and then select the best candidate using available quality measures, such as:

* Valid decoded-message count
* Decode-error count
* Audio sample count
* Missing or invalid frame count
* Signal or SNR measurements
* Completeness of the beginning and end of the call

Where reliable quality measurements are unavailable, another practical option would be a user-configurable receiver, site, or channel priority, with earliest registration used as the fallback.

A useful regression test would create several matching calls in different insertion orders and verify that the same intended candidate is retained each time. Under the current implementation, changing map population or call identifiers could change which audio is streamed even though the user’s configuration remains unchanged.
 
Top