RadioReference on Facebook   RadioReference on Twitter   RadioReference Blog
 

Go Back   The RadioReference.com Forums > Computer Aided Monitoring and Programming > Voice/Control Channel Decoding Software


Voice/Control Channel Decoding Software - For discussion of software applications which decode digital voice formats and trunking control channels. Please use the HF Digital Signals forum for anything below 30MHz.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #21 (permalink)  
Old 03-21-2015, 8:02 AM
rjdj2000's Avatar
Member
  Audio Feed Provider
Audio Feed Provider
 
Join Date: Jan 2011
Location: Central NY
Posts: 160
Default

That sounds great Denny. I have played around with OP25 on a Linux install on my Mac Pro and was able to listen to the Cortland system with only one dongle so will be neat to see this work out using one dongle as well.


Sent from my iPhone using Tapatalk
__________________
Scanners: BCD536HP - Feeding Online Stream - Cortland County Public Safety Using Radio Feed
Reply With Quote
Sponsored links
  #22 (permalink)  
Old 03-22-2015, 7:40 PM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default Audio Decoder Progress

A quick update ... I finally have a working version of the imbe audio decoder written in java. The linked file is a partial audio clip from a CNYICC call that was decoded/converted with the library.

https://drive.google.com/open?id=0B7...Sjg&authuser=0

I'm currently working on the java AudioSystem components that will allow me to package the imbe decoder separately so that users can download and compile the library and then drop it into their sdrtrunk folder where it will be auto-discovered on startup and allow users to hear decoded p25 audio calls in sdrtrunk without any external programs or audio patching.

Denny
Reply With Quote
  #23 (permalink)  
Old 03-22-2015, 8:00 PM
hkrharry's Avatar
Member - RR DB AdminMo/Ks
  RadioReference Database Admininstrator
Database Admin
 
Join Date: Dec 2000
Location: In the middle of the USA
Posts: 487
Thumbs up

HI Danny

This is great news!

HH


Quote:
Originally Posted by DSheirer View Post
A quick update ... I finally have a working version of the imbe audio decoder written in java. The linked file is a partial audio clip from a CNYICC call that was decoded/converted with the library.

https://drive.google.com/open?id=0B7...Sjg&authuser=0

I'm currently working on the java AudioSystem components that will allow me to package the imbe decoder separately so that users can download and compile the library and then drop it into their sdrtrunk folder where it will be auto-discovered on startup and allow users to hear decoded p25 audio calls in sdrtrunk without any external programs or audio patching.

Denny
Reply With Quote
  #24 (permalink)  
Old 03-23-2015, 12:25 AM
mtindor's Avatar
OH/WV DB Admin
  RadioReference Database Admininstrator
Database Admin
Amateur Radio Operator
Amateur Radio
 
Join Date: Dec 2006
Location: Carroll Co OH / EN90LN
Posts: 6,707
Default

Quote:
Originally Posted by DSheirer View Post
A quick update ... I finally have a working version of the imbe audio decoder written in java. The linked file is a partial audio clip from a CNYICC call that was decoded/converted with the library.

https://drive.google.com/open?id=0B7...Sjg&authuser=0

I'm currently working on the java AudioSystem components that will allow me to package the imbe decoder separately so that users can download and compile the library and then drop it into their sdrtrunk folder where it will be auto-discovered on startup and allow users to hear decoded p25 audio calls in sdrtrunk without any external programs or audio patching.

Denny
It sounds great, Denny... simulcast to boot

Mike
__________________
Mike / AA8IA
PSR500/PRO197/BCD436HP/TRX-1

Email: my username @gmail

If I PM you about a submission, please reply promptly or your submission may be rejected.
Reply With Quote
  #25 (permalink)  
Old 03-24-2015, 7:12 PM
vince48's Avatar
Member
  Premium Subscriber
Premium Subscriber
 
Join Date: May 2001
Location: Hayward, CA.
Posts: 772
Default

Denny
question. How difficult for you to add other SDR's other than HackRF and Airspy? I have a Ettus b200 which has enough bandwidth to handle a large system that both HackRf and Airspy cannot cover.

vincent
Reply With Quote
Sponsored links
  #26 (permalink)  
Old 03-24-2015, 7:41 PM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

