LimeSDR dead, flashing does not help

Hi,

Suddenly my LimeSDR started giving me the dreaded Gateware version mismatch:

Gateware version mismatch!
Expected gateware version 2, revision 12
But found version 0, revision 0
Follow the FW and FPGA upgrade instructions:
http://wiki.myriadrf.org/Lime_Suite#Flashing_images
Or run update on the command line: LimeUtil --update

Nothing what I do with flashing (–update or manual) seems to solve the problem.
Read several posts, tried USB3 vs USB2, extra power etc.
Nothing seems to help.

I went from 2 rev 14 to rev 12. All I get back is version 0, revision 0.

Could it be that the FPGA or the bitstream EEPROM is dead?
Anything else I could try?

Thanks,

Job
PH4AS

Try another USB cable.

I did. Should have mentioned. It I tried multiple cables, multiple PCs.
LimeUtil --update always completes successfully.

Does it also verify what it wrote?

Ok, have progressed a bit further, but it is still very confusing.

What I found is that an installation of LimeSuite 17.06 with FW 1.3 and gateware 2.8 flashes correctly with all cables and with or without external supply. That was the good news. No broken hardware it seems.

But the LimeSuite 17.12 and 18.01 I had which use FW 1.4 and gateware 2.12 behave quite differently.
With a quality USB3 cable and external power it sometimes flashes correctly.
With the delivered split USB3 and USB power cable it never works anymore. However, it used to work fine.

What happens is the FW always succeeds and is detected correctly, but gateware always returns 0/0.
I have also seen it being properly flashed (check with LimeUtil --make) but then loose it when swapping cables.
As if it is only in RAM. Or loaded in FPGA, but not flash.

I tested flashing with LimeSuiteGUI vs LimeUtil and seemed to detect a difference, but could not reproduce. In the end it all failed with FW1.4 and gateware 2.12. Thus with all cables and optional external power supply (12V).

What could be the reason?
The only times I saw FW 1.4 work now is with external power supply.
Could it be with FW 1.4 it is drawing more power?
Have more people seen problems with newer versions of LimeSuite and FW 1.4?

Yes, same here, older version works better.

FW 1.3 GW 2.6 is the most stable one.
FW 1.3 GW 2.8 works for most of the time, but sometimes also show version 0 revision 0.

FW 1.4 GW 2.12 barely work.

Same for me. My board worked ok in the past with old GW. Newest sometimes flashed but most of times showed version 0 revision 0 and did not work. Back to old - works again. My friend’s board works fine on the same setup same cables etc with both old and new GW. With some more digging I reached to conclusion that the problem is with FX3 usb connection. My board caused many error on loopback test (while my friend’s caused only sporadic error).
Also problem was more severe when board was cold (room temperature). When board warmed up due to self heating problem was less severe.
As of right now I did send my board to Lime Micro. Still waiting for response.

Maybe older versions were less prone to usb communication errors.

Test I mentioned:

Hi, thanks for mentioning this. I missed the topic.

Will investigate some more and I hope LimeSDR people can shed some light on this.

Well I can confirm it is an issue with the FX firmware.

Again I went back and tested between LimeSuite 7.12 and 7.06.
I’m using a fairly long (3m) quality (expensive) USB3 cable and an external power supply.

When I flash FW 1.3 / GW 2.8 all is fine.

Estimated reference clock 30.7196 MHz
Reference clock 30.720 MHz
  Device name: LimeSDR-USB
  Expansion name: UNSUPPORTED
  Firmware version: 3
  Hardware version: 4
  Protocol version: 1
  Gateware version: 2
  Gateware revision: 8
  Gateware target: LimeSDR-USB
  Serial number: 0x9060b00543114
  Free connection... OK

Then I just reflash FW 1.4 from the 7.12:

LimeUtil --fw=/usr/share/LimeSuite/images/17.12/LimeSDR-USB_HW_1.4_r4.0.img

Then I loose the data from the gateware:

  Device name: LimeSDR-USB
  Expansion name: UNSUPPORTED
  Firmware version: 4
  Hardware version: 4
  Protocol version: 1
  Gateware version: 0
  Gateware revision: 0
  Gateware target: UNKNOWN
  Serial number: 0x9060b00543114
  Free connection... OK

When I flash FW1.3 again with

LimeUtil --fw=/usr/share/LimeSuite/images/17.12/LimeSDR-USB_HW_1.3_r3.0.img

Everything is back to normal! So the Gateware was fine all the time. It is just the FX3 that is unable to communicate apparently.

I also noticed that apparently FW1.4 brings speed improvements as this is what the LimeUtil --timing shows:

FW1.3:

Timing basic operations:
  >>> SPI write register:	127.813 us
  >>> SPI read register:	128.391 us
  >>> TSP NCO setting:		899.124 us
  >>> RFE gain setting:		127.471 us
  >>> TRF gain setting:		255.421 us
Timing tuning operations:
  >>> CGEN PLL tuning:		9.16322 ms
  >>> RF PLL tuning:		16.8677 ms

And FW1.4:

