16-APSK NDA Carrier Synchronization Problem I'm working on a DVB-S2 Symbol Timing + Carrier Synchronizer with a focus on 16-APSK | 32-APSK modulation Scheme.
I understand that the first section could be achieved using a Polyphase Clock Sync approach (i.e. as implemented in GNURadio), the second functions is usually done using a Costas loops
(i.e. in the simple case of M-PSK modulation scheme)
Moreover, The Costas Loop used for carrier synchronization are designed to only accommodate PSK modulations. As such, a Costas loop used on any of the APSK modulations, may try to lock on to any of the PSK modulations corresponding to any of the constellation rings, each of which is a PSK constellation in itself. For example, for 32-APSK, a Costas loop may try to lock on to the 4 points in the inner ring, the 12 points in the middle ring, or the 16 points in the outer ring. The result will be an overall failure to achieve any reasonable carrier synchronization lock (figure represent the output of a 4-order Costas Loop after the Polyphase Clock Sync Scheme)

I'm interested in understanding the NDA or NDA-DD signal processing scheme behind and if there's some implementation for GNURadio environment.
Symbol timing and carrier synchronization are two separate &quot;tasks&quot; in a demodulator.
There is lot of literrature on the internet to understand synchronization on a DVB-S2 signal.
But not sure that GNU Radio has the good ready block for it.
For symbol timing synchronization, there is Gardner timing error detector that suits well for QPSK modulation. An adapted version of it for 16APSK and 32APSK in a second order control loop could do the job.
For carrier synchronization, if you try to look at the 16APSK and 32APSK in polar representation (the constellation), the angle value modulo a constant gives you a phase error. Also in a second order control loop you can track the carrier this way. The modulo constant depends on the order of the modulation scheme you use. That is probably also why the one in GNU Radio may not work.
What I described before is called fine synchronization. Which means that it can be not enough to lock on large offsets.
You also need a coarse synchronization to help the fine one to lock. Depends on your requirements.
I hope this helps