Java program to decode DMR

Status
Not open for further replies.

PeterGV

K1PGV
Joined
Jul 10, 2006
Messages
754
Reaction score
4
Location
Mont Vernon, NH
This is wonderful work on behalf of the community. Bravo!

One tangential question: Now that you've done all this wonderful porting for DMR, what would it entail and how difficult might it be for somebody to add P25 support to your code? Any idea?

Peter
K1PGV
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Thank you Peter for your kind words about the software.

In answer to your question no I have no plans on adding P25 support. The DMR standard is so complex it looks like a life times work decoding all of that plus there are barely in P25 systems here in the UK so I'm afraid I have little interest in it.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello

Just a quick note to announce the release of build 13 of the DMRDecoder which can be downloaded from here ..

https://github.com/IanWraith/DMRDecode

Build 13 doesn't decode anything new but its demodulation code is much improved. Where as in the past it would see error correction problems in 30% of the frames on one of my local DMR channels it now sees less than 10%. This is thanks to some changes in the jitter detection code. However I'm still not happy at how long it takes the program to initially sync up with a DMR signal and start decoding which is an issue that needs looking into.

As usual any questions or suggestions to this forum please.

Bye

Ian
 

MattSR

Member
Joined
Jul 26, 2002
Messages
407
Reaction score
11
Location
Sydney, Australia
This is wonderful work on behalf of the community. Bravo!

One tangential question: Now that you've done all this wonderful porting for DMR, what would it entail and how difficult might it be for somebody to add P25 support to your code? Any idea?

Peter
K1PGV

OP25 already does this..
 

TampaTyron

Beep Boop, Beep Boop
Joined
Feb 1, 2010
Messages
1,336
Reaction score
634
Location
Phoenix, AZ
Ian,
is it bad that I check your Github site every 6 hours hoping for an update? I see you are making progress. How is it coming? TT
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello

Progress has been slow but steady. I have been working on a section of the DMR data frame called the CSBK which contains signalling information. This is protected by being interleaved and two levels of error correction. So far I have sorted the deinterleaving of the bits and one level of error correction but need to sort the final level. After that I can decode the CSBK information.

All being well I will have a new build out some time in the next week or so.

Regards

Ian
 

jcardani

Member
Premium Subscriber
Joined
Jan 16, 2002
Messages
1,393
Reaction score
91
Location
Orlando, FL
Hi Ian,

I hope you can fix the issue with DMR decode using 100% of the processor on single core machines. I use a single core machine for my scanner programs and it unfortunately does not work on that PC.

thanks,
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello

Just a quick message to say I have uploaded build 14 to Github. It can be downloaded here ..

https://github.com/IanWraith/DMRDecode/downloads

This latest build error checks the first layer of error protection in each data frame the Block Product Turbo Correction and the second level of error protection (a CRC check) of some types of data frame. I had hoped I would then be able to decode the CSBK data contained in these frames but found the only CSBKs I found non standard ones in Capacity Plus systems.

Can I ask that anyone who logs anything like this ..

13:12:41 DMR Data Frame
CACH : TACT AT=1 Ch 1 First fragment of LC
Slot Type : Colour Code 8 CSBK
CSBK : 101111100001000011000100000001000000000100000000000000000000000000000000000000001111100110100101

Sends me that section of the log file as I would be interested to see what you get.

I am seeing Voice headers and terminators which I know contain addressing information but they are protected by a different type of error correction (Reed Solomon) which I need to know how to handle before I can do anything with them.

In addition the program is still far to slow to syncronise with DMR signals and loses sync when it shouldn't so still plenty remains to be done. But progress is being made.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hi All

Just a quick one to say I have put build 15 of this program on Github ..

https://github.com/IanWraith/DMRDecode/downloads

This new build now decodes Terminator LC messages which look like this ..

13:13:00 DMR Data Frame
CACH : TACT Ch 1 Continuation fragment of LC
Slot Type : Colour Code 1 Terminator with LC
Group Voice Channel User LC
Group Address : 1000 Source Address : 49

So you can see radio 49 was calling group 1000.

In addition it decodes some CSBKs so you can see information like this ..

11:35:22 DMR Data Frame
CACH : TACT AT=1 Ch 2 Continuation fragment of LC
Slot Type : Colour Code 8 CSBK
Preamble CSBK : Data content 2 Blocks to follow
Target Address : 64250 Source Address : 65559

Just a quick note to remind people that to run this program you need Oracle Java , a PC with more than one core and a scanner with a discriminator output.

Regards

Ian
 

jcardani

Member
Premium Subscriber
Joined
Jan 16, 2002
Messages
1,393
Reaction score
91
Location
Orlando, FL
Hi Ian,

This is a major breakthrough on displaying the talkgroup ID! Great job!

Update, Terminator with LC is not working for me. Non-invert gets me the data frames but I am seeing alot of Bad Short LC messages. There is no Group Voice Chanel User LC messages shown on several active Trbo systems here.
 
Last edited:

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hi Joe

Bad short LC messages suggests a problem. Try altering the line in volume on your audio mixer. Also enable the Symbol Display as when receiving data you should see 4 groups of symbols clustered together.

The program does still have a couple of fairly major problems in that it is slow to synchronise with DMR signals and seems to loose synchronisation for reasons unknown. Its a lot better than it was though !

