Warning
Develop snapshot, not for production.
This is a test build cut from the develop branch, not a release. It contains in-progress work that has not been through the full release verification path. Install it on a printer you're comfortable recovering, not your daily driver. If you hit problems, file an issue with logs and a debug bundle, and roll back to 20260606_02 if you need a stable build.
Everything in the most recent stable release (20260606_02) is also in this build. See the 20260606_02 release notes for the stable feature set: https://github.com/rinkhals-community/Rinkhals/releases/tag/20260606_02
Install / update robustness
- Fixed: a bad file copy during install could brick startup in a reboot loop. If the copy step was interrupted or truncated (seen in the wild on a KS1 running firmware 2.7.2.7: the copy finished in about 1 second instead of the usual ~60, silently missing
home/rinkhalsandusr/bin/python), the installer would still promote the incomplete copy to the active version, clear the.disable-rinkhalssafety flag, prune the previous good install, and reboot into a non-bootable state (the "sad tones" failure jingle, then reboot, repeating). The installer now verifies that the copy succeeded and that key files actually landed before committing, and aborts cleanly through the existing on-screen error path if not, leaving your previous install intact instead of destroying it.
Web portal
- Dashboard now reports real CPU utilization instead of the load average. The top-left tile (relabelled "CPU") shows actual CPU busy percentage sampled from
/proc/stat. On this hardware the Realtek RTL8723DS wifi driver and the Rockchip media stack keep around 11 kernel threads permanently parked in uninterruptible sleep on driver semaphores, and Linux counts uninterruptible tasks in the load average, so the old number sat near 11 even when the CPU was almost idle. It never reflected real work; CPU utilization does. - Terminal shell sessions now survive navigating away. Opening a root shell at
:8090/terminal/and then switching to System Logs, the Apps installer, or any other page no longer kills the session. The terminal panel is now mounted once for the lifetime of the app and only hidden when you are off the Terminal page, so shells and their PTY connections keep running underneath and you can return to them and pick up where you left off. Multiple tabs within the terminal page are preserved as well.
Highlights of this build
- Kobra S1 Max firmware 2.7.1.4 is now supported. New runtime gate, build-time gate, and K3SysUi/gkapi binary patches for the version Anycubic shipped after 2.6.9.6. Stock printer.cfg on this firmware adds a
[fan_generic exhaust_fan]section (new exhaust fan hardware) and some wipe/throw gcode motion tuning; nothing that needed special handling on our side. - Fixed: Rinkhals touch menu showed 4 blank tiles on Kobra S1 Max. The K3SysUi patch on KS1M 2.6.9.3 and 2.6.9.6 was hooking the wrong row of the Device settings menu (Export logs to U-disk instead of Service Support), so tapping the relabelled "Rinkhals" entry ran the stock Service Support page instead of launching the Rinkhals UI. Root-caused from a community report (discussion #53) by reading the menu's jump table directly rather than assuming a fixed address offset from a previous firmware. If you're on a KS1M and have seen this, this build should fix it... please confirm on your printer.
What's new on develop since 20260606_02
App Store
- New touchscreen App Store that browses and installs community apps directly from the printer, sourced from the
Rinkhals.Appscatalog. Includes model-aware SWU selection during install, atomic install behaviour, a stale-button guard for the apps list, and workflow guards in the install pipeline.
Web portal
- For now the default address for the web portal is http://:8090 THIS WILL CHANGE IN THE FUTURE
- Dashboard reports real CPU utilization instead of the load average (this build; see "New since 20260704_01_test" above).
- Terminal sessions survive navigating to other pages (this build; see "New since 20260704_01_test" above).
- Read-only Firmware page that shows the Anycubic stock-firmware catalogue alongside the Rinkhals patches available for each version.
- Firmware install flow plumbed end-to-end with the new Rinkhals Patches card.
- Symlink handling in the file browser is now a first-class node type instead of being treated as an opaque file.
- Terminal bottom-row clipping is fixed and the page has more bottom padding under the last row.
- CORS centralised and the wildcard origin dropped. Dev-mode default port fixed.
- Apps card now gates installs and uninstalls while a print is running.
- Dashboard visual cleanup: dropped decorative accent dots and the inline
devbadge from the navigation. - Dashboard now shows comprehensive system metrics and printer state blocks; Remote Display and Webcam mapping restored; Mainsail/Fluidd port mappings corrected.
- Web shell (terminal) now starts sessions in
/root. - Machine Settings renamed to "Manage Rinkhals" and moved to the bottom of the sidebar.
Moonraker / GoKlipper integration
- Workaround for the GoKlipper
FIRMWARE_RESTART/RESTARTdeadlock that leaves Mainsail and Fluidd disconnected until power-cycle. The gcode is now refused at the Rinkhals shim layer with an explanatory message, instead of being forwarded to gklib where it wedges. - Latent
data_store._init_sensorsTypeError fixed. GoKlipper returnsheaters.available_monitors: nulland the upstream code did.get(key, [])which doesn't substitute the default on explicit nulls. Normalised inside the existingpatch_mainsailwrap so every downstream consumer sees[]instead ofNone. - KS1M Home All wedging Mainsail/Fluidd fixed by synthesising
motion_reportfromtoolheadinstead of exposing GoKlipper's own broken implementation. mmu_ace: custom tool-to-gate mapping (ttg_map) set via the Fluidd Tool Mapping dialog no longer gets silently overwritten by the periodic ACE status poll (issue #49).- Suppressed a spurious klipper config path warning.
Firmware support
- Kobra S1 firmware 2.7.2.7 supported, with the
minimum_cruise_ratiooverride that avoids a GoKlipper NaN crash on that firmware. - Kobra S1 Max firmware 2.6.9.6 supported.
- Kobra S1 Max firmware 2.7.1.4 supported (this build).
Install / update
- Installer verifies the Rinkhals file copy before committing to a new install, and aborts cleanly instead of bricking startup if the copy was incomplete (this build; see "New since 20260704_01_test" above).
Other fixes
K3SysUino longer spawns a duplicateudhcpcafter the DHCP app has already started.ashglob handling fixed so/rootstays read-write persistent across boots.- Legacy
printer_mutable.cfgcyclic symlinks are now guarded against. - Local LCD snake animation restored during updates.
- App status parsing in the monitor now explicitly checks for the
startedstate.
Test plan
If you install this build, please specifically exercise:
- Install / reinstall: confirm the install completes and boots. If you previously hit a boot loop after an interrupted copy, confirm this build either installs cleanly or aborts with an on-screen error while leaving your previous install intact.
- Dashboard CPU tile: confirm the "CPU" tile shows a sensible utilization percentage rather than a load number near 11.
- Terminal persistence: open one or more shells at
:8090/terminal/, navigate to another page and back, and confirm the sessions are still alive. - Kobra S1 Max on 2.7.1.4: confirm Rinkhals installs and boots cleanly.
- Kobra S1 Max on 2.6.9.3 / 2.6.9.6: tap the "Rinkhals" entry in the Device settings menu and confirm it opens the real Rinkhals UI (not 4 blank tiles).
- App Store browse and install flow on your printer model.
- Web portal Firmware page: does the Anycubic catalogue render? Does the install flow surface the right SWU for your model?
- Mainsail / Fluidd: send a
RESTARTfrom the console; you should see an explanatorygcode_responseinstead of a wedged connection. mmu_ace: set a custom tool mapping in Fluidd's Tool Mapping dialog and confirm it survives a few minutes of ACE status polling instead of reverting to 1:1.
Report findings to https://github.com/rinkhals-community/Rinkhals/issues with a debug bundle.
Full Changelog: 20260606_02...20260705_01_test