cancel
Showing results for 
Search instead for 
Did you mean: 

STM DFU driver installer

andrelongo85
Associate II

Hello,

We have developed a product based on STM32M4 and would like to enable our clients to do DFU firmware update.

We have develop a Windows based app which will include STM32_Programmer_CLI and make use of it. Although we would need our client to install also DFU windows drivers. Is there an official installer somewhere which will install only the STM DFU drivers?

Thanks for your help,

Andrea

7 REPLIES 7
eeed
Associate

bump

 

same case.

eeed
Associate

C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\Drivers\DFU_Driver

Ivaylo Ilchev
Associate III

There are 99 easier ways to cut your wrists than using Stm32CubeProgrammer. :) I had embedded the programmer's API (26.5MB) in the application and the DFU driver installer (44MB) too. Everything is ridiculously easy with dfu-util. In the dfu-util project sources there is a Python module that converts hex to dfu - dfuse-pack.py. The dfu-util itself + libusb, compiled statically with clang, is only 1MB, and the drivers are installed with Zadig.

# Upload
dfu-util.exe -D firmware.dfu
# Run application
dfu-util.exe -d 0483:df11 -a 0 -s 0x8000000:leave

 

Zadig is awesome. Only one hitch: seems that Microsoft has broken it for Windows on ARM.  

Ivaylo Ilchev
Associate III

dfu-util works perfectly with the default Windows driver, WinUSB.drv. Therefore, Zadig is not needed.

What Zadig actually does it creates association of certain USB hardware ID with the winusb driver.

If you managed to use a new device without Zadig, that device probably has the same VID & PID as some already installed device (usually VID_0483&PID_DF11). Or some signed driver has been installed for it  - such as drivers provided with CubeProgrammer, or manually thru the device manager, etc. Or the device itself has the "winusb descriptor" that automatically installs winusb on it. 

There is a problem if a driver from the dfuse package was previously installed. In this case, it must be uninstalled by deleting the files. I put this in the package I made for internal use with st-link tools, dfu-util and and a tool that converts hex to dfuse, dfu-files. BTW all the tools and chips folder is 1.75MB, zip is 665kB. :)

IvayloIlchev_0-1761478239311.png

## Troubleshooting

- Probe won’t connect / "No ST‑LINK detected":
  - Ensure only one tool accesses the probe (close CubeProgrammer, IDEs, or GDB servers).
  - Install the WinUSB driver for the ST‑LINK interface using Zadig:
    1. Download Zadig, run it as admin.
    2. Options → List All Devices.
    3. Select "ST‑Link Debug" (or similar interface), choose `WinUSB`, click Install Driver.
  - Try `--connect-under-reset` and/or `--hot-plug`.
  - Lower the speed: `--freq 400k`.

- Unknown device / flash size is 0:
  - You might be running an unsupported or very new MCU — update the tools or the `chips/` database.
  - Make sure the target has power and the BOOT pins aren’t forcing a different mode.

- DFU upload/download fails:
  - Confirm the device is in DFU mode (check with `dfu-util -l`).
  - Use the correct alt‑setting (`-a`) and address (`-s 0x08000000:leave`) for raw binaries.