New Playlist Editor Progress ....

695 views
Skip to first unread message

sdrtrunk

unread,
Apr 13, 2020, 4:39:30 PM4/13/20
to sdrtrunk
I'm getting closer to wrapping up this feature.  Another week or so and I should have an alpha build ready.

Some screenshots ....

cheers,
Denny

playlist_editor_talkgroups.png
agency_editor.png
channel_editor.png
alias_editor2.png

Ron Webb

unread,
Apr 13, 2020, 5:50:00 PM4/13/20
to sdrtrunk
It looks like a good addition and maybe a way to make what I was working on yesterday a moot point for others. I was downloading the CSV file, then converting it into a format I could insert into default.xml.

I am assuming that it would use the "Alpha Tag" for the name of the talkgroup though, which can sometimes be confusing. One such issue is we have a talkgroup with an Alpha Tag of "C AC DSP" for "Sacramento County Animal Control Dispatch", not to be confused with "C AG DSP" for "Sacramento County Agricultural Commission - Dispatch " With my setup, I manipulated my CSV before converting it into XML. Using Excel, I combined the strings from Category and Description, then began shortening words with the find and replace function. For example, I did a find for "Sacramento" and replaced with "Sac.", or find "Dispatch" and replace it with "Disp." Occasionally, I'd find double words like "Sacramento Sheriff Sheriff Dispatch - North"... I would find "Sheriff Sheriff" and replace it with "Sheriff." It took a bit of work, but a lot less than doing it for each and every talkgroup. After I was all done with my manipulation, I returned my CSV file to it's original format but my new modified name for each talkgroup replaced the column for "Alpha Tag".  If I worked in an agency that was on this system, first off, I wouldn't be seeing EVERY talkgroup in the system, so I'd immediately know what the talkgroup is from a limited list. In SDRTrunk, we can see every talkgroup in the system, so therefore these Alpha Tags can quickly become very confusing.


I don't really see a perfect solution but at least your new method should speed things up and make things easier for most.

Jim LongwoodFL

unread,
Apr 13, 2020, 7:32:24 PM4/13/20
to sdrtrunk
Hmm.... (wheels spinning in my head). Can’t wait!

Douglas Welch

unread,
Apr 13, 2020, 10:54:38 PM4/13/20
to sdrtrunk
I like that. I might have to spring for a radioreference.com membership to play more.

Love new features -- bells & whistles are cool.

Jim LongwoodFL

unread,
Apr 18, 2020, 1:56:31 AM4/18/20
to sdrtrunk
I have over 80 individual radio id's in my Playlist. If I create a full Seminole County Florida playlist from Radio Reference, do I lose all of my individual Radio Id's that are not listed on Radio Reference?

Jim

DRL-XM43

unread,
Apr 18, 2020, 12:14:54 PM4/18/20
to sdrtrunk
Same question here of course I keep a backup of my SDRTrunk folder (both Win and Linux) where all the config and xml stuff is kept so no biggy if a new version clobbers it.

However I have about a half dozen P25 systems full tg aliases in my one xml file (A LOT) of tg - anyway will the new RR approach parse them in/import as individual site files or will I need to recreate the whole thing system by system?

sdrtrunk

unread,
Apr 18, 2020, 7:36:34 PM4/18/20
to sdrtrunk
Your existing playlist will be exactly as it is now in the new playlist editor.

DRL-XM43

unread,
Apr 18, 2020, 8:16:09 PM4/18/20
to sdrtrunk
Thank you very much for the info Denny

WR3KR

unread,
Apr 20, 2020, 6:45:45 PM4/20/20
to sdrtrunk
I am just getting back into playing with my SDR and I ran across this software!  IT IS AWESOME!  Thank you for putting this together!  I searched for a good way to import radioreference data into this program and I ran across this PERL script.  Although it might not be required here shortly with this new feature, I wanted to share my updates to the tool.  Let me know if anyone has any questions!  

if you don't have perl and want to use this let me know I can send you an executable.

Here is the help file:

