Basic Information:
Printer Model: Artillery Sidewinder X4 Plus
MCU / Printerboard: STM32F401
Host / SBC: MKS SKIPR custom
klippy.log
I think to had success in update MCU’s firmware of an X4 Plus but I saw a strange behaviour. I got errors from dfu-util, but I think the MCU got flashed and updated to last Klipper firmware because Mainsail tells me this:
mcu (stm32f401xc)
Version: v0.12.0-405-g8a3d2afd7
Awake: 0.00, Freq: 84 MHz,
Host(aarch64, 64bit)
Version: v0.12.0-405-g8a3d2afd7-dirtyOS:
Armbian-unofficial 25.02.0-trunk noble
Distro: armbian
Remember that to flash the MCU is a bit tricky, you have to short the BOOT labeled contacts that are without a button, and keeping them shorted press the H-RST button release H-RST and after BOOT.
Re-connect via SSH because pressing H-RST closes connection and give the last command after make menuconfig && make.
Pressing the buttons the MCU goes in DFU mode and changes USB ID
from 1d50:614e OpenMoko, Inc. stm32f401xc
to 0483:df11 STMicroelectronics STM Device in DFU Mode
Here the bunch of messages with a succes but a final error.
mks@artillery:~/klipper$ sudo make flash FLASH_DEVICE=0483:df11
[sudo] password for mks:
Flashing out/klipper.bin to 0483:df11
sudo dfu-util -d ,0483:df11 -R -a 0 -s 0x8000000:leave -D out/klipper.bin
dfu-util 0.11
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to
http://sourceforge.net/p/dfu-util/tickets/
dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Opening DFU capable USB device...
Device ID 0483:df11
Device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(10) = dfuERROR, status(10) = Device's firmware is corrupt. It cannot return to run-time (non-DFU) operations
Clearing status
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Downloading element to address = 0x08000000, size = 37152
Erase
[=========================] 100% 37152 bytes
Erase done.
Download
[=========================] 100% 37152 bytes
Download done.
File downloaded successfully
Submitting leave request...
Transitioning to dfuMANIFEST state
dfu-util: can't detach
Resetting USB to switch back to Run-Time mode
Failed to flash to 0483:df11: Error running dfu-util
If the device is already in bootloader mode it can be flashed with the
following command:
make flash FLASH_DEVICE=0483:df11
OR
make flash FLASH_DEVICE=1209:beba
If attempting to flash via 3.3V serial, then use:
make serialflash FLASH_DEVICE=0483:df11
make: *** [src/stm32/Makefile:111: flash] Error 255