SteinWipe Motion Control - BBS X1 User Manual
[{"type":"paragraph","children":[{"t":"text","v":"SWMC Release: BBS_X1_SWMC_Machine_Preset_Feb.15.1.2025.3mf","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Developed On: Bambu Studio V.1.10.1.50","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Shipped Date: Feb.23.2025","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"Welcome","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This manual covers the BBS_X1_SWMC_Machine_Preset_Feb.15.1.2025 release of SteinWipe Motion Control (SWMC) for the Bambu Lab X1C running Bambu Studio. This is the original Core 0 BETA release; the first formally named release under the Core versioning system, and the release that introduced the reusable wipe macro architecture that every later release builds on.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Feb.15.1 is the beta that led to the Feb.15.2 stable release. Most users will want the stable release. This manual exists for users who bought into Feb.15.1 during its beta window, for users who want the historical baseline, and for anyone tracing the project\u0026#39;s development history. The fixes and polish added in Feb.15.2 include several user-reported bug fixes that affect real-world printing; if you are deciding which release to run, the stable is the recommended path.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"1. What\u0026#39;s in this release","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.1 The big picture","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Feb.15.1.2025 is the Core 0 beta; the first release built under the newly formalized Core naming system. It establishes the architecture that every later Core 0 and Core 1 release refines. If you want to understand where SWMC started, this is the release.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This release uses inline SteinSwitch toggles that you enable or disable by editing the gcode directly. Core 0 predates SteinSwitch Definitions (SSDs), the keyword-based control layer introduced in Core 1. If you want the newer SSD architecture where features are controlled via keywords in your printer notes, see the Apr.28.1.2025 release instead.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This release ships as a single .3mf file that opens directly in Bambu Studio and installs as a printer preset. Once installed, configuration happens inside the preset\u0026#39;s gcode sections.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.2 What\u0026#39;s new in Core 0","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Reusable wipe macro.","b":true,"i":false},{"t":"text","v":" The 41-line Template Custom G-code holds the wipe pattern. Every gcode section that needs a wipe invokes the macro with a single call, instead of duplicating the full scrub motion. This cuts End G-code from 268 lines to 90, and Pause from 94 to 68.","b":false,"i":false}]},{"children":[{"t":"text","v":"Chute tapping.","b":true,"i":false},{"t":"text","v":" First appearance of chute tapping in SWMC. Taps the chute door at the end of startup purge to knock down any stuck purge material.","b":false,"i":false}]},{"children":[{"t":"text","v":"Sidestepping purges.","b":true,"i":false},{"t":"text","v":" Instead of dumping filament in one spot, purging shifts from left to right for more uniform purge distribution.","b":false,"i":false}]},{"children":[{"t":"text","v":"Work light purge cycles.","b":true,"i":false},{"t":"text","v":" Turns the toolhead light on during purges so the chamber camera can see what is happening; useful for calibrating your purge multiplier.","b":false,"i":false}]},{"children":[{"t":"text","v":"PA test line moved over QR code.","b":true,"i":false},{"t":"text","v":" Places the Pressure Advance test line over the build plate QR code for safety and consistency.","b":false,"i":false}]},{"children":[{"t":"text","v":"Completely rewritten material change code.","b":true,"i":false},{"t":"text","v":" Ground-up rewrite of AMS material switching with optimized temp timing, improved retractions, and 15-20% reduction in flushing volume.","b":false,"i":false}]},{"children":[{"t":"text","v":"Improved first layer scanning.","b":true,"i":false},{"t":"text","v":" Old routine pulled purge back into prints; Core 0 hijacks the stock routine for a clean scan.","b":false,"i":false}]},{"children":[{"t":"text","v":"User offsets at template level.","b":true,"i":false},{"t":"text","v":" Enter your wiper calibration offsets once in the Template Custom G-code section; they apply across all prints and survive updates (as long as you do not re-import from scratch).","b":false,"i":false}]},{"children":[{"t":"text","v":"New \u0026quot;Cool Plate\u0026quot; definitions.","b":true,"i":false},{"t":"text","v":" Better startup sequences for printers using cool plates.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitch for first-layer travel optimization.","b":true,"i":false},{"t":"text","v":" Travel path from wiper exit to first layer start is smarter; reduces stringing carried onto the print.","b":false,"i":false}]}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.3 Known limitations in this beta","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"No ams_detour SteinSwitch. This was added in the Feb.15.2 stable. Feb.15.1 uses the stock AMS travel path; no wiper routing on AMS calls.","b":false,"i":false}]},{"children":[{"t":"text","v":"Fan cover alarm defaults OFF. If your fan cover falls off mid-print, the print continues silently. The alarm was flipped ON by default in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Straight-line wipe scrubbing. The Feb.15.1 Template Custom G-code uses a straight-line X-then-Y scrub pattern. Feb.15.2 upgraded this to arc moves for smoother, quieter motion.","b":false,"i":false}]},{"children":[{"t":"text","v":"User-reported bugs present. The Feb.15.2 stable fixed several issues that are present here, including a slicing error in later BBS versions, a nozzle-too-hot issue on smooth plates, and a motor slip issue during manual filament change. See Section 7 for the full list.","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"2. Before you install","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.1 Requirements","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"You will need a Bambu Lab X1C printer, the Bambu Studio version shown on this release\u0026#39;s card, the .3mf file linked from the release page, and a SteinWipe V1 wiper mount installed on your X1C. The wiper mount is recommended rather than strictly required; most SteinSwitches work without hardware, but the actual wiping features need something to wipe against.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.2 Install the wiper first, then calibrate","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"If your SteinWipe wiper mount is not yet installed, install it before running any SWMC gcode. Wiper entry XY error greater than 0.5mm can tear the wiper pad on the very first wipe cycle, so mount alignment matters.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"After the mount is installed, run the calibration gcode from the release resources to measure your mount\u0026#39;s XY offsets. Those values get entered into the Template Custom G-code section once and stay put across updates (as long as you do not re-import the preset from scratch).","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Wiper mount reference","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"wiper_mount_installed | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"SteinWipe V1 wiper mount installed on the rear panel of a Bambu Lab X1C. Mount bolted with M3 hardware through the backing plate - no tape.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.3 Skip calibration if","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"You ran calibration on this same wiper mount for a previous SWMC release and have not moved, unbolted, or replaced it. Or, you do not have a SteinWipe mount installed and plan to use only non-wiper features like the modified pause routine or chute tapping; the wipe features need a wiper pad to wipe against.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"3. Installing the preset","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"These steps apply to the Bambu Studio version listed on this release\u0026#39;s card.","b":false,"i":false}]},{"type":"list","listType":"ordered","items":[{"children":[{"t":"text","v":"Download the .3mf file from the release resources on the release page.","b":false,"i":false}]},{"children":[{"t":"text","v":"Open Bambu Studio.","b":false,"i":false}]},{"children":[{"t":"text","v":"Click the \u0026quot;Add\u0026quot; tool in the toolbar and import the BBS_X1_SWMC_Machine_Preset_Feb.15.1.2025.3mf file.","b":false,"i":false}]},{"children":[{"t":"text","v":"If prompted, choose \u0026quot;Open as Project.\u0026quot;","b":false,"i":false}]},{"children":[{"t":"text","v":"Under the \u0026quot;Prepare\u0026quot; tab, open your printer profile settings.","b":false,"i":false}]},{"children":[{"t":"text","v":"Save this profile as a new preset so updates do not overwrite your customizations.","b":false,"i":false}]},{"children":[{"t":"text","v":"Name the new preset anything you like; something like \u0026quot;X1C SWMC Feb.15.1\u0026quot; works well.","b":false,"i":false}]},{"children":[{"t":"text","v":"Select your new preset from the printer dropdown. You are ready to slice.","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"The preset ships with sensible defaults already selected for every SteinSwitch. You can use it as-shipped or edit the gcode to change feature toggles (Section 5).","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Import step","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"install_step_1_import | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Add tool in the Bambu Studio toolbar; click here to import the .3mf file.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Save as preset","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"install_step_2_preset | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Save your imported profile as a new preset under the Prepare tab. Naming it with the core date makes updates easier later.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"4. How SteinSwitches work","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.1 The mechanism","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"A SteinSwitch is a numbered, labeled block inside the gcode that controls one feature. The feature\u0026#39;s ON\/OFF state is determined by a single word inside the block: {if true} turns the feature ON, {if false} turns it OFF.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Each SteinSwitch block starts with a comment header telling you what the feature does and how to toggle it. The shape looks like this:","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; Example SteinSwitch block","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";2 SteinSwitch wipe_before_first_z_touch - removes string from last print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to wipe the nozzle before homing the z on startup","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"[feature gcode runs here]","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{endif}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"To toggle this feature off, you find this block in the gcode, change {if true} to {if false}, and save the preset. On the next slice, the feature is disabled.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.2 Why this architecture","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Core 0 predates SteinSwitch Definitions (SSDs), the keyword-based architecture introduced in Core 1. Every feature in this release is controlled by editing the gcode directly. This is the baseline architecture that SWMC was built on before the SSD layer was added. Users who want the keyword-based control layer should use the Apr.28.1.2025 release instead.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.3 Where to find and edit SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"In Bambu Studio, open the Prepare tab, click the gear icon next to your printer preset (or right-click the preset and choose \u0026quot;Edit\u0026quot;), and go to the Machine G-code tab. There are four gcode sections that contain SteinSwitches:","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Machine Start G-code (11 SteinSwitches)","b":false,"i":false}]},{"children":[{"t":"text","v":"Change Filament G-code (3 SteinSwitches)","b":false,"i":false}]},{"children":[{"t":"text","v":"Layer Change G-code (1 SteinSwitch)","b":false,"i":false}]},{"children":[{"t":"text","v":"Pause G-code (1 SteinSwitch)","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"The End G-code and Template Custom G-code sections do not contain user-toggle SteinSwitches; leave those alone.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"To find a specific SteinSwitch, copy the comment header block shown in Section 5 for that SteinSwitch, paste it into your text editor\u0026#39;s find function, and it will take you directly to the SteinSwitch in the gcode.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.4 Rules for editing","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Only change {if true} to {if false} or vice versa; do not change other parts of the block","b":false,"i":false}]},{"children":[{"t":"text","v":"Save the preset after any change before slicing","b":false,"i":false}]},{"children":[{"t":"text","v":"If something goes wrong, re-import the .3mf to restore defaults","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"5. SteinSwitch reference","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The full set of SteinSwitches available in this release, grouped by gcode section and in the order they appear. For each SteinSwitch, the code box shows the exact comment header as it appears in the gcode; copy and paste it into your text editor\u0026#39;s find function to jump directly to that SteinSwitch.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.1 Start G-code SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Removes stringing from the last print by wiping the nozzle before the Z-axis homes. Default: ON. Recommended.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; wipe_before_first_z_touch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";2 SteinSwitch wipe_before_first_z_touch - removes string from last print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to to wipe the nozzle before homing the z on startup","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Pauses the printer at startup so you can manually inspect the nozzle before printing starts. Default: OFF. Enable for critical prints or after a nozzle change.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; user_nozzle_inspection","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";3 SteinSwitch user_nozzle_inspection","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if false}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Scrapes the nozzle against the steel tab before the startup priming purge. May help with a cleaner purge. Default: ON on textured PEI plate, skipped on smooth plates.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; scrub_nozzle_before_first_purge","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";5 SteinSwitch scrub_nozzle_before_first_purge - may help with a cleaner purge","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Handles residual filament not pulled back during the previous print\u0026#39;s end. Prevents filament bits sticking to the side of the nozzle on the wipe. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; purge_for_unretracted_filament","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";6 SteinSwitch purge_for_unretracted_filament - prevents filament bits sticking to side of nozzle on swipe","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a second cleaning pass immediately before the auto bed leveling probe for cleaner ABL readings. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; secondary_nozzle_clean_before_ABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";7 SteinSwitch secondary_nozzle_clean_before_ABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a final steel-tab scrub before the main SteinWipe cycle. Helps with probe tip cleanliness for the bed level scan. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; perform_secondary_nozzle_scrub_before_steinwipe","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";8 SteinSwitch perform_secondary_nozzle_scrub_before_steinwipe (clean tip to probe for bed level)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Taps the chute door at the end of the startup purge to knock down any stuck purge material before printing starts. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; chute_tapping (in Start G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";8 SteinSwitch chute_tapping knock down any purge before starting a print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to use chute tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip chute tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Limits the mechanical vibration test (input shaping) to only run when bed leveling is checked in the slicer. Prevents redundant tests on every print. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; mech_test_only_with_bed_cali","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";10 SteinSwitch mech_test_only_with_bed_cali","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs the mech test at the center of the printed part rather than a fixed bed location. Better shaping data for off-center prints. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; mech_test_on_part_center","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";11 SteinSwitch mech_test_on_part_center (may help with improved surface finish for off center parts)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Dynamic Auto Bed Leveling; a P1 Series firmware feature (firmware 01.06.01.02+). Not available on X1. Default: OFF. Do not enable on X1.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_DABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";12 SteinSwitch use_DABL (only works with firmware 01.06.01.02 P1 Series - not available for X1)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to use stock routine with option to modify (SteinSwitch 12)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if false}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Switches the Pressure Advance test line to a higher-accuracy routine. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_true_PA_test_line","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";13 SteinSwitch use_true_PA_test_line","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Validates PA test line placement before drawing. Nested inside use_true_PA_test_line; only takes effect when 13 is ON. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; safety_check_pa_line_position","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"; SteinSwitch safety_check_pa_line_position","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Optimizes the travel path from wiper exit to first layer start; reduces stringing carried onto the print. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; no_strings_to_first_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";15 SteinSwitch no_strings_to_first_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Numbers 1, 4, and 9 are unused in Start G-code. SteinSwitch 1 was added in the Feb.15.2 stable release (for ams_detour) and is not present here. Numbers 4 and 9 are development fingerprints from features removed or moved during iteration. Not bugs; safe to ignore.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.2 Change Filament G-code SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All three SteinSwitches in Change Filament G-code are numbered \u0026quot;1\u0026quot; in the gcode. Search by feature name or by the code box below rather than by number.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Clears the nozzle before each AMS tool change to prevent purge from sticking. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; quick_wipe_before_tool_change","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch quick_wipe_before_tool_change - clears nozzle to prevent purge from sticking","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Taps the chute during AMS swaps to dislodge stuck purge buildup. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; chute_tapping (in Change Filament G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch chute_tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a wipe cycle on the way back to the print after AMS material change. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; return_to_print_wipe_cycle (in Change Filament G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch return_to_print_wipe_cycle","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.3 Layer Change G-code SteinSwitch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a wipe cycle during layer changes when a wipe is needed (timing coordinated with time lapse captures). Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; return_to_print_wipe_cycle (in Layer Change G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch return_to_print_wipe_cycle","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.4 Pause G-code SteinSwitch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"On resume from a print pause, the toolhead runs a wipe cycle before returning to the print. Prevents stringing on the resumed layer. Default: ON. Disable only if you have wiper alignment issues.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_steinwipe_after_pause","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";SteinSwitch use_steinwipe_after_pause","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to enable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to disable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"6. Wiper offset calibration","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This section only applies if you have the SteinWipe V1 wiper mount installed.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.1 Why calibrate","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The wiper sits at a fixed position in the slicer\u0026#39;s coordinate space. Small variations in how your mount was drilled or how the mount bracket sits determine whether the nozzle enters the wiper pad cleanly or off-center. Error greater than 0.5mm can tear the wiper pad on the first wipe cycle.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.2 The V3 calibration workflow","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The current approach uses a single .3mf file that walks the toolhead through all 31 offset positions in sequence. The printer\u0026#39;s progress bar flashes different percentages at each position. You watch the nozzle as it moves, and when alignment looks correct, you note the progress bar value. The Offset Chart (embedded below) converts that value to an offset number.","b":false,"i":false}]},{"type":"list","listType":"ordered","items":[{"children":[{"t":"text","v":"Open SteinWipe_XY_Offset_Cali.3mf in Bambu Studio.","b":false,"i":false}]},{"children":[{"t":"text","v":"Enable the calibration routine as instructed in the .3mf notes.","b":false,"i":false}]},{"children":[{"t":"text","v":"Slice and send to the printer.","b":false,"i":false}]},{"children":[{"t":"text","v":"Watch the nozzle as the toolhead cycles through positions.","b":false,"i":false}]},{"children":[{"t":"text","v":"When the nozzle aligns correctly with the wiper, note the progress bar percentage on the display. Reference photos for correct alignment are below.","b":false,"i":false}]},{"children":[{"t":"text","v":"Look up that percentage on the Offset Chart (also below) to get the offset value.","b":false,"i":false}]},{"children":[{"t":"text","v":"Repeat for the other axis if needed.","b":false,"i":false}]},{"children":[{"t":"text","v":"Enter the X and Y offset values into the Template Custom G-code section of your printer preset on the G0 X0 Y0 line, replacing the zeros with your measured values. A screenshot of where this lives is below.","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"If alignment is perfect at the center position (progress bar at the zero point), leave the user offset at G0 X0 Y0 and you are done.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Correct Y axis alignment","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"cali_y_axis_aligned | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The nozzle correctly aligned on the Y axis during V3 calibration. Note this alignment and the corresponding progress bar percentage.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Correct X axis alignment","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"cali_x_axis_aligned | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The nozzle correctly aligned on the X axis during V3 calibration.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Calibration progress bar","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"calibration_progress_bar | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The printer progress bar signals the current offset position during V3 calibration. Watch the nozzle and note the percentage at the aligned position.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% V3 Offset Chart","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"offset_chart_v3 | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Convert the progress bar percentage to your offset value using this chart. Also available as a separate download from the Dev Pack.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Where to enter your offsets","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"template_custom_gcode_location | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Template Custom G-code section of your printer preset. Replace the zeros on the G0 X0 Y0 line with your measured offset values.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.3 When to recalibrate","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"After installing a new wiper mount","b":false,"i":false}]},{"children":[{"t":"text","v":"After replacing the wiper pad (not always required, but recommended)","b":false,"i":false}]},{"children":[{"t":"text","v":"If you unbolt and re-mount the wiper AND the mount holes were drilled oversized (the mount slides on its bolts)","b":false,"i":false}]},{"children":[{"t":"text","v":"After moving the printer if you suspect mount shift","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"7. Known issues","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Fan cover alarm defaults OFF. If your fan cover falls off mid-print, the print continues silently instead of pausing. The alarm was flipped ON by default in the Feb.15.2 stable release.","b":false,"i":false}]},{"children":[{"t":"text","v":"Bambu Studio 1.10.2 \/ 2.0 slicing error. Extrusion outside build plate error when slicing with later BBS versions. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Nozzle too hot on smooth plate. Burns the PA test line start point. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Layer counter display lag. Layer number on the printer screen does not always update correctly during prints. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Motor slip after print. Manual filament change initiated immediately after a print can cause motor slip. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Return-to-print slicer bug. Can send toolhead outside build volume on multi-plate prints. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"Long delay before AMS filament cutting. Cut waits on temperature before firing; delay is longer than needed. Fixed in Feb.15.2 via temperature gradient logic.","b":false,"i":false}]},{"children":[{"t":"text","v":"AMS return-to-print temps not falling fast enough. Can cause overshoot on the first extrusion after a cut. Fixed in Feb.15.2.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitch numbering has duplicates. In Start G-code, SteinSwitches 8a and 8b share the number \u0026quot;8\u0026quot;. In Change Filament G-code, three SteinSwitches all share the number \u0026quot;1\u0026quot;. When searching the gcode, use the feature name or the code boxes in Section 5 rather than the number.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitches 4 and 9 are missing from Start G-code. Development fingerprints from features removed or moved during iteration. Not a bug; safe to ignore.","b":false,"i":false}]},{"children":[{"t":"text","v":"G07 typo in Layer Change G-code. Lines 23 and 26 contain G07 where G17 (XY-plane select) is intended. Cosmetic; firmware treats unknown G-codes as no-ops, so no functional impact.","b":false,"i":false}]},{"children":[{"t":"text","v":"ExtrusionRole G-code header is stale. The ExtrusionRoleGcode file\u0026#39;s content header says ;_Release_Jan.29.1.2025 from copy-forward; the filename Feb.15.1.2025 is the source of truth per Leckiestein\u0026#39;s release naming convention.","b":false,"i":false}]},{"children":[{"t":"text","v":"Wiper pad damage from bad offset. Always run the offset calibration (Section 6) before your first wipe cycle on a newly installed mount. XY error greater than 0.5mm can rip the wiper pad on the first wipe.","b":false,"i":false}]},{"children":[{"t":"text","v":"Oversized mount holes force repeat calibration. If the mount holes were drilled oversized during installation, the mount will slide on its bolts and need recalibration every time it is unbolted. Correctly sized holes let the mount return to the same position when re-mounted.","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"8. Reporting bugs","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Issues with this release go to ","b":false,"i":false},{"t":"link","v":"the Leckiestein Discord bug reporting channel for Core Feb.15.1","url":"https:\/\/discord.com\/channels\/1327182397673832448\/1343739548198371338","target":""},{"t":"text","v":". Include a video of the issue, a 3MF diagnostic file (see Discord #faq for how to generate one), and the specific SteinSwitch states (which are ON and which are OFF) when the issue occurred.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Note that most user-reported Feb.15.1 bugs have been addressed in the Feb.15.2 stable release. If your issue appears on the \u0026quot;What was fixed\u0026quot; list in the Feb.15.2 manual, the recommended fix is to upgrade to stable.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Discord bug channel example","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"discord_bug_channel_example | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Leckiestein Discord bug reporting channels. Each SWMC core family has its own channel; post your bug report in the channel matching the core you are running.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"9. What\u0026#39;s next","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Feb.15.2.2025 stable release is the direct successor to this beta. It adds the ams_detour SteinSwitch, flips the fan cover alarm ON by default, upgrades the Template Custom G-code to arc-based wipe moves, and fixes all the user-reported bugs listed in Section 7. For most users, Feb.15.2 is the recommended version of Core 0.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Apr.28.1.2025 release replaces Core 0\u0026#39;s inline SteinSwitch architecture with SteinSwitch Definitions (SSDs); keyword-based configuration through printer notes. Core 1 is the newer system but Core 0 stable (Feb.15.2) remains in active maintenance for users who prefer the proven baseline.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"For advanced features like SteinWipe User Definitions (SWUDs), ProTab hardware support, and the next generation of SWMC, see the Dev Pack Pro listing.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"10. Licence and liability","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"SWMC modifies printer motion and startup behavior via slicer-level G-code. Use of this profile is at the user\u0026#39;s own risk. The user\/operator assumes full responsibility for machine operation, monitoring, and all outcomes. Leckiestein shall not be held liable for damage, injury, or losses resulting from use, misuse, or modification of this profile preset.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"11. ","b":false,"i":false},{"t":"link","v":"Terms and conditions","url":"https:\/\/leckiestein.com\/policies\/terms-of-service","target":""},{"t":"text","v":"","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"By purchasing or downloading this release, you agree to the Leckiestein Terms and Conditions for Digital Products, effective January 1, 2025.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.1 Usage rights","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Your purchase grants you a ","b":false,"i":false},{"t":"text","v":"personal, non-transferable, non-exclusive license","b":true,"i":false},{"t":"text","v":" to use this release. You may download and use the files for your personal projects, and modify the gcode for your own use.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.2 Not allowed","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Reselling, redistributing, or sharing the .3mf or its embedded gcode","b":false,"i":false}]},{"children":[{"t":"text","v":"Uploading the files to public or private repositories","b":false,"i":false}]},{"children":[{"t":"text","v":"Selling physical items produced from the files without a Tier 3+ commercial license","b":false,"i":false}]}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.3 Commercial use","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"If you wish to use this release for commercial purposes, you must subscribe to the Pro Maker License Tier (Tier 3+ on Patreon) or purchase a separate commercial license. Any unauthorized commercial use is a violation of these terms.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.4 Non-refundable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All digital product sales are final and non-refundable once the files have been downloaded. If you experience technical issues or believe a product has an error, contact Leckiestein via direct messages for assistance (not in comment threads).","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.5 Copyright","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All intellectual property rights to this release remain with Leckiestein. Any infringement of these rights may result in legal action.","b":false,"i":false}]}]
[{"base":"discord_bug_channel_example","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/discord_bug_channel_example.png?v=1776891401\u0026width=2400","width":740,"height":276},{"base":"offset_chart_v3","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/offset_chart_v3.png?v=1776879866\u0026width=2400","width":800,"height":926},{"base":"cali_y_axis_aligned","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/cali_y_axis_aligned.jpg?v=1777948631\u0026width=2400","width":512,"height":512},{"base":"template_custom_gcode_location","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/template_custom_gcode_location.png?v=1776879798\u0026width=2400","width":1774,"height":838},{"base":"swmcl_open_preset","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/swmcl_open_preset.png?v=1776882018\u0026width=2400","width":1470,"height":662},{"base":"wiper_mount_installed","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/wiper_mount_installed.jpg?v=1776877683\u0026width=2400","width":4032,"height":2268},{"base":"install_step_1_import","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/install_step_1_import.png?v=1776878899\u0026width=2400","width":1046,"height":278},{"base":"install_step_2_preset","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/install_step_2_preset.png?v=1776878899\u0026width=2400","width":1588,"height":690}]