Add Disable Creality Stock Services for K1C 2025 - #17
Open
arlophoenix wants to merge 1 commit into
Open
Conversation
Creality's stock 2025 firmware runs a telemetry agent, alchemistp, that uploads printer configuration and logs to Creality, plus WebRTC and AI daemons that go inert once the Built-in Camera Fix takes /dev/video0. Adds a Customize-menu option to disable them and a matching restore, in the shape of the existing Creality Web Interface pair. The rename uses a "disabled." prefix rather than a ".disabled" suffix: rcK iterates over CS??* on this model, which still matches a suffixed name, so a suffix would be a silent no-op. onyxp, thirteenthp and solusp are gated on the Built-in Camera Fix specifically, not on any camera fix - USB Camera Support filters out /dev/video0, so a USB-only install leaves those daemons serving a working built-in camera. klipper, nexusp, quintusp and vectorp are in an enforced refuse-list carrying both the S and CS name forms. Renames are guarded so a failure cannot abort the helper mid-sequence, neither direction overwrites an existing file, the print-state check fails safe to a confirmation prompt on anything it cannot parse, and the completion message reports what actually changed.
arlophoenix
force-pushed
the
feat/k1c-2025-disable-creality-stock-services
branch
from
July 27, 2026 20:24
449baf1 to
30c5935
Compare
arlophoenix
marked this pull request as draft
July 27, 2026 20:34
arlophoenix
marked this pull request as ready for review
July 27, 2026 23:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Creality's stock K1C 2025 firmware runs a telemetry agent,
alchemistp, whose only job is to upload printer configuration and logs to Creality. This isn't theoretical — a passive capture on a helper-managed unit caught it resolvingdevdata.cxswyjy.comand completing a TLS handshake to98.86.129.225:443, on a printer whose stock cloud blocklist was already active. Alongside it, three more daemons become dead weight once the Built-in Camera Fix is installed:onyxp(cloud WebRTC signalling, which also beacons the printer's serial and MAC at every boot and appends to a never-rotated log every ten seconds — 51.8 MB on the reference unit),thirteenthp(an unauthenticated HTTP media server on0.0.0.0:8000) andsolusp(AI failure detection). All three are blind oncemjpg_streamerowns/dev/video0.This adds a Customize-menu option to disable those daemons and a matching restore, in the same shape as the existing Creality Web Interface pair. The rename uses a
disabled.prefix rather than a.disabledsuffix, becausercKglobsCS??*on this model and a suffix would still match — the same prefix convention the Moonraker service and the Klipper configuration lock already use here.The WebRTC and AI daemons are gated on the Built-in Camera Fix specifically, not on any camera fix. USB Camera Support filters
/dev/video0out of its device list, so a USB-only install leaves the built-in camera free and those daemons still serving it — gating on either fix would silently remove a working feature. Without the built-in fix, only the telemetry agent is touched and the skipped daemons are named on screen.klipper,nexusp,quintuspandvectorpsit in an enforced refuse-list that carries both theSandCSname forms, since the init script names vary by firmware;quintuspin particular owns the power-loss GPIO. mDNS is a separate opt-in, because disabling it breaks.localresolution and Creality Print discovery. Stopping all five movedavailablememory by 13.2 MiB on a 200 MB machine; the larger win is the removed background IO.Both directions are written to fail safely. Every rename is guarded, because
helper.shsetsset -eprocess-wide andfunctions.shrun()invokes the action as a bare$1— an unguardedmvwould kill the whole helper after the daemon had already been stopped. Neither direction overwrites an existing file, so a firmware update that recreates an init script cannot be clobbered by a later restore. The print-state check consults both port 7126 and 7125, treats only explicitly known-idle states as idle, and falls through to a confirmation prompt on anything it cannot parse. The completion message reports how many services actually changed rather than asserting success, and warns if a process is still running.Worth knowing:
/usr/apps/etc/init.dis on p8 and survives a factory reset, so a reset will not undo this — the restore option is the way back. Withsoluspgone,action:cancelno longer appears in klippy.log; that string comes from Creality's own cancel handler, and the nativepause_resume/cancelpath triggers the quick stop directly, so its absence is expected rather than a regression.Test plan
V1.0.0.22.20250711S), printer idle: all five renamed and stopped,CS??*reduced to exactly the four survivors, klippy stayedready, Fluidd/Moonraker/camera/nexusp still serving, ports 5353 and 8000 closed.soluspdisabled — cancel arrives aspause_resume/cancelfromquintusp; print returned tostandby, klippy stayedready.init.d(not hardware): USB-only install leaves the WebRTC tier running, built-in fix unlocks it, a failed rename reports and does not kill the helper, restore preserves a firmware-recreated script, the print guard returns idle/printing/undetermined correctly including a decoy"state"key, and the refuse-list blocks bothSandCSforms.Not addressed
Removing the Built-in Camera Fix while these services are disabled leaves the printer with no camera server at all, and
usb_camera.shhas no awareness of this option to warn about it. Fixing that means touching the camera feature's own removal paths, so it is left for a follow-up rather than widened into this PR.No firmware allowlist, unlike Restore Input Shapers: every rename is existence-guarded, so a firmware with a different daemon set is a no-op rather than a breakage. With
soluspdisabled,quintuspstill requests AI detection at print start and waits out a ~10 s timeout before giving up — harmless, but it delays print start by a few seconds. Settingai_detect.enable: 0insystem_config.jsonremoves it; that isn't automated here because"enable"appears in four blocks of that file and a careless edit would also flippowerloss_continue.