Quote:
Originally Posted by vince48 View Post
Denny
question. How difficult for you to add other SDR's other than HackRF and Airspy? I have a Ettus b200 which has enough bandwidth to handle a large system that both HackRf and Airspy cannot cover.

vincent
The coding shouldn't be too difficult ... the hard part is finding time to write and test the drivers. I've got brand new Ettus B100, Airspy, and FC0013 tuners sitting on the shelf waiting for sdrtrunk drivers.

Have you seen Simon's comments about adding UHD (Ettus) drivers to sdr-radio? I haven't looked at the UHD source code yet, but I imagine it will be fun.
Reply With Quote
  #27 (permalink)  
Old 03-24-2015, 7:50 PM
vince48's Avatar
Member
  Premium Subscriber
Premium Subscriber
 
Join Date: May 2001
Location: Hayward, CA.
Posts: 772
Default

Quote:
Originally Posted by DSheirer View Post
The coding shouldn't be too difficult ... the hard part is finding time to write and test the drivers. I've got brand new Ettus B100, Airspy, and FC0013 tuners sitting on the shelf waiting for sdrtrunk drivers.

Have you seen Simon's comments about adding UHD (Ettus) drivers to sdr-radio? I haven't looked at the UHD source code yet, but I imagine it will be fun.
Thanks Denny for your quick reply. Yes, I use Simon's SDR Console with my Ettus B200. My hat is off to Simon for his endeavor.
Maybe if you have time you can see what you can do. I'm not sure if the B100 and B200 share the same coding. If not if you want me to send you my B200 to help I will.

Thank you for your consideration. Have a good evening.

Vincent
Reply With Quote
  #28 (permalink)  
Old 03-29-2015, 9:03 AM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

For anyone who is comfortable compiling from source code, I just committed the first version of sdrtrunk with built-in P25 audio decoding using the jmbe library.

You'll have to download and compile the jmbe library and place it on the the java classpath, or place the jmbe library in the same folder as the sdrtrunk program .jar file

https://github.com/DSheirer/jmbe

I haven't done any extensive testing yet, so it will be a little while until I release an updated test build of sdrtrunk for users to try.

Denny
Reply With Quote
  #29 (permalink)  
Old 03-29-2015, 12:57 PM
Member
   
Join Date: Feb 2015
Posts: 4
Default

I was able to compile both fine (ant makes that easy). Note (on Windows at least) I had to put the jmbe library in the libs subdirectory in order for it to be loaded. For others' reference, to know if it is loaded look for a line:
12:29:19.877 DEBUG d.p.audio.P25AudioOutput - IMBE audio converter library loaded successfully

I was able to hear little bits of audio, but it was very broken (more silence than audio). I'm not sure what to expect to see in the log file during the call; I see some references to encryption but the audio bits I hear certainly aren't. Also I'm not sure how to decipher the "Error Check" column. I first thought it might be CPU related, but still occurs after setting the fft settings way down.

Screenshot: http://i.imgur.com/tEyOlwU.png
Let me know if there is something else I can provide.
Reply With Quote
  #30 (permalink)  
Old 03-29-2015, 1:35 PM
Member
   
Join Date: Feb 2015
Posts: 4
Default

FWIW, I tried the same antenna setup on the same frequency in DSD+ and it works fine (after getting the volume right). Now to figure out if it is the RTL-SDR settings or something with the P25 decoding. It would be interesting to me to try piping audio into sdtrunk, in order to eliminate the differences in RTL-SDR tuner settings.
Reply With Quote
  #31 (permalink)  
Old 03-29-2015, 7:10 PM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

Quote:
Originally Posted by jmjumps View Post
FWIW, I tried the same antenna setup on the same frequency in DSD+ and it works fine (after getting the volume right). Now to figure out if it is the RTL-SDR settings or something with the P25 decoding. It would be interesting to me to try piping audio into sdtrunk, in order to eliminate the differences in RTL-SDR tuner settings.
I've got some more work to do to get the decode rates a bit higher. The decoder is occasionally dropping voice messages causing 9 frames of audio to be lost, making for choppy audio.
Reply With Quote
  #32 (permalink)  
Old 03-29-2015, 7:51 PM
tylerwatt12's Avatar
Member
  Shack Photos
Shack photos
Premium Subscriber
Premium Subscriber
Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2013
Location: Cleveland
Posts: 185
Default

