Skip to main content
JBurg.5
Associate II
October 17, 2023
Question

STM32CubeProgrammer DFU instable

  • October 17, 2023
  • 1 reply
  • 2099 views

Hi,

our c

 

13:26:59 : STM32CubeProgrammer API v2.14.0 | Windows-64Bits
 13:27:37:380 : UR connection mode is defined with the HWrst reset mode
 13:27:38:416 : Device Descriptor:
 13:27:38:416 : |_bLength : 0x12
 13:27:38:417 : |_bDescriptorType : 0x01
 13:27:38:417 : |_bcdUSB : 0x0100
 13:27:38:417 : |_bDeviceClass : 0x00
 13:27:38:417 : |_bDeviceSubClass : 0x00
 13:27:38:418 : |_bDeviceProtocol : 0x00
 13:27:38:418 : |_bMaxPacketSize : 0x40
 13:27:38:418 : |_idVendor : 0x0483
 13:27:38:418 : |_idProduct : 0xdf11
 13:27:38:419 : |_bcdDevice : 0x2200
 13:27:38:419 : |_iManufacturer : 0x01
 13:27:38:419 : |_iProduct : 0x02
 13:27:38:419 : |_iSerialNumber : 0x03
 13:27:38:420 : |_bNumConfigurations : 0x01
 13:27:38:420 : Configuration Descriptor:
 13:27:38:420 : |_bLength : 0x09
 13:27:38:421 : |_bDescriptorType : 0x02
 13:27:38:421 : |_wTotalLength : 0x36
 13:27:38:421 : |_bNumInterfaces : 0x01
 13:27:38:421 : |_bConfigurationValue : 0x01
 13:27:38:421 : |_iConfiguration : 0x00
 13:27:38:422 : |_bmAttributes : 0xc0
 13:27:38:422 : |_bMaxPower : 0x32
 13:27:38:422 : Interface Descriptor Alternate Settings: 0x00
 13:27:38:423 : |_bLength : 0x09
 13:27:38:423 : |_bDescriptorType : 0x04
 13:27:38:423 : |_bInterfaceNumber : 0x00
 13:27:38:423 : |_bAlternateSetting : 0x00
 13:27:38:424 : |_bNumEndpoints : 0x00
 13:27:38:424 : |_bInterfaceClass : 0xfe
 13:27:38:424 : |_bInterfaceSubClass : 0x01
 13:27:38:424 : |_bInterfaceProtocol : 0x02
 13:27:38:425 : |_iInterface : 0x04
 13:27:38:425 : Interface Descriptor Alternate Settings: 0x01
 13:27:38:425 : |_bLength : 0x09
 13:27:38:426 : |_bDescriptorType : 0x04
 13:27:38:426 : |_bInterfaceNumber : 0x00
 13:27:38:426 : |_bAlternateSetting : 0x01
 13:27:38:427 : |_bNumEndpoints : 0x00
 13:27:38:428 : |_bInterfaceClass : 0xfe
 13:27:38:428 : |_bInterfaceSubClass : 0x01
 13:27:38:429 : |_bInterfaceProtocol : 0x02
 13:27:38:429 : |_iInterface : 0x05
 13:27:38:429 : Interface Descriptor Alternate Settings: 0x02
 13:27:38:430 : |_bLength : 0x09
 13:27:38:430 : |_bDescriptorType : 0x04
 13:27:38:430 : |_bInterfaceNumber : 0x00
 13:27:38:430 : |_bAlternateSetting : 0x02
 13:27:38:430 : |_bNumEndpoints : 0x00
 13:27:38:431 : |_bInterfaceClass : 0xfe
 13:27:38:431 : |_bInterfaceSubClass : 0x01
 13:27:38:431 : |_bInterfaceProtocol : 0x02
 13:27:38:431 : |_iInterface : 0x06
 13:27:38:431 : Interface Descriptor Alternate Settings: 0x03
 13:27:38:432 : |_bLength : 0x09
 13:27:38:432 : |_bDescriptorType : 0x04
 13:27:38:432 : |_bInterfaceNumber : 0x00
 13:27:38:432 : |_bAlternateSetting : 0x03
 13:27:38:433 : |_bNumEndpoints : 0x00
 13:27:38:433 : |_bInterfaceClass : 0xfe
 13:27:38:433 : |_bInterfaceSubClass : 0x01
 13:27:38:433 : |_bInterfaceProtocol : 0x02
 13:27:38:433 : |_iInterface : 0x07
 13:27:38:433 : Functional Descriptor :
 13:27:38:433 : |_bLength : 0x09
 13:27:38:433 : |_bDescriptorType : 0x21
 13:27:38:433 : |_bmAttributes : 0x0b
 13:27:38:433 : |_wDetachTimeOut : 0xff
 13:27:38:434 : |_wTransferSize : 0x0800
 13:27:38:434 : |_bcdDFUVersion : 0x011a
 13:27:38:434 : USB speed : Full Speed (12MBit/s)
 13:27:38:434 : Manuf. ID : STMicroelectronics
 13:27:38:434 : Product ID : STM32 BOOTLOADER
 13:27:38:434 : SN : 00000008FFFF
 13:27:38:434 : DFU protocol: 1.1
 13:27:38:434 : Board : --
 13:27:38:434 : Device ID : 0x0449
 13:27:38:434 : DFU status = 0
 13:27:38:435 : DFU State = 9
 13:27:38:435 : Status: 0, State: 9
 13:27:38:435 : sending an abort request
 13:27:38:435 : DFU status = 0
 13:27:38:435 : DFU State = 2
 13:27:38:435 : setting the address pointer to address: 0x08000000
 13:27:38:435 : DFU status = 0
 13:27:38:435 : DFU State = 4
 13:27:38:435 : DFU status = 0
 13:27:38:435 : DFU State = 5
 13:27:38:436 : DFU status = 0
 13:27:38:436 : DFU State = 9
 13:27:38:436 : Status: 0, State: 9
 13:27:38:436 : sending an abort request
 13:27:38:436 : DFU status = 0
 13:27:38:436 : DFU State = 2
 13:27:38:436 : setting the address pointer to address: 0x08000000
 13:27:38:436 : DFU status = 0
 13:27:38:436 : DFU State = 4
 13:27:38:437 : DFU status = 0
 13:27:38:437 : DFU State = 5
 13:27:38:437 : DFU status = 0
 13:27:38:437 : DFU State = 5
 13:27:38:437 : Status: 0, State: 5
 13:27:38:437 : setting the address pointer to address: 0x00000000
 13:27:38:437 : DFU status = 0
 13:27:38:437 : DFU State = 4
 13:27:38:437 : DFU status = 1
 13:27:38:437 : DFU State = 10
 13:27:38:437 : DFU status = 1
 13:27:38:438 : DFU State = 10
 13:27:38:438 : DFU status = 1
 13:27:38:438 : DFU State = 10
 13:27:38:438 : DFU status = 1
 13:27:38:438 : DFU State = 10
 13:27:38:438 : DFU status = 1
 13:27:38:438 : DFU State = 10
 13:27:38:439 : DFU status = 1
 13:27:38:439 : DFU State = 10
 13:27:38:439 : DFU status = 1
 13:27:38:439 : DFU State = 10
 13:27:38:439 : DFU status = 1
 13:27:38:439 : DFU State = 10
 13:27:38:440 : DFU status = 1
 13:27:38:440 : DFU State = 10
 13:27:38:440 : DFU status = 1
 13:27:38:440 : DFU State = 10
 13:27:38:440 : DFU status = 1
 13:27:38:440 : DFU State = 10
 13:27:38:440 : DFU status = 1
 13:27:38:440 : DFU State = 10
 13:27:38:441 : DFU status = 1
 13:27:38:441 : DFU State = 10
 13:27:38:442 : DFU status = 1
 13:27:38:442 : DFU State = 10
 13:27:38:442 : DFU status = 1
 13:27:38:443 : DFU State = 10
 13:27:38:443 : DFU status = 1
 13:27:38:443 : DFU State = 10
 13:27:38:443 : DFU status = 1
 13:27:38:443 : DFU State = 10
 13:27:38:444 : DFU status = 1
 13:27:38:444 : DFU State = 10
 13:27:38:444 : DFU status = 1
 13:27:38:444 : DFU State = 10
 13:27:38:445 : DFU status = 1
 13:27:38:445 : DFU State = 10
 13:27:38:445 : DFU status = 1
 13:27:38:445 : DFU State = 10
 13:27:38:445 : DFU status = 1
 13:27:38:446 : DFU State = 10
 13:27:38:446 : DFU status = 1
 13:27:38:446 : DFU State = 10
 13:27:38:446 : DFU status = 1
 13:27:38:446 : DFU State = 10
 13:27:38:446 : DFU status = 1
 13:27:38:447 : DFU State = 10
 13:27:38:447 : DFU status = 1
 13:27:38:447 : DFU State = 10
 13:27:38:447 : received memory address is wrong or unsupported
 13:27:38:447 : Status: errTARGET, State: dfuERROR
 13:27:38:447 : Database: Config 0 is active.
 13:27:38:448 : DFU status = 1
 13:27:38:448 : DFU State = 10
 13:27:38:448 : Status: 1, State: 10
 13:27:38:448 : sending a clear status request
 13:27:38:448 : DFU status = 0
 13:27:38:448 : DFU State = 2
 13:27:38:448 : setting the address pointer to address: 0x08000000
 13:27:38:448 : DFU status = 0
 13:27:38:448 : DFU State = 4
 13:27:38:449 : DFU status = 0
 13:27:38:449 : DFU State = 5
 13:27:39:010 : DFU status = 0
 13:27:39:010 : DFU State = 9
 13:27:39:010 : Status: 0, State: 9
 13:27:39:010 : sending an abort request
 13:27:39:010 : DFU status = 0
 13:27:39:011 : DFU State = 2
 13:27:39:011 : setting the address pointer to address: 0x08000000
 13:27:39:011 : DFU status = 0
 13:27:39:011 : DFU State = 4
 13:27:39:011 : DFU status = 0
 13:27:39:011 : DFU State = 5
 13:27:39:011 : UPLOADING OPTION BYTES DATA ...
 13:27:39:011 : Bank : 0x00
 13:27:39:011 : Address : 0x1fff0000
 13:27:39:011 : Size : 44 Bytes
 13:27:39:012 : DFU status = 0
 13:27:39:012 : DFU State = 5
 13:27:39:012 : Status: 0, State: 5
 13:27:39:012 : setting the address pointer to address: 0x1fff0000
 13:27:39:012 : DFU status = 0
 13:27:39:012 : DFU State = 4
 13:27:39:012 : DFU status = 0
 13:27:39:013 : DFU State = 5
 13:27:39:013 : receiving packet nbr: 0
 13:27:39:013 : DFU status = 0
 13:27:39:013 : DFU State = 5
 13:27:39:013 : sending an abort request
 13:27:39:013 : DFU status = 0
 13:27:39:013 : DFU State = 2
 13:27:39:013 : UpLoading data
 13:27:39:013 : libusb control transfer error [-9] : LIBUSB_ERROR_PIPE 
 13:27:39:013 : Error: Uploading Option Bytes bank: 0 failed
 13:27:39:035 : Error: Initializing the Option Bytes failed
 13:27:39:053 : Disconnected from device.

 

