The Calibration Sequence
The Sovol SV08 is CoreXY, 350mm bed, Klipper firmware — a Voron 2.4 in beige plastic. This is the printer that lets Sorted3D scale beyond the AD5M's 220mm constraints. The first product to benefit will be the cooler tray, which gets to grow from 190mm wide to a full 320mm Yeti Tundra 65 width without any bolt-together workarounds.
Before any of that, the printer needs to actually print well. Klipper makes calibration scriptable over Moonraker. The sequence:
- PID tune hotend at 245°C — characterizes heater response
- PID tune bed at 80°C — same, with much more thermal mass
- Quad Gantry Level — the four Z motors get tweaked independently to make the gantry parallel to the bed
- Z offset calibration — the SV08 uses a load cell on the nozzle itself, finds the offset between inductive probe trigger and true nozzle contact
- Bed mesh — probe a 9×9 grid, save the deviation map for first-layer compensation
- Input shaper — sweep accelerometer-recorded vibrations across X and Y, fit a filter that cancels the resonance
- Test print — a benchy, because of course
Total tuning time, cold printer to ready-to-print: about 90 minutes.
What QGL Said About the Factory Build
Quad Gantry Level converged in four iterations: 1.07mm → 0.23mm → 0.05mm → 0.011mm spread across the four corner probe points. That last number is eleven microns — a hundredth of a millimeter, across the full diagonal of a 350mm bed.
The opening number is the more interesting one. Out of the box, the gantry was tilted by over a millimeter corner-to-corner. That's not a Sovol QC failure — it's just what happens when a machine ships, gets jostled in a truck, and needs four motors to be re-leveled relative to a heavy bed they hold up. The factory ships it close enough that auto-leveling can do the work in two minutes.
If you skip QGL on a CoreXY, every print starts with a gantry that isn't square to the bed. Layer heights come out uneven across the print area. Auto-bed-leveling can compensate for the bed surface but not for a non-parallel toolhead path. QGL is non-optional on this class of machine.
The Acceleration Reality Check
Input shaper analysis is one of the cleaner moments in the calibration sequence because it gives concrete numbers. The output for this SV08:
- X axis — mzv shaper at 59 Hz, 0.1% residual vibration, max safe accel ≈ 10,300 mm/s²
- Y axis — ei shaper at 53 Hz, 0.2% residual vibration, max safe accel ≈ 5,200 mm/s²
The Sovol stock printer.cfg ships with max_accel = 40000. The actual hardware ceiling for clean prints, per the input shaper data, is 5,200 mm/s² — Y axis is the limit. The stock acceleration is eight times higher than the printer can actually deliver without ringing artifacts.
This isn't a Sovol-specific problem. CoreXY printers have asymmetric Y-axis stiffness because the gantry hangs off rails and the toolhead drags belt mass along it. It's physics. The stock value is aspirational.
Lesson: input shaper isn't just a quality dial. It's the data you need to set acceleration to a real-world value. Without it, you're slicing prints at speeds the printer can fake but not actually achieve.
The Sovol Macro That Hijacks Bed Mesh
This one was a debugging adventure. I sent the printer a sequence: heat bed to 80°C, run BED_MESH_CALIBRATE, save the profile. The bed temp came back at 65°C when the mesh was probed.
Reading the printer config explained it. Sovol overrides the standard BED_MESH_CALIBRATE command with a wrapper macro that reads mesh_calibrate_target_temp from a global variable and resets the bed to that temp before probing. The variable is set to 65°C by default. So the M190 S80 heated the bed to 80°C, then the wrapper macro saw temp != 65, sent M190 S65, and waited for the bed to cool back down before starting the mesh.
The mesh that got saved is at 65°C. PETG prints at 80°C. The thermal expansion difference between those temps means the mesh is slightly off for actual print conditions. Not catastrophic — bed warp doesn't change drastically across 15°C — but worth knowing about.
If you've got a Sovol SV08 and you're confused why the mesh seems "close but not right," check whether your bed temp during probing matched your print temp. The macro override is silent and the only way to see it is to read the macro definition in printer.cfg.
The PETG Profile Saga (Where I Got Things Wrong)
The first benchy printed cleanly with the stock SV08 PETG profile and a hacky temperature patch (the slicer defaulted to "Cool Plate" and set the bed to 35°C, so I patched the gcode to 80°C). It worked. It looked rough — visible blobs on the cabin, infill bleeding through the back wall, layer banding from the 20,000 mm/s² acceleration the slicer used.
I built a Sorted3D PETG profile to fix all of that. Three perimeter walls instead of two (kills infill bleed). Acceleration capped at 5,000 (matches what the input shaper said). Slower outer walls for cleaner finish. Tighter retraction.
I also bumped fan speeds up. That was the mistake.
The v2 print came out with what looked like layer fusion failure — separated extrusion lines visible on the deck, walls that didn't appear to bond. I called it as a fusion problem and built a v3 profile with much less cooling.
The owner of the printer pushed back: "I personally think the 2nd print looks much better, but I also don't really know what I'm looking at."
He was right. I was looking at photos and over-calling artifacts that weren't really there. The "rope-like" deck pattern I diagnosed as fusion failure was actually just normal PETG layer texture, amplified by glossy lighting and a low-angle camera. The part in his hand was fine. Photos lie. Hands don't.
I let v3 run anyway because we'd already kicked it off, and v3 turned out to be objectively better — smoother, glossier, fewer minor artifacts. But v2 wasn't broken; it was a difference of taste, not function.
Pressure Advance Wasn't the Silver Bullet
After v3 still showed some stringing between features, I sold pressure advance tuning as the last big win. The pitch was clean: PA controls extruder pressure at direction changes, an under-tuned PA causes ooze that drags into strings, the SV08 came set at 0.025 (a PLA value), PETG wants 0.04–0.08, set it right and the strings vanish.
I set PA to 0.045 empirically (the calibration tower I printed didn't give a readable signal — that's a separate story about the wrong tool for the wrong filament color). Printed v4 with the new PA.
Owner's feedback: v4 had more strings than v3, and v2 had the least.
That data is unambiguous. The string count tracks with cooling and nozzle temperature, not with PA. PA fixes the corner overshoot kind of stringing — blob and pull at sharp direction changes. It doesn't help with travel ooze, which is what shows up between separate features when filament stays hot during long moves.
v2's "bad" cooling that I'd flagged as a fusion problem was actually killing strings during travel by solidifying the ooze before it could form. The tradeoff was real: more cooling = fewer strings + worse layer fusion.
Production decision: stop iterating, accept v3's minor stringing, ship.
The Production Profile
Sorted3D PETG is now in the project repo and in OrcaSlicer's user dropdown. The numbers that matter:
- Hotend: 245°C subsequent, 250°C initial layer
- Bed: 80°C (Cool, Hot, and Textured Plate temps all set to 80 so it works whatever the slicer thinks)
- Fan: 0–30%, only ramps for overhangs >50%, no fan for first 6 layers
- Walls: 3 perimeters
- Acceleration: 5,000 mm/s² (matches what the input shaper said the Y axis can actually do)
- Outer wall speed: 60 mm/s
- Retraction: 1.0mm at 35 mm/s
- Pressure advance: 0.025 (Klipper config default — turned out PA wasn't the lever for our stringing)
A 60mm benchy prints in ~47 minutes. Dimensions are accurate. Hull surface is smooth and glossy. Walls are opaque. Minor strings on travel moves between cabin and bow — the kind of thing that clips off in five seconds with flush cutters.
For Sorted3D's actual products — ice fishing organizers, sled mounts, cooler trays — this is more than good enough. Functional gear that fits its target hardware to half a millimeter, prints reliably without supervision, and looks good in product photos.
Stock printer profiles ship with optimistic numbers. The input shaper data on this SV08 said the real-world ceiling was 5,200 mm/s², not 40,000. That's eight times less aggressive. You can't slice for performance the printer can't actually deliver.
Vendor firmware can hijack standard commands silently. Sovol's BED_MESH_CALIBRATE wrapper resets bed temp before probing. The only way to find out is to read the macro definition. If a calibration result doesn't match what you expect, look for the layer of indirection.
Glossy filaments look more textured in photos than they feel in hand. The fingernail test, light transmission, and physical flex tell you about layer fusion. Visual judgment from JPEGs systematically over-calls problems on shiny PETG. When the operator says "this looks fine in hand," trust the hand.
If your strings appear during travel between separate features — toolhead lifted, no extrusion happening — that's travel ooze. The levers are cooling, nozzle temp, retraction, and travel speed. PA doesn't help. PA earns its keep at sharp corners during continuous extrusion.
We had a perfectly serviceable PETG profile after v3. The PA chase was 90 minutes of additional time to discover it wasn't the right lever. The cost of locking in "good enough" is low. The cost of chasing a perfect calibration that doesn't exist is real.