# Re: OP25 FSK4 Demodulator Error

**URL:** <https://www.ruby-forum.com/t/re-op25-fsk4-demodulator-error/234362>\
**Category:** GNU Radio\
**Created:** [February 26, 2015, 6:42pm UTC](https://www.ruby-forum.com/t/re-op25-fsk4-demodulator-error/234362 "2015-02-26T18:42:20Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [February 26, 2015, 6:42pm UTC](https://www.ruby-forum.com/t/re-op25-fsk4-demodulator-error/234362/1 "2015-02-26T18:42:20Z")

</div>

Hi, Before I start working on Op25 I want to know what kind of  
demodulator  
detector is op25 using? Correlation filters or frequency discriminator  
(quadrature demod) ? Which algos for symbol timing and frequency offset,  
Equalization?

–  
Bob

---

<div class="post-metadata">

**Author:** ![bob\_wole](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/b4bc9f/32.png) [@bob\_wole](https://www.ruby-forum.com/u/bob_wole)\
**Post date:** [February 26, 2015, 8:41pm UTC](https://www.ruby-forum.com/t/re-op25-fsk4-demodulator-error/234362/2 "2015-02-26T20:41:25Z")

</div>

Hi Bob

```
 On Thursday, February 26, 2015 12:40 PM, bob wole 

```

[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi, Before I start working on Op25 I want to know what kind of  
> demodulator detector is op25\> using? Correlation filters or frequency  
> discriminator (quadrature demod) ? Which algos\> for symbol timing and  
> frequency offset, Equalization?  
> Any given P25 system might use one of two different, quasi-compatible  
> modulation families: so-called “C4FM” and “CQPSK”. In practice we’ve  
> yet to find a single receiver algo that optimally receives both these  
> two different modulation types; accordingly, there are two different  
> user-selectable demodulator chains in OP25.  
> C4FM is conventional 4-level FSK at 4800 baud. The OP25 demodulator for  
> this flavor consists of an FM demodulator [quadrature\_demod\_cf(), or  
> often just a piece of hardware tapped after the FM discriminator stage]  
> feeding into Frank’s FSK4 demod block for GNU Radio which is detailed  
> here:  
> [https://sites.google.com/site/radiorausch/GnuradioFourLevelFSK.html](https://sites.google.com/site/radiorausch/GnuradioFourLevelFSK.html)  
> CQPSK is a variation of PI/4 DQPSK in which the transmitter power is  
> not constant (as it would be with C4FM). In CQPSK the carrier amplitude  
> may be reduced to virtually zero halfway between each successive data  
> symbol. OP25 uses an analog Costas/Gardner loop followed by a  
> differential demodulator for this modulation format. Here is a page I  
> put together some time back with some more technical info about the  
> waveform

[http://www.lightlink.com/mhp/demod/](http://www.lightlink.com/mhp/demod/)

As to your question about equalization, that’s a very interesting  
question and it’s one of the things that would be very nice to add (in a  
world where infinite time existed, it might already be). One of the  
complications with this is the use of P25 “LSM” simulcast, in which the  
same signal is sent over multiple transmitters at the same time. This  
makes it very challenging to come up with a plausible-looking model for  
the channel. In addition, we suspect that some flavors of LSM contain a  
slow signalling side channel that appears to be used for dynamic  
equalization training, but it’s undocumented and proprietary…  
Max
