Saleae Logic16 glitched

About a week ago, while using my 12 year old Logic16 (purchased from Little Bird Electronics for AUD$330 on 05 March 2013) using Logic 2.4.29 (which I had just upgraded to) under Windows, it started failing to properly enumerate. This might have been a grounding or USB connection glitch (though both laptop and DUT were referenced to the same ground).

Upon restarting into Linux, I found that it was enumerating as VID 04B4 PID 8613.

After researching a bit, I found this was the VID and PID of the FX2LP USB interface when the eeprom connected to it is corrupt.

Following that research, I grabbed the fx2 pip package and dumped the eeprom, where I found that the first byte was 0x00, and the next 16 bytes were 0x0b. The remainder of the bytes are presumably intact.

To fix at least the VID / PID / Serial, I dug through my old Logic settings and logs to get the serial number, converted that to hex, then re-wrote the proper config / VID / PID / serial (byte-reversed).

However, even with that fix, capture using either Saleae Logic 1.2.40 or 2.4.29 now breaks almost immediately, regardless of whether I’m capturing at 100MHz or 500kHz.

Capturing using sigrok and the Saleae Logic 1.2.10 firmware reliably breaks after between 4.993 and 4.996 seconds (rounded down to the nearest USB packet boundary at lower capture rates) regardless of capture frequency or channel count.

Meanwhile, using sigrok / PulseView with la16fw works fine, with it going well even after 10 minutes.

I know being 12 years old the hardware would no longer be under warranty. I am wondering if the Saleae firmware is treating my device as a fake (which it is not), or if the Saleae firmware is perhaps running into some hardware issue that the alternative firmware evades?

@klightspeed Sorry to hear about your Logic16! You are right in that the VID and PID values were not correct, and should be reporting as per the table below.

It’s interesting to hear you were able to re-flash the EEPROM! My best guess is that our software does not like something with the re-flash.

Although we no longer have the means to repair or replace Gen1 devices (Original Logic and Logic16), we would love to help out in any way we can! Please feel free to write in via our contact form here and mention me (Tim) in your message and I’ll be happy to chat via email to offer ways we can help in this case.

I decided to perform a bit of automation to search the problem space for that presumably corrupted 16th byte (basically using a hub that supports per-port power control to remove power between tries, and checking each value between 00 and ff until I found one where a continuous capture didn’t stop), and seem to have found the correct value for that 16th byte such that it is fully functional again. Logic 2.4.29 under Linux is still going after 10 minutes, where previously it would stop in less than a second.

2 Likes

@klightspeed Oh wow, that’s great to hear! Feel free to contact me anytime in the future in case you need any further support regarding your device.

@klightspeed Thanks for this thread! You encouraged me to take a look into this issue again and I just fixed my Saleae Logic 16 that was dead for over 10 years due to similar EEPROM glitch. I was lucky though, when I dumped EEPROM with fx2tool I found out that only first 8 bytes were corrupted (0xFF), while 8 bytes serial number and 16 bytes secret magic were still there (layout was found on the internet).
Anyway, all I had to do is to put common 8 bytes header c0 a9 21 01 10 00 00 00 back to the eeprom, reconnect and Logic 2 now happily streams all 16 channels for over 15 minutes already.
My main Logic Pro 16 is a part of lab setup, and it is so cool to have old logic16 back for other minor occasional tasks :+1:

P.S. Hello from DownUnder

1 Like

I decided to do a bit of a write-up on it:

1 Like