Java program to decode DMR

Status
Not open for further replies.

TampaTyron

Beep Boop, Beep Boop
Joined
Feb 1, 2010
Messages
1,322
Reaction score
587
Location
Phoenix, AZ
you are going to be responsible for the sales of many hundreds of dmr capable radios (until a scanner that is dmr capable arrives on the market)! TT
 

IanWraith

Member
Joined
Sep 29, 2010
Messages
269
Reaction score
0
Location
ianwraith@gmail.com
Hi All
The latest build of my DMR Decoder is now available from here ..

https://github.com/IanWraith/DMRDecode

(then click on the Downloads Button)

This new build does actually decode something ! Without going to technical it gathers together data spread across 4 CACH bursts then decodes and displays it. This data is known as a Short LC PDU and comes in 3 varieties ..

1) Short LC : Nul_Msg

A null message sent when the CACH has no real messages to send.

2) Short LC : Act_Updt - Slot 1 Active with Data Group Call Hashed Addr 148 & Slot 2 Not Active

An activity update showing the time slots in use , if this is a group or individual call , voice or data and if it is an emergency. We also get to see what is called the hashed address of the radios using the timeslot. Please note this isn't the full address but just a shortened version. However you can now gauge activity on any DMR systems by monitoring this PDU.

3) Short LC : Unknown SLCO=15 000100000000001000000000

These came as a surprise to me as they aren't in the ETSI spec. My belief is that they are specific to big M's Capacity Plus systems. The ETSI spec only gives meaning to SLCO's numbers 0 and 1 so I have just printed out the reminder of the PDU minus the CRC. There is plenty of scope here for people to research what they mean.

As usual any comments or bug fixes to the group please.

Regards

Ian
 

jcardani

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

I downloaded the zip file and unzipped in into a folder. They are .java files. How do I execute them in a Windows environment?

BTW looks like you are getting closer to displaying the all important DMR ID (talkgroup ID)!


thanks,
 

IanWraith

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

To run the program you shouldn't need to unzip anything. Just download the .JAR file and double click on it to run it. However watch out as some people have reported that Internet Explorer automatically unpacks the file. Also be careful as some unzip type programs associate themselves with .JAR files instead of Oracle Java. But if the JAR file has a Java style icon then it should be fine.

I hope that helps.

Regards

Ian
 

jcardani

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

Thanks! The program is now running but I am getting no decode on a number of MOTOTRBO systems here in the area. They are all unencrypted and with good signal strength. I tried invert and no invert. Soundcard works fine with Unitrunker and some other programs. I am running Win XP. Any ideas what may be going on?

Can't wait for Level 3 (talkgroup ID)!

Thanks for your help!
 

IanWraith

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

Thanks! The program is now running but I am getting no decode on a number of MOTOTRBO systems here in the area. They are all unencrypted and with good signal strength. I tried invert and no invert. Soundcard works fine with Unitrunker and some other programs. I am running Win XP. Any ideas what may be going on?

Joe try enabling the "Debug" option in the "Main" menu. You should see something appear when the program detects a syncronisation sequence in a DMR frame. I really need to add something to the program that shows detected audio in a visual form as well.

Good luck

Ian
 

jcardani

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

I will try that. Great idea for the visual sync in the program!

thanks,
 

jcardani

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

I failed to mention that the program takes 100% CPU when it's running. I am using single core Pentium around 2.2 GHz processor. Is there anyting I can do about this?

thanks,
 

Baylink

Member
Joined
Nov 10, 2010
Messages
299
Reaction score
1
Location
St Pete FL
I failed to mention that the program takes 100% CPU when it's running. I am using single core Pentium around 2.2 GHz processor. Is there anything I can do about this?

I would say "pick a language other than Java", but that would be sort've mean. :)

Are you running other programs? Windows or Linux? And how are you on physical RAM; are you going into swap?
 

IanWraith

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

