Update from klipper 0.10.0 to 0.13.0 failed

Basic Information:

Printer Model: Ender 5
MCU / Printerboard: btt-skr-mini-e3-v2
Host / SBC: Raspberry 3b
klippy.log

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:

After a long while i wanted to update my printer to latest klipper. It went fine for the Raspberry MCU which i have but on the btt-skr-mini-e3-v2 i ssee following issue:

SD Card Flash Error: argument of type ‘NoneType’ is not iterable
Traceback (most recent call last):
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1661, in main
spiflash.run()
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1598, in run
self.run_reactor_task(self.run_reset_upload)
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1584, in run_reactor_task
k_reactor.run()
File “/home/pi/klipper/klippy/reactor.py”, line 292, in run
g_next.switch()
File “/home/pi/klipper/klippy/reactor.py”, line 340, in _dispatch_loop
timeout = self._check_timers(eventtime, busy)
File “/home/pi/klipper/klippy/reactor.py”, line 158, in _check_timers
t.waketime = waketime = t.callback(eventtime)
File “/home/pi/klipper/klippy/reactor.py”, line 48, in invoke
res = self.callback(eventtime)
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1538, in run_reset_upload
self.run_sdcard_upload(eventtime)
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1556, in run_sdcard_upload
self.mcu_conn.configure_mcu(printfunc=output_line)
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1373, in configure_mcu
self._configure_mcu_spibus(printfunc=printfunc)
File “/home/pi/klipper/scripts/spi_flash/spi_flash.py”, line 1304, in _configure_mcu_spibus
if bus not in bus_enums:
TypeError: argument of type ‘NoneType’ is not iterable

When i look into the enumations object like it’s accessed here klipper/scripts/spi_flash/spi_flash.py at master · Klipper3d/klipper · GitHub i can see that it is missing the bus, only ‘static_string_id’ and ‘pin’ are present:

enumerations’: {u’static_string_id’: {‘update_digital_out not valid with active queue’: 18, “Can’t add signal that is already active”: 25, “Can’t assign oid”: 11, ‘Move queue overflow’: 15, ‘oids already allocated’: 10, ‘Invalid oid type’: 12, ‘Not a valid input pin’: 27, ‘Command parser error’: 7, ‘Rescheduled timer in the past’: 26, ‘Timer too close’: 3, ‘sentinel timer called’: 4, ‘Shutdown cleared when not shutdown’: 2, ‘Invalid count parameter’: 23, ‘Invalid move request size’: 14, ‘Can not set soft pwm cycle ticks while updates pending’: 20, ‘Command request’: 8, “Can’t reset time when stepper active”: 22, ‘alloc_chunk failed’: 17, ‘Message encode error’: 6, ‘Not an output pin’: 28, ‘Invalid command’: 5, ‘Already finalized’: 13, ‘Scheduled digital out event will exceed max_duration’: 19, ‘Stepper too far in past’: 24, ‘config_reset only available when shutdown’: 9, ‘alloc_chunks failed’: 16, ‘Missed scheduling of next digital out event’: 21}, u’pin’: {‘PE1’: 65, ‘PG10’: 106, ‘PG11’: 107, ‘PG12’: 108, ‘PG13’: 109, ‘PG14’: 110, ‘PG15’: 111, ‘PA0’: 0, ‘PA1’: 1, ‘PA2’: 2, ‘PA3’: 3, ‘PA4’: 4, ‘PA5’: 5, ‘PA6’: 6, ‘PA7’: 7, ‘PA8’: 8, ‘PA9’: 9, ‘PC14’: 46, ‘PC15’: 47, ‘PC10’: 42, ‘PC11’: 43, ‘PC12’: 44, ‘PC13’: 45, ‘PB5’: 21, ‘PB4’: 20, ‘PB7’: 23, ‘PB6’: 22, ‘PB1’: 17, ‘PB0’: 16, ‘PB3’: 19, ‘PB2’: 18, ‘PB9’: 25, ‘PB8’: 24, ‘PC8’: 40, ‘PC9’: 41, ‘PC2’: 34, ‘PC3’: 35, ‘PC0’: 32, ‘PC1’: 33, ‘PC6’: 38, ‘PC7’: 39, ‘PC4’: 36, ‘PC5’: 37, ‘PD13’: 61, ‘PD12’: 60, ‘PD11’: 59, ‘PD10’: 58, ‘PD15’: 63, ‘PD14’: 62, ‘PF7’: 87, ‘PD9’: 57, ‘PD8’: 56, ‘PD7’: 55, ‘PD6’: 54, ‘PD5’: 53, ‘PD4’: 52, ‘PD3’: 51, ‘PD2’: 50, ‘PD1’: 49, ‘PD0’: 48, ‘PF15’: 95, ‘PF14’: 94, ‘PF11’: 91, ‘PF10’: 90, ‘PF13’: 93, ‘PF12’: 92, ‘PA12’: 12, ‘PE8’: 72, ‘PE9’: 73, ‘PF0’: 80, ‘PE4’: 68, ‘PE5’: 69, ‘PE6’: 70, ‘PE7’: 71, ‘PE0’: 64, ‘PF3’: 83, ‘PE2’: 66, ‘PE3’: 67, ‘PF2’: 82, ‘PB11’: 27, ‘PB10’: 26, ‘PB13’: 29, ‘PB12’: 28, ‘PB15’: 31, ‘PB14’: 30, ‘PF6’: 86, ‘PF1’: 81, ‘PA13’: 13, ‘PA10’: 10, ‘PA11’: 11, ‘PF5’: 85, ‘PF4’: 84, ‘PA14’: 14, ‘PA15’: 15, ‘PF9’: 89, ‘PF8’: 88, ‘PG6’: 102, ‘PG7’: 103, ‘PG4’: 100, ‘PG5’: 101, ‘PG2’: 98, ‘PG3’: 99, ‘PG0’: 96, ‘PG1’: 97, ‘PG8’: 104, ‘PG9’: 105, ‘PE14’: 78, ‘PE15’: 79, ‘PE12’: 76, ‘PE13’: 77, ‘PE10’: 74, ‘PE11’: 75}}

Hi @geNAZt ,

To flash an SKR Mini E3 (I tested V2 and V3), you put out/klipper.bin on a microSD card (preferably 16GB or smaller), and rename it to FIRMWARE.bin. Then,

  1. Remove printer power
  2. Unplug Pi from SKR
  3. Install microSD card to SKR
  4. Power on printer
  5. Wait 30s
  6. Power-cycle printer
  7. Plug in Pi to SKR

Let me know how that goes.

Thanks for the help.

I did like you said and the MCU also states that it is

mcu: Current version v0.13.0-154-g9346ad191-dirty-20250630_134656-printer
rpi: Current version v0.13.0-154-g9346ad191-dirty-20250630_135505-printer

(this is from mainsail)

But i get this error:

Once the underlying issue is corrected, use the “RESTART”
command to reload the config and restart the host software.

mcu ‘mcu’: Unknown command: tmcuart_send

and the flashing via sdcard helper (which worked before) broke.

The FIRMWARE.bin had been renamed to FIRMWARE.CUR like i would expect though. So i’m certain that the firmware which has been compiled under current 0.13 is on the printer itself.

I found out what it was. Somewhere along the version updates the CONFIG switches where renamed and regrouped. This basically stripped every feature on the first update (which was done automatically) from the MCU.

Regenerating all configs for all Chips that i have with make menuconfig fixed it.

4 Likes