SDRTrunk - p25 decoder test release

Status
Not open for further replies.

jshg46

Member
Joined
May 12, 2010
Messages
180
Reaction score
15
When I run it, I get this error

Error: Could not find or load main class gui.SDRTrunk

I am on Debian and running commandline only.
 

rogress

Member
Joined
Jan 10, 2003
Messages
102
Reaction score
9
Location
Chesapeake, VA
Can I monitor this system with SDR Trunk

Any reason that I shouldn't be able to monitor this system with SDRTrunk?

Chesapeake Trunking System, Chesapeake, Virginia - Scanner Frequencies

If yes, I assume I set the Decoder to P25 Phase 1, but does the Modulation tab get set to Simulcast (LSM) or Normal (C4FM)?

I'm also plugging in just the primary control channel in the Source tab (which is active).

I successfully complied the JMBE library and copied to the SDRTrunk folder.

Are those the highlights of making this work?
 

slicerwizard

Member
Joined
Sep 19, 2002
Messages
7,799
Reaction score
2,185
Location
Toronto, Ontario
That's not a P25 system. It's an older Motorola SmartZone system with a 3600 bps control channel. TRUNK88 and Unitrunker handle it.
 

KD0TAZ

Member
Joined
Dec 26, 2010
Messages
334
Reaction score
16
Location
Kansas
Ok a few things..

First, Denny you are a god! I finally got this thing working and it is so much lighter on the computer than Unitrunker/DSD.

However there's a couple things you should know about, and a few things I'm confuzzled about..

It took me so long to actually try SDRTrunk because I never knew there were binary versions available. The "Download" link in your Git has for a while been pointing to an empty Google Drive folder, so I figured you just hadn't gotten around to it yet.. Only after being frustrated by trying to compile the 0.3 Master that I went and re-read everything and found the link to the binary downloads.

I had to give myself a crash course in building, and that was not pretty.. A lot of swearing and throwing things were involved in that process lol! :D But I did finally get everything together and configured that I needed to make the Git example compile. So when I try to compile the 0.3 master with ANT, I get an error "BUILD FAILED Target 'run' does not exist in the project SDRTrunk". Is that something on my end or something with the build? I tried it both ways, cloning the repository through Git Bash and downloading the zip.

----

So I'm on 0.2 Release, and it does seem to be working to an extent. Your naming system does not seem to be working right because all of the dongles I have use Serial 00000001, and every time I close the program and restart, it does not remember which dongle is which, even though I changed the names manually to Stick 1, Stick 2, Stick 3). So I tried rtl_eeprom to change the serial and somehow managed to brick two of them (both while trying to set serial to 00000002). They both now give the "USB Device malfunction" sound when plugged in. 00000003 flashed fine, but now I'm not willing to roll the dice with my last two for now lol (I have 6 of them total). So I now have two working that SDRTrunk recognizes and applies the correct gain/PPM settings to each.

How does SDRTrunk utilize multiple sticks? Does it use one as control and the others for voice?

----


I've also found that a few things aren't working as expected. The Channel Spectrum tab is either blank or has a 45 degree slope depending on which time I start it. Is there supposed to be something there? And the Map tab either has a bunch of clock icons or a map of Syracuse - again, depending on which time I start it.

The Events and Messages tab I had working once, but they are now blank and the Log options are all unchecked again.. When I checked them again and hit Save, I got this output in the console window:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Processi
ng chain is currently processing.  Invoke stop() on the processing chain before
applying a new sample source
        at module.ProcessingChain.setSource(Unknown Source)
        at controller.channel.Channel.setupSource(Unknown Source)
        at controller.channel.Channel.setup(Unknown Source)
        at controller.channel.Channel.start(Unknown Source)
        at controller.channel.Channel.enableChanged(Unknown Source)
        at controller.channel.Channel.setEnabled(Unknown Source)
        at controller.channel.Channel.setEnabled(Unknown Source)
        at controller.channel.ChannelEditor.save(Unknown Source)
        at controller.channel.ChannelEditor.actionPerformed(Unknown Source)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:20