Thanks for your comments.

Ian
 

grosminet

Member
Joined
Jan 21, 2004
Messages
321
Reaction score
102
need some help

thanks for this nice software

What could I do to remove this error :

15:57:03 DMR Embedded Frame - Error ! jitter=5
15:57:03 DMR Embedded Frame - Error ! jitter=5
CACH : TACT AT=1 Ch 1 First fragment of CBSK

and what are the meaning of this ?

CACH ?
TACT
LC
EMB
CBSK ?
jitter ?

sorry for bad english

and thanks for answer
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello

No problem about your English which is far better than my French !

Before you do anything else try clicking on the "Invert Signal" option in the "Main" menu as I believe that is set wrongly.

CACH is Common Announcement Channel
TACT is TDMA Access Channel Type
LC is Link Control
EMB is EMBedded signalling field
CSBK is Control Signalling BlocK

Jitter is just a timing adjustment variable used in the program and displayed to allow me to find problems.

If you want the full technical specification of DMR then look at ..

http://www.etsi.org/deliver/etsi_ts/102300_102399/10236101/01.04.05_60/ts_10236101v010405p.pdf

Sorry if it isn't clear what the program is decoding. I have been busy getting the program decoding something and the help files haven't been kept upto date I'm afraid.

Regards

Ian
 

mtindor

FMP24 PRO USER
Database Admin
Joined
Dec 5, 2006
Messages
12,281
Reaction score
3,552
Location
Carroll Co OH / EN90LN
Ian,

I'm running 32-bit Vista Home on a Dell Inspiron 1525 laptop.

When executing "java -jar dmrdecode_b15.jar" I get the this error:

Fatal Error in SetupAudio()

What am I doing wrong? I did this from commandline (with CMD running as administrator).

Mike
 
Last edited:

mtindor

FMP24 PRO USER
Database Admin
Joined
Dec 5, 2006
Messages
12,281
Reaction score
3,552
Location
Carroll Co OH / EN90LN
When executing "java -jar dmrdecode_b15.jar" I get the this error:

Fatal Error in SetupAudio()

What am I doing wrong?

Disregard. It would help if I plugged audio into the jack.

Once i plugged in the audio from my discriminator, the program started up.

Thanks!

Mike
 

TampaTyron

Beep Boop, Beep Boop
Joined
Feb 1, 2010
Messages
1,336
Reaction score
634
Location
Phoenix, AZ
Ian,
amazing work on the program! I am still not able to get any of the group id or radio id information from the air. It does display CH 1 or 2 (slot) and color code, but no voice channel or radio ID. I have several non-capacity plus systems here that I am trying to determine talkgroup IDs so that I may program my personal Mototrbo radios. I do have a Mototrbo non-capacity plus system that I am using to determine if my system can decode known good details (I know frequency, slot, color code, and talkgroup ID). Thank you, TT.
 

grosminet

Member
Joined
Jan 21, 2004
Messages
321
Reaction score
102
help with sound card

thanks for answer .

I'm using an imic usb sound card . Only this card allow me to partially decode Mototrbo . What is the sound card that give the best decoding result with Linux ?

even with strong signal and different PC , virtual machine , DSD and java program are giving poor results (java is displaying always 30 % of bad frames)
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello Mike

Disregard. It would help if I plugged audio into the jack.
Once i plugged in the audio from my discriminator, the program started up.

Glad to hear it is working now. I was going to suggest a fatal error like that would be most likely caused because another program was using the audio device or more unlikely that the soundcard doesn't support sampling at 48 KHz 16bits.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello

thanks for answer .

I'm using an imic usb sound card . Only this card allow me to partially decode Mototrbo . What is the sound card that give the best decoding result with Linux ?

even with strong signal and different PC , virtual machine , DSD and java program are giving poor results (java is displaying always 30 % of bad frames)

Both DSD and my Java program (which uses the demodulator code from DSD) seem to work better with certain sound cards than others although I'm unable to give a precise reason why.

When I'm monitoring a strong DMR signal I also see around 30% of bad frames. The main reason for this appears to be the program losing syncronisation with the DMR data stream. Listening to the DMR signal at the same time as decoding I hear the signal "stutter" at the same time the program loses sync. So I suspect the DMR repeater stops transmitting for a few ms then restarts for some reason. Sadly the program is then slow to acheive resyncronisation. I am planning on working on improving this again soon when I have got a few more features working and I have the time.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hello All

Further to my last it appears that many of the problems people are having with the program is due to them having the "Invert Signal" option in the "Main" menu set incorrectly for their radio.

When decoding a normal DMR system you will see more data frames than voice ones. If you are seeing lots of voice ones I suggest you change the invert option to the opposite of what it is. A good clue to if it is set correctly is in the CACH decodes. If set correctly you should see something like this ..

CACH : TACT Ch 2 First fragment of LC

CACH : TACT Ch 1 Continuation fragment of LC

CACH : TACT Ch 2 Continuation fragment of LC

CACH : TACT Ch 1 Last fragment of LC

So you see a first fragment , then two continuation fragments and finally a last fragment.

The CACH error protection is rather crude and works even if a signal is inverted which is what is causing confusion I think.

Regards

Ian
 
Status
Not open for further replies.
Top