#######################################################################################################################
# Convert RadioReference.com talkgroup csv download into xml to insert into sdrtrunk playlist.xml
#
#
# Usage: perl make_playlist.pl [playlist filename] <csv filename 1> [csv filename 2] ... [csv filename n] > <aliasfile.xml>
# .csv file names will become the list names in the playlist
# Credit: Based on make_playlist.pl by Jon Anhold (j...@anhold.com) N8USK - 2016-08-19
# Author: Josh Hardin (joshua...@gmail.com) WR3KR - 2020-04-20
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public 
# License as published by the Free Software Foundation, either version 3 of the License, or any later version. This 
# program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# See <https://www.gnu.org/licenses/> for a copy of the GNU Public License.
#######################################################################################################################

Josh
WR3KR

On Monday, April 13, 2020 at 1:39:30 PM UTC-7, sdrtrunk wrote:
make_playlist.pl

WR3KR

unread,
Apr 20, 2020, 7:09:10 PM4/20/20
to sdrtrunk
I should have mentioned the features.  

(1) import from radioreference
(2) sets icons based on the tag column
(3) if you include a playlist as the first argument, this tool will add the additional entries at the begining of the file and then append the remaining entries (including the channels) to the end of the file.  

Josh 
WR3KR

Radar

unread,
Jun 8, 2020, 1:29:14 PM6/8/20
to sdrtrunk
It would be nice if it is possible to copy group id and radio id data from one playlist to another.
And problem with Channels frequencies still exists, when I make some changes in saved channels options, I also have to enter frequencies, otherwise it restes to zero.

sdrtrunk

unread,
Jun 9, 2020, 5:10:43 AM6/9/20
to sdrtrunk
Radar,

The only way at the moment to copy talkgroup and radio information is to clone the playlist.

For the issue with the frequency values being reset, are you seeing this with just one playlist?  
Which decoder type are you editing when the frequency values get reset?

Denny

Radar

unread,
Jun 9, 2020, 8:37:43 AM6/9/20
to sdrtrunk
It's happening with P25

Nick Turin

unread,
Jun 9, 2020, 9:07:21 AM6/9/20
to sdrtrunk

Nick Turin

unread,
Jun 9, 2020, 9:12:33 AM6/9/20
to sdrtrunk
The frequency is constantly reset. With any manipulation of the channel! And it’s very inconvenient that you cannot change the decoder without deleting the channel !! Although in version 0.4.0 there were no problems with this. Yes, the new playlist looks interesting, but there are a lot of errors in it, and it needs to be debugged for stable operation.

Ron Benoit

unread,
Jun 9, 2020, 5:59:13 PM6/9/20
to sdrtrunk
Denny et al..

Great job as a start.   Couple of issues:

1)  What's the deal with using XVPN for access to radioreference ? My firewall policy doesn't like this.  Not sure why it would be needed.   Currently blocking API calls to radioreference.

2)  On large P25 system lookups in Radio Reference, sometimes the buffers in TG View / Categories don't clear... need to go to a small P25 system to clear out the buffers and then go back to the large system to reload the TG Categories.   This could be because SDRT hasn't processed the P25 system initially from RR?

3)  Being able to import the v4 TG data should be separate app, but a needed one!   A lot of work in those v3-4 configs.  Would be a nice feature in the Playlist editor.

4)  After spending hours reconfiguring TGs... I was wondering why channels could not be configured to blocking by default, with the alias list acting as an inclusion list.  On large P25 systems, with hundreds of agencies, spending hours to add TGs to only disable them to "block" them just doesn't work.  On simple systems... it's not a big deal.   On statewide and regional systems... it's a nightmare.   With the addition of the RR features to enable TGs, I would think it would be easier for users to only add TGs of interest and expect only those TGs for traffic.   Having to manually block thousands of TGs is a major pain.

5)  I do like the System View Create Channels feature.... nice and easy Channel creation from RR!

6)  Really miss the multi TG editing features of v3-4.  I like the new layout... I got used to it.  But editing single TGs one at a time is ugly to simply set priorities, color, icon, save... etc.

7)  Need a find "TG" feature.  Was trying to track down if I was blocking TGs in my numerous block lists, but can't search for TG ID in Alias or Identifier tabs (although Identifier lists the TG IDs).

Create start to v5.  Looking forward to the updates.  Thanks, -Ron

sdrtrunk

unread,
Jun 10, 2020, 4:35:52 PM6/10/20
to sdrtrunk
Ron, thanks for the feedback.  Responses below ...