22)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2348)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259
)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6535)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
        at java.awt.Component.processEvent(Component.java:6300)
        at java.awt.Container.processEvent(Container.java:2236)
        at java.awt.Component.dispatchEventImpl(Component.java:4891)
        at java.awt.Container.dispatchEventImpl(Container.java:2294)
        at java.awt.Component.dispatchEvent(Component.java:4713)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888
)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)

        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
        at java.awt.Container.dispatchEventImpl(Container.java:2280)
        at java.awt.Window.dispatchEventImpl(Window.java:2750)
        at java.awt.Component.dispatchEvent(Component.java:4713)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(ProtectionDomain.java:86)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.awt.EventQueue$4.run(EventQueue.java:729)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Again, I don't know if that's something in the program or something misconfigured at my end.

----

As far as actual calls on the system go, it seems to work fine for two calls at once (one goes to left, then one goes to right) but if a third call comes in I don't hear it.. Is that just the way it goes or can I make it play everything? My main sound is coming from the monitor speakers via HDMI but I can still hook up speakers to the green jack if it can be routed there.

----

Bottom line, this program is already awesome. Keep it up!
Thanks!
 

DSheirer

Member
Premium Subscriber
Joined
Feb 15, 2010
Messages
628
Reaction score
175
Location
Fulton, NY
Any reason that I shouldn't be able to monitor this system with SDRTrunk?

Chesapeake Trunking System, Chesapeake, Virginia - Scanner Frequencies

If yes, I assume I set the Decoder to P25 Phase 1, but does the Modulation tab get set to Simulcast (LSM) or Normal (C4FM)?

I'm also plugging in just the primary control channel in the Source tab (which is active).

I successfully complied the JMBE library and copied to the SDRTrunk folder.

Are those the highlights of making this work?

Since it's a 3600-baud Moto II control channel, you can't decode the control data with sdrtrunk, but you can create channel configurations for each of the P25 traffic channels and decode all of them at the same time.
 

DSheirer

Member
Premium Subscriber
Joined
Feb 15, 2010
Messages
628
Reaction score
175
Location
Fulton, NY
It took me so long to actually try SDRTrunk because I never knew there were binary versions available. The "Download" link in your Git has for a while been pointing to an empty Google Drive folder, so I figured you just hadn't gotten around to it yet..

I just fixed the download link to point to the releases page. Thanks!

I'm running out of time this morning ... I'll respond more this evening (after work).
 

dave3825

* * * * * * * * * * * *
Premium Subscriber
Joined
Feb 17, 2003
Messages
10,364
Reaction score
5,948
Location
Suffolk County NY
Any reason that I shouldn't be able to monitor this system with SDRTrunk?

That's not a P25 system. It's an older Motorola SmartZone system with a 3600 bps control channel. TRUNK88 and Unitrunker handle it.

Since it's a 3600-baud Moto II control channel, you can't decode the control data with sdrtrunk, but you can create channel configurations for each of the P25 traffic channels and decode all of them at the same time.

@ rogress, if you just want to monitor the digital portion of that system, have a look at that system and see if you see the digital comms on certain freqs only as opposed to jumping around on all of them. I have the same system type and in my case, when ever they use digital it is always on the 4 lowest freqs in the system (Might be a different set up on your system and not the lowest freqs) .

As slicerwizard said, trunk88 and unitrunker will handle it fine. However, sdrtrunk should handle the digital transmissions on that system. I set up 4 freqs under system, site. These are the only 4 that digital was being used on. I set them as p25 normal C4FM. I have had it work with one dongle. The audio sounds awesome. Just be aware that the analog portion of the system will be ignored. So when looking at your system, you will only hear talk groups that are marked with a "D" Also be aware that with this set up, you will only be monitoring a few freqs, and this will not be tracking the system like a scanner or unitrunker will...

Do you have a scanner? And do you have and how many dongles do you have?

@Denny and rjdj2000 ,

Thanks again for all the help you guys provided with all the different issues I was having. I still get some enc audio come thru but its much better than it was. Had to take a break from the pc for a while, But now I am back.




My system Suffolk County Trunking System, Suffolk County, New York - Scanner Frequencies with sdrtrunk.

.
 