Timing basic operations:
  >>> SPI write register:	80.0478 us
  >>> SPI read register:	79.9844 us
  >>> TSP NCO setting:		401.31 us
  >>> RFE gain setting:		80.1003 us
  >>> TRF gain setting:		159.992 us

Timing tuning operations:
  >>> CGEN PLL tuning:		1.21116 ms
  >>> RF PLL tuning:		3.89895 ms

Can someone from LimeSDR confirm there are possible issues here?
As still this used to work with FW1.4 and now it fails permanently.
Can something have degraded?

Did you try loopback test?

No not yet. But looking at the commits on the FX3 it is even more confusing.
There are hardly any changes

I’m inclined to try and see what the clock edge change does.

GPIF is interface between FPGA and FX3. The loopback test test connection PC-FX3 only. It is what seems to be the problem in my case.

The cypress forum topic is an interesting find. Seems like that had some serious issues with performance.
I’m on a Linux host so not so easy to test the loopback. Will see if I can build a new FX3 FW from github.

Ugh. Ignore this post.
I realized I only checked my fix against GW 2.8. It cannot see GW 2.12. Which I assume is because the clock edge is also impacted at the FPGA side. This shows also FX3 related changes:

My old post:

Ok, that was a pain to compile under Linux as the LimeSDR-USB_FX3 project apparently was done under Windows.

However, it confirms my suspicion: when I change the clock edge back to Negative I’m fine again also with FW4.
(also note: I’m still using the same 3m long USB3 cable, but now I can even flash it without any external power supply on the same port!)

Still think LimeSDR people should assess this and decide what to do. I will be using my own version for now.

diff --git a/LimeSDR-GPIF_32bit.cydsn/cyfxgpif2config.h b/LimeSDR-GPIF_32bit.cydsn/cyfxgpif2config.h
index c0ed6dd..72879c7 100644
--- a/LimeSDR-GPIF_32bit.cydsn/cyfxgpif2config.h
+++ b/LimeSDR-GPIF_32bit.cydsn/cyfxgpif2config.h
@@ -82,7 +82,7 @@ uint8_t CyFxGpifWavedataPosition[]  = {
    GPIF II configuration register values.
  */
 uint32_t CyFxGpifRegValue[]  = {
-    0x800003B0,  /*  CY_U3P_PIB_GPIF_CONFIG */
+    0x800003B8,  /*  CY_U3P_PIB_GPIF_CONFIG */
     0x000010AC,  /*  CY_U3P_PIB_GPIF_BUS_CONFIG */
     0x01070002,  /*  CY_U3P_PIB_GPIF_BUS_CONFIG2 */
     0x00000044,  /*  CY_U3P_PIB_GPIF_AD_CONFIG */
diff --git a/LimeSDR-GPIF_32bit.cydsn/projectfiles/gpif2model.xml b/LimeSDR-GPIF_32bit.cydsn/projectfiles/gpif2model.xml
index a63e0f6..9f78a9f 100644
--- a/LimeSDR-GPIF_32bit.cydsn/projectfiles/gpif2model.xml
+++ b/LimeSDR-GPIF_32bit.cydsn/projectfiles/gpif2model.xml
@@ -10,7 +10,7 @@
       <InterfaceType>Slave</InterfaceType>
       <CommunicationType>Synchronous</CommunicationType>
       <ClockSource>Internal</ClockSource>
-      <ClockEdge>Positive</ClockEdge>
+      <ClockEdge>Negative</ClockEdge>
       <Endianness>LittleEndian</Endianness>
       <DataBusWidth>Bit32</DataBusWidth>
       <AddressBuswidth>2</AddressBuswidth>
@@ -168,4 +168,4 @@
     <Transition ElementId="TRANSITION14" SourceState="STATE0" DestinationState="STATE5" Equation="SLWR&amp;!SLCS&amp;!PKEND&amp;SLRD" />
     <Transition ElementId="TRANSITION15" SourceState="STATE0" DestinationState="STATE1" Equation="SLWR&amp;!SLCS&amp;PKEND&amp;SLRD" />
   </StateMachine>
-</GPIFIIModel>
\ No newline at end of file
+</GPIFIIModel>

Hi @ph4as,

It looks like you are using very old gateware - the latest is 2.22. Could you use the latest LimeSuite and update your board, please.

Hi Zack,

I tried a new version about a month ago and that still failed in the same way.
Maybe later today I will try the most recent, but I have little hope. It seemed quite clearly to be related to the FW1.3 -> FW1.4 update.

Hi @ph4as,

Firmware needs to be the latest as well. Just make automatic update using the latest LimeSuite and it will flash required FW as well as GW.

Hi Zack,

Good news! I updated the firmware and gateware again to the latest (2.22, now on Ubuntu 20.04) and it works again! I was able to use it using gr-limesdr. Not over UHD or Soapy for some reason or other, but that can be a zillion things. No complaints of any gateware version mismatch.

Note I’m still using the same laptop, same cables etc. as at the time. Power is just over the USB Y-cable.

I have tried several times over the past years and every time it reproducibly failed. So I’m not sure when the fix was introduced, but I guess no need to bother figuring that out.

1 Like