🛠️ Tips for a Perfect First Layer on the Sovol SV06 Ace

After extensive testing, I found some tricks that significantly improved my first layer. I’m sharing them in case they help others too.

:soap: 1. Proper Bed Cleaning

Avoid using isopropyl alcohol. Instead:

  • Use a soft metallic sponge (non-abrasive).
  • Apply detergent and a strong degreaser.
  • Rinse thoroughly and let it dry completely before printing.

:fire: 2. Calibration with Printing Temperatures

Before calibrating, make sure to heat up:

  • Hotend: 150°C
  • Bed: 55°C

Also, clean the nozzle before calibration (I use a custom macro that I’ll share below).

:straight_ruler: 3. Manual Z-Offset Adjustment

Manually adjust the Z-Offset using either an A4 paper sheet or a thickness gauge. This is a crucial step!

:cyclone: 4. Axis Twist Correction

Run AXIS_TWIST_CALIBRATION to ensure the axes are properly aligned.

:musical_notes: 5. Better Resonance Compensation

Instead of the official method, use Klippain for more accurate results.

:control_knobs: 6. Proper Filament Flow Calibration

Incorrect flow settings can ruin adhesion and first-layer quality. Calibrate it correctly.

:light_bulb: Reminder: All calibration steps should be done with the hotend at 150°C and the bed at 55°C.


:wrench: Improved Nozzle Cleaning Macro

This macro works better than the official one to keep the nozzle clean before printing.

[gcode_macro _global_var]
variable_pause_park:{'x': 2, 'y': 225, 'z': 10, 'e': 1}
variable_z_maximum_lifting_distance: 250
variable_pause_resume_travel_speed: 150
## Nozzle Cleaning Variables
variable_cleaning: True
variable_clean_probe: False
variable_clean_end: False
variable_post_clean_home: False
variable_clean_m600: True
variable_clean_macro: 'CLEAN_NOZZLE'
variable_clean_x: 24
variable_clean_y: 230
variable_clean_z: -0.3
variable_clean_wipe_axis: 'X'
variable_clean_wipe_dist: 30
variable_clean_wipe_qty: 5
variable_clean_wipe_spd: 100
variable_clean_raise_dist: 10
variable_clean_temp: 150
variable_clean_hot: True

[gcode_macro CLEAN_NOZZLE]
gcode:
    BED_MESH_CLEAR
    {% set printcfg = printer['gcode_macro _global_var'] %} ; get printcfg variables
	{% if printer.toolhead.homed_axes != "xyz" %}
	G28
	{% endif %}
    {% set nozzle_targ = params.TARGET|default(0)|float %}
    {% set is_hot = printcfg.clean_hot %}
    {% if params.HEAT is defined %}
        {% if params.HEAT|lower == 'true' %}
            {% set is_hot = False %}
        {% elif params.HEAT|lower == 'false' %}
            {% set is_hot = True %}
        {% endif %}
    {% endif %}
    {% if is_hot == False %}
        {% if printcfg.led_status == True %}
            {printcfg.status_heat}
        {% endif %}
        M{printcfg.output} Heating extruder
        {% if nozzle_targ > 0 %}
            M109 S{nozzle_targ}
        {% elif printcfg.clean_temp > 0 %}
            M109 S{printcfg.clean_temp}
        {% endif %}
    {% endif %}
    G90                                            ; absolute positioning
    ## Move nozzle to start position
    G0 X{printcfg.clean_x} Y{printcfg.clean_y} F6000
    G0 Z{printcfg.clean_z} F1500
    ## Set lighting
    {% if printcfg.led_status == True %}
        {printcfg.status_clean} ; LED feedback
    {% endif %}
    ## Wipe nozzle
    M{printcfg.output} Wiping nozzle
    {% for wipes in range(1, (printcfg.clean_wipe_qty + 1)) %}
    G0 X{printcfg.clean_x + printcfg.clean_wipe_dist} F{printcfg.clean_wipe_spd * 60}
    G0 X{printcfg.clean_x} F{printcfg.clean_wipe_spd * 60}
    {% endfor %}
    ## Raise nozzle
    G0 Z{printcfg.clean_raise_dist}
    {% if is_hot == False %}
        M{printcfg.output} Cooling extruder
        M104 S0
    {% endif %}
    {% if printcfg.post_clean_home == True %}
        G28 Z
    {% endif %}

Hope these tips help you improve your first layers! If you have any questions or suggestions, feel free to comment! :rocket:

EDIT: :stop_sign: At no point am I saying that you should sand your heated bed, although if you do so, do so at your own risk. It doesn’t mean that the usual methods don’t work (using acetone, IPA or others) But what I mentioned in the post worked for ME after trying all the other options. Since I’ve done this, I’ve had zero printing issues. Same GCODE, same settings, the only difference has been the hotbed cleaning.
I got the idea to scrub the heated bed with something a little more abrasive than a sponge from a video. I know WamBam beds recommend using steel wool, but what I recommend is something less abrasive. I have used the typical kitchen sponge/scouring pad that has two parts, a soft sponge part and another part that is a little more “abrasive”.
The video I saw: https://m.youtube.com/watch?v=DzaPFlEKP10

3 Likes

I’m curious about the manual Z offset calibration

I’ve noticed that the bed/plate is uneven on my SV06 ACE, with the outer areas curving up slightly

It’s enough to hear the nozzle scrape the bed in those areas, even after performing the calibration in the UI

And it often leads to poor output, such that I’ve stopped printing larger items and try to stick to items that fit inside “the good zone”