Attachments

  • 20160330_202818_screen_capture.jpg
    20160330_202818_screen_capture.jpg
    107.6 KB · Views: 1,243
  • 20160323_084311_screen_capture.jpg
    20160323_084311_screen_capture.jpg
    83.1 KB · Views: 1,209
Last edited:

rjdj2000

Gone Cuckoo
Feed Provider
Joined
Jan 24, 2011
Messages
419
Reaction score
70
Location
Central NY
@Denny and rjdj2000 ,

Thanks again for all the help you guys provided with all the different issues I was having. I still get some enc audio come thru but its much better than it was. Had to take a break from the pc for a while, But now I am back.

Dave.. I hear you about having to "get away" lol there is times I have to force myself to do the same. Good to hear that it has improved for you. The only recommendation that I can give you now is to use the values that actually show up in sdrTrunk for the enc comms. Then there will not be any missed ones due to a wrong conversion. I myself cannot wait until Denny can get the decimal conversion in there. Will be so nice to have along with the streaming portion. I see so much potential for this program and wish I knew more about java and the radio modes to help Denny out but I don't. So I have been tinkering on figuring out how to make it a 1-click launch in OSX (almost got it but something still out of whack) and trying to come up with an installer to install onto Windows machines and set correct settings and download the correct java needed. Has been a task that I would like myself sometimes...lol Once I got them figured out at least it would be something I could give back to Denny and everyone for that matter....

RJ
 

DSheirer

Member
Premium Subscriber
Joined
Feb 15, 2010
Messages
628
Reaction score
175
Location
Fulton, NY
So when I try to compile the 0.3 master with ANT, I get an error "BUILD FAILED Target 'run' does not exist in the project SDRTrunk". Is that something on my end or something with the build? I tried it both ways, cloning the repository through Git Bash and downloading the zip.

If you're building with Ant, download the source code and unzip, change directories into the /build folder and you should see a file named build.xml. Simply type 'Ant' at the command prompt. It will look for the build.xml file and run the default build target which will compile the program and create 2 build products (windows & linux) that are copied to the /product folder. You can use either of these zip/tar files as if you had downloaded them from the github website.

So I'm on 0.2 Release, and it does seem to be working to an extent. Your naming system does not seem to be working right because all of the dongles I have use Serial 00000001, and every time I close the program and restart, it does not remember which dongle is which, even though I changed the names manually to Stick 1, Stick 2, Stick 3). So I tried rtl_eeprom to change the serial and somehow managed to brick two of them (both while trying to set serial to 00000002). They both now give the "USB Device malfunction" sound when plugged in. 00000003 flashed fine, but now I'm not willing to roll the dice with my last two for now lol (I have 6 of them total). So I now have two working that SDRTrunk recognizes and applies the correct gain/PPM settings to each.

How does SDRTrunk utilize multiple sticks? Does it use one as control and the others for voice?

SDRTrunk does not assign an alias to similarly named dongles. It allows you to use multiple dongles with the same name. As you experienced, if you create a named tuner configuration (PPM, etc), on startup, it will apply that configuration to each dongle that matches the configuration tuner type and configuration name. The only way to resolve it is to rename the dongles. I have code in sdrtrunk to change reflash the EEPROM/change the serial numbers on the RTL dongles, but don't have it exposed to the user -- I'd feel really bad if I were the cause of bricking someone's tuner.

The Channel Spectrum tab is either blank or has a 45 degree slope depending on which time I start it. Is there supposed to be something there? The Events and Messages tab I had working once, but they are now blank.

The Channel Spectrum, Messages and Events tabs are all keyed to selecting a channel in the lower-left side of the window. Left-click a channel and it will be highlighted with a yellow border. Then, you can click on each of the tabs to see the data for that channel. The P25 decoder doesn't show anything in the channel spectrum yet ... one day

And the Map tab either has a bunch of clock icons or a map of Syracuse - again, depending on which time I start it.

The map will download map tiles in the background over the internet. Sometimes it may take a few moments. You can set the map startup location to something other than Syracuse ... drag the map and choose a zoom level, then right click on the map and choose 'Set default location'.

