libftdi Archives

Subject: Fix a bad eeprom write to a FT232RL

From: Nuno Lucas <ntlucas@xxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Fri, 23 Oct 2009 16:11:36 +0100
I just started toying with a FTDI USB-Key on Linux, using libftdi and the ftdi_eepropm utility. The kernel says it's an FT232RL chip on "dmesg".

Well, as a noob on this things, I tried to just replace the vendor, product and serial strings, and had half success at that. The success was that the write worked, but on the other hand it seems my settings broke the chip and it can't be writen any more (although it works ok reading).

I attached a full dump of the broken device and a dump of a second device I have for comparison.

It seems I wrote the eeprom for a "self powered" device instead of "bus powered" one and the MaxPacketSize for the Input EP was zeroed.

The result is a device that can be read the same as before, but either erase or write (although returning a success value) will just be ignored.

I tried the MProg program on windows to re-program the device but as soon as the FTDI windows drivers load the system reboots. I still haven't tried the FT_PROG utility because at the moment don't have a machine with .NET 2.0 installed.

Anyone know if/how I could fix this?
As I have a second device it's not that important the first one is recovered, but I would like to know if I can recover from a second bad try.


Regards,
~Nuno Lucas


--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   
T:  Bus=04 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 10 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=FTDI
S:  Product=USB-Key
S:  SerialNumber=FTRHR6IR
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

************** FIND ALL *****************
Number of FTDI devices found: 1
Device 0: Manufacturer: FTDI, Description: USB-Key, Serial: FTRHR6IR
************* GET CHIP ID ***************
FTDI chipid: 788DFECD (ret=0)
************* READ EEPROM ***************
EEPROM size=256 bytes (guessed):
00:  4008 0403 6001 0600 2D80 0008 0200 0A98   .@...`.. .-......
10:  10A2 12B2 AAAA 0001 030A 0046 0054 0044   ........ ..F.T.D.
20:  0049 0310 0055 0053 0042 002D 004B 0065   I...U.S. B.-.K.e.
30:  0079 0312 0046 0054 0052 0048 0052 0036   y...F.T. R.H.R.6.
40:  0049 0052 0302 0001 0000 0000 0000 0000   I.R..... ........
50:  0000 0000 0000 0000 0000 0000 0000 0000   ........ ........
60:  0000 0000 0000 0000 0000 0000 0000 0000   ........ ........
70:  0000 0000 0000 0000 0000 0000 0000 7121   ........ ......!q
80:  043E FBC1 0000 F67E 7014 0042 0000 0000   >.....~. .pB.....
90:  0000 0000 0000 0000 4137 5151 5052 3035   ........ 7AQQRP50
A0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
B0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
C0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
D0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
E0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
F0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........

Bus 004 Device 010: ID 0403:6001 Future Technology Devices International, Ltd 
FT232 USB-Serial (UART) IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 FT232 USB-Serial (UART) IC
  bcdDevice            6.00
  iManufacturer           1 FTDI
  iProduct                2 USB-Key
  iSerial                 3 FTRHR6IR
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               90mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 USB-Key
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)
T:  Bus=04 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 11 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=SDI
S:  Product=ETLock
S:  SerialNumber=12345678
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=   0 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

************** FIND ALL *****************
Number of FTDI devices found: 1
Device 0: Manufacturer: SDI, Description: ETLock, Serial: 12345678
************* GET CHIP ID ***************
FTDI chipid: 4BB4BCF9 (ret=0)
************* READ EEPROM ***************
EEPROM size=256 bytes (guessed):
00:  0000 0403 6001 0400 00C0 0008 0000 0894   .....`.. ........
10:  0E9C 12AA 0308 0053 0044 0049 030E 0045   ......S. D.I...E.
20:  0054 004C 006F 0063 006B 0312 0031 0032   T.L.o.c. k...1.2.
30:  0033 0034 0035 0036 0037 0038 0000 0000   3.4.5.6. 7.8.....
40:  0000 0000 0000 0000 0000 0000 0000 0000   ........ ........
50:  0000 0000 0000 0000 0000 0000 0000 0000   ........ ........
60:  0000 0000 0000 0000 0000 0000 0000 0000   ........ ........
70:  0000 0000 0000 0000 0000 0000 0000 09D0   ........ ........
80:  0442 FBBD 0000 42DB 9017 0042 0000 0000   B......B ..B.....
90:  0000 0000 0000 0000 4139 5232 3851 3949   ........ 9A2RQ8I9
A0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
B0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
C0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
D0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
E0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........
F0:  FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   ........ ........

Bus 004 Device 011: ID 0403:6001 Future Technology Devices International, Ltd 
FT232 USB-Serial (UART) IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 FT232 USB-Serial (UART) IC
  bcdDevice            6.00
  iManufacturer           1 SDI
  iProduct                2 ETLock
  iSerial                 3 12345678
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 ETLock
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0000  1x 0 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0001
  Self Powered
Current Thread