Output from minicom, which I think confirms that the problem is with stm32flash: Ready UART>{0x01,0xfe UART LIVE DISPLAY, } TO STOP WRITE: 0x01 WRITE: 0xFE UART> READ: 0x79 READ: 0x31 READ: 0x00 READ: 0x00 READ: 0x79 UART> Note: this is through a Buspirate v3.6, which has an FT232 on it. To use stm32flash I put the buspirate in "transparent bridge" mode and then run stm32flash. This works with STMCubeProgrammer.
another typo... the response to cmd 0x01 on the logic analyzer is {0x79, 0x31, 0x00, 0x00, 0x79}
My apologies. I think this is a better strace capture. The first capture I posted shows the scenario where the bootloader has already been through an init sequence. This capture shows stm32flash receiving the acknowledgement from my device: $ strace -xx -T -e read,write ./stm32flash -k /dev/ttyUSB1 -b 115200 -m 8e1 read(3, "\x7f\x45\x4c\x46\x02\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x3e\x00\x01\x00\x00\x00\xc0\x41\x02\x00\x00\x00\x00\x00"..., 832) = 832 <0.000035> write(1, "\x73\x74\x6d\x33\x32\x66\x6c\x61\x73\x68\x20\x30\x2e\x37\x0a",...
Flashing STM32U5 works with STM32CubeProgrammer but not stm32flash