Skip to main content
Visitor II
September 14, 2020
Question

STM DFU driver installer

  • September 14, 2020
  • 4 replies
  • 22959 views

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

    This topic has been closed for replies.

    4 replies

    Explorer
    November 7, 2023

    bump

     

    same case.

    Explorer
    November 7, 2023

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

    Graduate
    October 21, 2025

    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

     

    Super User
    October 21, 2025

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

    Graduate
    October 22, 2025

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

    Super User
    October 22, 2025

    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. 

    Graduate
    October 26, 2025

    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.