LimeSDR XTRX unstable RX with LimeSuiteNG/SoapySDR

I am developing a BPSK receiver in C using LimeSuiteNG with the SoapySDR API.

On a Raspberry Pi 5 with a LimeSDR Mini v2.4, the receiver works well. It can track the signal stably and decode the packet successfully. However, when I use the same code with a LimeSDR XTRX v1.2 connected through a PCIe HAT, the result is different. The receiver still appears to track the signal, but the received signal power is unstable, and it never achieves data-bit lock.

Both devices are using the latest v3.5 gateware, and both LimeSuiteNG and SoapySDR were built from the latest source.

Before creating the stream, I initialize the device through SoapySDR in this order:

  • SoapySDRDevice_setSampleRate
  • SoapySDRDevice_setAntenna
  • SoapySDRDevice_setFrequency
  • SoapySDRDevice_setBandwidth
  • SoapySDRDevice_setGain

Are there any additional initialization steps or device-specific settings required for LimeSDR XTRX? Also, are there known behavioral differences between LimeSDR Mini 2 and XTRX when used through LimeSuiteNG/SoapySDR?