I have created a flowgraph, based on an example of Michael Ossmann, which takes in a signal, and should output bits.

I need to use the clock recovery MM block, which I do not fully understand yet. However, after reading some blogposts, I am quite sure that I can leave most of the settings default, except for the Omega one. Here's my flowgraph:


When running this flowgraph, it gives me the following error:

thread[thread-per-block[5]:<block clock_recovery_mm_ff (9)>]: mmse_fir_interpolator_ff: imu out of bounds.

While searching, I stumbled upon this piece of code in the source of GnuRadio:

int imu = (int)rint(mu * NSTEPS);   
  if((imu < 0) || (imu > NSTEPS)) { 
    throw std::runtime_error("mmse_fir_interpolator_ff: imu out of bounds.\n"); 

So, I suspect it is not due to my Omega setting (which might be wrong, I have to play with that setting), but that it is due to my Mu setting, which is just the default (0.5). However, I understand that Mu needs to be between 0 and 1, so I do not really understand what the problem is. Anyone who does?

Environment details:

  • GNU Radio Companion
  • Running a GNU Radio live DVD in a virtual machine (VirtualBox 4.2.12) on Windows 7.
  • Using Volk machine: ssse3_64
  • $\begingroup$ I'd recommend closing this here, since this discussions on the GNU Radio mailing list advanced quite a bit. $\endgroup$ Sep 6 '15 at 20:39
  • $\begingroup$ My initial error still persists (see my last comment there), even after having implemented the hints provided by the replies on that thread. $\endgroup$
    – Michael
    Sep 7 '15 at 4:41
  • $\begingroup$ I know, and it's been sitting on my "as soon as I have time, let's look at this" list for far too long... $\endgroup$ Sep 7 '15 at 7:49
  • $\begingroup$ Why should it be closed then? $\endgroup$
    – Michael
    Sep 7 '15 at 12:14
  • $\begingroup$ The approach was that you're more likely to get good replies if people could concentrate on one forum. I can fully understand if you don't agree with that, so that's why I humbly recommended closing it :) don't worry, I won't stop replying to you on either forum! $\endgroup$ Sep 7 '15 at 15:52

The M&M clock recovery block has a bug in it, such that it can't reliably handle more than 8 samples per symbol without inadvertently dropping samples. That interpolating resampler alignment bug may also be responsible for generating mu values outside of [0.0, 1.0].

I'd strongly recommend, downsampling the input from 2.5ksamples/symbol down to 6 or 8 samples /symbol before the M&M block.


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.