The Log options are all unchecked again.. When I checked them again and hit Save, I got this output in the console window:

In version 2, you have to disable the channel, save it, make the configuration changes and then (re)enable the channel and save for the settings to take effect. The error message indicated that the channel was already running and you were attempting to start it by hitting save.

I fixed this for the upcoming version 3. The program will detect that you are making changes to a channel that is running and it will automatically stop/restart the channel for you.

As far as actual calls on the system go, it seems to work fine for two calls at once (one goes to left, then one goes to right) but if a third call comes in I don't hear it.. Is that just the way it goes or can I make it play everything? My main sound is coming from the monitor speakers via HDMI but I can still hook up speakers to the green jack if it can be routed there.

When I added mono/stereo playback capability I was going to add support for 5-channel and 7-channel sound cards but didn't figure that anyone would use the capability. If there's interest, I can add support for more playback channels, up to what the sound card(s) can support.

Bottom line, this program is already awesome. Keep it up!
Thanks!

Thanks!
 

KD0TAZ

Member
Joined
Dec 26, 2010
Messages
334
Reaction score
16
Location
Kansas
If you're building with Ant, download the source code and unzip, change directories into the /build folder and you should see a file named build.xml. Simply type 'Ant' at the command prompt. It will look for the build.xml file and run the default build target which will compile the program and create 2 build products (windows & linux) that are copied to the /product folder. You can use either of these zip/tar files as if you had downloaded them from the github website.

Ahh okay, the one used in the 'how-to build' example on Git says to type 'ant run', which worked on the example.. So it's just 'ant'.. I'll try that later. Thanks!

SDRTrunk does not assign an alias to similarly named dongles. It allows you to use multiple dongles with the same name. As you experienced, if you create a named tuner configuration (PPM, etc), on startup, it will apply that configuration to each dongle that matches the configuration tuner type and configuration name. The only way to resolve it is to rename the dongles. I have code in sdrtrunk to change reflash the EEPROM/change the serial numbers on the RTL dongles, but don't have it exposed to the user -- I'd feel really bad if I were the cause of bricking someone's tuner.

Yeah I guess if both dongles are identical including the serial, all it can do is take a WAG.. Since those cheap chinese dongles are so common, it would be nice to be able to access that command, but if you implement it you should do so with multiple disclaimers and click boxes so the user understands that bricking is a possibility. Personally considering I only paid a couple bucks apiece for them, and I bought 6 of them at once in anticipation of having a dud or two I'm not mad that I bricked two, but I see where you're coming from. ;) Do you happen to know any trick for unbricking them? I already tried shorting the SCL to Vss on the 24c02 EEPROM while plugging it in (same procedure I use to reset 24c BIOSes on password locked computers) but it has not been effective.

You missed my other question there though, how does SDRTrunk actually utilize multiple tuners? I don't see any obvious method for assigning tuners to any given system or channel.

The Channel Spectrum, Messages and Events tabs are all keyed to selecting a channel in the lower-left side of the window. Left-click a channel and it will be highlighted with a yellow border. Then, you can click on each of the tabs to see the data for that channel. The P25 decoder doesn't show anything in the channel spectrum yet ... one day

Ok I didn't see a mention of that anywhere, maybe simply have something in those tabs that says "Click/select a control channel to see events/messages" for us newbies.. :)

The map will download map tiles in the background over the internet. Sometimes it may take a few moments. You can set the map startup location to something other than Syracuse ... drag the map and choose a zoom level, then right click on the map and choose 'Set default location'.

In version 2, you have to disable the channel, save it, make the configuration changes and then (re)enable the channel and save for the settings to take effect. The error message indicated that the channel was already running and you were attempting to start it by hitting save.

I fixed this for the upcoming version 3. The program will detect that you are making changes to a channel that is running and it will automatically stop/restart the channel for you.

Gotcha!

When I added mono/stereo playback capability I was going to add support for 5-channel and 7-channel sound cards but didn't figure that anyone would use the capability. If there's interest, I can add support for more playback channels, up to what the sound card(s) can support.