Thanks for your progress so far. This looks really great. I had a couple questions though

Does this software track multiple channels per dongle, or 1 channel per dongle(multi VFO). I tried using 1 dongle and added multiple channels in a site on a system and only 1 channel lit up saying it had a device to use.

Also, will this decode P25 messages, the ones that say 'Dat' as a service type in unitrunker? I've always wondered what's in those.
__________________
KD8ZMM - Tyler
Reply With Quote
  #33 (permalink)  
Old 03-30-2015, 3:24 AM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

Quote:
Originally Posted by tylerwatt12 View Post
Does this software track multiple channels per dongle, or 1 channel per dongle(multi VFO). I tried using 1 dongle and added multiple channels in a site on a system and only 1 channel lit up saying it had a device to use.
Yes, sdrtrunk allows you to run multiple channels per dongle, as long as all of the channels fit within the bandwidth (sample rate) of the tuner.

Quote:
Originally Posted by tylerwatt12 View Post
Also, will this decode P25 messages, the ones that say 'Dat' as a service type in unitrunker? I've always wondered what's in those.
It will decode most message types, including confirmed and unconfirmed data messages. For UDP/IP packets, it will show the to/from IP addresses and UDP ports and the hex message payload.
Reply With Quote
  #34 (permalink)  
Old 03-30-2015, 7:02 PM
Member
   
Join Date: Sep 2002
Location: Toronto, Ontario
Posts: 4,458
Default

Quote:
Originally Posted by DSheirer View Post
For anyone who is comfortable compiling from source code, I just committed the first version of sdrtrunk with built-in P25 audio decoding using the jmbe library.

You'll have to download and compile the jmbe library and place it on the the java classpath, or place the jmbe library in the same folder as the sdrtrunk program .jar file

https://github.com/DSheirer/jmbe

I haven't done any extensive testing yet, so it will be a little while until I release an updated test build of sdrtrunk for users to try.

Denny
FYI,

Implements Golay(23,11,7) error detection and correction. Returns the
number of detected errors. If the error count is less than or equal to
the max correctable errors (3), then the error bits are corrected.
Otherwise the message is left intact and an error count greater than 3
is returned.


For all possible 23 bit inputs, total possible syndrome patterns: 2^11 (2048)

0 bit error syndrome patterns: 1
1 bit error syndrome patterns: 23
2 bit error syndrome patterns: 253
3 bit error syndrome patterns: 1771
Total: 2048

There are no syndromes for >3

If you run all 8,388,608 input patterns through your Golay23 checkAndCorrect() function, does it ever return values greater than 3? If so, I'd say it's broken and could degrade MBE processing.
Reply With Quote
  #35 (permalink)  
Old 03-30-2015, 7:45 PM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

Quote:
Originally Posted by slicerwizard View Post
FYI,

Implements Golay(23,11,7) error detection and correction. Returns the
number of detected errors. If the error count is less than or equal to
the max correctable errors (3), then the error bits are corrected.
Otherwise the message is left intact and an error count greater than 3
is returned.


For all possible 23 bit inputs, total possible syndrome patterns: 2^11 (2048)

0 bit error syndrome patterns: 1
1 bit error syndrome patterns: 23
2 bit error syndrome patterns: 253
3 bit error syndrome patterns: 1771
Total: 2048

There are no syndromes for >3

If you run all 8,388,608 input patterns through your Golay23 checkAndCorrect() function, does it ever return values greater than 3? If so, I'd say it's broken and could degrade MBE processing.
Hi Andy, thanks for the feedback. The method should return a 4 to indicate that greater than the max correctable (3) bit errors were detected ... if you exceed 3 left/right shifts when trying to find the bit error positions, then you've crossed over the middle of the hamming distance (7) boundary and you're into the next code's space, if I understand correctly.

Tonight I added a soft-match mode to the sync pattern matcher that allows up to 2? bit mismatches in the sync pattern when a call is in progress ... that seems to be helping with the missed LDU messages. I was comparing the jmbe synthesizer code against OP25's codec and I found a difference in the way OP25's soft decoder calculates the DCT for the amplitude residuals. I'm going to experiment tomorrow night modifying my DCT code to the way that OP25 is doing it to see if that helps with the audio quality.

