We're having problems at the moment getting our device (STM32F405ZGT6) to enter DFU mode, or rather, we can enter it, but it always takes a little over 2 minutes to appear.
We have a push button switch on the board to enter into DFU. If you let go of the switch at any point before the 2 minutes it will boot into application memory.
When it finally enters DFU mode it behaves as expected.
Interestingly, this will only work on the Mac.
Dfu Driver Iphone
Simply select the STM32 Bootloader device within the device manager, right click and select update driver software and follow the images below STM-DFU-Driver.jpg 1919x1393 275 KB That should solve any driver issues but if you still have any questions/problem let me know so we can try figure it out and add it to the guide.
Attempting the same on Windows, holding the button in while cycling power, Windows will straight away detect an 'unknown device' even after installing the drivers included in the Dfuse demo application folder. Trying to manually install the driver against this 'unknown device' then returns 'the device cannot start'.
We have also implemented a 'jump to bootloader' routine within our main application, which shuts down various things before jumping to the internal bootloader. Using this method on Windows will bring the 'unknown device connected' message in Windows. Using this method on Mac, nothing is ever detected.
How can I get the device drivers to enter DFU mode in a timely manner on our STM32F4?
Voltage Spike1 Answer
$begingroup$Make sure you are not using the same VID:PID pair as the bootloader. This would confuse operating systems resulting in a wrong driver assignment.
We have also implemented a 'jump to bootloader' routine within our main application, which shuts down various things before jumping to the internal bootloader
You want to disconnect on the USB bus properly befor jumping to the bootloader. The easiest method is to reconfigure the USB pins in GPIO mode and drive them with a low output for one second, then start the bootloader afterwards.
Now the OS will see a new device once the bootloader activates USB again, since the one second with both bus data lines down was detected as device removal.