Ошибка dfu-util error 74: No DFU capable USB device available — причины и решение

Сообщение dfu-util: No DFU capable USB device available с кодом error 74 означает, что утилита dfu-util не нашла ни одного устройства в режиме DFU на шине USB — прошивка на этом этапе даже не началась. Это не сбой самой прошивки, а проблема обнаружения: либо устройство не переведено в DFU-режим, либо система не видит его из-за драйвера, кабеля или порта.

Ошибка типична при прошивке микроконтроллеров (STM32, платы на базе AT32), 3D-принтеров, дронов, аудиоустройств и другой техники с поддержкой USB DFU. Ниже разберём, как последовательно найти причину и устранить её, начиная с самых простых и безопасных проверок.

Что означает код error 74 в dfu-util

Утилита dfu-util при запуске сканирует USB-шину и ищет устройства, отвечающие по протоколу DFU (Device Firmware Upgrade). Если ни одно подключённое устройство не отвечает как DFU-совместимое, утилита завершает работу с кодом 74 и выводит сообщение No DFU capable USB device available.

Важно понимать: ошибка возникает до начала передачи прошивки. Это значит, что файл прошивки, его версия и совместимость здесь ни при чём — проблема находится на уровне соединения между компьютером и устройством. Искать её нужно в четырёх местах: режим устройства, драйвер, кабель и USB-порт.

Отдельный случай — когда устройство определяется системой, но не как DFU-устройство. Например, плата видна как обычный COM-порт или USB Serial: это значит, что она работает в обычном режиме, а не в режиме загрузчика, и dfu-util её «не видит» по определению.

Проверка режима DFU на устройстве

Самая частая причина — устройство просто не находится в режиме DFU. Способ входа в этот режим зависит от конкретной модели: где-то нужно зажать кнопку BOOT при подключении USB, где-то — установить джампер на контакты BOOT0, а где-то — отправить команду из работающей прошивки. Универсальной комбинации не существует, поэтому сверьтесь с документацией именно вашей платы или устройства.

  • 🔌 Отключите устройство от USB, зажмите кнопку входа в загрузчик (если она предусмотрена) и только потом подключите кабель.
  • 📘 Найдите в официальной инструкции к модели раздел про DFU mode или bootloader mode — там указана точная процедура.
  • 💡 Проверьте индикацию: на некоторых платах в режиме загрузчика светодиоды ведут себя иначе, чем в рабочем режиме.
  • 🔁 Если устройство уже прошивалось ранее, попробуйте полный цикл: отключить питание, подождать несколько секунд, войти в DFU заново.

После входа в режим загрузчика проверьте, как устройство определилось в системе. В Windows откройте Диспетчер устройств и посмотрите, появился ли новый элемент — например, STM32 BOOTLOADER, DFU in FS Mode или неизвестное устройство с восклицательным знаком. Само появление нового устройства — уже хороший знак: проблема, скорее всего, в драйвере.

⚠️ Внимание: если устройство в Диспетчере устройств отображается как USB Serial (COM-порт), оно не в DFU-режиме. Прошивка через dfu-util в этом состоянии невозможна — сначала переведите устройство в загрузчик.

Установка и замена драйвера

На Windows вторая по частоте причина error 74 — отсутствующий или «неправильный» драйвер. Даже если устройство вошло в DFU-режим, система может назначить ему стандартный драйвер, с которым dfu-util работать не умеет.

Классический способ решения — утилита Zadig, которая подменяет драйвер устройства на WinUSB. Порядок действий:

  • 🖥️ Запустите Zadig от имени администратора и включите в меню Options → List All Devices.
  • 📋 В выпадающем списке найдите ваше устройство в DFU-режиме (например, STM32 BOOTLOADER).
  • 🔧 Выберите целевой драйвер WinUSB и нажмите Replace Driver или Install Driver.
  • ✅ После установки повторите команду прошивки в dfu-util.

На Linux драйвер не нужен, но могут мешать права доступа. Попробуйте запустить команду через sudo или настройте udev-правила для вашего устройства — это стандартная процедура, описанная в документации dfu-util.

Проверка кабеля и USB-порта

Третья группа причин — физическое соединение. Кабели «только для зарядки» без линий данных — частый источник проблемы: устройство получает питание и даже может входить в DFU, но данных по USB не передаёт, и система его не видит вообще.

Проверьте следующее:

  • 🔌 Замените USB-кабель на заведомо рабочий, по которому точно передаются данные (например, тот, через который телефон определяется компьютером как накопитель).
  • 🖥️ Подключитесь напрямую в порт компьютера, минуя USB-хабы, разветвители и переднюю панель корпуса.
  • 🔄 Попробуйте другой порт: если есть USB 2.0, используйте его — с некоторыми загрузчиками он работает стабильнее, чем USB 3.x.
  • 📏 Избегайте длинных и тонких кабелей: просадка по питанию может сбрасывать устройство из DFU-режима.

⚠️ Внимание: если устройство при подключении вообще не появляется в системе (ни в Диспетчере устройств, ни в выводе lsusb на Linux), менять драйвер бессмысленно — сначала решите проблему с кабелем, портом или входом в DFU.

Диагностика через командную строку

