EEVblog Electronics Community Forum

Electronics => Microcontrollers => Topic started by: wbooth.clearscene on May 30, 2016, 07:13:29 am

Title: Accidentally overridden vendor/product IDs on ftdi chip
Post by: wbooth.clearscene on May 30, 2016, 07:13:29 am
TL/DR: I've done something rather silly and have bricked the USB programming ability of my new development board, by inadvertantly overwriting the vendor/product IDs of the on-board ftdi chip. Can anyone point me at something that will help me reset the vendor/product IDs?

I have a Numato Waxwing Spartan 6 FPGA development board. I was trying to work out how to flash the board using xc3sprog, but was unable to get the JTAG tool-chain. Something lead https://docs.numato.com/doc/waxwing-spartan-6-fpga-development-board/#installing-on-windows-6 (https://docs.numato.com/doc/waxwing-spartan-6-fpga-development-board/#installing-on-windows-6) me to try and installing the FTDI libraries from their website. In this download was some utilities to read/write to the EEPROM. Without reading the code for the write utility  :palm:, I ran it and it overwrite a bunch of settings. Most notably the product id. From 0403:6010 -> 0403:6001.

Snip of the code:
Code: [Select]
        FT_STATUS       ftStatus;
        FT_HANDLE       ftHandle0;
        int iport;
        FT_PROGRAM_DATA Data;

        if(argc > 1) {
                sscanf(argv[1], "%d", &iport);
        }
        else {
                iport = 0;
        }
        printf("opening port %d\n", iport);
        FT_SetVIDPID(0x0403, 0x6011); // Odly this reconfigures a 4030:6010 chip ????
        ftStatus = FT_Open(iport, &ftHandle0);

        if(ftStatus != FT_OK) {
                printf("FT_Open(%d) failed\n", iport);
                return 1;
        }

        Data.Signature1 = 0x00000000;
        Data.Signature2 = 0xffffffff;
        Data.VendorId = 0x0403;
        Data.ProductId = 0x6001;
        Data.Manufacturer =  "FTDI";
        Data.ManufacturerId = "FT";
        Data.Description = "USB <-> Serial";
        Data.SerialNumber = "FT000001";
     .....
     .....


If I try and change the code to update these values back, and open with the device Id using the 'incorrect ids', I just get a "cannot open device" error. Which is where I'm stuck. I can't see why I can't open the device when specifying the IDs as the OS sees them.

* Any ideas on how to change the IDs back?
* Does anyone have the full output of lsusb -v -d 0304:0601
* Anyone have experience of programming a Waxwing using xc3sprog (low priority)

btw. The board has a JTAG programmer, I'm not sure if I can use that to reprogram the FTDI chip, I've never used a JTAG programmer directly. (just putting it out there incase it help come to a solution)

Many many thanks. :)
Title: Re: Accidentally overridden vendor/product IDs on ftdi chip
Post by: rs20 on May 30, 2016, 07:15:24 am
After recent controversies, there's plenty of instructions on the internet on how to un-brick FTDI devices that have been deliberately bricked by FTDI's window drivers (by zeroing out the VID and PID). Have you tried following those instructions?
Title: Re: Accidentally overridden vendor/product IDs on ftdi chip
Post by: Jeroen3 on May 30, 2016, 08:50:23 am
http://www.ftdichip.com/Support/Utilities.htm#FT_INF (http://www.ftdichip.com/Support/Utilities.htm#FT_INF)

Then use FT_PROG I guess.
Title: Re: Accidentally overridden vendor/product IDs on ftdi chip
Post by: wbooth.clearscene on May 30, 2016, 04:47:37 pm
Cheers. I've managed to re-programming the chip back to the correct vendor: product IDs.
Thanks for the pointers.