Sovol SV06 Ace Updated firmware to Mainline Klipper

Basic Information:

Printer Model:Sovol SV06 Ace
MCU / Printerboard: OEM
Host / SBC Integrated
klippy.log

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:Updating Machine to Mainline Klipper

I have a working OEM printer.cfg that I would like to modify for use in a Mainstream Klipper installation. It looks possible but there are two things, that I’ve identified, that should be sorted out before executing. New user, can’t put 2 links in a post but you can browse to .printer_data/config/printer.cfg in the link below.

The SV06 Ace uses a load cell on the nozzle for bed leveling/meshing and wrote their own code:

[hx711]
sclk_pin: extra_mcu:PB13
dout_pin: extra_mcu:PB15
single_pin: extra_mcu:PB5
hx711_diff: 0.01 #Trigger sensitivity, the smaller the value, the easier it is to trigger

Sovol GLP’d source for hx711.py

Mainstream kipper uses /klipper/klippy/extras/hx71.py. The mainstream entry covers the hx711 and the hx717 chips.

The printer.cfg entry is done under load_cell. So it appears I need to pull pins/calibration values and generate a [load_cell] entry to replace [hx711]

The other thing I’d like to sort out is flashing the mcu. It is a custom makerbase board similar to the MKS Skipr series, has no sd card slot and the emmc is soldered on. Firmware is flashed, brom mode, using a rockchip update utility via a usb c connection. It is also accessible by adb over the usb c connection.

The factory recommended J-Link in this Sovol3D Forum Thread

OEM uses a framebuffer touch screen setup - I think the guppyscreen project would be a lightweight replacement.

It’s my only printer; should go into this with a well thought out plan.

Thanks for any guidance

klippy.log (103.1 KB)

People have klipperscreen running on the Sovol Ace stock touchscreen.

I guess, I understand your concerns.

What µC is on the board?

RockChip rk3308B

Extra mcu: stm32f103xe

1 Like

I’ve got some mini adc published on github that might be useful. The strain gauge output from the load cell would need rewired to the input of the mini module. The spi pins of the mini module would then need connected to available io on the motherboard. Preferably free pins that support hardware spi. GitHub - mulcmu/Plimsoll: Kicad PCB design with XH717 ADC to support Klipper load cell

That is the SOM (system on module) that runs Linux and the Klipper host. There is also a MCU that runs Klipper firmware and actually runs the motors, heaters, etc.


What is printed on this chip?

GD32F425

RET6

ALJU863

GigaDevice

ARM

In the 9 months since the last PR was posted I’ve continued development over in Kalico. I’ve made a lot of updates to the documentation, fixed bugs and added a set of calibration tooling.

Nowhere yet has the entire set of changes been merged into mainline. This branch is the testing branch that has everything and is being actively used to test load cell implementations.

The docs are here.

Based on Sovol’s config you would start with this:

[load_cell_probe]
sensor_type: hx711
sclk_pin: extra_mcu:PB13
dout_pin: extra_mcu:PB15
sample_rate: 10 # 10 or 80 depending on how its wired
z_offset: 0.0

Once you get this running you can run a LOAD_CELL_DIAGNOSTIC and find out what the same rate is. I hope its not actually 10, because wiring it to be 80 was free.

Then you can use LOAD_CELL_CALIBRATE to save the sensors tare value and its counts per gram.

Then you can use LOAD_CELL_TEST_TAP to make sure that tapping the nozzle with your finger triggers the probe before attempting any probing.

If I was in your shoes I would have a plan to convert the printer back to its original configuration if things don’t work out. Have a backup and a way to deploy it to the machine.

Is the GD32F425 supported by klipper? Call it a STM32F401 and hope??

Thanks for your work on this.

I do have a backup and after a Kiauh upgrade to the debian components, bork’d the system, some experience.

I was hoping to pull some of the factory configuration values from hx711.py to start with and then run the diagnositics.

I did a first read of the Load Cell documentation and the one thing I did not hava a sense of was if the hx711 would automatically be used for probing and bed meshing or if I needed to manually specify it in those code blocks.

Maybe this could help get the chip working?

I don’t know for a fact about official support but it came from the factory with klipper and the GPLv3.0 source release from sovol does not show any blobs specific for the mcu. Also this klipper build script, specifically for the SV06 Ace/Ace +, compiled klipper.

Google’s AI says:

2. Direct Functional Alternatives (Non-ATM)

If you are looking for drop-in replacements for the GD32F425 (which is itself often used to replace STM32), these are more commonly used in industry:

  • STM32F405/F415/F427: STMicroelectronics provides the closest functional matches in terms of peripherals, memory maps, and high-speed Cortex-M4 cores.

The STM32F405 is a klipper config option.

More from Google AI:

The GigaDevice GD32F425 is a high-performance 200MHz ARM Cortex-M4 MCU with up to 1024KB Flash and 256KB SRAM

. It is compatible with Klipper firmware by selecting the equivalent STM32F405 or similar STM32F4xx series inmake menuconfig, as GD32 chips often act as STM32 clones.

Key Configuration Settings for Klipper on GD32F425:

  • Microcontroller Architecture: STMicroelectronics STM32 (or specifically STM32F405/427 if listed).

  • Processor Model: STM32F405 (or similar, based on board specific mapping).

  • Bootloader Offset: Usually 32KiB or 64KiB, depending on the motherboard’s existing bootloader.

  • Clock Reference: Often 8MHz or 12MHz crystal (check your board).

  • Communication Interface: USB (PA11/PA12) or UART (serial).

Important Notes:

  • Flash Method: GD32 chips are often flashed via USB using STM32CubeProgrammer or DFU utilities.

  • Compatibility: While some GD32 chips have had minor timing issues in the past with older Klipper versions, the F4 series generally works well using STM32 settings.

Despite their claims Sovol does not pay much attention to GPL. I started to diff the version Sovol ships with the SV08 Max…

It got so fragmentized I gave up. The (unpublished) Max version of Klipper is NOT descended from https://github.com/Sovol3d/klipper but a later fork. The first commit in Sovol’s private fork (for the Max) was authored by root <798480517@qq.com>. The commit metadata referenced a local/internal Git repository path, not a public URL.

Do you have a klippy.log from your machine. What version of klipper does the MCU firmware claim to be?

Klipply.log attached to original post.

JamesHabben has a github with diff’s for the SV06 Ace and Mainline Klipper. It gives all the pulls for Kipper, Kiauh, Moonraker …, and the deviations from upstream.

There is a binary blob here: SV06-ACE/sovol/klipper/src/libdev_hx711.a at main · Sovol3d/SV06-ACE · GitHub

That’s not open source, that’s compiled binary.

But don’t worry. I’m confident that there isn’t anything in there that we need. Creality did something similar with the Max printers. There is no magic in that box that we need to uncover.

2 Likes