Воскрешаем FTDI в картинках

    Здравствуйте многоуважаемые хабравчане. Уж не знаю куда писать, сюда или в GT, но раз первоисточник находиться здесь, то и я запощу на Хабр.
    В общем если вы, такой же как и я, прилежный установщик обновлений и вас постигла сия участь



    … а из опуса UnknownType вы мало что поняли, добро пожаловать под кат!


    Первое, с чего стоит начать, это посмотреть на список устройств. И если вы там ведите вот такое,



    то в свойствах скорее всего обнаружите отсутствие какой либо информации о драйверах.



    А само устройство неожиданным образом получило PID равным 0000.



    Так что бегом в сеть искать/качать драйвера FTDI версии 2.8.14.
    Накатите на устройство сначала ftdibus, а затем ftdiport. Уж с этим я надеюсь вы справитесь без картинок? Поставили? Теперь у вас в системе два конвертера, один из которых почему-то :) не работает. Всё нормально — так и должно быть. Теперь снова отправляемся на просторы неизведанной и качаем FTDI'вскую утилиту MProg3.5.

    Запускаем и выбираем в меню Tools > Read and Parse.



    Эта чудо-прога сама всё считает и распишет по ячейкам.



    После этого появляется возможность ввести в окошке Product ID «6001» (для FT232R(L)), а затем войти в меню File > Save As… и сохранить EEPROM на жёсткий диск.



    Данная процедура обязательна, ибо без неё утилита не даст возможность прошить микруху. А прошивается она на раз-два и буквально за пол секунды. Нужно лишь нажать Сtrl+P.



    После прошивки и прочитаться можно.



    Главное потом проследите, чтобы на устройстве стояли правильные драйвера, а то придётся проводить процедуру ещё раз.

    Заключение: как видите, ничего сложного, а с картинками вообще — как два пальца об асфальт :)

    PS не несу ни какой ответственности ни за что, во всём виноваты вы сами
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 26
    • +2
      Просто спасибо. Человеческое спасибо.
      • +1
        Спасибо! Мне не хватило терпения пройти этот ад ещё раз, документируя шаги.
        • 0
          Ну, когда у вас, кроме правильных дров, стоят 2.12 и когда винда автоматом их подтягивает — приходиться повторять процедуру ;)
          ПыСы вчера уже времени не хватило, а сегодня после SPB Fronted, хочу приехать домой и вырвать 2.12 из системы с корнем!
          • +2
            У вас крайне подходящий ник для этой статьи.
          • 0
            Главное потом проследите, чтобы на устройстве стояли правильные драйвера, а то придётся проводить процедуру ещё раз.

            Т.е. даже после перепрошивки новые драйвера определяют чип, как поддельный?! А как именно? Разве нельзя прошивкой сделать полную копию настоящего чипа?
            • +3
              Чип FTDI имеет избыточный функционал. А Китайцы ленивы и копируют только то что нужно непосредственно. Поэтому перепрошивкой хардварную проблему не решить. Нужно ставить старый драйвер и не позволять ему обновляться.
              • 0
                К сожалению да. Перепрошивкой Вы всего лишь меняете PID. Железо при этом остаётся тем же, а оно имеет достаточно серьёзные отличия от оригинального. Можно поискать на хабре статью про это, была такая, где стравили корпус микрухи.
                • 0
                  Китайцы эмулируют чип при помощи контроллера с масочным ПЗУ. Перешить его нереально, но они же могут дописать нужный функционал если это будет выгодно и выпустить очередную партию подделок.
              • +1
                Хорошо бы еще посмотреть внутрь новых драйверов и сделать программу для проверки «контрафакт/настоящий», чтобы один раз все проверить и успокоиться.
                • +4
                  Картинка из Интернета. По-видимому, оригинал игнорирует запись по адресу 2 (PID), если после нее не идет запись по адресу 3. Что интересно, тут еще и контрольная сумма записывается в неверное место: в предпоследнее, а не последнее слово (если реверсер и hex-rays не ошиблись). Я не знаю, что там должно лежать, но получается, что на клонах эти два байта теряются безвозвратно.

                  • +2
                    Раз уж запостил первую картинку, добавлю вторую. Поправка: вместо коррекции чексуммы подгоняется предпоследний байт (так что чексумма не меняется). Оригинал игнорирует операции записи pid и этого байта, клон их выполняет.

                • НЛО прилетело и опубликовало эту надпись здесь
                  • +2
                    А еще никто не написал утилитку под Linux, для проверки клон/не_клон? Чтобы заранее пометить что не вставлять в машины с Windows.
                    • 0
                      Какой смысл проверять, если в линуксе клоны отлично работают?
                      • +1
                        Думаю потому, что у некоторых/многих линукс не основная система.
                        • 0
                          Зря. Я не представляю, как люди в виндах программированием занимаются. Это ж как на одноколесном велосипеде с квадратными колесами ехать, одновременно на ходу его ремонтируя!
                          Тем более — работа с железом. Все-таки, прошивка для игровых приставок очень плохо выполняет роль операционной системы общего назначения!
                          • +7
                            Не хуже, чем прошивка для роутеров и холодильников.
                            • –1
                              Программирование очень разное бывает и особенно при работе с железом.
                              Уж с точки зрения программирования для железа совсем не понятно какие преимущества Linux имеет перед Windows.
                              • +2
                                Ну, для начала приведу очень удобное: «все есть файл». Т.е. все равно, подключен у вас МК по RS-232, RS-485 или USB (в режиме CDC) — вы просто открываете файл устройства, делаете нужные ioctl, и работаете обычными read/write. Т.е. код один и тот же вне зависимости от подключения!
                                Модули ядра тоже разрабатывать значительно проще, чем в игропрошивке «драйвера» писать.
                                Документация удобная: набрал man что-то → получил.
                                Да и просто баш с coreutils — как вы там без них существуете? Кактусы грызете?
                                • +3
                                  Писал драйверы для USB устройства под обе системы, в обеих из юзерспейса доступ к устройству был через open/close/read/write/ioctl. Никакой разницы кроме имени файла устройства не заметил. В Win доступ к драйверами тоже делается через файлы, вы их просто не видите в единой файловой системе.
                                  Доки для написания драйверов в Win лучше. В линуксе сильно не хватает док типа Windows DDK. Man совсем не помогает при серьёзной разработке т.к. покрывает поверхностно. Чуть глубже приходится исходники лопатить.
                                  В Win я работаю в VS и Keil для железа. Чем мне тут поможет баш и товарищи не знаю. В линуксе у меня разработка для андроида, там конечно все в консоли. Каждой задаче свой инструмент.
                          • +1
                            Чтобы знать какие из девайсов не вставлять в виндовые машины же, не хотелось бы окирпичить какой нибудь полетный контроллер из-за рассово верных драйверов.
                            • 0
                              А девайс Вы и не окирпичете. Микроконтроллер какой-нибудь ардуины будет прекрасно работать дальше. Просто он потеряет связь с внешним миром посредствам внешних интерфейсов, аля USB. Да и как, надеюсь, видно из данной заметки, восстановление работоспособности — дело пяти минут. Вот, если бы newдрова затирали продакт индификейтор и ставили защиту на дальнейшую перезапись, вот это был бы номер. Хотя… девайсина бы продолжила дальше фунцецклировать, правда уже без возможности обновления внутренней программы. Но тоже, по сути, не критично — залил канифолью, сдул и прилепил новую православную микруху.
                              • 0
                                Немного не верно выразился, конечно сам контроллер сложно дровами окирпичить, но просто не хотелось бы тратить время на загрузку, установку и запрет обновлений только из-за того что вставил устройство не в той системе.
                        • 0
                          Накатываю старые драйвера 2.08.14, перешиваю ID, все вроде красиво встает. Но стоит вытащить и снова вставить usb кабель, драйвер тут же слетает, ID обнуляется. what should I do?
                          • 0
                            Естественно, ведь микросхема оригинальной от этого не становится.
                            • 0
                              Нужно очистить систему от свежего драйвера.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.