On Tuesday, June 9, 2020 at 5:59:13 PM UTC-4, Ron Benoit wrote:
Denny et al..

Great job as a start.   Couple of issues:

1)  What's the deal with using XVPN for access to radioreference ? My firewall policy doesn't like this.  Not sure why it would be needed.   Currently blocking API calls to radioreference.

I use straight HTTP Port 80 connections for the radio reference database API and HTTPS SSL Port 443 connections to the broadcastify calls API.  Not sure what would be using XVPN.
 

2)  On large P25 system lookups in Radio Reference, sometimes the buffers in TG View / Categories don't clear... need to go to a small P25 system to clear out the buffers and then go back to the large system to reload the TG Categories.   This could be because SDRT hasn't processed the P25 system initially from RR?


I think I need to lock the system selection combo box until the data is fully downloaded from radio reference.  It sounds like (as you suspect) that aditional results from a previous system selection might still be arriving and contaminating the list and combo box.
 
3)  Being able to import the v4 TG data should be separate app, but a needed one!   A lot of work in those v3-4 configs.  Would be a nice feature in the Playlist editor.


You should be able to 'Add' these V3 and V4 playlists in the Playlists tab to the list of usable playlists.  ONce there, click the Select button to use them.  If not, please let me know what, if any, errors are preventing this?


4)  After spending hours reconfiguring TGs... I was wondering why channels could not be configured to blocking by default, with the alias list acting as an inclusion list.  On large P25 systems, with hundreds of agencies, spending hours to add TGs to only disable them to "block" them just doesn't work.  On simple systems... it's not a big deal.   On statewide and regional systems... it's a nightmare.   With the addition of the RR features to enable TGs, I would think it would be easier for users to only add TGs of interest and expect only those TGs for traffic.   Having to manually block thousands of TGs is a major pain.


You can accomplish this by creating a single blacklist alias with a talkgroup range of 1 to 65535.  The additional talkgroups that you alias (not blocked) shouldn't interfere.  When looking up an alias for a talkgroup, it matches discrete talkgroup values first, and then talkgroup ranges. 
 
5)  I do like the System View Create Channels feature.... nice and easy Channel creation from RR!

Good. 


6)  Really miss the multi TG editing features of v3-4.  I like the new layout... I got used to it.  But editing single TGs one at a time is ugly to simply set priorities, color, icon, save... etc.


That's been added.  It will be in the next release.
 
7)  Need a find "TG" feature.  Was trying to track down if I was blocking TGs in my numerous block lists, but can't search for TG ID in Alias or Identifier tabs (although Identifier lists the TG IDs).


Would adding a simple search box to the Alias Identifiers tab meet this need?  You could type the talkgroup value and/or protocol and it would filter the list.

Ron Benoit

unread,
Jun 10, 2020, 6:19:02 PM6/10/20
to sdrtrunk


On Wednesday, June 10, 2020 at 2:35:52 PM UTC-6, sdrtrunk wrote:
Ron, thanks for the feedback.  Responses below ...

On Tuesday, June 9, 2020 at 5:59:13 PM UTC-4, Ron Benoit wrote:
Denny et al..

Great job as a start.   Couple of issues:

1)  What's the deal with using XVPN for access to radioreference ? My firewall policy doesn't like this.  Not sure why it would be needed.   Currently blocking API calls to radioreference.

I use straight HTTP Port 80 connections for the radio reference database API and HTTPS SSL Port 443 connections to the broadcastify calls API.  Not sure what would be using XVPN.


Maybe the Library your using for conns?   This also causes a Java IO exception:

