comparison eeproms/dumps/FT232R-notes @ 76:4e13c90c1405

eeproms/dumps/FT232R-notes: update for current understanding
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 17 Sep 2020 00:42:17 +0000
parents af70c59654ed
children
comparison
equal deleted inserted replaced
75:bd85e0360259 76:4e13c90c1405
1 Unlike FT2232x devices with external EEPROMs, an FT232R device is not expected 1 Unlike FT2232x devices with external EEPROMs, an FT232R device is not expected
2 to ever have a blank EEPROM in normal usage: these chips have their EEPROM 2 to ever have a blank EEPROM in normal usage: these chips have their EEPROM
3 built in, and FTDI ships them with this internal EEPROM already programmed. 3 built in, and FTDI probably ships them with this internal EEPROM already
4 It may be possible to create a "blank" EEPROM by explicitly programming 0xFFFF 4 programmed. I said "probably" because I have not yet had an occasion to build
5 into every word, but it would be an unnatural scenario, and I (Mother Mychaela) 5 my own FT232R-containing board where I would be getting completely pristine
6 do not currently have an FT232R device on which I can experiment: I don't have 6 "bare" chips from Digi-Key, thus I have no first-hand verified knowledge.
7 an FT232R device which is not valuable and which is not already bricked.
8 7
9 I have read out the EEPROM content from the two specimen I did have available: 8 As an experiment, I have programmed "blank" (0xFFFF in every word) images into
10 FT232R-specimen1 came from a no-name ebay-sourced FT232RL breakout board; 9 the two FT232R devices I have available for play at the moment (specifically
11 FT232R-specimen2 came from George UberWaves' "FTDI Professional" USB-serial 10 devices which I could afford to brick if things went badly), and FT232R behaves
12 cable with OsmocomBB branding. Specimen 2 is probably a genuine FT232RL chip 11 the same way as FTDI's earlier chips with external EEPROMs: it runs with a fixed
13 (I remember George telling me that he went out of his way to procure genuine 12 default config when the EEPROM is invalid. But this configuration is NOT
14 FTDI chips after having been burned by FTDI's Winblows drivers screwing around 13 recommended for production use - you should always have a valid EEPROM config
15 with close-but-not-perfect clones), but specimen 1 is suspected to be one of 14 in your FT232R chip.
16 those less-than-perfect clones: the serial number string was programmed to
17 "00000000", whereas FTDI supposedly program true per-unit serial numbers.
18 15
19 The only diffs between FT232R-specimen1 and FT232R-specimen2 are the just- 16 When our FreeCalypso fteeprom tools were first put together in 2019-04, I was
20 mentioned serial number string (specimen 2 has it set to "A9031HG6", which looks 17 getting erratic behaviour: when I tried to program my own EEPROM config
21 like a real per-unit serial number), two non-understood "garbage" words after 18 generated with ftee-gen232r, the resulting EEPROM content became a bitwise AND
22 the last string, and of course the checksum. 19 between the previous image and the new one, as if the "EEPROM" is not really an
20 erasable memory, but one of OTP kind where ones can be turned into zeros, but
21 not the other way around. I was doing this experiment on a no-name FT232RL
22 adapter from ebay, thus my first thought was that the FT232RL chip was bad, a
23 less-than-perfect clone rather than genuine FTDI. But then I bought a UB232R
24 module from Digi-Key (presumably containing a genuine FT232RQ chip), and it
25 behaved the same way.
23 26
24 The unit that was specimen 1 (the suspected fake) is now bricked: when I tried 27 Further investigation revealed that FT232R EEPROM write operations work
25 to program my own EEPROM config generated with ftee-gen232r, the resulting 28 correctly only if they are preceded by this magic sequence:
26 EEPROM content became a bitwise AND between the previous image and the new one, 29
27 as if the "EEPROM" is not really an erasable memory, but one of OTP kind where 30 ftdi_usb_reset(&ftdi);
28 ones can be turned into zeros, but not the other way around. I am not willing 31 ftdi_poll_modem_status(&ftdi, &modem_status);
29 to experiment on the specimen 2 chip because it is part of a valuable cable 32 ftdi_set_latency_timer(&ftdi, 0x77);
30 assembly which I don't want to risk bricking, so I will need to order more 33
31 sacrificial hardware and wait for it to arrive before I can experiment further. 34 I can see how FTDI could have reasonably implemented a sort of safety lock on
35 their EEPROM write operations, allowing them only if a special unlock sequence
36 has been given - but it completely baffles me why they are doing some sort of
37 OTP emulation in the absence of the right magic sequence, as opposed to
38 disabling EEPROM writes altogether. It is worth noting that this magic sequence
39 is NOT needed for programming external EEPROMs behind FT2232x chips - were FTDI
40 folks being deliberately malicious in designing their FT232R chip to simulate
41 appearance of being bricked when it is programmed with older (or third-party)
42 software tools that don't know the new magic sequence? Who knows...