Skip to main content
Visitor II
March 10, 2026
Question

STM32H573I-DK: DA regression fails with timeout - provisioning integrity 0xf5f5f5f5

  • March 10, 2026
  • 2 replies
  • 299 views

Firmware Package: STM32Cube_FW_H5_V1.6.0 Product

 
Problem
DA regression fails with timeout. I cannot recover the board.
 
I was trying to run the STiROT Template example (STiROT_Appli) on the STM32H573I-DK board.
 
1. I ran a custom provisioning script (based on ob_flash_programming.sh + obkey_provisioning.sh)
2. During image flashing step, I accidentally flashed an unsigned binary (appli.bin) instead of the signed image (appli_init_sign.hex)
3. OBKey provisioning (DA_Config.obk, STiRoT_Config.obk, STiRoT_Data.obk) may have failed due to the MCU being in an unstable state
4. I then set Product State to PROVISIONED (0x2E)
 
Discovery output Discovery succeeds and shows
- PSA lifecycle: ST_LIFECYCLE_IROT_PROVISIONED
- ST provisioning integrity status: 0xf5f5f5f5
- ST HDPL1 status: 0x1
- Permission: Full Regression is listed as available
 
Regression attempt Using default keys from the firmware package (not regenerated):
- Key: DA/Keys/key_3_leaf.pem
- Certificate: DA/Certificates/cert_leaf_chain.b64
- Password: DA/Binary/password.bin
 
DA/regression.sh Result
image.png

Question
The provisioning integrity status 0xf5f5f5f5 suggests OBKeys were not properly programmed.
Is there any way to recover this board from PROVISIONED state when DA authentication fails due to missing/corrupt OBKeys?
 
Thank you

2 replies

Bubbles
ST Employee
March 12, 2026

Hello @obrahimo,

I'm afraid your board may be lost, as the DA Auth shares storage space with the OBK. And without successful authentication there's no regression.

BR,

J

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
Associate II
July 8, 2026

@obrahimo same happend to me. But I was lucky to have a bootloader up and running. I added a regression routine to new app and uploaded, run the routine over the CLI and the device was back to open state. In my case i’m using STM32H523.

 

So if you have an ability to change the application and run the routine, then use this snipped code:

static void make_regression(const cli_cmd_t *p_cmd, const char * const p_attr)
{
UNUSED(p_cmd);
UNUSED(p_attr);

cli_printf("Launching regression...");

/* Unlock the Flash to enable the flash control register access */
/* Unlock the Options Bytes */
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();

FLASH_OBProgramInitTypeDef flash_option_bytes_bank1 = {0};
flash_option_bytes_bank1.OptionType = OPTIONBYTE_PROD_STATE;
flash_option_bytes_bank1.ProductState = OB_PROD_STATE_REGRESSION;

if ( HAL_OK != HAL_FLASHEx_OBProgram( &flash_option_bytes_bank1 ))
{
cli_printf("Error while setting OB Bank1 config state!");
}

cli_printf("OB Launch ...");

/* Launch the Options Bytes (reset the board, should not return) */
if ( HAL_OK != HAL_FLASH_OB_Launch())
{
cli_printf("Error while execution OB_Launch");
}

NVIC_SystemReset();
}

 

It worked for me at least :)