GNU Radio and DMR decoding

Status
Not open for further replies.

redox

Member
Joined
Feb 29, 2016
Messages
9
Reaction score
0
Hello,

First, I need to say that I'm a beginner with GNU Radio, so I'm perhaps doing many things wrong, sorry in advance !

I'm trying to build a gnuradio flow to listen both on some DMR channels and some Tetra, all the channels are in the range of my rtl-sdr v3 dongle.
As the flow for telive is ready, I'm starting with a gr-dsd only flow. But as telive seems to be only compatible with gnuradio 3.7, not above, I need other components compatible with this version too.
From what I've found so far, the most up to date component to listen to DMR is argilo gr-dsd (argilo/gr-dsd).
To be compatible with 3.7, I'm on 559335d githash (I will eventually merge the changes of latest dsd, when I get my flow working).

First problem I met, was that there is no demo grc provided with argilo fork of gr-dsd, so I searched some example elsewhere and found robotastic older fork (robotastic/gr-dsd)

There seemed to be no output from the DSD block, so I tried to reduce the flow to the strict minimum :

DSD-headless.png

Then I see that gr complains about an error with Quadrature Demod block : Block - analog_quadrature_demod_cf_0 - Quadrature Demod(analog_quadrature_demod_cf): Source - out(0): Port is not connected.
In the doc, I see that this block output is float, Decimating FIR Filter is configured as Float => Float type, so I don't understand why gr complains...
Am I doing something wrong here ?
I also see that the arrows are gray after Quadrature Demod, is there a particular meaning ?

To make some tests, I'd like also to try to send audio from the flow to a dsdplus fastlane instance executed with wine, is it possible ?
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,715
Reaction score
1,115
Location
Talbot Co, MD
Seems like a lot of work to reinvent the wheel. OP25 doesn't have GRC blocks, but it does use gnuradio and decodes several types of DMR.
 

redox

Member
Joined
Feb 29, 2016
Messages
9
Reaction score
0
Seems like a lot of work to reinvent the wheel. OP25 doesn't have GRC blocks, but it does use gnuradio and decodes several types of DMR.
But, as it doesn't have GRC blocks, can I use it anyway with telive GRC to use only one dongle to listen simultaneously to both systems ?
 

redox

Member
Joined
Feb 29, 2016
Messages
9
Reaction score
0
I have also a question about op25, I've seen it doesn't handle cap+ trunk yet.
But if I'd like to listen to a cap+ trunk on 2 frequencies with only one call at a time 99% of the time, can I use it to simply listen on both frequencies ignoring the trunk ?
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,715
Reaction score
1,115
Location
Talbot Co, MD
I have also a question about op25, I've seen it doesn't handle cap+ trunk yet.
But if I'd like to listen to a cap+ trunk on 2 frequencies with only one call at a time 99% of the time, can I use it to simply listen on both frequencies ignoring the trunk ?
The problem with OP25 and Capacity+ (as well as unit-to-unit/non repeater dmr) is that the fsk4 demodulator does not lock fast enough to capture TDMA signal bursts. It works fine for base-station and Connect+ sinc they transmit continuously, but bursts are no good at all. If you manage to implement a gnuradio based fsk4 demodulator that can do that, I'd be eternally grateful!
 

redox

Member
Joined
Feb 29, 2016
Messages
9
Reaction score
0
The problem with OP25 and Capacity+ (as well as unit-to-unit/non repeater dmr) is that the fsk4 demodulator does not lock fast enough to capture TDMA signal bursts. It works fine for base-station and Connect+ sinc they transmit continuously, but bursts are no good at all. If you manage to implement a gnuradio based fsk4 demodulator that can do that, I'd be eternally grateful!

Well it seems the trunk I'd like to listen transmit long enough continuously.
I get some sync :
05/10/21 02:34:48.067650 [0] SLCO=0xf, CAPACITY PLUS REST CHANNEL LCN(4)
05/10/21 02:34:48.067655 [0] Slot(1), CC(1), Data Type=3, gly_errs=0
05/10/21 02:34:48.067663 [0] Slot(1), CC(1), CSBK LB(1), PF(0), CSBKO(3e), FID(10), DATA(e400008020fafa00)
1620606888.067734 [0] DMR PDU: lcn(1), state(0), type(0), slot(0), data(0x0f100408)
1620606888.067759 [0] CAPACITY PLUS REST CHANNEL: lcn(4)
1620606888.067805 [0] DMR PDU: lcn(1), state(0), type(5), slot(1), data(0xbe10e400008020fafa00)
05/10/21 02:34:48.068281 [0] Slot(0), CC(1), Data Type=7, gly_errs=0
05/10/21 02:34:48.069144 [0] Slot(1), CC(1), Data Type=3, gly_errs=0
05/10/21 02:34:48.069170 [0] Slot(1), CC(1), CSBK LB(1), PF(0), CSBKO(3e), FID(10), DATA(e400008020fafa00)
1620606888.069228 [0] DMR PDU: lcn(1), state(0), type(5), slot(1), data(0xbe10e400008020fafa00)
05/10/21 02:34:48.203502 [0] Slot(0), CC(1), Data Type=7, gly_errs=0
05/10/21 02:34:48.204590 [0] SLCO=0xf, CAPACITY PLUS REST CHANNEL LCN(4)

In fact I'd like to feed op25 directly from a grc I'm currently using with telive, the 2 last output are the 2 channels I'd like to send to op25 :

lemet-pm.grc.png

I've currently used the same UDP sink that is used for telive, could I use this to feed op25 ?
If yes, should I let UDP Sink or use another sink ? Should I change something else ? (The resampler have a ratio of (2000000/32)/36000 for tetra)
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,715
Reaction score
1,115
Location
Talbot Co, MD
If you are trying to feed op25 you will essentially be replacing the gr-osmosdr source block, not a sink. It's very achievable... much like the options for IQ or symbol replay.
 
Status
Not open for further replies.
Top