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
