Java program to decode DMR

Status
Not open for further replies.

IanWraith

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

Just a quick announcement of a little project I have started work on. I was fascinated by the release of DSD (whoever the author is if you are ever in the UK I owe you a beer) but I'm only really interested in the DMR decoding side of things as we hardly have any P25 over here. So I have taken parts of the DSD C code and ported it to Java with the eventual aim of creating an open source DMR data side decoder (I'm leaving the voice side and its legal problems alone). As it is written in Java it should run on Windows , Linux and Apple OS PCs.

Anyway its very early days right now and the program does nothing more than detect DMR voice and data sync words. I'm working on a problem where the program won't detect further sync words after it has gone into sync mode but I'm hampered by the usual lack of time. If anyone is interested I have put the code and the JAR compiled binaries up on Github at ..

IanWraith's DMRDecode at master - GitHub

in case anyone is interested.

Once again my thanks to the DSD author who has made all this possible.

Regards

Ian
 

ronenp

Member
Joined
May 8, 2002
Messages
592
good news

great job
is there any way to get a running code for windows (for those of us that are not a Software guru) ?
And hope that soon all the DSD will be ported to windows by someone ......

Best Regards
Ronen - 4Z4ZQ
Ronen Pinchooks (4Z4ZQ) WebSite
 

gary123

Member
Joined
Sep 11, 2002
Messages
2,200
the java app is nice, and thanks for posting the code for futher work. I too would like to see a windows version of DSD. The author of dsd has generously posted the code and i would think it shouldnt be too diffficult to rewrite it in either VB or C++. then again im not a programmer so I may be way off base.
 

jcardani

Member
Premium Subscriber
Joined
Jan 16, 2002
Messages
1,390
Location
Orlando, FL & Ocean City, NJ
Hi Ian,

Sounds like a great project!

I would suggest displaying Color Code, talkgroup ID, Unit ID, and Slot for DMR conventional channels (eg. MOTOTRBO) as well as trunked voice channels (eg. Nexedge). Control channel data on a Nexedge system would also be great.

Joe
 

IanWraith

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

My thanks for everyones kind comments on my project. I would encourage anyone with an interest to take a look at the DSD code as its very interesting. If you do start a project have a look at Github as a way of sharing the code with others interested as its a useful resource.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Location
ianwraith@gmail.com
Hello All
Just a quick note to let you all know I have uploaded a new version of my DMR Decoder (that is based around code from DSD) which can be downloaded from Github here ..

Downloads for IanWraith's DMRDecode - GitHub

(the new version is build 6)

Improvements in this new build include ..

1) It takes around 40% less system resources thanks to improving some threading code.

2) It now shows diagnostic information.

3) It should work on more soundcards than previous versions.

Right now the software doesn't decode much of anything and is its very early stages. If it does work it should look something like this ..

http://borg.shef.ac.uk/~ianw/dmrdecode2.png

For the software to work you will need Oracle Java installed on your PC (it usually is) , a known DMR signal and a scanner with a discriminator output connected to the Line In on your PC. If you do try the software please let me know what happens as I'm keen to get it working with as many setups as possible. Please note the software should also run on Linux and Apple PC's.

Regards

Ian
 

grosminet

Member
Joined
Jan 21, 2004
Messages
310
can't work

C:\Program Files (x86)\Java\jre6\bin>java dmrdecode_b6.jar


Exception in thread "main" java.lang.NoClassDefFoundError: dmrdecode_b6/jar
Caused by: java.lang.ClassNotFoundException: dmrdecode_b6.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: dmrdecode_b6.jar. Program will exit.

what is wrong ????
 

TampaTyron

Beep Boop, Beep Boop
Premium Subscriber
Joined
Feb 1, 2010
Messages
1,091
Location
Phoenix, AZ
dreaming

Does it happen to display talkgroup id, radio id, or color codes? Am I just dreaming? I really think that a way to bypass the AMBE/DVSI legal issues is to have a trunker-like program and then use that info to program into an actual commercial portable radio. No legal issues. I really wish I knew how to code.......TT
 

IanWraith

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

Does it happen to display talkgroup id, radio id, or color codes? Am I just dreaming? I really think that a way to bypass the AMBE/DVSI legal issues is to have a trunker-like program and then use that info to program into an actual commercial portable radio. No legal issues. I really wish I knew how to code.......TT

The new build of the program that should be out soon (there are a few issues left to resolve) now decodes SLOT TYPE and EMB PDUs which contain colour codes as you can see in this screen shot ..

http://borg.shef.ac.uk/~ianw/dmrdecode10.png

DMR is a very complex protocol and I am working on the other info but it will take a while.

Regards

Ian
 

