# How to measure/estimate symbol rate of a signal with unknown ( but probably QAM ) modulation?

Is it possible to estimate the symbol rate of a signal whose modulation is not know exactly but it can only be guessed that it is probably some kind of QAM (probably 64 or 256).

What is the best way to get an estimate for the symbol rate of a signal of unknown modulation?

For example by feeding the signal through some non-linearity and then looking at it's spectra, should that reveal something about the symbol rate ?

More precisely, I have a 10 MHz wide signal recorded with an SDR at 2.45GHz. It is emitted by a wireless camera.

• The nonlinearity approach that you suggested can indeed be used to detect an unknown symbol rate. I don't know of a great online reference, and the book is pretty expensive, but I would recommend Synchronization Techniques for Digital Receivers if you can find a copy. It is a pretty exhaustive survey of phase/frequency/timing synchronization techniques for single-carrier modulations. Feb 12 '16 at 15:10
• As a quick test, try passing the signal through an absolute value, then looking at its spectrum; you should see a spectral line at the symbol rate. A delay-multiply nonlinearity can also be used as well. Feb 12 '16 at 15:24
• You can also make an educated guess based on the signal's baseband bandwidth $B$. Assuming RRC pulses with roll-off factor $\beta$, the complex symbol rate is $R=2B/(1+\beta)$.
– MBaz
Feb 12 '16 at 22:46
• @MBaz ha! Haven't seen the Carson Bandwidth rule that way around! Feb 13 '16 at 9:04
• @MBaz: How can I estimate beta ? Feb 14 '16 at 6:29

The nonlinear trick is in fact often used to recover the symbol clock of $\frac \pi {2N}$ phase-shifted signals, e.g. BPSK, QPSK: Squaring samples $x[n]$ (or even taking $x^4$) leads to a removal of phase information, and you can then optimize timing with something that is pseudo-derivate based like Müller&Muller.

Now, the problem with QAM is usually that there's no two constellation points with the same phase; so an arbitrary amount of squaring can not reduce the number of phases to 1.

For such signals synchronization is complicated even with exact knowledge of what to expect; it's pretty common to see preamble-correlation based synchronization in receivers. Upside of that is that you can not only get timing, but also a fair amount of CSI that way, which leads to the possibility of equalization.

As a first step, however, some kind of autocorrelation-based detector surely sounds promising: Assuming that with a finite set of constellation points, there's also only finitely many sequences of symbols within the influence of a single pulse shaping filter impulse response, which also means that one might expect the signal to repeat after that amount of time. Hence, a peak on the autocorrelation¹ function of your signal probably signifies the length of $N,\, N\in\mathbb N$ symbols.

With that known, you'd still be on the lookout for $N$; remember that the spectrum of a data-modulated signal is the pulse shape convolved with a diraccomb with an inter-dirac distance of $\frac{1}{f_{symbol}}$. Hoping that symbol timing coincides with the pulse shape filter's time domain roots, you could just look at a sufficiently oversampled signal and count the spectral "peaks"; in reality, this will typically not be as clear.

A few other hints: If the spectral shape is wideband and rectangular, possibly even with a bit of "sincy" sidelobe on either side, it's probably OFDM. That'll make your life a little harder, but: OFDM typically uses cyclic prefixes, which means that you can find the OFDM symbol duration using autocorrelation; since the cyclic prefix needs to be a whole number of subsymbols (IDFT bins), you can narrow down the possible OFDM configurations quite a bit.

¹In fact, any periodicity-based estimator might work; have a look at thegr-specest toolbox. It has some parametric spectrum estimators, of which MTM might be very interesting, here.

• Many thanks for pointing out the auto-correlation, that sounds indeed useful and it did not come to my mind :) - how embarrassing :) Feb 13 '16 at 14:10
• One questions comes to mind, when I do auto-correlation, then should I do some kind of upsampling before doing that ? Currently I sample with 40MPS and it seems that the signal bandwidth is about 9.8 MHz , so the symbol rate should be slightly below 10 Mbaud, so about 3.9 samples per symbol. Hence I wonder if I would need to do some kind of upsampling to be able to see a peak corresponding to 3.9 samples per symbols in the autocorrelation function. I think yes. What do you think ? Feb 13 '16 at 14:15
• Have a look at "fast correlation", as implemented using multiplication in Fourier domain supported by FFTs. By zero-padding, you can increase accuracy; which happens to actually be equivalent to interpolation in time domain. Feb 14 '16 at 17:02