Сообщение 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 по шагам
Типичные причины и способы устранения
Сведём основные сценарии в таблицу — по ней удобно быстро определить, с чего начать.
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Устройство видно как COM-порт | Не активирован DFU-режим | Войти в загрузчик по инструкции модели |
| Неизвестное устройство с восклицательным знаком | Нет подходящего драйвера | Установить WinUSB через Zadig |
| Устройство вообще не появляется в системе | Кабель без линий данных или неисправный порт | Заменить кабель, подключиться напрямую |
| Устройство есть, но dfu-util его не видит | Драйвер не WinUSB или нет прав доступа | Сменить драйвер, на Linux — sudo/udev |
| Устройство пропадает при попытке прошивки | Просадка питания, выход из DFU | Короткий качественный кабель, другой порт |
Обратите внимание на последнюю строку таблицы: если устройство «отваливается» именно в момент начала прошивки, причина почти всегда в питании или кабеле, а не в драйвере. Драйвер либо работает, либо нет — он не вызывает отключения посреди процесса.
Особенности на разных операционных системах
На 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 возникает до начала передачи данных — на этапе поиска устройства. Файл прошивки проверяется позже, и его ошибки выдают другие сообщения.