TampaTyron

Beep Boop, Beep Boop
Premium Subscriber
Joined
Feb 1, 2010
Messages
1,091
Location
Phoenix, AZ
Ian,
thank you for your hard work. If it was easy, everyone would be doing it already. Thank you, Ty.
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Location
ianwraith@gmail.com
Hello Everyone
If anyone is interested build 10 of my very experimental DMR decoder is available. To get it go to ..

https://github.com/IanWraith/DMRDecode

Click on the downloads buttons and download build 10.

This new build decodes CACH TACT , SLOT TYPE and EMB PDUs and now displays a systems colour code.

If you follow me on Github this build is from the "PeakMeasuring" branch.

I'm still not happy with the demodulation code and suspect there is a serious problem but thought I would release this build for anyone interested.

Regards

Ian
 

TampaTyron

Beep Boop, Beep Boop
Premium Subscriber
Joined
Feb 1, 2010
Messages
1,091
Location
Phoenix, AZ
Ian,
could you tell me what CACH, TACT, EMB, and PDU are? Also, here is a copy/paste of what I have captured here at a facility near me. I am unsure of what I am looking at:


CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:10:12 PM DMR Voice Frame (Symbols=432)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:10:12 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:10:12 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:10:12 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of LC 01000001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:10:11 PM DMR Voice Frame - Error ! (Symbols=144)
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of LC 01001001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:10:11 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of LC 01001001000100100
7:10:10 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:10:10 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:10:10 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:10:10 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of LC 01001001000100100
7:10:10 PM DMR Voice Frame (Symbols=1008)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:09:08 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 00001000100000111
7:09:08 PM DMR Voice Frame (Symbols=576)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:08:05 PM DMR Embedded Frame - Error ! (Symbols=144)
7:08:04 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 Last fragment of LC 01001001000100100
7:08:04 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of LC 01001001000100100
7:06:57 PM DMR Embedded Frame - Error ! (Symbols=144)
7:06:56 PM DMR Voice Frame (Symbols=288)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:06:56 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 01001001000100100
7:06:56 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of LC 01001001000100100
7:06:56 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:06:56 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:06:56 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 01001001000100100
7:06:56 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of LC 01001001000100100
7:06:55 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:06:55 PM DMR Voice Frame (Symbols=432)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:05:51 PM DMR Embedded Frame - Error ! (Symbols=144)
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 01001001000100100
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of LC 01001001000100100
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01000001000100100
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001000000100100
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 01001001000100100
7:05:51 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of LC 01001001000100100
7:05:50 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100
7:05:50 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 2 First fragment of CBSK 01001001000100100
7:05:50 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 01001001000100100
7:04:46 PM DMR Embedded Frame - Error ! (Symbols=144)
7:04:46 PM DMR Voice Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 First fragment of CBSK 01001001000100100


Any direction would be appreciated. It seems your program works really, really well "out of the box." Thank you, TT.
 

TampaTyron

Beep Boop, Beep Boop
Premium Subscriber
Joined
Feb 1, 2010
Messages
1,091
Location
Phoenix, AZ
unchecked Main-Invert Signal:

