Installation script for Guppy Screen on SV06 ACE

Hi all,

For anyone looking for a light-weight open-source UI for the SV06 ACE, I found that Guppy Screen GitHub - ballaswag/guppyscreen: A native Touch UI for 3D Printers running Klipper/Moonraker. is working pretty much out-of-the-box when installed using their Debian installer. The only issue I’ve found so far is that the wifi list doesn’t show up unless you restart Guppy after boot. There could of course potentially be numerous more, but I have only had time to do some rudimentary testing so far. I’m running a SV06 PLUS ACE.

In case you want to try it out and do some testing yourself I made an installation script (meant to run on the printer). Please feel free to share your experience, I’d love to hear what you think! :slight_smile:

EDIT: I changed upstream to the more recent fork GitHub - probielodan/guppyscreen: A native Touch UI for 3D Printers running Klipper/Moonraker. after being informed by @bcat. Great find, and thanks for the advice!

#!/bin/env bash

# Abort on failure
set -e

# Install guppy installation-script dependencies
sudo apt install jq

# Download installation script
wget https://raw.githubusercontent.com/probielodan/guppyscreen/main/scripts/installer-deb.sh

# Make a few modifications to script:

# 1) Don’t start Guppy service immediately after installation since user sovol may not yet belong to the required groups
sed -r -i "/^[ \t]+restart_services/s/^/#/" installer-deb.sh

# 2) The installation-script disables KlipperScreen and will throw an error if not installed, so comment out if not installed
if ! systemctl status KlipperScreen > /dev/null 2>&1; then
    sed -r -i "/^[ \t]+sudo systemctl disable KlipperScreen.service/s/^/#/" installer-deb.sh
fi

# 3) Not strictly needed due to 1), but for sake of consistency replace _service_ with _systemctl_
sed -i "s/service guppyscreen restart/systemctl restart guppyscreen/" installer-deb.sh

# Run Guppy Screen installer 
bash installer-deb.sh

# GuppyScreen will be displayed upside down by default on at least the SV06 PLUS ACE, so rotate by 180 degrees (0->0, 1->90, 2->180, 3->270). Adjust if necessary.
jq ".display_rotate = 2" ~/guppyscreen/guppyconfig.json  > ~/guppyscreen/guppyconfig_tmp.json
mv ~/guppyscreen/guppyconfig_tmp.json ~/guppyscreen/guppyconfig.json

# Grant user sovol permission to read touch input and manage networks
sudo usermod -aG input,netdev sovol

# Disable the default UI
sudo systemctl disable makerbase-client

echo "Reboot for changes to take effect"

2 Likes

It’s great that it seems to work on the SV06 Plus ACE as well. After the problem with the original interface and the camera’s LED pin, this could be a solution. Just recently, an installation for KlipperScreen was shown in the forum. That makes me wonder about the differences or advantages. Perhaps you could show us something?

1 Like

Very nice! I was actually thinking to try this soon, and it’s great to have an example to start from.

As for how they differ, GuppyScreen is lighter weight. I believe it uses LVGL to draw to the Linux framebuffer directly (a common approach on embedded devices), whereas KlipperScreen expects an X server, which is fine on a more “full” OS like a Pi, but requires some hacks (as documented in the other thread) to get working on the more limited Sovol OS.

Personally, I have no prior experience with KlipperScreen, so I’m not “attached to” it at all, and hence it’s nice to have the lighter option given how little RAM etc. the SoC has.

2 Likes

BTW, there is a fork of GuppyScreen I think may be more recently / actively maintained: GitHub - probielodan/guppyscreen: A native Touch UI for 3D Printers running Klipper/Moonraker..

Might be able to upstream your installation script there, as they already have a couple of different printers supported?

1 Like

Thanks for the info! Competition is good for business. I’m not tied to KlipperScreen. If something is better, I’m always happy to try it.

1 Like

That’s fantastic! I was actually a bit skeptical of the fact that the last commit was from ~1.5 years ago, so that’s good to know that there is a fork with more recent maintenance. I will update my script to use that as a source and hopefully it will work just as well :slight_smile:

By upstream btw do you simply mean that I modify my script to use them as an upstream, or are you suggesting that I make a pull request to get my script in their repo?

I only tried Klipper Screen very briefly, so function wise I can’t really say which one is better. Based off their respective github repo, however, I would image Klipper Screen to be more mature in that sense.

However as @bcat was saying, the main benefit of it is really that it is much more light weight as it doesn’t require a full-fledged display server. I did a comparison of a headless setup using only the native UI to a setup with Klipper Screen and the latter used about 1 GB of extra storage. I also found Guppy Screen to be a bit more responsive than Klipper Screen. Nonetheless, if you like Klipper Screen and don’t mind it using up some extra storage/RAM then I’d say go for it! :slight_smile:

And of course, I should have show cased Guppy Screen. I will add an image to my original post.

Thanks for the pictures! That helps me visualize it much better. I’m currently testing Knomi from Bigtreetech with the SV06 Plus ACE. It’s connected to the printer via Wi-Fi only. It’s a small status indicator with a lot of potential.