Yes I realise the program is a little heavy on CPU time :(

Originally the program worked much the same as DSD bringing in samples from the audio buffer as required. But then I found I was having problems with soundcard data being "lost". So I modified the program to launch a thread which does nothing except gather data from the soundcard (16 bit samples at 48 KHz) put them through the root raised filter and write thats output to a 32K circular buffer. The buffer is then read by the main program. The PCs I work on are both budget dual core processors and it works quite well on those however I can imagine the results might not be so good on a single core.

I am looking at ways of improving things.

Ian
 

jcardani

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

It works on my dual core (at 50% CPU) but not on the single core (maybe because it's using all CPU)?

I would like to create a hardware front end to your program using a CML micro 4-level demod chip and microcontroller. This would remove most of the work done by the PC processor. The CML Micro MX919B chip can demod 4-level at 4800 or 9600 symbols/sec and has a root raised cosine filter onboard. The hardware can send your program the bits (or symbols) via the serial port. Please let me know if you are interested.

thanks!
 

IanWraith

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

I would like to create a hardware front end to your program using a CML micro 4-level demod chip and microcontroller. This would remove most of the work done by the PC processor. The CML Micro MX919B chip can demod 4-level at 4800 or 9600 symbols/sec and has a root raised cosine filter onboard. The hardware can send your program the bits (or symbols) via the serial port. Please let me know if you are interested.

That sounds like a brilliant idea and I should be able to integrate something like that into the program quite easily. Send me a private mail to my gmail address so we can talk further.

Regards

Ian
 

MattSR

Member
Joined
Jul 26, 2002
Messages
407
Reaction score
11
Location
Sydney, Australia
I once tried getting some chips from CML for an APCO25 project - it was harder than extracting blood from a stone so I gave up.

Please, if you have a source of these chips or have some yourself, shoot me a PM and let me know how I can get some (for experimentation)

Cheers,
Matt
 

jcardani

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

Sure, will do. I am currently working on the schematic and have a rough draft of the Pic C code to control the modem. I have some older MX909A's that I can practice with until I get the newer MX919's. They are controlled basically the same way by a uC.


Hello Joe



That sounds like a brilliant idea and I should be able to integrate something like that into the program quite easily. Send me a private mail to my gmail address so we can talk further.

Regards

Ian
 

jcardani

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

They sent me some samples years ago of the 909 and 919 chips I still have. I have a contact there that should be able to send me more of the newer chips. I will PM you later today.

I once tried getting some chips from CML for an APCO25 project - it was harder than extracting blood from a stone so I gave up.

Please, if you have a source of these chips or have some yourself, shoot me a PM and let me know how I can get some (for experimentation)

Cheers,
Matt
 

TampaTyron

Beep Boop, Beep Boop
Joined
Feb 1, 2010
Messages
1,322
Reaction score
587
Location
Phoenix, AZ
Ian,
any new updates on this project? I saw on your github site that you were tracking some erros and such. How is it trating you? TT
 

IanWraith

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

My apologies for the lack of new DMRDecoder builds and information of late but a recent heavy snowfall here in Northern England has caused a few problems for me. After doubling my commute times to and from work plus numerous other problems I haven't had much time to work on the program. However work will resume on it hopefully next week.

In answer to the other question from the crazy Californian I do intend to add an audio input selector eventually but there are more important features that need adding and bugs fixing first.

Regards

Ian
 

IanWraith

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

Just a quick note to let you know I have uploaded build 12 of the program to Github. To get it go to ..

https://github.com/IanWraith/DMRDecode

then click on the "Downloads" button and download the .JAR file.

This latest version doesn't decode anything different but includes a level meter and a much improved RRC (Root Raised Cosine) filter that has radically improved decoding on one of the PC's I use. However there are still problems on other sound cards which I'm looking into at the moment.

Please note that to run the program you need a scanner with a discriminator output and a PC with Oracle Java installed and which has at least 2 processor cores.

Incidentally I have also improved the programs Wiki pages ..

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

Note that the screen shot on the wiki is from build 13 which I have yet to upload. It contains a graphical indicator showing symbol positions which you can see on the left hand side of the screen shot. A good C4FM decode should show all the symbol positions clustered around one of four positions. All being well I will fix a few bugs in that build and upload it some time before the new year.

Regards

Ian
 
Status
Not open for further replies.
Top