leoniv.diod.club
Как узнать поддельную FT232RL?

В последнее многие начали жаловаться на проблемы с преобразователями USB-UART, которые выполнены на микросхеме FT232RL. Проблема, в общем, известная - китайцы освоили выпуск клонов FT232RL, которые почти повторяют оригинальную микросхему. А фирма FTDI, защищая свои интересы, в новых драйверах (начиная с версии 20814) применила интересный ход. При обнаружении поддельной микросхемы она выводится из строя и больше системой не определяется. Возник вопрос, как отличить оригинал, чтобы в устройство снова не поставить китайскую подделку?

Несмотря на то, что фирма FTDI пытается этим защитить свои интересы, такое решение является очень спорным. А в лицензионном соглашении драйвера после включения туда кода, разрушающего поддельные чипы, была добавлена строчка: "Use of the Software as a driver for a component that is not a Genuine FTDI Component MAY IRRETRIEVABLY DAMAGE THAT COMPONENT." Беда в том, что покупая чип даже у вполне солидного поставщика, нет гарантии, что это не подделка. Страдают пользователи, а не продавцы или производители подделок. Не удивительно, что столь спорное решение не могло долго просуществовать, в официальном пресс-релизе от FTDI есть информация по поводу изъятия драйвера FTDI из Windows Update.

Тема поддельных микросхем FT232RL давно обсуждается: FTDI наносит ответный удар, Воскрешаем FTDI в картинках. Радикальный способ уйти от проблемы - отказаться от применения FT232RL. В качестве замены можно использовать CY7C65213, CP2102, PL2303, CH340, FT230. Но не всегда это просто сделать в готовой конструкции.

По внешнему виду микросхемы отличить трудно. Корпус такой же, маркировка в обоих случаях лазерная.

Рис. 1. Оригинальная микросхема FT232RL.

Рис. 2. Поддельная микросхема FT232RL.

Маркировка на подделке выглядит даже качественней, линии более тонкие. Поэтому можно перепутать подделку с оригиналом. Единственное заметное отличие - на подделке углубление, обозначающее первый вывод, имеет меньший диаметр и большую глубину. Но этот признак тоже не является надежным.

Поэтому нужны более достоверные методы отличия. Энтузиасты дизассемблировали фрагмент нового драйвера и установили, каким именно образом он повреждает поддельные чипы. Драйвер записывает во внутреннюю EEPROM чипа по адресу 0x002 нули (а это как раз PID устройства), а по адресу 0x03e записывает такой код, чтобы сошлась CRC (расположенная по адресу 0x03f). На оригинальном чипе эти операции ни к чему не приводят, потому что у него EEPROM имеет 32-разрядную организацию. При записи слова с четным адресом происходит только его буферизация, а при записи слова по нечетному адресу происходит запись сразу двух слов. Поддельный чип выполняет запись каждого слова, поэтому у него портится PID (становится равным 0x0000). Поэтому поддельный чип при первом подключении нормально определяется (пока данные в EEPROM верные), а после повторного подключения определяться перестает. На форуме eevblog есть дизассемблированный фрагмент драйвера, там же есть комментарии представителя фирмы FTDI, где этот факт не отрицается, но есть обещание в дальнейшем действовать недеструктивными методами.

Чтобы снова увидеть поврежденный чип, нужно установить немного модифицированный драйвер. В файлы inf добавляются строчки с PID_0000, тогда он будет поддерживать как оригинальные, так и "испорченные" поддельные чипы. Но только до первого обновления драйвера.

Скачать модифицированные inf-файлы для драйверов CDM20416 и CDM20814 можно ниже в секции download. По аналогии можно отредактировать inf-файлы для драйверов других версий.

Чтобы оперативно отличать оригинальные чипы от поддельных, я написал небольшую утилитку, которая пытается записать данные по четному адресу EEPROM. Если это удается - чип поддельный. Затем утилита восстанавливает прежнее значение.

Кроме того, при нажатии кнопки "Fix PID" утилита позволяет восстановить оригинальный PID (0x6001). Для восстановления CRC по адресу 62 (0x03e) записывается 0. Восстановленный поддельный чип можно нормально использовать, если работать с драйвером версии ниже 20814.

Внимание! Для восстановления испорченного драйвером чипа необходимо установить модифицированный драйвер с отредактированным inf-файлом.

Рис. 3. Окно утилиты восстановления FT232RL.

Кстати, эта утилита определяет оригинальную FT232BM с внешней EEPROM как FAKE. Что вполне логично, ведь внешняя EEPROM позволяет записывать отдельно четное и нечетное 16-разрядное слово. Получается, фирменная закладка в драйвере покусает своих!

Для экспериментов я собрал две платки переходников USB-UART на FT232RL. Одну собрал на оригинальном чипе, другую - на поддельном. Как оказалось, есть более простой способ отличить подделку: у оригинального чипа ток потребления составляет около 9 мА, а у поддельного - более 35 мА. Подделка оказалась очень прожорливой! Впрочем, это неудивительно. По фотографиям кристаллов, которые приведены в посте Новый уровень китайских поддельных микросхем можно видеть, что это совершенно разные микросхемы.

Рис. 5. Топология оригинала (слева) и подделки (справа).

В последней версии драйверов от FTDI уже нет порчи PID, но с подделкой они все равно не работают. В статье FTDI Drivers Break Fake Chips, Again сообщается, что в передаваемый поток данных вводится посторонняя информация, которая нарушает нормальную работу стройств с поддельными FT232RL, а при подключении такого устройства выводится сообщение "Non genuine device found".

Links:
  1. пост на эту тему в ЖЖ
  2. Обсуждение на форуме EEVblog
  3. FTDI наносит ответный удар
  4. Воскрешаем FTDI в картинках
  5. Новый уровень китайских поддельных микросхем
  6. Fixing Fake FTDIs
  7. FTDI Screws Up, Backs Down
  8. FTDI Drivers Break Fake Chips, Again
Downloads:
ftester.zip (257 Kb) - архив с утилитой и модифицированными inf-файлами для драйверов CDM20416 и CDM20814.
ftester_source.zip (17 Kb) - исходник утилиты (C++ Builder 6).
Ридико Леонид Иванович www.leoniv.diod.club e-mail: wubblick@yahoo.com