Add a toolhead to StealthChanger¶
Going from N toolheads to N+1 — physical install, firmware, Klipper config, NFC integration.
Prerequisites¶
- The N+1th StealthChanger toolhead, assembled and mounted to its dock
- A spare RP2040 toolboard, flashed to the same firmware build as the existing ones (see Flash RP2040 toolheads)
- The dock physically installed and roughly aligned on the gantry beam
Steps¶
1. Connect the new toolboard¶
Wire it into the same VIA Labs USB hub the other toolboards use. Power it from the same 5V rail.
Verify enumeration:
If the new one doesn't show up, see the VIA Labs gotchas in the flashing guide — this is usually firmware drift, not a wiring problem.
2. Add the MCU to printer.cfg¶
Capture the serial from the ls output above.
3. Define the tool's extruder, fan, and toolhead¶
Mirror the existing tool definitions (T0..T4). The pattern looks like:
[extruder5]
step_pin: T5:gpio2
dir_pin: T5:gpio3
enable_pin: !T5:gpio4
# …rotation_distance, microsteps, heater_pin, sensor_pin, etc.
[fan_generic T5_partfan]
pin: T5:gpio5
[heater_fan T5_hotend_fan]
pin: T5:gpio6
heater: extruder5
Then the toolchanger tool block:
[tool T5]
tool_number: 5
extruder: extruder5
fan: T5_partfan
gcode_x_offset: 0
gcode_y_offset: 0
gcode_z_offset: 0
params_park_x: <dock X>
params_park_y: <dock Y>
params_park_z: <dock Z>
pickup_gcode:
# standard StealthChanger pickup
dropoff_gcode:
# standard StealthChanger dropoff
The <dock X/Y/Z> values are measured per-dock; consult
viesturz/klipper-toolchanger docs.
4. Update the NFC daemon's tool list¶
Edit ~/printer_data/config/nfc_spoolman.cfg:
Restart the daemon:
The next NFC scan will offer T5 as a prompt button.
5. Update macros that hardcode tool counts¶
Anything iterating tools — PRINT_START, POST_TOOL_CHANGE,
NFC_STATUS — usually has a literal range like:
Bump to 6:
Or, better, derive from [toolchanger].tool_numbers once and store in
a save_variable.
6. Restart Klipper¶
Watch the Klipper log for any config errors:
7. Calibrate the new dock¶
Standard StealthChanger calibration:
- Probe each axis at the dock position
- Tune the
close_y/open_yclearance values until pickup/dropoff is smooth and clears adjacent docks - Use the printer's tool-offset probing (if equipped) to align T5 to
the same
gcode_*_offsetreference as T0
Y clearance is currently undersized in this fleet
See Toolchange workflow.
Use a generous close_y for the new dock until the fleet-wide
re-tune happens.
8. Scan a spool onto T5¶
Tap an NFC-tagged spool, click T5 in the prompt dialog. Confirm:
curl -s http://localhost:7125/printer/objects/query?save_variables \
| jq '.result.status.save_variables.variables | with_entries(select(.key | startswith("nfc_t5_")))'
Expect nfc_t5_material, nfc_t5_extruder_temp, etc. to be populated.
Decommissioning a toolhead¶
The reverse — remove the dock physically, then:
- Drop the
[mcu T5]/[extruder5]/[tool T5]blocks fromprinter.cfg - Drop
5fromtools = …innfc_spoolman.cfg - Restart Klipper + daemon
- Optionally clear
nfc_t5_*fromsave_variables:(repeat for eachcurl -X POST http://localhost:7125/printer/gcode/script \ -d 'script=SAVE_VARIABLE VARIABLE=nfc_t5_spool_id VALUE=0'nfc_t5_*key)