Few weeks ago there was an article on Hack A day describing how a Chinese clone Saleae could be used as a USBee. It got me pretty excited because ive always wanted to get my hands on that logic analyser. However the $150 cost has kept me at bay. Aliexpress has these clones for sale but shipping to India is almost $15, I stumbled upon a CY7C68013A development board that the seller says can be used as a logic analyser not Saleae. The board is sold as an lcsoft development board, so technically it does not violate any terms.
The bad part however is that the new Logic Software for Saleae employs a method to detect these boards. The error that appears is:
Error: LogicAnalyzerDevice::ReadEeprom failed after 3 tries.
After hours and hours of experimentation I found that the EEPROM is at fault. This happens because the device repeatedly tries to read the EEPROM thrice, if the EEPROM is slow, in case of clones it is. An error is generated. The solution is to replace the EEPROM with a quicker one. First step is to desolder the smd AT24c128 and replace it.
The new EEPROM can be soldered on a seperate board in case its not SMD, just as in my case. The SCL and SDA wires can be obtained from the pin header. Configuration for A0 A1 and A2 are:
A0 – +3.3v
A1 – GND
A2 – GND
A3 – GND
I can not say what eeproms will work, its a case of trial and error. I had a few 24c16 from Atmel to hand which seemed to do the trick. The new EEPROM must however be written with the correct VID and PID of the logic analyser in the first 8 bytes as explained here. This can be done easily with a tool like the PIC Kit2 or the JDM eeprom programmer.
Finally a few shots of the memory bank and input board. I used a series resistor and clamping diodes to protect the board from over voltage mishaps.

The top is a messy because I learnt the hard way, EEPROMs address bits will not let me switch. Used the Data line to switch between them. USBee and Saleae are now selectable!
Clamp Circuit:
All housed and ready:

If you think this isn’t for you, buy the real product if you can afford it. http://www.saleae.com/home/




