|
From: | Andy Walls |
Subject: | Re: [Discuss-gnuradio] Discuss-gnuradio Digest, Vol 170, Issue 10 |
Date: | Sun, 15 Jan 2017 18:58:50 -0500 |
Message: 6
Date: Wed, 11 Jan 2017 21:56:51 -0500
From: Luke Berndt
To: Marcus M?ller , GNURadio Discussion List
<address@hidden>
Subject: Re: [Discuss-gnuradio] Improve FSK4 decodes in OP25
Thanks Marcus! I will try putting in a low pass in first after the Quad demod. That BPF / Polyphase Channelizer approach sounds pretty cool too!
I have attached a GRC file that I use for debugging and a link the raw dump from a File Sink. The sample rate at the sink is 96k/s, the system channel rate is 48k/s, with 10 samples per symbol. The FSK Level has to be set to about 0.66.
I am sure that some of the problem is that I don?t have a great signal coming in, but if there is any additional processing I could do to improve the reception that would be great.
Wav file
https://www.dropbox.com/s/ncpz6wt8tubm2v3/32784- <https://www.dropbox.com/s/1484187802_4.90762e%2B08.wav? dl=0 ncpz6wt8tubm2v3/32784- >1484187802_4.90762e+08.wav?dl= 0
Raw capture from a file sink
https://www.dropbox.com/s/810zj7pudc66yo3/32784- <https://www.dropbox.com/s/1484187802_4.90762e%2B08.raw? dl=0 810zj7pudc66yo3/32784- >1484187802_4.90762e+08.raw?dl= 0
> On Jan 11, 2017, at 12:12 PM, Marcus M?ller <address@hidden> wrote:
>
> 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/babffaa88f54a7fba9b52fc09bda04 <https://gist.github.com/62 babffaa88f54a7fba9b52fc09bda04 >62
>
> 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 <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/ <https://github.com/blob/master/trunk-recorder/ recorders/p25_recorder.cc 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= <https://beta.openmhz.com/587652495833790100186198 wmata?call-id= >587652495833790100186198
>>
>> Here is an example of a bad decode: https://beta.openmhz.com/wmata?call-id= <https://beta.openmhz.com/58765250583379010018619c wmata?call-id= >58765250583379010018619c
>>
>> Any tips would be greatly appreciated!!
>>
>> - Luke
p25_4fsk.grc
Description: Binary data
P25_4FSK_high_SNR.png
Description: PNG image
P25_4FSK_low_SNR.png
Description: PNG image
[Prev in Thread] | Current Thread | [Next in Thread] |