May 7, 2026

First Fire on the SV08


The Sovol SV08 finally got powered on. CoreXY, 350mm bed, Klipper firmware, and an architecture that's basically 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 (one piece) to a full 320mm Yeti Tundra 65 width without any bolt-together workarounds.

But before any of that, the printer needs to actually print well. Eight calibration steps later, here's what I learned, what I got wrong, and where the SV08 ends up.


The Calibration Sequence

The SV08 ships with reasonable defaults but every motion-system parameter wants to be re-derived for the specific machine. Klipper's calibration suite makes this scriptable over Moonraker. The sequence:

  1. Pre-flight — confirm idle, no errors, sane temps
  2. PID tune hotend at 245°C — characterizes the heater response
  3. PID tune bed at 80°C — same, but with much more thermal mass (10 minutes vs 5)
  4. Home + Quad Gantry Level — the four Z motors get tweaked independently to make the gantry parallel to the bed
  5. Z offset calibration — Sovol uses a load cell on the nozzle itself; the calibration finds the offset between the inductive probe trigger height and true nozzle contact
  6. Bed mesh — probe a 9×9 grid, save the deviation map for first-layer compensation
  7. Input shaper — sweep accelerometer-recorded vibrations across X and Y, fit a filter that cancels the resonance frequencies
  8. Test print — a benchy, because of course

Each step except the test print runs in 5–15 minutes. Total tuning time, from 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 you concrete numbers. The output for this SV08:

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² — the Y axis is the limit. That means 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 a physics thing. 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 my 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 your 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 /Sorted3D/orca-profiles/ and in OrcaSlicer's user dropdown. The numbers that matter:

A 60mm benchy prints in ~47 minutes. Dimensions are accurate. Hull surface is smooth and glossy. Walls are opaque (no infill bleed). 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.


Tips

Calibrate before you trust the spec sheet. 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 not a small adjustment — that's eight times less aggressive. You can't slice for performance the printer can't actually deliver.

Read the macros, not just the config values. 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.

Photos lie about surface quality. 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.

Pressure advance fixes one specific kind of stringing, not all of them. If your strings appear during travel between separate features (toolhead lifted, no extrusion happening), that's travel ooze and the levers are: cooling, nozzle temp, retraction, and travel speed. PA doesn't help. If your strings appear at sharp corners during continuous extrusion, that's where PA earns its keep.

Stop iterating once "good enough" is good enough. 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.

← Rotation Math Will Humble YouTwenty-Three Versions to a Hook →
All posts