FTDI WildWest

Bei preisgünstigen elektronischen Baugruppen aus China wird unter anderem ein USB-Seriell-Wandler FT232R eingesetzt, zum Beispiel ein Arduino Nano 3.0 Nachbau. Leider scheint da der FT232R geklont worden zu sein, siehe Links 1. Das hat die Firma FTDI dazu veranlasst, einen neuen Treiber herauszubringen, der diesen Klon unbrauchbar macht.

Das perfide daran ist, dass unter Windows dieser zerstörerische Treiber automatisch eingespielt wird, wenn eine solch bestückte Baugruppe zum ersten Mal angeschlossen wird, und vorher noch kein passender Treiber installiert war. Das soll zwar nach Links 2 von 2014-10-27 jetzt abgestellt sein, aber 2 Wochen später 2014-11-16 hat es mich noch getroffen.

Nach deutschem Recht könnte das ein Straftatbestand (Computersabotage) sein, siehe Links 3 und Links 4.

Es gibt bei Youtube ein interessantes Video dazu (25 min., Englisch).

Man kann diese Klon Chips an dem Aufdruck CN 480661 erkennen, weitere Infos hier. Weitere Tipps gibt es bei Links 5/6.

Ich werde mich jedenfalls in Zukunft, wenn möglich, vor FTDI Chips hüten.

attachment:FTDI_PROG_parse.png

Ursache

Wenn eine Baugruppe mit dem Klon an einen Windows Rechner ohne bereits installiertem Treiber zum ersten Mal angeschlossen wird, wird per Betriebssystem der passende Treiber automatisch installiert, wenn eine Internet Verbindung besteht. Dann funktioniert die Baugruppe erst einmal. Der neue Treiber, wenn er den Klon erkennt, setzt die USB-PID (Product IDentity) im EEPROM auf dem Chip auf den Wert 0x0000 statt original 0x6001. Das bedeutet, dass bei der zweiten Nutzung der Baugruppe der Klon nicht mehr funktioniert. Die ganze Baugruppe ist dadurch unbrauchbar geworden.

Reparatur, Windows

Nach Information von Links 2 soll man die Treiber Dateien ftdibus.inf und ftdiport.inf ändern, indem man die gepatchte PID 0000 als Erkennung Merkmal hinzufügt, damit Windows den Klon wieder erkennt. Das hat bei mir so nicht funktioniert. Um den alten Treiber wieder installiert zu bekommen, siehe bei Youtube das Video. Der Trick ist, dass man die *.inf Dateien des alten Treibers benutzt. Dazu packt man das *.zip Archiv aus, bis die *.inf Dateien sichtbar werden.

attachment:FTDI_PROG_program.png

Jetzt hat der Klon ja immer noch die PID 0000. Das lässt sich wieder rückgängig machen auf den Wert 6001, mit dem FTDI Programm FT_PROG.exe. Dazu wird unter Windows wieder eine alte Programm Version 1.3 oder 1.4 gebraucht. Ich konnte im Internet nur die Version 1.3 finden. Es soll aber auch nach diesem video mit dem aktuellen Programm FT_PROG 2.8.2.0 - EEPROM Programming Utility gehen.

Das Programm FT_PROG.exe muss man unter Windows 7 mit Administrator Rechten aufrufen (rechte Maustaste). Dann klickt man an Devices->Scan and parse F5. Der Chip wird gefunden, und der EEPROM Inhalt dargestellt. Unter Property->Custom VID/PID muss man statt Voreinstellung FTDI Default die Einstellung Custom PID auswählen, sonst lässt sich der Wert nicht ändern. Die Product-ID ist dann wieder auf 0x6001 einzustellen.

Als nächstes ruft man Devices->Program auf. In der Programmiermaske muss unter Device List bei dem gefundenen Device davor mit Klick ein Haken gesetzt werden. Dann kann man mit einem Klick auf den Knopf Program den Wert in das EEPROM schreiben. Damit sollte die Baugruppe wieder normal funktionieren.