January 12th, 2012 on 6:51 am
Did you really measure the eeprom is too slow or is this more an educated guess based on the error message ? Is it accessed with a too high I2C clock rate or what else is too slow ?
My first guess was they just detect that the eeprom is larger than the eeprom used on the Saleae board.
February 4th, 2012 on 12:32 pm
Well I did not measure the timings but I tried various EEPROMS, a 24c16 from ST does not work whereas one from Atmel works. Some people confirm that their boards work as it is with the 24C128.
March 8th, 2012 on 11:13 am
Thanks for the post, it helped me try out Saleae’s software on my dev board (the same LCSoft-branded board as pictured). I used Saleae 1.1.15, an AT24C04 hooked to the SCL and SDA headers, and no desoldering, just leaving jumper J1 on. I’m not really comfortable using Saleae’s software without paying for it, but it was a fun exercise.
I don’t think the I2C speed of the EEPROM is the problem, having looked at a photo of the inside of a real Saleae. The real thing has a Microchip 24LC00 (as U1, marked M0AS), which supports 100kHz at 2.5V+ and 400kHz at 4.5V+ (the Saleae is at 3.3V). The AT24C128 supports 100kHz at 1.8V+, 400kHz at 2.5V+ and 1MHz at 5V+. So the AT24C128 supports the same speeds or higher as the real thing. It’s not like they can check for lack of support for a speed in the real thing either, since those are minimums and it’s always possible an especially good batch of genuine EEPROMs will be able to manage 400kHz at 3.3V.
I also hooked up a BusPirate and sniffed the I2C traffic on loading the Saleae software, it was accessing 0xA0, or entering an endless loop to try to access 0xA0 when 0xA0 wasn’t available, and I think it was all occuring at 100kHz but I’m not sure if the BusPirate will also sniff 400kHz traffic while in 100kHz mode.
I’m pretty sure the key is in the difference between EEPROMs with 8-bit memory addressing (24C00-24C16) and ones with 16-bit memory addressing (24C32-24C256+). The CY7C68013A can use either kind as a boot rom, but it requires that EEPROMs with 8-bit addressing be located at 0xA0 on the I2C bus, and ones with 16-bit addressing be located at 0xA2 if they’re to be used as a boot rom. Check out the EZ-USB Technical Reference Manual (on Cypress’ site) in section 3.2 “EZ-USB Startup Modes” and section 13.6 “EEPROM Boot Loader”.
The Saleae’s 24C00 is 8-bit, and therefore must be located at 0xA0 to be enabled as a boot ROM. The Saleae drivers check that this is the case, and when they “ReadEeprom” they really are trying to read an EEPROM at 0xA0, and checking that it responds to an 8-bit address request. I hooked up a Bus Pirate to sniff, and this is what’s happening, and it’s at 100kHz too (I think).
The dev board has a 16-bit 24C128, so if you use it as a boot rom it must be located at 0xA2 and the driver won’t find anything at 0xA0 when it checks. There’s a jumper (J1) which lets you move it between 0xA0 and 0xA2, but it must be at 0xA2 (jumper on) for the CY7C68013A to use it as the boot rom (and read the Saleae VID and PID off of), and even if you move it to 0xA0 (jumper off) after windows has added the device but before Saleae checks it, the Saleae drivers will still notice it’s a 16-bit EEPROM, not an 8-bit one (it won’t respond to 8-bit reads). The jumper is useful if you want to use it as a real development board, though, since it lets you move the eeprom to 0xA0 and boot the device as a default cypress device while still being able to use the CyConsole software to reprogram the EEPROM (at 0xA0) with no outside programmer needed. Then you put the jumper back on and hit reset and it boots off the reprogrammed EEPROM. But it doesn’t help with trying to clone a Saleae.
What you have done by adding the 24C16 is make an 8-bit EEPROM be located at 0xA0 (regardless of what you do with the A0 pin. None of the 24C16′s address pins are actually connected inside, you can’t change its I2C address because it already is using all available I2C EEPROM addresses to make all of its memory available in 8-bit form). I’m not sure why you didn’t get the ST -16 to work, though an old datasheet I found online suggests that it has write protect pins instead of address pins, so maybe you were write protecting it? Or maybe there is more than just the 8-bit, at 0xA0, requirement.
It’s not actually necessary to desolder the existing 24C128, BTW. If you leave the J1 jumper on, the 24C128 is at 0xA2, leaving the 0xA0 address available and unconflicted for you to add any 8-bit EEPROM to the SCL and SDA lines. The CY7C68013A seems to boot from 0xA0 first, if available, so you can even use a multiple-address 8-bit EEPROM like the -16 which has secondary addresses that conflict with the -128. The secondary address won’t be usable by either chip anymore, but that’s ok because 0xA0 is all that the Cypress needs to boot and all that the Saleae needs to check.
I suppose a later version of the Saleae drivers will do a check on the actual size of EEPROM available, to make sure it’s no bigger than the 128-bit 24LC00 chip they’re using (unless they use multiple size EEPROMs based on cost at time of manufacture), and it might also check that no other I2C EEPROM addresses respond. They might also want to check the REVID register on the CY7C68013A, since I bet a lot of these ebay CY7C68013″A” development boards have an old CY7C68013 which has been sanded down, blacktopped, and relabelled as an -A revision. Of course, reading Saleae’s blog it sounds like they might have a problem with counterfeit chips sneaking into even the genuine products.
March 9th, 2012 on 11:37 am
I think you have nailed it!
This is the reason why some EEPROMs work and some don’t. I was confused about the 8/16 bit addressing thing. If it was just programmed for just either of these, it would not work. I did download few high res images of clone Saleae and they do have this variation. The reason why the 24c16 did not work is because it is a very old eeprom and is not capable of working below 4.5 volts. I read about counterfeit parts on Salea’s website too, it is a shame. I hope the developer does not read about your comments on how to detect EEPROMS or else we will no longer be able to use our devices.
Thank you once again, with your suggestions many will be able to use any dev board as a Saleae. I myself don’t feel comfortable using the software for free, specially after looking at what it is capable of. A lot of hard work has gone into the Software. In fact this tool is on the top of my ‘to buy’ list as soon as I make some money using my next project.
March 18th, 2012 on 5:32 pm
Hi Guys,
thanks for this interesting artikle.
I had the same Problem yesterday and i was really
confused because i knew that i had the clone running
some month before. Unfortunately i did a Softwareupdate
inbetween and the problem arrived.
finally i swapped the eeprom to a Microchip Technology Inc. 24AA01/24LC01B and this solved the problem.
Thanks so far
kolli
May 5th, 2012 on 2:19 am
Hi,
I have a same CY7C68013A development board, and I tried to use Saleae Logic software with two separated 24LC01B EEPROMs from Microchip. Although USBee software works properly, Saleae 1.1.15 crashes down immediately after connecting the board (Device manager shows it is a Saleae Logic USB device). The error log says “GetIDfromdevice failed” error occured.
Fortunately, I found the 1.0.21 version:
http://elektromodely.com/modely/product_info.php?cPath=339&products_id=5030&osCsid=381b01c4251c68debe9e2e7b8317c1ab
It works on Win7@32bit!!! Good luck with Saleae Logic!
May 20th, 2012 on 11:36 pm
So BWF2, is the solution simply to remove J1? Or do we need to solder on a new EEPROM?
May 22nd, 2012 on 9:31 pm
So what’s the end result of all these discoveries? Do we need to replace the EEPROM or can we get away with doing something else?
May 23rd, 2012 on 10:48 am
replace and try other eeproms.
June 17th, 2012 on 10:00 pm
8bit eeprom vendor address= 0xA2
16bit eeprom vendor address= 0xA9
http://www.cypress.com/?id=4&rID=26141
July 2nd, 2012 on 7:34 pm
So here’s a question…can you recommend a good place to buy these new EEPROMs to try? Or where we can scrounge them from?
July 3rd, 2012 on 1:55 pm
@Skinote: you need to replace the eeprom. I’ve used a 24C01A and it works fine. You can buy them cheap on ebay. They can be programmed on the CY7C68013A board using the free cypress EZ-USB programmer software. I used a PICkit2 to program mine though.
July 21st, 2012 on 5:11 pm
Hello,
have you a circuit from your Eeprom-Adapter, it well by nice.
Thx.
July 25th, 2012 on 4:19 am
Bazza,
Thanks for the reply- I’m almost there. A quick digikey search showed a lot of variety in 24C01A parts. Can you be a little more specific? I’m sure the information to figure it out exists somewhere on this page…but a product link or any more specific info would be great!