How to Install/Update Custom version of Klipper, Klipperscreen

Basic Information:

Printer Model:
MCU / Printerboard:
Host / SBC
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:

(Maybe this question is more about managing kiauh and the repos, instead of be more related to klipper itself, but i hope somebody can help)

Well, I already asked for this some time ago in this post How to install an specific and custom version of klipper?

I’m still trying to do this again in a proper way in order to have a specific custom version of these services in all my machines. I mean, a fast way to install the software in my machines, and later, update them properly.

The main diference from this post to that other, is that; before, i had only one repo which contains all other repos as submodules, but now, I have all of them as different repos (the normal way to do it, basically, like a fork but not a fork as i want them to be private)

My main problem is that when I install the software in my controllers, it comes when an old version, and then I have two things to do: Or to update normally (original repo) with kiauh and try to merge in that moment all my changes (wich leads to have diferent versions in every machine which is an absolute discontrol for future updates,etc), or to try to install my repo version (not success for now), so i cant fully control the version of all my machines (the goal is to have only an specific and stable version of the code for all of them, i think it is the logicall thing).

For now, I just clone my repos, but it doesnt work as it think it is neccessary sometimes to update the env or install some requirements, idk …

I’m trying to achieve this via kiauh (basically by specifying my repo instead of the original but i really don’t know if it is working or not.

As @Sineos mentioned, kiauh/default.kiauh.cfg at master · dw-0/kiauh · GitHub i have tried to modify this file so it looks for my repo,

[kiauh]
backup_before_update: False

[klipper]
repositories:
    https://github.com/JuanR3D/IDENTITY_klipper, main

[moonraker]
optional_speedups: True
repositories:
    https://github.com/JuanR3D/IDENTITY_moonraker, main

[mainsail]
port: 80
unstable_releases: False
repositories:
    https://github.com/JuanR3D/IDENTITY_mainsail, main

[mainsail_config]
repositories:
    https://github.com/JuanR3D/IDENTITY_mainsail_config, main

[klipperscreen]
repositories:
    https://github.com/JuanR3D/IDENTITY_klipperscreen, main

[sonar]
repositories:
    https://github.com/JuanR3D/IDENTITY_sonar, main

[printer_data]
repositories:
    https://github.com/JuanR3D/IDENTITY_printer_data, main

(as you can see, my idea is ideally is to manage all these repos so i have controll on the specific version of them and just update them whenever I’m ready)

but for example, when I try to do update I got this:

| a) [Update all] | | | | | Installed: | Latest: | | Klipper & API: |---------------|--------------| fatal: Not a valid object name origin/master | 1) [Klipper] | 17624412 | | fatal: Not a valid object name origin/master | 2) [Moonraker] | stable | | | | | |

(stable is the version i have defined for the status of my klipper repo right now), and its branch is main

Also, as you can see, i’d like to manage all repos, and i don’t know if it will be possible to do it correctly with kiauh as all I can see in the original default kiauh file is the option to specify klipper and moonraker repos.

I have tried to modify it too in the components files, for example, in kiauh/components/KlipperScreen/init.py modifying th repo:#

======================================================================= #
#  Copyright (C) 2020 - 2025 Dominik Willner <th33xitus@gmail.com>        #
#                                                                         #
#  This file is part of KIAUH - Klipper Installation And Update Helper    #
#  https://github.com/dw-0/kiauh                                          #
#                                                                         #
#  This file may be distributed under the terms of the GNU GPLv3 license  #
# ======================================================================= #
from pathlib import Path

from core.backup_manager import BACKUP_ROOT_DIR
from core.constants import SYSTEMD

# repo
KLIPPERSCREEN_REPO = "https://github.com/JuanR3D/IDENTITY/KlipperScreen.git"

# names
KLIPPERSCREEN_SERVICE_NAME = "KlipperScreen.service"
KLIPPERSCREEN_UPDATER_SECTION_NAME = "update_manager KlipperScreen"
KLIPPERSCREEN_LOG_NAME = "KlipperScreen.log"

# directories
KLIPPERSCREEN_DIR = Path.home().joinpath("KlipperScreen")
KLIPPERSCREEN_ENV_DIR = Path.home().joinpath(".KlipperScreen-env")
KLIPPERSCREEN_BACKUP_DIR = BACKUP_ROOT_DIR.joinpath("klipperscreen-backups")

# files
KLIPPERSCREEN_REQ_FILE = KLIPPERSCREEN_DIR.joinpath(
    "scripts/KlipperScreen-requirements.txt"
)
KLIPPERSCREEN_INSTALL_SCRIPT = KLIPPERSCREEN_DIR.joinpath(
    "scripts/KlipperScreen-install.sh"
)
KLIPPERSCREEN_SERVICE_FILE = SYSTEMD.joinpath(KLIPPERSCREEN_SERVICE_NAME)

And done this in other files but i feel like this is like hacking the system and I really don’t think this is the proper way to do it…

All this is about kiauh, but… does moonraker update manager try to install the env and everything if needed, or just clones the repo to the latest version? (Supposing that the problem is the env)

Well, I dunno if i’ve been clear, but i guess somebody can understand what i say…I really need help to mantain the specific version of code i want,

Also, about updates, for now i don’t mind to update every service one by one, but i’d like to reach a point where for example the UI says: A new version of software is avaliable - update (and it updates whatever it needs to update, klipper, klipperscreen… to the version I have managed to merge..) but well, that would be an extra, for now just to manage the code is enough.

Thanks in advance

It might be the best approach to ask this in the KIAU GitHub repository. Otherwise, maybe @th33xitus could chime in.

FWIW, Moonraker’s update manager doesn’t perform an installation. If updating a git repo it will pull the latest version. It can update python and system dependencies if properly configured. If the application needs a more complex update process then it should probably have its own update mechanism.

Assuming your “host” computers are identical you could do what the OEMs do and use Linux tools to image the OS from your “master” machine.

If your MUC(s) are all identical build the firmware file(s) before you image and they will already be in the image when copied to the clones.

Well, in order to install them, that’s exactly the best way to do it, I’ll take a look at how to create a image of this.

Anyways i stil need to take a look in the update manager, but, whenever i have everything configurated properly, tha’s what i need to do, yea

Thanks

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.