Skip to content
Ch 12Checkpoint

Checkpoint 12

Checkpoint · Chapter 12 — Software: Pi OS image, Klipper/Moonraker/Mainsail, firmware, printer.cfg

  • MainsailOS boots, is reachable at your hostname, and every component in the Update Manager is up to date.
  • The Klipper version string from Step 12.7 is written down, and both MCUs were flashed from that same working copy.
  • ls /dev/serial/by-id/ shows exactly two Klipper devices: one stm32g0b1xx (Nitehawk-SB V2) and one stm32f446xx or stm32h743xx (Leviathan). No katapult entries.
  • printer.cfg is the -sbv2 file — grep -c 'nhk:PB8' printer.cfg returns 1 and grep -c gpio printer.cfg returns 0 (the V1 file returns 20).
  • config.leviathan and config.nitehawk are in ~/printer_data/config/, and ~/printer_data/config is a git repo with the Ch 12 baseline committed.
  • Line 1 is [include mainsail.cfg], and Mainsail shows no missing-configuration panel.
  • All six 350 mm sites are uncommented: [stepper_x], [stepper_y], [stepper_z], [quad_gantry_level], [resonance_tester], [gcode_macro G32].
  • [bed_mesh] exists and carries zero_reference_position: 175, 175.
  • [input_shaper] and [exclude_object] exist; exactly one live [probe] section.
  • [fan_generic nevermore] on PF9; [output_pin caselight] has one live value:.
  • safe_z_home still reads -10,-10 with the Ch 13 TODO next to it.
  • STATUS is clean after RESTART, both MCUs connected, three sensors reading room temperature.
  • KlipperScreen is running and the DSI panel shows the right way up.
  • Nothing has been homed, heated or jogged.
  • The machine is still live with the bay open: nobody reaches into the bay until Step 11.67 has shut it down, unplugged it and read 0 V.
Revali passing a gate
You built two flashed boards and a printer.cfg that knows it is a 350. 9 gummy worms.

Common mistakes

  • Downloading leviathan-printer-rev-d.cfg. The wiring guide links it and it looks right. Every nhk: pin in it belongs to an RP2040. Grep for nhk:PB8 before you upload anything.
  • Hunting for rp2040 in /dev/serial/by-id/. There is no RP2040 in a Rev D+ kit. The toolboard is stm32g0b1xx. The guide is wrong; the board is not.
  • Building MCU firmware before running the Update Manager. You will flash both boards twice. Update the host first, then flash.
  • Omitting the bootloader offset in make menuconfig. 8 KiB for the Nitehawk, 32 KiB (F446) or 128 KiB (H743) for the Leviathan. Flash with no offset and Katapult is gone, and the only way back is DFU with the board buttons.
  • Never seeing Clock Reference in menuconfig. It only appears once Enable extra low-level configuration options is ticked; without it the build silently uses 8 MHz, flashes cleanly and never enumerates. Double-click SW1 for Katapult, fix, re-flash — no DFU needed.
  • Following the V1.3 Leviathan guide on a V1.2 board. STM32H743/25 MHz/128 KiB against STM32F446/12 MHz/32 KiB. Read the silkscreen and the serial ID before menuconfig, not after.
  • Filling in home_xy_position with a guess. -10,-10 failing is the interlock working. A plausible wrong value drives the nozzle into the plate.
  • Adding [bed_mesh] without zero_reference_position. The Omron's z_offset is 0 by design, so the raw mesh carries its whole trigger height as a constant offset.

Next

Ch 11 Part A, starting at Step 11.67: shut down, unplug and prove the machine dead first. Then skirts, bay fans, bottom panel, Z belt covers, Nevermore, spool holder and the door sub-assembly close the bay this chapter powered. Then Ch 13 — Initial startup: work the Voron startup wizard in its own order (temperatures → heaters → fans → STEPPER_BUZZ → XY endstop → homing → bed locating → 0,0 → Z endstop → probe → PID → QGL → Z-offset), which closes the safe_z_home TODO from Step 12.33.