We have a board with a stm32f105 which is programmed via DFU and my own programming application. This application is based on the STM DfuSe demo source using the stm dfu dlls. It has worked fine in production and service for a couple of years.
Recently we got reports of it not always working so I have tested again and find on some PCs it fails to start the application. ie. DFU erase, upload and verify (download, compare) work fine but the leave DFU operation fails. The target application does not run, the PC device manage still shows the DFU device and the programming application times out. If I modify my programming utility to skip erase/upload/verify etc and just do leave DFU it still fails so nothing to do with previous DFU operations.
I have also tested with a F407 discovery board (to rule out hardware) and the stm DFU Tester program, it still fails in the same way. I tried to use the STM cubeMX programmer but that doesn't appear to see the DFU devices on any machine.
Which PC/software etc it fails on appears fairly random. I have tested with win7 and win10, usb2 and usb3 interfaces, my programming util and the ST DFU tester, our F105 hardware and the F407 disco in most combinations and cannot see a pattern.
Given this all worked fine until recently, the hardware has not changed and the programming util and dlls have not changed. All I can think of is some issue with either windows updates or perhaps the DFU USB driver (although I don't think that has changed).
Does anyone have any ideas?
EDIT: btw. when if fails I get a DFU state of STATE_DFU_ERROR and DFU status of STATUS_errUNKNOWN