I use GNURadio as a prototyping tool to build a receiver for a digital signal of a home appliance. The signal itself looks good so far.

source signal

Also the symbol synchronization works well using the symbol sync block (and a dsp library in the result application):

sync block

However, both synchronizers (GNURadio and DSP library) have problems with data packets that follow other packets closely. Sometimes every second or third one is out of sync completely with the source data being of the same quality and amplitude.

result1 result2

Is there something I can change to prevent this? I already tried to change all parameters of the sync block, but no success so far.


There are two types of symbol synchronizers:

  1. One shot synchronizers (feed-forward methods by using ML rule, or pilot-assisted techniques)
  2. Snycronizers with feedback loops (TED, Gardner, etc.)

As far as I see, the packets that you captured are quite short and you are using a snyc algorithm with feedback. Feedback algorithms (or circuits) requires a sattle time to be locked in. After they are locked, they tolerant to impairments. On the other hand, in your case, there is no opportunity for you to use a feedback algorithm since the duration of the packets are quite short. Secondly, if your received signal is in the form of a nonlinear modulation, some of the algorithms (esspecially feedback ones, utilizing zero-crossing) do not work properly. I recommend the article given below as a starting point for implementing your own synch block:

Oerder and H. Meyr, "Digital filter and square timing recovery," in IEEE

  • $\begingroup$ Thank you! I will have a look into the article! $\endgroup$ Sep 22 '21 at 15:46

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.