?

Log in

No account? Create an account

Previous Entry | Next Entry

Fake FT232RL



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



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

Вот как выглядит оригинальная микросхема:





А вот так выглядит подделка:





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

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

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

Чтобы оперативно отличать оригинальные чипы от поддельных, я написал небольшую утилитку, которая пытается записать данные по четному адресу EEPROM. Если это удается - чип поддельный. Затем утилита восстанавливает прежнее значение. Кроме того, утилита позволяет восстановить PID (у оригинального чипа он равен 0x6001) без нарушения CRC. Конечно, этот номер пройдет только с установленным модифицированным драйвером.



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

Для экспериментов я частично собрал две платки переходников на FT232RL, благо, несколько таких заводских плат валялось без дела. Одну собрал на оригинальном чипе, другую - на китайском. Оказалось, что есть более простой способ отличить чипы. На плате разведен дроссель в цепи питания FT. Я вместо него запаял резистор 10 Ом. Измерив тестером падение на этом резисторе, можно вычислить потребляемый ток. Оказалось, что у оригинального чипа падение равно 88.5 мВ (ток потребления 8.85 мА), а у китайского - 355 мВ (ток потребления 35.5 мА). Подделка оказалась очень прожорливой!



Не факт, конечно, что на этом поставлена точка. Говорят, что в самой последней версии драйверов от FTDI уже нет порчи PID, но с подделкой они все равно не работают. Говорят также, что китайцы выпустили новую версию подделки, которая обходит проверки. Ждем продолжения истории.

Comments

( 72 comments — Leave a comment )
livejournal
Jan. 2nd, 2016 01:30 am (UTC)
Hello! Your entry got to top-25 of the most popular entries of Belarus in LiveJournal! Learn more about LiveJournal Ratings in FAQ.
hrun_morjov
Jan. 2nd, 2016 02:54 am (UTC)
весь мир уже проплевался на FTDI за такую засаду, а нельзя ли выложить утилиту восстановления куда нибудь? Кстати с чипами PL2303 такая же фигня.
leoniv
Jan. 2nd, 2016 08:16 am (UTC)
Если бы не заказчики, не знал бы об этой проблеме. Со старыми драйверами все работает нормально. Создал тему на форуме, там выложил утилиту и измененные inf-файлы.
(no subject) - sevasat - Jan. 2nd, 2016 11:30 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 11:36 am (UTC) - Expand
(no subject) - hrun_morjov - Jan. 2nd, 2016 03:37 pm (UTC) - Expand
Странный зверь - (Anonymous) - Feb. 22nd, 2016 10:45 am (UTC) - Expand
Re: Странный зверь - leoniv - Feb. 22nd, 2016 12:40 pm (UTC) - Expand
Re: Странный зверь - (Anonymous) - Feb. 22nd, 2016 10:39 pm (UTC) - Expand
Re: Странный зверь - (Anonymous) - Feb. 22nd, 2016 10:53 pm (UTC) - Expand
Re: Странный зверь - leoniv - Feb. 23rd, 2016 12:31 am (UTC) - Expand
Re: Странный зверь - (Anonymous) - Feb. 22nd, 2016 10:50 pm (UTC) - Expand
engine_runtime
Jan. 2nd, 2016 06:08 am (UTC)
С наступившим Новым Годом, ждем новых творческих успехов!
За статью спасибо конечно, будем ориентироваться в теме.
Меня в связи с FT232 интересует вот что.
К примеру связка STM32F100 и FT232.
Скорость обмена 115200. Таким образом на прием процессор получает порядка 10000 прерываний, а обработчик может быть сложный и не справляться с потоком.
Смотрел сигналы управления CTS - вроде подходит для приостановления потока, но он работает не мгновенно, т.е. не на уровне микросхемы, а отсылает пожелание приостановки потока в компутер... заодно пересылая буфер на передачу ведомого устройства, что может не входить в планы разработчика.
Короче, комп насилует ведомое устройство.
Как с этим бороться?