I see... Our P25 site is fairly active since it has two towns plus Highway Patrol coming through, there are often 3 or more 'blue' channels popping up at once, so that's something I'd definitely like to play with (the 5 and 7 channel options would be really nice). Again if it could ever be set up so that specific TGs on a given system could be assigned to specific audio outputs that would be the holy grail of P25 SDR. :)


No man, thank YOU for all this hard work!! :D
 
Last edited:

DSheirer

Member
Premium Subscriber
Joined
Feb 15, 2010
Messages
628
Reaction score
175
Location
Fulton, NY
You missed my other question there though, how does SDRTrunk actually utilize multiple tuners? I don't see any obvious method for assigning tuners to any given system or channel.

All tuners are treated as a pooled set of resources. When you start a channel, sdrtrunk starts at the top of the list and pings each tuner to see if it can source the channel's frequency. If it can, the channel is added to the tuner. If it can't, sdrtrunk goes to the next tuner in the list. If none of the tuners can source the channel, then you'll normally see an event logged as 'Call Detect'.

Each tuner can source multiple channels as long as the set of channels fit within the tuner's bandwidth. Tuners (except airspy) won't allocate a channel if it aligns with the center frequency in order to avoid the DC spike. The tuner will automatically change the center frequency as needed to accomodate all of the channels.

From the tuner's perspective, a channel is a channel, meaning that you can mix and match decoder protocols for your channels. So if your spectrum includes a mix of P25, LTR and MPT1327, you can setup channels to decode each of them at the same time.

Denny
 

KD0TAZ

Member
Joined
Dec 26, 2010
Messages
334
Reaction score
16
Location
Kansas
All tuners are treated as a pooled set of resources. When you start a channel, sdrtrunk starts at the top of the list and pings each tuner to see if it can source the channel's frequency. If it can, the channel is added to the tuner. If it can't, sdrtrunk goes to the next tuner in the list. If none of the tuners can source the channel, then you'll normally see an event logged as 'Call Detect'.

Each tuner can source multiple channels as long as the set of channels fit within the tuner's bandwidth. Tuners (except airspy) won't allocate a channel if it aligns with the center frequency in order to avoid the DC spike. The tuner will automatically change the center frequency as needed to accomodate all of the channels.

From the tuner's perspective, a channel is a channel, meaning that you can mix and match decoder protocols for your channels. So if your spectrum includes a mix of P25, LTR and MPT1327, you can setup channels to decode each of them at the same time.

Denny

Ok thats cool. I asked because the last time I played with Unitrunker/DSD+ (which hasn't been for a while so it may have changed), you really HAD to have multiple dongles for it to hand the voice channels off to. If you only had a single tuner, it had to drop the control channel in order to tune the voice channel - which precluded it from following multiple voice channels at once unless you had a tuner for the control channel plus one for each voice channel (which is why I had originally bought 6)..
 
Last edited:

rogress

Member
Joined
Jan 10, 2003
Messages
102
Reaction score
9
Location
Chesapeake, VA
@ rogress, if you just want to monitor the digital portion of that system, have a look at that system and see if you see the digital comms on certain freqs only as opposed to jumping around on all of them. I have the same system type and in my case, when ever they use digital it is always on the 4 lowest freqs in the system (Might be a different set up on your system and not the lowest freqs) .

Thanks for the info, I'll play with that this weekend. I think they are using more than 4 frequencies for digital voice comms,but I'm just playing around at this point. I can monitor this system on my scanner. I'm using the Airspy SDR. If he is able to add support for the older Motorola Type II some day, I'll give it another try.
 

KG7LER

Member
Premium Subscriber
Joined
Oct 4, 2014
Messages
67
Reaction score
19
Location
Wittmann, AZ
Denny,
I just wanted to say thank you, I don't listen to scanners much but when I do it is now a very enjoyable experience using your software. i look forward to what the future holds.
 
Last edited:

DSheirer

Member
Premium Subscriber
Joined
Feb 15, 2010
Messages
628
Reaction score
175
Location
Fulton, NY
Denny,
I just wanted to say thank you, I don't listen to scanners much but when I do it is now a very enjoyable experience using your software. i look forward to what the future holds.

You're welcome!
 
Status
Not open for further replies.
Top