Denny
Reply With Quote
  #36 (permalink)  
Old 03-30-2015, 11:50 PM
Member
   
Join Date: Sep 2002
Location: Toronto, Ontario
Posts: 4,458
Default

Quote:
Originally Posted by DSheirer View Post
Hi Andy, thanks for the feedback. The method should return a 4 to indicate that greater than the max correctable (3) bit errors were detected ... if you exceed 3 left/right shifts when trying to find the bit error positions, then you've crossed over the middle of the hamming distance (7) boundary and you're into the next code's space, if I understand correctly.
I'm no FEC expert, but I have my doubts about this technique. Can you post a 23 bit codeword that is determined to have more than three bit errors? I assume you can code up a quick test along these lines:

for int=0 to 7FFFFF

convert int to string

errors = checkAndCorrect(string, 0)

if errors > 3, print string, errors


(I don't install Java on my machines, so I can't try it myself)


Quote:
Tonight I added a soft-match mode to the sync pattern matcher that allows up to 2? bit mismatches in the sync pattern when a call is in progress ... that seems to be helping with the missed LDU messages.
During a voice call, it's pretty much guaranteed that after the last symbol in each LDU1/LDU2 frame, another P25 sync pattern will immediately follow, whether you actually detect it or not. IIRC, the DSD code has some sort of hack in the frame sync code that assumes that the 24 symbols (any pattern) following a frame are sync, and processes the following symbols as NAC/DUID, and so on. So I guess the DSD method could be describes as a soft-match mode in the sync pattern matcher that allows up to 24 bit mismatches in the sync pattern when a call is in progress.
Reply With Quote
  #37 (permalink)  
Old 03-31-2015, 3:19 AM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

You're correct ... every 23-bit code word sequence has at most 3 errors.
Reply With Quote
  #38 (permalink)  
Old 04-01-2015, 2:06 AM
Member
  Premium Subscriber
Premium Subscriber
Amateur Radio Operator
Amateur Radio
 
Join Date: Dec 2010
Location: Kansas
Posts: 283
Default

Quote:
Originally Posted by DSheirer View Post
For anyone who is comfortable compiling from source code, I just committed the first version of sdrtrunk with built-in P25 audio decoding using the jmbe library.

You'll have to download and compile the jmbe library and place it on the the java classpath, or place the jmbe library in the same folder as the sdrtrunk program .jar file

https://github.com/DSheirer/jmbe

I haven't done any extensive testing yet, so it will be a little while until I release an updated test build of sdrtrunk for users to try.

Denny
I don't know how to compile so I can't try it yet, but this is f'n AWESOME news! You have officially achieved god status.

Can't wait to play with it! Is it coming together with the ability to assign specific dongles to decode only specific TGs on the P25 system and route their audio to separate VAC's for streaming?
Reply With Quote
  #39 (permalink)  
Old 04-01-2015, 3:29 AM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

Quote:
Originally Posted by KD0TAZ View Post
Is it coming together with the ability to assign specific dongles to decode only specific TGs on the P25 system and route their audio to separate VAC's for streaming?
I'm working on the redesign of the audio output framework this weekend after I fix the audio quality issue with the p25 audio codec. The new audio output system will give you lots of options.
Reply With Quote
  #40 (permalink)  
Old 04-04-2015, 9:14 AM
Member
  Amateur Radio Operator
Amateur Radio
 
Join Date: Feb 2010
Location: Fulton, NY
Posts: 424
Default

I posted the first test build of SDRTrunk with integrated P25 audio decoding to the downloads folder:

https://code.google.com/p/sdrtrunk/

You'll need to download and compile the JMBE library and place the library in the same folder where you unzip your sdrtrunk application. There is an updated description of the APCO25 decoder and how to use the JMBE library at:

https://code.google.com/p/sdrtrunk/wiki/APCO25

If you've previously downloaded and compiled the jmbe library, you'll need to update and build version 0.1.1.

If you have any issues or need any help, please PM me, post a reply here, or post a new message in the sdrtrunk yahoo group.

Denny
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -5. The time now is 7:08 AM.


Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
All information here is Copyright 2012 by RadioReference.com LLC and Lindsay C. Blanton III.Ad Management by RedTyger
Copyright 2015 by RadioReference.com LLC Privacy Policy  |  Terms and Conditions