Falls die COM-Ports bis über COM8 bereits belegt sind, vermutlich auf Grund von Fehlversuchen, dann muss man folgendes machen. Die Belegung kann man nachsehen im Geräte Manager bei Anschlüsse und USB Serial Port. Ein Rechtsklick darauf und im Kontext Menü auf Eigenschaften klicken, dann Klick auf Reiter Anschlusseinstellungen und Erweitert.... Beim Parameter COM-Anschlussnummer das Auswahlfeld öffnen. Zum Entfernen der falschen Belegung:

Reparatur, Linux

Für Linux gibt es eine offene Variante zu dem FTDI Programm FT_PROG.exe. Das habe ich unter Ubuntu 14.04 ausprobiert. Die Installation funktioniert so:

# In einem privaten Ordner installieren:
$ cd Install

# Nötige Hilfs-Programme installieren:
$ sudo apt-get install make gcc libftdi-dev git

# Das Programm selbst holen:
$ wget http://rtr.ca/ft232r/ft232r_prog-1.24.tar.gz

# Programm Archiv auspacken:
$ tar zxvf ft232r_prog-1.24.tar.gz

# In den Ordner wechseln
$ cd ft232r_prog-1.24

# Programm compilieren:
$ make

# Test
$ sudo ./ft232r_prog --verbose

ft232r_prog: version 1.24, by Mark Lord.
CRC: Okay (0x9f92)
existing eeprom:
0000: 00 40 03 04 01 60 00 06 a0 2d 08 00 00 00 98 0a  .@...`...-......
0010: a2 20 c2 12 23 10 05 00 0a 03 46 00 54 00 44 00  . ..#.....F.T.D.
0020: 49 00 20 03 46 00 54 00 32 00 33 00 32 00 52 00  I. .F.T.2.3.2.R.
0030: 20 00 55 00 53 00 42 00 20 00 55 00 41 00 52 00   .U.S.B. .U.A.R.
0040: 54 00 12 03 41 00 39 00 57 00 56 00 46 00 54 00  T...A.9.W.V.F.T.
0050: 4c 00 35 00 00 00 00 00 00 00 00 00 00 00 00 00  L.5.............
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 9f  ................
       eeprom_size = 128
         vendor_id = 0x0403
        product_id = 0x6001
      self_powered = 0
     remote_wakeup = 1
suspend_pull_downs = 0
     max_bus_power = 90 mA
      manufacturer = FTDI
           product = FT232R USB UART
         serialnum = A9WVFTL5
   high_current_io = 0
  load_d2xx_driver = 0
      txd_inverted = 0
      rxd_inverted = 0
      rts_inverted = 0
      cts_inverted = 0
      dtr_inverted = 0
      dsr_inverted = 0
      dcd_inverted = 0
       ri_inverted = 0
           cbus[0] = TxLED
           cbus[1] = RxLED
           cbus[2] = TxDEN
           cbus[3] = PwrEn
           cbus[4] = Sleep
       usb_version = 0
     use_serialnum = 1    (n/a)
change_usb_version = 0    (n/a)
       pnp_enabled = 0    (n/a)
      BM_type_chip = 0x06 (n/a)
 in_is_isochronous = 0    (n/a)
out_is_isochronous = 0    (n/a)
No change from existing eeprom contents.

Man beachte bei dem EEPROM Dump, dass High- und Low-Byte vertauscht sind.

Wenn jetzt die PID auf 0x0000 steht, dann kann man das in 0x6001 ändern mit:

$ sudo ./ft232r_prog --new-pid 0x6001

  1. heise.de 2014-10-23 FTDI: Proaktive Fake-Chip-Abwehr

  2. heise.de 2014-10-27 Treiber gegen gefälschte Chips: FTDI ruft Fake-Killer zurück

  3. Straftatbestand nach StGB § 303a/b

  4. Wikipedia, Computersabotage

  5. Problembeschreibung im Arduino Forum, mit Tipps ab thread #35

  6. Achtung: Mikrocontroller.net, Chineese Fake IC FT232RL

List of pages in this category:

-- RudolfReuter 2014-11-17 04:17:13


Go back to CategoryQuadrocopter or FrontPage ; KontaktEmail (ContactEmail)

FTDIWildWest (last edited 2014-11-19 12:46:52 by RudolfReuter)