0
$\begingroup$

I have an RTL-SDR dongle which is tuned to a carrier frequency in my area which corresponds to a P25 radio channel (506.7375MHz).

Using MATLAB's SDRRTLReceiver function, I sample the signal at 240KHz and collect 1 second worth of signal.

I can see the signal on the spectrum analyzer when the radio channel is active: spectrum of SDR signal when radio is transmitting on the channel of interest

And for comparison when the radio is not transmitting: spectrum of SDR signal when radio is not transmitting on the channel of interest

But when I zoom in to the channel (which occupies a 12.5KHz bandwidth), I cannot see the peaks which correspond to the 4 frequencies used in the modulation (-1800, -600, +600, +1800):

zoomed in view of active P25 channel - 8192 point FFT

Am I expected to see the peaks at this point?

I have tried using a larger FFT size for the spectrum analyzer, but it does not reveal the peaks. I have also tried averaging multiple spectra together to no avail.

Anyway, I continue with the time-domain signal and try to demodulate it.

I lowpass the signal to only keep my channel (lowpass 5KHz), and then run it through a polar discriminator which I understand (maybe incorrectly?) is supposed to give me the frequency states.

The signal is a stream of complex numbers, which I delay by one sample, take the conjugate of that, and then multiply with the non-delayed data. The arg (angle) of this resulting vector stream should correspond to the frequency state of the modulation.

When I plot that, I get the following:

output of polar discriminator run on the channel-filtered data

But I think this is already incorrect.

What am I doing wrong? I know there are other ways to demodulate the FSK data, can someone suggest something please?

$\endgroup$
7
  • 1
    $\begingroup$ Can you share your signal record? $\endgroup$
    – gotchi85
    Jul 13 at 7:12
  • $\begingroup$ Usually you have peaks for fsk on spectrum if modulated bits are a pattern or biphase $\endgroup$
    – gotchi85
    Jul 13 at 9:35
  • 1
    $\begingroup$ What is the bitrate? $\endgroup$
    – gotchi85
    Jul 13 at 9:35
  • 1
    $\begingroup$ Your lowpass filter, it is a FIR or IIR? $\endgroup$
    – gotchi85
    Jul 13 at 9:38
  • $\begingroup$ Hi @gotchi85 thank you for your comments, Sure I can share the signal record, here it is -- github.com/mike6789/signal/blob/main/outsp.txt $\endgroup$ Jul 13 at 15:31

2 Answers 2

0
$\begingroup$

Jonnii here. Also I was thinking it could be something as simple as the coax being defective. Coaxes if frayed or kinked will definitely start failing or the shield is not grounded.

$\endgroup$
0
$\begingroup$

The OP mentioned in comments that the symbol rate is 4800 sym/sec but the symbols are only separated by 1200 Hz (-1800 Hz, -600 Hz, +600 Hz and +1800 Hz). This would lead to significant inter-symbol interference that would complicate demodulation. The minimum frequency separation to maintain orthogonality between the symbols is $\frac{1}{2T_s}$ or 2400 Hz. Alternatively, the maximum symbol rate for the given minimum separation of 1200 Hz is 2400 sym/sec.

I recommend either reducing the symbol rate or increasing the frequency separation of the symbols to comply with this minimum requirement.

Once done, demodulation can be accomplished from the unwrapped phase versus time trajectory of the signal, once carrier offset is properly removed. A training sequence would facilitate proper removal of carrier offsets, otherwise if equiprobable data can be reasonably assumed, the resulting linear fit of phase slope versus time that the offset would produce can be removed. In the case of higher SNR, the four phase trajectories together with any offset would be clearly visible and carrier removal could be accomplished by inspection.

$\endgroup$
4
  • $\begingroup$ OP doesn't really have control over the APCO Project 25 waveform he is receiving over the air. project25.org $\endgroup$
    – Andy Walls
    Jul 15 at 21:33
  • $\begingroup$ @AndyWalls is my thinking off track? $\endgroup$ Jul 15 at 21:35
  • 1
    $\begingroup$ IIRC, APCO P25 uses RRC filters. So you are correct, there is intentional ISI. OP just has no control over what got transmitted to him, so no changing the frequency spacing, etc. $\endgroup$
    – Andy Walls
    Jul 15 at 21:46
  • $\begingroup$ Is OP using the right parameters (frequency bins, etc.) for the P25 waveform he has received? I don't know. I'm assuming he read the specifications properly. $\endgroup$
    – Andy Walls
    Jul 15 at 21:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.