LimeSDR-Mini v2.2 with external clock

Hi,

I am trying to drive two LimeSDR-Mini v2.2 devices synchronously, with the same external clock.
Both sdr boards have R63 removed and R66 soldered.

I am working on 2 scenarios for this:

1. External clock source provided to both SDRs - the clock source is a third, none hardware modified LimeSDR-Mini v2.2, whose 40MHz clock is fed to a splitter and then passed to the synced devices. With oscilloscope we measured the input to the splitter to be ~4V sine wave, and the output ~2V sine wave.

2. One, none hardware modified, SDR provides clock to the second - no splitter in this case

To verify the behavior I use the following GnuRadio 3.8 schematics:


Expected NotExpected

I am not much into the math behind the schematics, but it should be calculating the correlation between the input streams. The correlation peak indicates how many samples is the offset between the two streams. It is proven to work with two HackRF devices, both using external clock (the left graphics, with the peak). Unfortunately it is not working with LimeSDR-Mini v.2.2 (the right graphics).

Could you give some hints, where or what could be wrong with my Lime devices?

I looked at this discussion, https://discourse.myriadrf.org/t/synchronize-two-limesdr, which seemed related to my problem. It was addressing LimeSDR-Mini/USB version1, though. According to it, there should be some update in the FPGA code. But I don’t know if this update is present in the LimeSDR-Mini v2.2. Also I am not sure how to get the versions of the firmware and FPGA code in my devices.

Setup:
CPU Intel(R) Core™ i7-9850H CPU @ 2.60GHz
Ubuntu 20.04
LimeSuiteGUI - manually built, master branch, Version: 22.09.1-g38efe960
GnuRadio 3.8

Some observations:

  1. LimeQickTest fails for the boards with the R63->R66 modification. Before the hardware modification it was passing. The error is in the VCTCXO test.
[ TESTING STARTED ]
->Start time: Thu Apr  6 08:41:00 2023
->LimeSuite version: 22.09.1-g38efe960

Warning: Multiple devices detected, connecting to the first device
->Device: LimeSDR Mini, media=USB 3.0, module=FT601, addr=24607:1027, serial=1D90F63D381ACC, HW=5, GW=2.1
  Serial Number: 1D90F63D381ACC
 Chip temperature: 29 C

[ Clock Network Test ]
->REF clock test
  Test results: 22533; 25315; 28050 - PASSED
->VCTCXO test
  Results : 6711107 (min); 6711108 (max) - FAILED
  FAILED
->Clock Network Test FAILED

[ FPGA EEPROM Test ]
->Read EEPROM
FPGA EEPROM not supported in v2
->FPGA EEPROM Test PASSED

[ LMS7002M Test ]
->Perform Registers Test
->External Reset line test
  Reg 0x20: Write value 0xFFFD, Read value 0xFFFD
  Reg 0x20: value after reset 0x0FFFF
->LMS7002M Test PASSED

[ RF Loopback Test ]
->Configure LMS
->Run Tests (TX_2 -> LNA_W):
  CH0 (SXR=1000.0MHz, SXT=1005.0MHz): Result:(-28.9 dBFS, 5.00 MHz) - PASSED
->Run Tests (TX_1 -> LNA_H):
  CH0 (SXR=2100.0MHz, SXT=2105.0MHz): Result:(-22.4 dBFS, 5.00 MHz) - PASSED
->RF Loopback Test PASSED

=> Board tests FAILED <=

Elapsed time: 1.57 seconds

  1. I am unable to configure external reference clock through LimeUtil. I get the same message in LimeSuiteGUI->Modules->ADF4002->Calculation of R N
:$ LimeUtil --refclk="module=FT601,serial=1D90F5FD139436" --fref=40000000 --fvco=40000000
Enable external reference clock on device 
  Setting fRef: 40MHz, fVco: 40MHz...
Command not supported
Transaction failed!
  1. I am unable to update the devices:
:$ LimeUtil --update
Connected to [LimeSDR Mini [USB 3.0] 1D90F63D381ACC]
ProgramWrite length should be > 0

Programming update failed!

Thank you,
Greetings,

I kept searching, and found limesdr mini external clock command missing · Issue #213 · myriadrf/LimeSuite · GitHub. This explains why I can’t set ext. clock from LimeUtil or LimeSuiteGUI - because LimeSDR-Mini does not have ADF4002 chip.
So I updated gr-limesdr, and called LMS_SetClockFreq(). Unfortunately this change had no effect.

Things just got worse. One of my devices with changed resistors, stopped working. I can not connect to it. I get the following messages from LimeSuiteGUI:

[08:38:14] ERROR: TransferPacket: Read failed (ret=0)
[08:38:14] ERROR: TransferPacket: Read failed (ret=0)

[08:38:18] INFO: Connected Control port: UNKNOWN FW:0 HW:0 Protocol:0 GW:0.0 Ref Clk: -0.00 MHz

LimeQuickTest:

[ TESTING STARTED ]
->Start time: Fri Apr 7 08:41:15 2023
->LimeSuite version: 22.09.1-g38efe960

Warning: Multiple devices detected, connecting to the first device
TransferPacket: Read failed (ret=0)
TransferPacket: Read failed (ret=0)
TransferPacket: Read failed (ret=0)
TransferPacket: Write failed (ret=0)
TransferPacket: Write failed (ret=0)
TransferPacket: Write failed (ret=0)
Board not supported
Failed to connect
libusb: warning [libusb_exit] application left some devices open

Yesterday it was working fine, I was able to connect, I was using it with GQRX to listen FM radio, I was using it fine in GnuRadio, LimeQuickTest was passing (except for the VCTCXO test, probably due to ext. clock usage). In any of these uses, it was connected through a 1m USB3 cable. Today, after I detected the problem, I tried to connect it directly to my laptop, but again it did not work.

Any ideas?

OK, I think I solved all my issues.

Most likely the external clock signal was too weak, that’s why SDR was failing to start. I found a clock distribution board, which outputted stable signal and all worked fine.

Regarding my problem with schematics, for sample delay determination. It turned out that I had to use way more samples for the fft. I had started with 1024, then extended to 65536 the desired peak appeared. The sad thing is that such large fft buffers, mean huge delay between the start of the SDRs. If I calculated it fine, the delay reaches 7ms. Comparing with the other reference system we have, this seems a lot.

Thank you,
Greetings.

Glad to hear that you have main issues resolved. Tagging @Zack in case he has further comment.