Когда устройство, судя по всему, в DFU-режиме, а ошибка остаётся, полезно посмотреть, что видит сама утилита. Выполните команду вывода списка DFU-устройств:

dfu-util -l

Если список пуст — система не предоставила утилите ни одного DFU-устройства, возвращайтесь к драйверу и режиму. Если устройство в списке есть, но прошивка всё равно не идёт, возможно, утилите нужно явно указать идентификаторы VID:PID устройства. Их можно посмотреть в свойствах устройства в Диспетчере устройств (вкладка «Сведения», свойство «ИД оборудования») и передать параметром:

dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D firmware.bin

Значения VID:PID, адреса памяти и имя файла в примере условны — реальные параметры зависят от вашего чипа и прошивки. Идентификаторы 0483:df11 типичны для загрузчика STM32, но у других плат они будут иными.

☑️ Диагностика error 74 по шагам

Выполнено: 0 / 5

Типичные причины и способы устранения

Сведём основные сценарии в таблицу — по ней удобно быстро определить, с чего начать.

Симптом Вероятная причина Что делать
Устройство видно как COM-порт Не активирован DFU-режим Войти в загрузчик по инструкции модели
Неизвестное устройство с восклицательным знаком Нет подходящего драйвера Установить WinUSB через Zadig
Устройство вообще не появляется в системе Кабель без линий данных или неисправный порт Заменить кабель, подключиться напрямую
Устройство есть, но dfu-util его не видит Драйвер не WinUSB или нет прав доступа Сменить драйвер, на Linux — sudo/udev
Устройство пропадает при попытке прошивки Просадка питания, выход из DFU Короткий качественный кабель, другой порт

Обратите внимание на последнюю строку таблицы: если устройство «отваливается» именно в момент начала прошивки, причина почти всегда в питании или кабеле, а не в драйвере. Драйвер либо работает, либо нет — он не вызывает отключения посреди процесса.

📊 Где в итоге оказалась причина error 74?
Устройство не было в DFU-режиме
Драйвер (решилось через Zadig)
Кабель или USB-порт
Права доступа на Linux

Особенности на разных операционных системах

На Windows основная масса случаев решается связкой «правильный DFU-режим + драйвер WinUSB через Zadig». Дополнительно убедитесь, что запускаете терминал от имени администратора, а антивирус не блокирует доступ утилиты к USB — такое встречается редко, но проверить стоит при полном отсутствии результата.

На Linux типовая проблема — права. Без настроенных udev-правил доступ к USB-устройству есть только у root, поэтому команда без sudo возвращает тот же error 74, хотя устройство исправно. Проверка простая: выполните sudo dfu-util -l — если устройство появилось, настройте udev-правило для постоянного доступа без sudo.

На macOS утилита обычно устанавливается через Homebrew и работает без дополнительных драйверов, но убедитесь, что используется актуальная версия dfu-util — старые сборки могут некорректно работать с новыми чипами.

Почему dfu-util не видит устройство, хотя оно «прошивается другой программой»

Разные инструменты используют разные протоколы. Например, фирменные утилиты производителя могут прошивать устройство через последовательный порт или собственный USB-протокол, а не через стандартный DFU. То, что устройство прошивается фирменной программой, не означает, что оно находится в DFU-режиме и будет видно для dfu-util — это независимые механизмы.

Когда проблема на стороне устройства

Если все проверки пройдены, а dfu-util -l по-прежнему показывает пустой список на любом компьютере и с любым кабелем, возможна аппаратная причина: повреждён разъём устройства, неисправен USB-трансивер платы или загрузчик не запускается из-за проблем с питанием самой платы.

Проверка в этом случае такая: подключите устройство к другому компьютеру с заведомо рабочим кабелем. Если и там оно никак не определяется в DFU-режиме — обратитесь к документации производителя или в сервис. Самостоятельная перепайка разъёма или элементов платы без опыта может усугубить неисправность.

Частые вопросы

Что означает error 74 в dfu-util?

Это код завершения утилиты, который сопровождается сообщением No DFU capable USB device available. Он означает, что на USB-шине не найдено ни одного устройства в режиме DFU, и прошивка не началась.

Устройство видно в Диспетчере устройств, но dfu-util его не находит. Почему?

Скорее всего, устройство работает не в DFU-режиме (например, определяется как COM-порт) либо ему назначен драйвер, несовместимый с dfu-util. Проверьте режим и установите драйвер WinUSB через Zadig.

Обязательно ли использовать Zadig на Windows?

В большинстве случаев да: стандартный драйвер Windows не позволяет dfu-util обращаться к устройству. Zadig подменяет его на WinUSB, после чего утилита видит устройство. Исключение — если производитель поставляет собственный совместимый драйвер.

На Linux команда работает только с sudo. Это нормально?

Да, это типичное поведение: без udev-правил доступ к USB-устройству есть только у root. Можно либо использовать sudo, либо создать udev-правило для постоянного доступа от обычного пользователя.

Может ли быть причина в самом файле прошивки?

Нет. Error 74 возникает до начала передачи данных — на этапе поиска устройства. Файл прошивки проверяется позже, и его ошибки выдают другие сообщения.