ustomers can update the software of our STM32F46 product using STM32CubeProgrammer in DFU mode. This worked so far without problems. Now we are facing errors. On some Win 10/11 PCs a stable USB DFU connection cannot be established, i.e. USB1 is found after activating BOOT0 but, after clicking "Connect", it disappears with the error "Initializing the Option Bytes failed".

Below is the error log.

Regards
Jan

 

This topic has been closed for replies.

1 reply

Tesla DeLorean
Guru
October 17, 2023

Do older versions of STM32 Cube Programmer work?

Anything remarkable or common about the machines it fails on? DELLs?

Using Hubs or Docking Stations?

Your product has a HSE crystal?

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
JBurg.5
JBurg.5Author
Associate II
October 18, 2023

Hello,

It fails on several Dell machines and works on other Dells. On other PC types the same. We tried hubs and PC ports without any difference. We use a 25 MHz crystal clock generator at OSC_IN.

We tried v2.5 and v2.14. Both failed. The error message of v2.5 was different (some read unprotect issue).

Further observations:

The USB port remains active after STM32 Cube Programmer fails. It is pemanently shown in the Device Manager until I unplug my device. If I click "Connect" a second time the programmer shows an empty message box and hangs.

We have PCs which ALWAYS work with ALL boards.

We have PCs which ALWAYS work with SOME boards and NEVER with OTHER boards.
These other boards are a modification of the ones which always work. The modification concerns a simplified analog signal path. The layout is the same, only less components. As mentioned above these boards can be updated on some PCs without any problem, i.e. they work in principle. So the behaivour is perfectly reproducible.

The USB clock shape looks okay.

The 3.3V digital power is stable and always on.

Any glitches or crosstalk or a critical timing? I don't know how to debug the communication.

Is there a document about the minimum hardware requirements for updates in DFU mode? As far as I see only D+, D-, BOOT0 and the clock are involved.

Regards
Jan

 

 

JBurg.5
JBurg.5Author
Associate II
October 18, 2023

In AN2606 I found this note:

"When a bootloader firmware supports DFU, it is mandatory that no USB Host is connected
to the USB peripheral during the selection phase of the other interfaces. After selection
phase, the user can plug a USB cable without impacting the selected bootloader execution
except for commands generating a system reset"

Does it mean that there must be no PC connection while activating the DFU bootloader? This would not be the case in my application. My device enters the bootloader start menu by applying VUSB to the FS USB interface. I use this interface only for updates.

Jan