Hi Luke,

you don't happen to have a waterfall plot or a raw IQ recording?

Quadrature demodulation isn't the most resilient to noise. So, a
low-pass filter that makes sure that events that are sufficiently
shorter than a symbol after the Quadrature demodulator would sound wise.
Then again, I don't know the OP25 infrastructure overly well, so chances
are the FSK4 demod already contains one.

An alternative to your Quad FM demod would be a four-bandpasses-based
decider. An easy way to build one is to either use four individual BPFs,
or use one set of filter taps in the Polyphase Channelizer (which
divides your f_sample_in  stream into four f_sample_in/4 -rate streams
with channel centers). Just use a filter that would select the "zeroth"
carrier. The magic of polyphase math will add three
f_sample_in/4-shifted versions (you might need to use Rotator or similar
to put the zeroth subcarrier at f=0). I have a "playing with
channelizers" flow graph [1]. Advantage of the polyphase channelizer is
that it uses very little more ressources than a single bandpass filter
would – basically, you get the three additional filters for the cost of
a short FFT. Yay!

Cheers,

Marcus


[1] https://gist.github.com/babffaa88f54a7fba9b52fc09bda0462


On 01/11/2017 04:44 PM, Luke Berndt wrote:
> I am using the C++ OP25 libs to capture and record the P25
> transmissions from a trunked radio system
> ( https://github.com/robotastic/trunk-recorder ).
>
> Transmission can either use 4-Level FSK or CPSK. I am getting great
> decodes from a system using CPSK but I am having a lot of trouble with
> a system using 4FSK.
>
> At a high level, here is my 4FSK flow graph
> (https://github.com/robotastic/trunk-recorder/blob/master/trunk-recorder/recorders/p25_recorder.cc):
> Xlating + LPF to roughly capture the channel
> ARB Resampler to get the system sample rate
> Quad FM Demod
> Multiply Const - to get the right levels, -3 to 3
> FSK4 Demod - from OP25
> FSK4 Slicer - from OP25
> OP25 Decode
> it then converts it to what is needed to record it as a Wav file
>
> Are there some obvious blocks I should add in to help condition the
> input better? I think the incoming levels may not be constant. There
> also seems to be occasional interference. Is there a block that will
> discard values above a certain range? It would be great to throw-away
> samples above 3.5 or below -3.5.
>
> Attached is a picture with what I think is an example of the interference.
>
> Here is an example of a very clean
> recording: https://beta.openmhz.com/wmata?call-id=587652495833790100186198
>
> Here is an example of a bad
> decode: https://beta.openmhz.com/wmata?call-id=58765250583379010018619c
>
> Any tips would be greatly appreciated!!
>
> - Luke
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to