Ошибка dfu-util: error 74 — no DFU capable USB device available появляется в момент, когда утилита dfu-util запущена, но не находит ни одного устройства, работающего в режиме DFU (Device Firmware Upgrade). Код 74 здесь — это просто код завершения программы при неудаче, а не код неисправности устройства: утилита опросила USB-шину и не обнаружила подходящего дескриптора.
Типичный сценарий: вы подключаете плату — например, STM32, Arduino-compatible контроллер, 3D-принтер или смартфон в режиме прошивки — вводите команду dfu-util -l и получаете пустой ответ с error 74. Проблема почти всегда находится в одной из четырёх зон: устройство не переведено в DFU-режим, система не установила нужный драйвер, кабель не передаёт данные или утилита запущена без необходимых прав.
Что означает ошибка и как работает dfu-util
dfu-util — консольная утилита, реализующая стандартный USB-класс DFU. Она ищет на шине устройства, которые сами сообщают: «я поддерживаю обновление прошивки». Если устройство загрузилось в обычном режиме (например, как виртуальный COM-порт или картридер), для dfu-util оно «невидимо» — отсюда и сообщение об отсутствии DFU-совместимых устройств.
Важно понимать: error 74 не означает поломку устройства — это диагностическое сообщение о том, что на шине нет подходящего дескриптора. Соответственно, задача сводится к тому, чтобы устройство реально вошло в DFU-режим и операционная система его корректно определила.
Проверка №1: устройство действительно в DFU-режиме
Самая частая причина — устройство просто не переведено в режим обновления прошивки. Способ входа в DFU зависит от конкретного контроллера и платы, универсальной комбинации не существует. Обычно требуется зажать кнопку BOOT (или замкнуть перемычку BOOT0) и затем нажать/отпустить RESET, либо задать особую последовательность нажатий.
Порядок проверки выглядит так:
- 🔌 Отключите устройство от USB полностью.
- 🔘 Зажмите кнопку
BOOT/ установите джампер согласно документации вашей платы. - 🔄 Подключите USB-кабель, не отпуская кнопку, затем отпустите её.
- 💻 Выполните
dfu-util -lи проверьте, появилось ли устройство в списке.
Точную последовательность входа в DFU для вашей модели нужно сверить с официальной документацией производителя платы — у разных контроллеров она отличается, а на некоторых устройствах DFU-режим активируется программной командой из основной прошивки.
☑️ Базовая диагностика error 74
Проверка №2: драйверы в Windows
На Windows даже корректно переведённое в DFU устройство может не определяться из-за отсутствия подходящего драйвера. Откройте Диспетчер устройств и посмотрите, как система видит плату: если появляется устройство с восклицательным знаком, «Unknown USB Device» или устройство в разделе «Другие устройства» — проблема именно в драйвере.
Распространённое решение — установка WinUSB-драйвера через утилиту Zadig: в ней выбирается DFU-устройство из списка и устанавливается драйвер WinUSB или libusbK. После этого dfu-util обычно начинает видеть устройство. Учтите, что Zadig заменяет драйвер выбранного устройства — убедитесь, что выбрали именно DFU-интерфейс, а не мышь или клавиатуру.
⚠️ Внимание: в Zadig обязательно проверяйте VID/PID и название устройства перед установкой драйвера. Замена драйвера на «не том» устройстве отключит его до отката драйвера в Диспетчере устройств.
Проверка №3: права доступа в Linux и macOS
В Linux dfu-util часто не видит устройство из-за отсутствия прав на доступ к USB. Сначала проверьте, видит ли система устройство вообще:
lsusb
sudo dfu-util -l
Если с sudo устройство находится, а без него — error 74, проблема в правах. Решение — добавить правило udev для VID/PID вашего устройства или временно работать через sudo. Правила udev обычно размещаются в /etc/udev/rules.d/, после чего выполняется перезагрузка правил командой sudo udevadm control --reload.
На macOS отдельных драйверов обычно не требуется, но стоит убедиться, что dfu-util установлен корректно (например, через Homebrew) и что устройство отображается в системном отчёте об USB.
Проверка №4: кабель, порт и питание
Аппаратная сторона недооценена: заметная доля случаев error 74 связана с кабелем «только для зарядки», в котором физически отсутствуют линии данных. Устройство при этом получает питание и даже может светить индикаторами, но на шине USB не появляется.
- 🔋 Замените кабель на заведомо «дата-кабель», например тот, через который телефон передаёт файлы на ПК.
- 🧩 Подключайтесь напрямую к порту компьютера, минуя USB-хабы и переходники.
- 🖥️ Попробуйте другой порт: на некоторых системах порты USB 3.x ведут себя иначе, чем USB 2.0.
- ⚡ Если устройство питается отдельно, проверьте, что внешнее питание подано и стабильно.
Сводная таблица причин и решений
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| dfu-util -l показывает пустой список | Устройство не в DFU-режиме | Повторить вход в DFU по документации платы |
| В Диспетчере устройств — «Unknown device» | Нет драйвера | Установить WinUSB через Zadig |
| sudo dfu-util -l видит устройство, без sudo — нет | Права доступа в Linux | Добавить правило udev или использовать sudo |
| Индикатор питания горит, устройство нигде не видно | Кабель без линий данных | Заменить кабель на дата-кабель |
| Устройство видно, но пропадает при прошивке | Нестабильный порт/хаб, питание | Подключить напрямую, проверить питание |
Если ничего не помогло
Когда все базовые проверки пройдены, а error 74 сохраняется, нужно локализовать проблему. Подключите устройство к другому компьютеру: если там оно определяется — дело в конфигурации первой системы (драйверы, права, антивирусный перехват USB). Если не определяется нигде — возможна аппаратная проблема: повреждение разъёма, неисправность USB-контроллера платы или отсутствие DFU-бутлоадера в прошивке.
⚠️ Внимание: не пытайтесь прошивать устройство «вслепую» альтернативными инструментами (SWD, UART-загрузчики), пока не убедились, что проблема не в кабеле и драйвере. Некорректная прошивка через низкоуровневый интерфейс может стереть загрузчик и усложнить восстановление.
Как проверить, есть ли на плате DFU-бутлоадер
Не все микроконтроллеры и платы поддерживают DFU «из коробки». Часть контроллеров имеет заводской ROM-бутлоадер (например, многие STM32), а часть требует предварительной прошивки DFU-бутлоадера через SWD или UART. Уточните в документации на вашу плату, какой механизм обновления прошивки предусмотрен и не был ли бутлоадер перезаписан ранее.
FAQ: частые вопросы об error 74
Что означает код 74 в dfu-util?
Это код завершения утилиты при ошибке, а не код неисправности устройства. Он сопровождает сообщение «no DFU capable USB device available» — dfu-util не нашла на шине ни одного устройства в DFU-режиме.
Устройство определяется как COM-порт — почему dfu-util его не видит?
Потому что устройство работает в обычном режиме, а не в DFU. COM-порт (CDC) и DFU — разные USB-интерфейсы. Переведите устройство в режим обновления прошивки по инструкции производителя.
Нужно ли ставить драйверы на Linux?
Отдельных драйверов обычно не требуется — DFU поддерживается ядром. Чаще нужны права: проверьте работу через sudo и настройте правило udev для VID/PID устройства.
Может ли быть виноват USB-хаб?
Да. Хабы, особенно без внешнего питания, и длинные удлинители могут мешать корректному перечислению устройства. Подключайтесь напрямую к порту компьютера.
dfu-util видит устройство, но прошивка обрывается — это та же ошибка?
Нет, это другая ситуация: устройство в DFU-режиме найдено. Обрыв обычно связан с нестабильным соединением, питанием или несовместимостью файла прошивки — проверяйте кабель и корректность образа.