I recently bought a Digilent Nexys Spartan 3 development board off eBay. A bargain for £28!
On connecting it to the computer however, it wasn’t detected by the Digilent Adept tool at all under Linux, and under Windows the driver wouldn’t install.
The device was reporting itself as having a VID:PID of 04b4:8613 - not what the driver INF files were expecting, so no wonder the drivers would not install.
After some research, I discovered that the USB chip used on the Nexys is a Cypress FX2LP, which can have it’s behaviour modified by programming an accompanying EEPROM. If the EEPROM gets corrupted, it reverts back to the default VID/PID.
Unfortunately the Digilent firmware upgrade tool will only upgrade devices it recognises, so that is a non starter!
In the end, i found the following very helpful page that helped me out: http://www.makestuff.eu/wordpress/software/fx2tools/, and the following instructions in the comments (thanks Chris!):
- Download the Digilent firmware update tool from http://digilentinc.com/Data/Software/Adept/Digilent_USB_Firmware_Upgrader.exe
- Extract from this file donbusb.iic - this is the firmware. (it’s a self extracting zip, so can be expanded with any unzip tool)
- Download and extract the fx2loader tool from http://www.swaton.ukfsn.org/bin/libfx2loader-20110913.tar.gz
- Temporarily load the fpgalink firmware into RAM on the Cypress chip. This will enable us to perform EEPROM commands. fx2loader -v 04b4:8613 libfx2loader-20110913/firmware/firmware.hex
- Program the original Digilent firmware back into the EEPROM: fx2loader -v 04b4:8613 Digilent_USB_Firmware_Upgrader/donbusb.iic eeprom
Under Windows you need to install the LibUSB-Win32 driver for the device on Windows. Download the zip and run bin/inf-wizard.exe; it will guide you through the process. Make sure you remove the current driver (if any) for the device.