io.github.dsheirer.rrapi.RadioReferenceException: Error submitting HTML SOAP request to web service
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1179)
    at io.github.dsheirer.rrapi.RadioReferenceService.getTalkgroupCategories(RadioReferenceService.java:515)
    at io.github.dsheirer.gui.playlist.radioreference.SystemEditor.lambda$setSystem$5(SystemEditor.java:295)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(Unknown Source)
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1175)
    ... 8 common frames omitted
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.common.Utils.wrapWithExtraDetail(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1Response$HeadersReader.onReadError(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.checkForErrors(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.flush(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    ... 3 common frames omitted
Caused by: java.io.IOException: Operation timed out
    at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method)
    at java.base/sun.nio.ch.SocketDispatcher.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.SocketChannelImpl.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube.readAvailable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowEvent.handle(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.handleEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.lambda$run$3(Unknown Source)
    at java.base/java.util.ArrayList.forEach(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at io.github.dsheirer.gui.playlist.radioreference.RadioReferenceDecoder.getFlavor(RadioReferenceDecoder.java:231)
    at io.github.dsheirer.gui.playlist.radioreference.SystemSiteSelectionEditor.setSystem(SystemSiteSelectionEditor.java:122)
    at io.github.dsheirer.gui.playlist.radioreference.SystemEditor.lambda$setSystem$4(SystemEditor.java:307)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)


RR shows me logged in... and when I test, I get a green check back (with XVPN blocked).   So authentication is working to RR not using the XVPN client.  I haven't seen any other apps using SSL/TLS and straight HTTP being interpreted by Cisco Threat Defense as XVPN clients... although their might be something in the header being interpreted as XVPN.  With XVPN blocked, I still get drop downs in top level menus (they refresh... the location menus), but system info (county trunked systems, state trunked systems, and county agencies won't populate, but state agencies and national agency list get populated but fail to pull up system info).

Weird... it just pulled up all the CA state agencies and systems (albeit really slow).... without any issues....  I know that RR has been having problems since IBM cloud went down Monday and they moved to a new cloud provider.

I think this maybe something else...  I suspect someone has incorporated a URL into the RR dataset that maybe using a thin XVPN client to allude detection.... anyway to check that out (outside of me doing a wireshark dump)?  (I get this regardless of system... Mac or Linux).  I also only get these XVPN calls when using RR.

Also, more exceptions:

objc[81166]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fffae7893d8) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x17a619f50). One of the two will be used. Which one is undefined.
16:05:16.396 ERROR i.g.d.g.p.r.AgencyFrequencyEditor - Error retrieving frequencies for subcategory [(All)]  [302MB/508MB 59%]
io.github.dsheirer.rrapi.RadioReferenceException: Error submitting HTML SOAP request to web service
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1179)
    at io.github.dsheirer.rrapi.RadioReferenceService.getSubCategoryFrequencies(RadioReferenceService.java:948)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.access$1201(CachingRadioReferenceService.java:44)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.getSubCategoryFrequencies(CachingRadioReferenceService.java:216)
    at io.github.dsheirer.gui.playlist.radioreference.AgencyFrequencyEditor.lambda$getSubCategoryComboBox$5(AgencyFrequencyEditor.java:419)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(Unknown Source)
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1175)
    ... 10 common frames omitted
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.common.Utils.wrapWithExtraDetail(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1Response$HeadersReader.onReadError(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.checkForErrors(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.flush(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    ... 3 common frames omitted
Caused by: java.io.IOException: Operation timed out
    at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method)
    at java.base/sun.nio.ch.SocketDispatcher.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.SocketChannelImpl.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube.readAvailable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowEvent.handle(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.handleEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.lambda$run$3(Unknown Source)
    at java.base/java.util.ArrayList.forEach(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(Unknown Source)
16:08:25.876 ERROR i.g.d.g.p.r.SystemEditor - Error retrieving system information  [298MB/508MB 58%]
io.github.dsheirer.rrapi.RadioReferenceException: Error submitting HTML SOAP request to web service
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1179)
    at io.github.dsheirer.rrapi.RadioReferenceService.getCountyInfo(RadioReferenceService.java:356)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.access$801(CachingRadioReferenceService.java:44)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.getCountyInfo(CachingRadioReferenceService.java:164)
    at io.github.dsheirer.gui.playlist.radioreference.SystemEditor.lambda$setSystem$5(SystemEditor.java:286)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(Unknown Source)
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1175)
    ... 10 common frames omitted
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.common.Utils.wrapWithExtraDetail(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1Response$HeadersReader.onReadError(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.checkForErrors(Unknown Source)
    at java.net.http/jdk.internal.net.http.Http1AsyncReceiver.flush(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    ... 3 common frames omitted
Caused by: java.io.IOException: Operation timed out
    at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method)
    at java.base/sun.nio.ch.SocketDispatcher.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
    at java.base/sun.nio.ch.SocketChannelImpl.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube.readAvailable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.SocketTube$SocketFlowEvent.handle(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.handleEvent(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.lambda$run$3(Unknown Source)
    at java.base/java.util.ArrayList.forEach(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(Unknown Source)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
    at io.github.dsheirer.gui.playlist.radioreference.RadioReferenceDecoder.getFlavor(RadioReferenceDecoder.java:231)
    at io.github.dsheirer.gui.playlist.radioreference.SystemSiteSelectionEditor.setSystem(SystemSiteSelectionEditor.java:122)
    at io.github.dsheirer.gui.playlist.radioreference.SystemEditor.lambda$setSystem$4(SystemEditor.java:307)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)




 
 

2)  On large P25 system lookups in Radio Reference, sometimes the buffers in TG View / Categories don't clear... need to go to a small P25 system to clear out the buffers and then go back to the large system to reload the TG Categories.   This could be because SDRT hasn't processed the P25 system initially from RR?


I think I need to lock the system selection combo box until the data is fully downloaded from radio reference.  It sounds like (as you suspect) that aditional results from a previous system selection might still be arriving and contaminating the list and combo box.

Ya, sounds like a plan.  Easily reproducible to large P-25 system... if you lock, might want to provide a progress and feedback bar... spinning balls don't tell you much.... if you do provide feedback bar, also provide an abort button if it gets hung up or RR is slow to respond.  But I would think at least providing feedback is a good start.  Once RR screen gets the data, it seems to do a good job of caching and using the cursor/array....
 
 
3)  Being able to import the v4 TG data should be separate app, but a needed one!   A lot of work in those v3-4 configs.  Would be a nice feature in the Playlist editor.


You should be able to 'Add' these V3 and V4 playlists in the Playlists tab to the list of usable playlists.  ONce there, click the Select button to use them.  If not, please let me know what, if any, errors are preventing this?

Me bad... yeah, the v2 playlist is seen when going to add... it's in the same default directory as the v5 playlist.   Could we:

1)  By default, add any detected xml files into the Playlist list, just not default to using the playlist?   This way one can instantly see any v2 PLs instead of having to add/import if they are in the PL directory?
2)  Add a function on 1st load of v5 to check for preexisting v2 playlist and ask to import if one exists?



4)  After spending hours reconfiguring TGs... I was wondering why channels could not be configured to blocking by default, with the alias list acting as an inclusion list.  On large P25 systems, with hundreds of agencies, spending hours to add TGs to only disable them to "block" them just doesn't work.  On simple systems... it's not a big deal.   On statewide and regional systems... it's a nightmare.   With the addition of the RR features to enable TGs, I would think it would be easier for users to only add TGs of interest and expect only those TGs for traffic.   Having to manually block thousands of TGs is a major pain.


You can accomplish this by creating a single blacklist alias with a talkgroup range of 1 to 65535.  The additional talkgroups that you alias (not blocked) shouldn't interfere.  When looking up an alias for a talkgroup, it matches discrete talkgroup values first, and then talkgroup ranges. 

Ding!  Cool.  I had been doing it the other way around.  This will save a lot of time.   Wondering if SDRT should default to adding a default exclusion list... or better yet, a toggle (toggle default blocking exclusion list) in channel set-up?   Toggle it on, it just adds the default blocking list, Toggle it off, it deletes (could just be added to the top of the alias list).

Also, 2nd a motion to be able to change Channel settings between P25 I and II systems... many seem to state they are Type 2 (in RR) when they are actually still Type 1... and you have to delete and manually re-add to correct the problem.
 
 
5)  I do like the System View Create Channels feature.... nice and easy Channel creation from RR!

Good. 


6)  Really miss the multi TG editing features of v3-4.  I like the new layout... I got used to it.  But editing single TGs one at a time is ugly to simply set priorities, color, icon, save... etc.


