How to remove the modulation before doing frequency offset estimation?
For lower-cardinality PSKs like the QPSK, the &quot;classical&quot; way is to
take the signal to the $M$th power, $M$ being the number of constellation points.
From the shape of an $M$-PSK modulation, it's clear that the constellation points are $e^{j2\pi \frac mM},\, m =0,1,\ldots,M-1$, and putting that to $M$th power yields
$${\left(e^{j2\pi \frac mM}\right)}^M=e^{j2\pi m}=e^0=1,$$
due to the $2\pi$-periodicity of the complex exponential.
There you go, undergrad textbook-level data removal :)
Since your frequency offset is but a multiplied $e^{j2\pi f_\text{offset}t}$, you get a constant tone at $M$ times the offset frequency after.
Small problem: you don't have only signal, you do have noise in your received signal, which gets put to the $M$th power, too, and also intermodulated with the signal (you're converting nice additive noise to multiplicative noise). That typically drastically reduces your SNR – you don't get the most efficient frequency estimator that way. I'd advise against this whole approach!
The typical way to counter frequency offset in benign-sized modulation is to do a second-order PLL with loop filter tuned to the symbol rates you're expecting.
Add in that you'll of course have Gray mapping and forward error correcting codes, and that you can thus use your corrected decisions to refine your frequency error estimate, and you'll quickly see how undesirable &quot;deleting&quot; the info through nonlinear means (which are the only means to do that) is. For BPSK, the squaring approach is commonly done (because you'd want to do something similar to recover the timing, not only the frequency error, anyways), as it's low-complexity.
A second-order PLL works relatively well (even abused for QAM) until your constellation becomes large, where the probability that your PLL either &quot;swallows&quot; a legit symbol transition or misinterprets noise become problematic.
As everywhere, the synchronization of larger PSKs quickly becomes very system-specific and usually reflects the assumptions made on the channel. For example, if you have a satellite channel with substantial Doppler, and Doppler rate, but with low phase pertubations other than that, periodically sending a synchronization-aiding words from a smaller PSK might be a very good tradeoff in terms of complexity, robustness and data rate loss.