9:03:58 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
9:03:57 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:57 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:57 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000110000001110
Slot Type : Colour Code 10 Idle
9:03:57 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:57 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:57 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : First fragment of LC
9:03:57 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000110000001110
Slot Type : Colour Code 10 Idle
9:03:57 PM DMR Voice Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
9:03:57 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:57 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : First fragment of CBSK
9:03:56 PM DMR Data Frame (Symbols=288)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000010000001110
Slot Type : Colour Code 10 Idle
9:03:55 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 1 Last fragment of LC 00000000000000000
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 1 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame - Error ! (Symbols=144) (692286)
9:03:54 PM DMR Data Frame - Error ! (Symbols=144) (688186)
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Last fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:54 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:53 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:53 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Last fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:52 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 00000001000000000
Slot Type : Colour Code 10 Idle
9:03:52 PM DMR Data Frame - Error ! (Symbols=144) (659514)
9:03:52 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:52 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Last fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:52 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:51 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:51 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:51 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 1 Last fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:50 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 00000000000000000
Slot Type : Colour Code 10 Idle
9:03:49 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 Last fragment of LC 00000000010010101
9:03:48 PM DMR Voice Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
9:03:48 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:48 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
Slot Type : Colour Code 10 Voice LC Header
9:03:48 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000110000001110
Slot Type : Colour Code 10 Idle
9:03:47 PM DMR Data Frame - Error ! (Symbols=144)
9:03:47 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001000
Slot Type : Colour Code 10 Idle
9:03:47 PM DMR Data Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
Slot Type : Colour Code 10 Voice LC Header
9:03:47 PM DMR Data Frame with Embedded Signalling (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000010000001110
Slot Type : Colour Code 10 Idle
9:03:47 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
Slot Type : Colour Code 10 Terminator with LC
9:03:47 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:46 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000010000100
Slot Type : Colour Code 10 Terminator with LC
9:03:46 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000010000001110
Slot Type : Colour Code 10 Idle
9:03:46 PM DMR Data Frame (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
Slot Type : Colour Code 10 Terminator with LC
9:03:45 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000100010
Slot Type : Colour Code 10 Idle
9:03:45 PM DMR Embedded Frame - Error ! (Symbols=144)
9:03:45 PM DMR Data Frame - Error ! (Symbols=144) (694330)
9:03:45 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : First fragment of CBSK
9:03:45 PM DMR Data Frame - Error ! (Symbols=864) (659514)
9:03:44 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
9:03:44 PM DMR Data Frame (Symbols=432)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000100000001110
Slot Type : Colour Code 10 Idle
9:03:43 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
9:03:43 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000110000001110
Slot Type : Colour Code 10 Idle
9:03:43 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:43 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 00011000000001010
Slot Type : Colour Code 10 Idle
9:03:42 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000100000100
EMB : Colour Code 10 : PI=1 : Continuation fragment of LC or CSBK
9:03:42 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000100000001100
Slot Type : Colour Code 10 Idle
9:03:42 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : First fragment of LC
9:03:42 PM DMR Data Frame with Embedded Signalling (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000000010
Slot Type : Colour Code 10 Idle
9:03:42 PM DMR Voice Frame (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
9:03:41 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000010001110100
9:03:41 PM DMR Data Frame - Error ! (Symbols=144) (693306)
9:03:41 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:41 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000110000001100
Slot Type : Colour Code 10 Idle
9:03:40 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
9:03:40 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:40 PM DMR Embedded Frame - Error ! (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000100000100
9:03:40 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000111000001110
Slot Type : Colour Code 10 Idle
9:03:39 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : First fragment of CBSK
9:03:39 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:39 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : Last fragment of LC or CSBK
9:03:39 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00000111000001110
Slot Type : Colour Code 10 Idle
9:03:38 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:38 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Last fragment of LC 10011000000001010
Slot Type : Colour Code 10 Idle
9:03:38 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 Continuation fragment of LC 01000000110000100
EMB : Colour Code 10 : Continuation fragment of LC or CSBK
9:03:38 PM DMR Data Frame (Symbols=144)
CACH : TACT AT=1 Ch 1 Continuation fragment of LC 00010100000001100
Slot Type : Colour Code 10 Idle
9:03:37 PM DMR Voice Frame with Embedded Signalling (Symbols=144)
CACH : TACT Ch 2 First fragment of LC 00000011001110100

Not sure which should be checked (inverted or not), nor how to tell. I guess, I may need to fire up my own repeater and do some tests. TT
 

IanWraith

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

The unchecked invert option is one to go for as you are seeing error free Slot Type and EMB messages.

As for what you are seeing DMR arranges its data into bursts of data called frames of which there are 3 types ..

1) Data Frames - These contain signalling into although all the program decodes at the moment is a small section called the Slot Type. This gives a number called the colour code that allows a radio to identify the network. This also says what kind of data the rest of the frame contains in may frames on your system this is "Idle" meaning the frame doesn't contain anything.

2) Voice Frames - These contain the voice data my program doesn't touch these at the moment.

3) Embedded Frames - These come in two flavours voice embedded frames (which contain a small section called the EMB that again contains a colour code) and data embedded frames which contain the Slot Type data my program decodes.

Now just to complicate things in between each frame the DMR base transmits a small burst of data called the CACH. The CACH contains a small stand alone segment of data called the TACT this identifies the timeslot in use (either channel 1 or channel 2 e.g ch1 or ch2) and the type of data contained in the rest of the CACH. As the CACH itself is to small to contain any meaningful data DMR spreads signalling data across 4 CACHs 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 AT=1 Ch 1 Last fragment of LC

Notice how the timeslot alternates. My next challenge is to deinterleave , error check and decode the signalling data being spread across the 4 CACH bursts.

I hope this helps but DMR is a complex mode. But if you have any further questions I will try my best to answer them.

Regards

Ian
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Location
ianwraith@gmail.com
Hi

I have had some time at night to play with the program and have now got it deinterleaving and error checking the Short LC data which is made up from CACH data. The findings are quite interesting.

I have uploaded the latest source code to Github but no new JAR files yet as I will try and polish it enough to put out a new build at the weekend.

Regards

Ian
 
Status
Not open for further replies.
Top