Replaced HF-modified LimeSDR board is also damaged

I did some further testing today and found very interesting relationship. At first, let’s define “stable” and “unstable” state of the device:

def. “stable state” = state at which device may be probed (with “SoapySDRUtil --probe” command) two times in a row without throwing a single error (make sure that USB plug is not plugged out between these calls).

def. “unstable state” = state at which device is not in a stable state (i.e. it thowed at least one error during procedure mentioned above).

As I wrote before, it looks like if the device is in stable state, it stays here as long as I don’t pull out the USB plug. But if I will pull it out, it may recover and go into stable state again, or may fall into unstable state. I wanted to check if there is some relationship between the time of keeping the device unpowered and chances that it will fall into unstable state. So I did some testing according to following algorithm:

  1. Determine maximum number of runs Nruns_max and time Toff of powering off the device.
  2. Initialize Nunstable and Nruns counters with zeros.
  3. Put the device into “stable state” by updating it with “LimeUtil --update” command in a loop (usually 1-3 iterations are enough).
  4. Unplug the USB plug.
  5. Wait Toff seconds.
  6. Plug in the USB plug.
  7. Increase Nruns.
  8. Run “SoapySDRUtil --probe” command twice and look for errors (i.e. check if device is in a stable or unstable state). If at least one error was found, increase the value of Nunstable counter.
  9. If Nruns==Nruns_max, go to step 10. Otherwise, if errors were found in step 8, go to step 3. If no errors were found in step 8, go to step 4.
  10. Estimate the probability Punstable that the device will fall into unstable state as (Nunstable/Nruns)*100% and end the test.

Here are some results:
Toff=5 seconds: Punstable=(4/20)*100%=20%
Toff=10 seconds: Punstable=(12/20)*100%=60%
Toff=20 seconds: Punstable=(19/20)*100%=95%
Toff=60 seconds: Punstable=(10/10)*100%=100%

So I have found obvious relationship between time of keeping the device unpowered and probability that it will fall into unstable state. @Zack, @IgnasJ, does it ring a bell to you? If not, could you tell me where are initialization-related time constraints (such as length of a pause after FPGA reset) kept in a source code for “big” LimeSDR board? I would be happy to recompile LimeSuite with their different values, so I could check whether it helps at all or not.

P.S. I have tested it with the most recent “RestructureLimeSuite” branch, as it shows more errors than the “master” branch.