That's been added.  It will be in the next release.

Excellent.
 
 
7)  Need a find "TG" feature.  Was trying to track down if I was blocking TGs in my numerous block lists, but can't search for TG ID in Alias or Identifier tabs (although Identifier lists the TG IDs).


Would adding a simple search box to the Alias Identifiers tab meet this need?  You could type the talkgroup value and/or protocol and it would filter the list.

Yeah I think that would do.   maybe nice feature in the editor to detect existing TG rule conflicts  (could be a problem with our master block list)?  Humm... maybe just TG conflict mentions... not actual conflicts?

Patrick C

unread,
Jun 11, 2020, 12:12:38 AM6/11/20
to sdrtrunk
Also to add on to this the ability to filter within the editor is very missed. 


On Tuesday, June 9, 2020 at 5:59:13 PM UTC-4, Ron Benoit wrote:

DaveNF2G

unread,
Jun 11, 2020, 7:41:10 AM6/11/20
to sdrtrunk
Also, 2nd a motion to be able to change Channel settings between P25 I and II systems... many seem to state they are Type 2 (in RR) when they are actually still Type 1... and you have to delete and manually re-add to correct the problem.


This is an artifact of RR's policy of indicating licensed system capability rather than actual configuration on P25 systems.  They insist on verification of everything else over FCC data, except this.

