Пользователь
0,0
рейтинг
23 октября 2014 в 00:16

Воскрешаем 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 не несу ни какой ответственности ни за что, во всём виноваты вы сами
Макаров Андрей @makaroff
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (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
      Нужно очистить систему от свежего драйвера.

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