[SOLVED] Difficulties during decoding of NRF24L01+ protocol with LimeSDR

I’m trying to decode NRF24L01+ protocol using LimeSDR and GNU Radio. I’ve wrote a little sketch and uploaded it to Arduino:

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9, 10);

const uint64_t addresses[] = { 0xAF1510009001LL, 0xAF1510009002LL };

void setup(void)


void loop(void)
  uint8_t state[] = { 0x11, 0x22, 0x33, 0x44 };
  radio.write( &state, sizeof(state) );

Afterwards I’ve recorded the transmission using LimeSDR and Gqrx. The program uses channel 108 which corresponds to 2508 Mhz. Here is how the signal looks like in Inspectrum:

The datasheet says that NRF24L01+ uses GFSK modulation. I believe what I see here are 16 bytes of the package: sender address, receiver address and the payload, every byte is GFSK-modulated.

Unfortunately I didn’t manage to convert it to ones and zeroes despite of the existence of many corresponding tutorials (e.g. one, two and three, the last one - in Russian). At this point my GNU Radio project looks like this, but I’ve tried many alternative approaches as well:

I believe the problem is that for some reason the signal’s frequency shifts a little bit for every byte so Quadrature Demod can’t slice it properly. However I’m new to SDR and I could be completely wrong.

Could you please give me a little piece of advice on how to proceed further?

OK, I’ve decided to run a loopback test according to this article and realized that my FFT plot on step 3.7 looks very different:

Also LimeSuiteGUI complained about firmware version. After upgrading the firmware FFT plot is OK and the issue described in this topic is gone:

And here are my ones and zeroes:

Lesson learned - running a loopback test on a brand new LimeSDR is non-optional.