-Dave, NF2G

Ron Benoit

unread,
Jun 11, 2020, 11:10:09 AM6/11/20
to sdrtrunk
I wouldn't worry much about the XVPN issue.  I captured all the RR api traffic last night... I didn't see anything suspicious, although I'm not a fan of sending my account info in the open in the API calls!   RR have an HTTPS interface by chance?  Tokens would be nice too.

Not sure why Cisco misclassified... haven't seen that happen with CDN based SOAP traffic, but then again I don't see a lot of CDN based SOAP traffic.  I'll dig into it more and may file a bug with Cisco.   Since I don't want to allow XVPN traffic, I included radioreference.com as an allowed URL subdomain, but with full inspection. So it will pass traffic it classifies as XVPN from RR, but with full TCP packet and flow inspection, so if it detects anything weird in TCP handling or file downloads, the inspection engine will terminate the session and we can go from there.   So far, haven't seen any issues. 

Couple of things from the packet captures:

a)  Seems like RR maybe called when the Configuration window is not open... on startup?  Any reason why?

b)  There seems to be some connection flow issues... I don't think sessions are terminating or timing out soon enough when actions are taken by the stupid user (me) in the user interface (moving around rapidly... I'm impatient).  I think it wise to terminate each connection when user actions are performed or block those user interactions with a modal progress bar dialog that has an abort option (which seems more appropriate and easier to manage... or maybe not).

c)   In some cases I get an error dialog from SDRT that it can't connect to RR.  But the dialog is not modal or top level, so it was behind other windows and late to appear (no audio alarm either I beleive).  This only occurs when I get the Java IO exceptions.

20:16:22.618 INFO  i.g.d.s.t.u.USBMasterProcessor - Starting USB master processor thread  [33MB/60MB 55%]
20:16:33.622 INFO  i.g.d.c.c.ChannelAutoStartFrame - Starting [1] now - timer invoked  [48MB/64MB 75%]
20:16:33.811 INFO  i.g.d.a.c.m.JmbeAudioModule - Loading JMBE library from [/Users/ron/SDRTrunk/jmbe-1.0.7b.jar]  [54MB/64MB 84%]
20:16:33.824 INFO  i.g.d.a.c.m.JmbeAudioModule - JMBE audio conversion library loaded: JMBE Audio Conversion Library v1.0.6  [54MB/64MB 85%]
20:16:33.824 INFO  i.g.d.a.c.m.ImbeAudioModule - JMBE audio conversion library IMBE CODEC successfully loaded - P25-1 audio will be available  [54MB/64MB 85%]
20:16:33.840 INFO  i.g.d.d.f.c.ComplexPolyphaseChannelizerM2 - Sample Rate [2400000.0] providing [96] channels at [25000.0] Hz each  [55MB/64MB 86%]
20:17:05.252 INFO  i.g.d.d.f.c.ComplexPolyphaseChannelizerM2 - Sample Rate [2400000.0] providing [96] channels at [25000.0] Hz each  [88MB/208MB 42%]
20:20:47.901 ERROR i.g.d.g.p.s.StreamingEditor - Unable to refresh broadcastify stream configuration(s)  [222MB/432MB 51%]
20:21:26.019 ERROR i.g.d.g.p.r.AgencyEditor - Error retrieving agency info  [217MB/1GB 14%]

