Hi Steffen,
The ftdi_eeprom utility and ftdi eeprom related functions are not
working well with new FTDI chips. I haven't tried to program any of
FT2232H series, but I broke my FT232R chip. I didn't have much time to
work on that, so I still don't know exactly which part of the EEPROM
building code is broken.
I was able to fix it with a Linux box and a raw EEPROM backup I made
from a different chip. If you have another FT2232H chip, please make a
dump of the EEPROM and then restore it.
I have attached a simple utility I made for that purpise, but you will
probably need to modify it, as in my case the VID and PID were still
correct.
Good Luck!
Piotr
On 10-02-08 00:01, Steffen Mauch wrote:
Hi,
I tried to change the manufactor and product string of FT2232h.
I used ftdi_eeprom to do it and something went wrong.
Now the FT2232h doesn't enumerate. I disabled the eeprom and now it is
working again.
How could I fix the wrong eeprom?
I thought that if I boot the FT2232h without eeprom and enable it
after enumeration then I should be able to program it again.
I tried FT-Prog, but I got an error, vendor id or product id are not
allowed to be zero.
But I tried to erase the device.
ftdi_eeprom says that it could write. But I have he feeling that
something goes wrong during programming the eeprom.
If I read back the eeprom, it looks as the attached eeprom.new.
Has anyone programmed an FT2232H device with ftdi_eeprom?
So does it really work?
How could I repair my wrong eeprom?
Thanks.
Mit freundlichen Grüßen
Steffen Mauch
-------------------------
cand. B.Sc. Steffen Mauch
Digital Communications & Signal Processing Lab
Fakultät Computer & Electrical Engineering
Hochschule Furtwangen University
Robert-Gerwig-Platz 1
78120 Furtwangen
Tel +49 (0)7723 920 2342
Fax +49 (0)7723 920 2802
Cell +49 (0)1511 235 2355
[email protected]
www.DCSP.HS-Furtwangen.de
--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to [email protected]
--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to [email protected]
#include <stdio.h>
#include "ftdi.h"
int main (int argc, const char * argv[])
{
unsigned char eeprom_buf[128];
int size_check;
int res = 0;
struct ftdi_context ftdi;
struct ftdi_eeprom eeprom;
FILE* fp = NULL;
if( argc != 2 || !(fp = fopen(argv[1], "rb")) ) {
return -1;
}
res = fread(eeprom_buf, 1, 128, fp);
fclose(fp);
if( res != 128 ) {
printf("Read only %d bytes, 128 required!\n", res);
return -1;
}
puts("Opening device...");
ftdi_init(&ftdi);
res = ftdi_usb_open(&ftdi, 0x0403, 0x6001);
if( res < 0 ) {
printf("Error opening device: %d\n", res);
return -1;
}
printf("erase: %d\n", ftdi_erase_eeprom(&ftdi));
printf("write: %d\n", ftdi_write_eeprom(&ftdi, eeprom_buf));
ftdi_usb_close(&ftdi);
ftdi_deinit(&ftdi);
// insert code here...
printf("OK\n");
return 0;
}