Edited at 2016-01-02 06:17 am (UTC)
balmerdx
Jan. 2nd, 2016 07:29 am (UTC)
Писать принимаемые данные по DMA и обрабатывать большими кусками.
(no subject) - engine_runtime - Jan. 2nd, 2016 07:51 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 08:17 am (UTC) - Expand
(no subject) - engine_runtime - Jan. 2nd, 2016 08:27 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 09:15 am (UTC) - Expand
(no subject) - balmerdx - Jan. 2nd, 2016 09:40 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 09:53 am (UTC) - Expand
(no subject) - balmerdx - Jan. 2nd, 2016 11:32 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 12:13 pm (UTC) - Expand
(no subject) - engine_runtime - Jan. 2nd, 2016 09:58 am (UTC) - Expand
(no subject) - balmerdx - Jan. 2nd, 2016 11:35 am (UTC) - Expand
(no subject) - engine_runtime - Jan. 2nd, 2016 12:13 pm (UTC) - Expand
(no subject) - balmerdx - Jan. 2nd, 2016 12:36 pm (UTC) - Expand
(no subject) - engine_runtime - Jan. 2nd, 2016 12:46 pm (UTC) - Expand
(no subject) - hrun_morjov - Jan. 2nd, 2016 03:47 pm (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 12:14 pm (UTC) - Expand
(no subject) - vano79 - Jan. 2nd, 2016 03:23 pm (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 03:29 pm (UTC) - Expand
(no subject) - vano79 - Jan. 2nd, 2016 03:43 pm (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 04:22 pm (UTC) - Expand
(Anonymous)
Jan. 2nd, 2016 07:37 am (UTC)
Какой-нибудь LM317 от разных производителей имеет чуть разные характеристики и чуть по-разному себя ведет в разных обстоятельствах, и тоже самое наблюдается в отношении уевой тучи прочих компонент, и никто не вопит, что это "подделки". Почему ж с FT232 вдруг раскричались?
leoniv
Jan. 2nd, 2016 08:00 am (UTC)
LM317 от разных производителей нормально работают, нет повода кричать. Надо умудриться сделать схему так, чтобы она была чувствительна к производителю. С клонами стабилизаторов только один раз нарывался на проблему - 79xx от STM при малых нагрузках завышают выходное напряжение. И в свое время об этом кричали, так как схема действительно могла не работать. С клонами всяких LM358, TL082 и прочего вообще никогда проблем не было. И вообще, это не подделки, а просто аналоги от другого производителя, который указан на маркировке. А вот FT232RL - это подделка, на корпусе нарисован логотип FTDI, и она с новыми драйверами совсем не работает. Есть повод кричать.
(no subject) - ex0_planet - Jan. 2nd, 2016 10:33 am (UTC) - Expand
(no subject) - leoniv - Jan. 2nd, 2016 11:35 am (UTC) - Expand
(no subject) - ex0_planet - Jan. 2nd, 2016 11:50 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 2nd, 2016 07:48 pm (UTC) - Expand
(no subject) - leoniv - Jan. 3rd, 2016 09:25 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 4th, 2016 11:37 pm (UTC) - Expand
(no subject) - leoniv - Jan. 5th, 2016 07:29 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 6th, 2016 01:04 am (UTC) - Expand
(no subject) - leoniv - Nov. 17th, 2017 09:20 am (UTC) - Expand
vspvsp
Jan. 2nd, 2016 03:55 pm (UTC)
Молодцы китайцы - надо бить жадных копирастов! Только аккуратнее подделывать.

"Но у заказчиков и Windows поновее, и автообновление обычно включено"
В новых версиях мелкомягких вообще нельзя штатными средствами отключить автообновление.
leoniv
Jan. 2nd, 2016 04:23 pm (UTC)
Вроде, из-за этого скандала Microsoft исключила драйвера FTDI из списка обновления.
(no subject) - (Anonymous) - Jan. 2nd, 2016 08:25 pm (UTC) - Expand
(no subject) - leoniv - Jan. 3rd, 2016 09:35 am (UTC) - Expand
(Anonymous)
Jan. 2nd, 2016 07:58 pm (UTC)
А вот FT232RL - это подделка, на корпусе нарисован логотип FTDI, и она с новыми драйверами совсем не работает. Есть повод кричать
(Anonymous)
Jan. 2nd, 2016 08:15 pm (UTC)
Во-первых, может запросто оказаться, что оба варианта выпущены одной и той же FTDI на одном и том же заводе, но специально в разных вариантах. Все-таки маркированы они по-разному. (да могут быть хоть и вовсе без маркировки!)Или, к примеру, один из вариантов выпущен кем-то, но по их заказу. FTDI в своей в технической политике отчитыватся не обязана. Вы ведь не возмущаетесь, когда видите одни и те же серии STM32 чуть-чуть отличающихся друг от друга функционально? Почему бы и к разным FT232 относиться так же.
Ну а то, что для чуть разных микросхем могут быть нужны и чуть разные драйвера- это должно быть дураку понятно, никакого скандала в этом нет.
(no subject) - leoniv - Jan. 3rd, 2016 09:33 am (UTC) - Expand
(no subject) - (Anonymous) - Jan. 4th, 2016 11:47 pm (UTC) - Expand
(no subject) - leoniv - Jan. 5th, 2016 07:52 am (UTC) - Expand
Sergey Gimaev
Jan. 3rd, 2016 05:52 am (UTC)
ходят слухи, что внезапно появившийся ch340 это как раз и есть фэйк ФТДИ.
leoniv
Jan. 3rd, 2016 09:46 am (UTC)
Судя по datasheet это разные вещи.
ioserg
Jan. 3rd, 2016 07:48 am (UTC)

перейти на ch340

leoniv
Jan. 3rd, 2016 09:47 am (UTC)
Конвертеров USB-UART много, но ценность чипов FTDI в безглючности и замечательной поддержке.
(no subject) - chyvack - Jan. 7th, 2016 10:25 pm (UTC) - Expand
(no subject) - leoniv - Jan. 8th, 2016 07:58 am (UTC) - Expand
ext_1775340
Jan. 3rd, 2016 09:46 am (UTC)
"ftdi наносит ответный удар" - искать и читать. Тема уже не новая.
leoniv
Jan. 3rd, 2016 09:52 am (UTC)
Теме почти 2 года, но только сейчас меня заказчики заставили поменять чипы в одном из проектов на оригинальные. Иначе я бы этого вообще не знал.
(Anonymous)
Jan. 4th, 2016 04:38 pm (UTC)
В windows 7 окно программы выглядит коряво.
Кнопки внизу как бы съехали ниже нижнего края. Видна только верхняя часть кнопок.
leoniv
Jan. 4th, 2016 07:09 pm (UTC)
Re: В windows 7 окно программы выглядит коряво.
Windows 7 ни разу не видел, всё возможно. Привязка кнопок установлена по нижнему краю. Сделал привязку по верхнему, может поможет. Выложил на форуме в последнем сообщении.
(Anonymous)
Feb. 3rd, 2016 04:20 pm (UTC)
“NON GENUINE DEVICE FOUND!”
http://hackaday.com/2016/02/01/ftdi-drivers-break-fake-chips-again/

Тут новость об очередном обновлении драйверов от FTDI. Действительно, никакой порчи микросхем. Вместо этого постоянное сообщение "Non genuine device found". Не знаю, правда ли.
leoniv
Feb. 23rd, 2016 12:35 am (UTC)
Re: “NON GENUINE DEVICE FOUND!”
Читал про такое. Интересно, способ определения подделки оставили тот же, по возможности записи в EEPROM? А то читал тоже, что появились клоны, которые такую проверку проходят.
(Anonymous)
Feb. 17th, 2016 12:16 am (UTC)
Ставить нормальные микросхемы от силабса, когда эти фтди перестанут брать возможно они пересмотрят свою ценовую политику и вытеснят подделки ценой, а не костылями....
leoniv
Feb. 23rd, 2016 12:31 am (UTC)
Так у них корпуса QFN.
(Anonymous)
Apr. 22nd, 2017 08:09 pm (UTC)
Леонид, а на чем написана программа, если не секрет?
leoniv
Apr. 22nd, 2017 08:15 pm (UTC)
C++ Builder 6.
( 72 comments — Leave a comment )

Latest Month

June 2018
S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930

Tags

Powered by LiveJournal.com
Designed by Jamison Wieser