io.github.dsheirer.rrapi.RadioReferenceException: Error submitting HTML SOAP request to web service
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1179)
    at io.github.dsheirer.rrapi.RadioReferenceService.getAgencyInfo(RadioReferenceService.java:275)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.access$701(CachingRadioReferenceService.java:44)
    at io.github.dsheirer.service.radioreference.CachingRadioReferenceService.getAgencyInfo(CachingRadioReferenceService.java:151)
    at io.github.dsheirer.rrapi.RadioReferenceService.getAgencyInfo(RadioReferenceService.java:263)
    at io.github.dsheirer.gui.playlist.radioreference.AgencyEditor.lambda$setAgency$4(AgencyEditor.java:161)

    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: HTTP/1.1 header parser received no bytes
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(Unknown Source)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(Unknown Source)
    at io.github.dsheirer.rrapi.RadioReferenceService.submitSync(RadioReferenceService.java:1175)
    ... 11 common frames omitted
20:24:01.864 ERROR i.g.d.g.p.r.SystemEditor - Error retrieving system information  [577MB/768MB 75%]

20:31:40.345 ERROR i.g.d.g.p.r.AgencyFrequencyEditor - Error retrieving frequencies for subcategory [(All)]  [354MB/922MB 38%]
java.util.ConcurrentModificationException: null
    at java.base/java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.base/java.util.AbstractList$Itr.next(Unknown Source)
    at io.github.dsheirer.gui.playlist.radioreference.AgencyFrequencyEditor.lambda$getSubCategoryComboBox$5(AgencyFrequencyEditor.java:410)

    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

20:33:24.564 ERROR i.g.d.g.p.r.AgencyFrequencyEditor - Error retrieving frequencies for subcategory [(All)]  [222MB/922MB 24%]
java.util.ConcurrentModificationException: null
    at java.base/java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.base/java.util.AbstractList$Itr.next(Unknown Source)
    at io.github.dsheirer.gui.playlist.radioreference.AgencyFrequencyEditor.lambda$getSubCategoryComboBox$5(AgencyFrequencyEditor.java:410)

    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)


Finally, it would be nice to have a log out function for RR. 

Thanks!  -Ron

sdrtrunk

unread,
Jun 12, 2020, 5:04:18 AM6/12/20
to sdrtrunk
Ron,

I opened a couple tickets for the issues you listed.

There's already requests in to radio reference to provide a more secure authentication scheme for using the API, but that's been requested for quite a while now.

cheers,
Denny

On Thursday, June 11, 2020 at 11:10:09 AM UTC-4, Ron Benoit wrote:
Couple of things from the packet captures:

a)  Seems like RR maybe called when the Configuration window is not open... on startup?  Any reason why?

b)  There seems to be some connection flow issues... I don't think sessions are terminating or timing out soon enough when actions are taken by the stupid user (me) in the user interface (moving around rapidly... I'm impatient).  I think it wise to terminate each connection when user actions are performed or block those user interactions with a modal progress bar dialog that has an abort option (which seems more appropriate and easier to manage... or maybe not).

c)   In some cases I get an error dialog from SDRT that it can't connect to RR.  But the dialog is not modal or top level, so it was behind other windows and late to appear (no audio alarm either I beleive).  This only occurs when I get the Java IO exceptions.

Jeff Chapman

unread,
Apr 15, 2021, 10:04:17 AM4/15/21
to sdrtrunk
Windows 10, v0.5.0-Alpha 6

I cannot get logged into my premium RR account via the Playlist.  I am failing on credentials, username/password,  but trust me,
I have them right. I even removed special characters.  I picked up a perl script to convert the CSV from RR to XML but that
doesn't seem to be working either. I created a playlist from this but no talkgroups appear.

I've asked for help on Google Groups, RadioReference Forums, Discord, and I've created two tickets on github, but so far, no luck.
I have the same problem on three different computers.
I've confirmed RR and RR Forums have the same password and access is okay on Chrome, Firefox, Opera, Explorer, and Edge browsers.

I'd almost prefer to have an XML generator so I can edit in a spread sheet.
What is the template for the Playlists XML?

Thank you, Jeff

Jeff Chapman

unread,
Apr 21, 2021, 5:08:24 PM4/21/21
to sdrtrunk

For what it's worth. I opened a ticket with RR.  They did a forced password reset on their end.  Once I reset the password I was able to login.
This, despite the fact that I had changed the password a couple times; on both the main site and the forums.

Jeff

Reply all
Reply to author
Forward
0 new messages