github rinkhals-community/Rinkhals 20260601_01
Rinkhals 20260601_01

5 hours ago

Hello all you awesome Rinkhals enthusiasts! Welcome to the June scheduled monthly release of Rinkhals, right on time!

This is a packed one Over the past month we have added support for the latest Kobra S1 firmware, restored the live Z-offset control in Mainsail (a long-standing irritation that's finally gone), made the ACE auto-feed actually pick the right slot for single-color Orca prints, cleaned up a quietly-broken DNS resolver chain, introduced an opt-in Firmware Collector that helps the project catch new Anycubic releases faster, freed up close to 2.6 GB of /useremain space by pruning stale Rinkhals installs on update, and rewrote the boot-issues recovery guide to actually work for every printer model (the password it quoted before was wrong for half the fleet).

Thank you for the enthusiasm, the bug reports, the firmware captures, the hardware photos, the discussion in Discord, and the time you've put into helping each other and the maintainers. Special shout-outs this cycle to @basvd, @Kobra-S1, and @sharpmonk for their contributions and ongoing thanks to everyone who lurks, tests, and keeps the printers we love getting better.

You are why this project exists, and why we keep at it.

What's Changed

New features

  • Live Z-offset adjustment is back in Mainsail during prints. A long-standing bug that hid the Z-offset control once leveling set a non-zero offset is fixed. The Moonraker layer now injects the missing stepper_z.endstop_pin GoKlipper doesn't expose, so Mainsail's Z-offset component stops crashing and saves route through Z_OFFSET_APPLY_PROBE. Also reported upstream as mainsail-crew/mainsail#2508 with fix PR #2509.
  • Kobra S1 firmware 2.7.2.1 is now supported. KS1 owners who already upgraded no longer need an .enable-rinkhals USB marker file to boot Rinkhals.
  • New opt-in 60-firmware-collector app. Helps the project catch new Anycubic firmware faster by asking Anycubic's own OTA broker once a day whether a newer firmware exists for this printer, and reporting only the public download URL and version metadata to the Rinkhals community archive. Never transmits certificates, account info, or any personal data. A Dry run mode is available to verify behaviour without uploading.
  • MMU ACE auto-feed at print start when no filament is currently loaded. Race-safe task management, configurable feed length and speed via [mmu_ace] in moonraker.conf, graceful bail-out on cancel or error (#19, thanks @sharpmonk).
  • MMU ACE shows an Unload button whenever a gate is physically loaded (#11).
  • New 10-hostname-dns system app that sets the printer's hostname, advertises it via mDNS (.local), and registers it with the router via DHCP. When no custom hostname is set, an auto-generated kobra-<model>-<id> name keeps multiple printers distinguishable without any setup.
  • UI: download Anycubic stock firmware to USB directly from the touch panel.
  • SWU installer now keeps only the current Rinkhals install plus one previous. Frees up to ~2.6 GB on /useremain over an upgrade.
  • Dev container and justfile for contributors so a Rinkhals build environment is one command away (#12, #14, thanks @basvd).

Bug fixes

  • Auto-feed now consults the slicer's actual tool list before picking which ACE slot to pre-load (#24). Previously it used the first entry in the internal mapping table, which for Orca single-color prints on a non-default tool meant loading the wrong slot, extruding briefly, then having to unload and switch. It now reads the ; referenced_tools = ... trailer that the metadata pre-processor writes to every gcode and resolves the correct slot via ttg_map. Multi-tool prints skip the auto-feed entirely since the gcode's T-commands handle slot selection themselves.
  • DNS resolver no longer prefers public DNS over the router's. The previous setup shipped /etc/resolv.conf with hardcoded 1.1.1.1 / 8.8.8.8 at positions 1 and 2, the stock udhcpc script appended router DNS at position 3+, and the prepend-hook intended to fix the order shipped without the executable bit and never ran. Net effect: Cloudflare answered NXDOMAIN first for local names and the router's DNS landed beyond MAXNS=3. The fix ships an empty resolv.conf, removes the dead hook, and adds a new fallback hook with its own tag that only writes public DNS when DHCP supplies nothing (#28).
  • Fixed unbound filename variable in patch_mqtt_print that crashed Vanilla Klipper (#18, thanks @Kobra-S1).
  • Fixed GoKlipper panic during homing on Kobra S1 Max by excluding motion_report from the exposed objects list (#17, thanks @Kobra-S1).
  • Fixed process-cfg.py regex to accept indented section headers in KS1 Max config files. Also adds the missing raw-string prefix on the second regex.
  • Fixed Fluidd Tool Mapping dialog deselecting on every ACE poll (#9).
  • Safely verify the filament_hub object exists before querying it so a missing object no longer crashes gklib.
  • LVGL fixes for the touchscreen UI: cast STATE enum to int for bitwise OR operations; removed unsupported lv.PART.ITEMS constant that crashed the UI when editing text fields; resolved text input dialog not showing by removing flex align assert and reverting overridden dialog method.
  • 10-hostname-dns app: fixed disabled text input and number fields by adding LVGL keyboard modal support.

Documentation

  • Rewrote the boot-issues recovery guide. The single SWU password the page previously quoted was only correct for K2P / K3 / K3V2; KS1, KS1 Max, and K3 Max users following the old guide hit bad password on unzip with no further explanation. The page now ships the full per-model password table, points at the canonical copies in tools.sh and prepare-version.sh, recommends a USB SWU re-flash as the first recovery path before mainboard surgery, surfaces /opt/rinkhals/tools/backup-partitions.sh as both a recovery aid and a "do this while healthy" precaution, and explicitly labels the partition-restore procedure as documented for Kobra 3 only with an invite for contributions on other models.
  • New FAQ entry explaining the misleading load average on this hardware (the WiFi driver and Anycubic vision pipeline park 11 kernel threads in D-state on hardware semaphores, which Linux counts as load even though they consume no CPU). Includes guidance on what to actually look at for real system pressure.
  • Added a Components section across the printer pages with a request for mainboard photos to help future reverse-engineering work.
  • New introduction for the firmware internals section, plus a "how Rinkhals works" overview.
  • Migrated documentation from MkDocs to ProperDocs (#15).
  • App and firmware-repository schema pages filled in so contributors have a written reference for the manifest shape.
  • Consolidated supported firmware versions across docs and repaired invalid YAML front matter and legacy links.
  • README refreshed for the community release: catches the apps-system summary up with what actually ships today, lists the default apps that come with every release, and updates the Rinkhals.Apps casing throughout.
  • Repository references migrated to the rinkhals-community organization across all documentation.

Housekeeping

  • LICENSE normalized and NOTICE split out so GitHub correctly detects the project as MIT.
  • Removed the legacy repo-level issue templates; the rinkhals-community org-wide YAML templates now apply.
  • Discord invite link refreshed to a non-expiring URL across documentation.
  • .claude/ added to .gitignore.
  • Safely opted into Node.js 24 to resolve GitHub Actions deprecation warnings.

Community archive infrastructure

These changes live in the rinkhals-firmware-site repository and support the new 60-firmware-collector app. Not user-facing in this build, but worth listing for context:

  • New ingest Lambda and SQS FIFO queue at ingest.firmwareforge.org/v1/notify for receiving notifications from opted-in printers.
  • firmware-fetcher ECS task drains the contribution queue at the start of each scheduled run (06:00 and 18:00 UTC).
  • Custom domain mapping with ACM certificate for the ingest endpoint.

Upgrade notes

  • Mainsail users: the live Z-offset control now appears in the Toolhead panel during prints again, including after LeviQ3 leveling. No action needed; the fix is applied automatically by Moonraker.
  • KS1 owners on Anycubic firmware 2.7.2.1: this is the first stable build where Rinkhals starts cleanly without .enable-rinkhals. You can remove the marker file after upgrading.
  • Orca users who saw the printer load the wrong ACE slot first on single-color prints: please upgrade and retest. The auto-feed now reads the slicer's intended tool and resolves the correct slot directly.
  • First boot after upgrading from any build older than 20260526_03_test: the new installer will prune accumulated old version directories on /useremain. Current and previous Rinkhals installs are kept; everything else matching the YYYYMMDD_NN[_test][-N] pattern is removed. Custom folders are untouched.
  • Recovering a soft-bricked printer: see the rewritten recovery guide for the per-model SWU password table. If you previously bookmarked the procedure, the page now correctly handles all six supported models instead of only K2P / K3 / K3V2.

Supported printers

Model Tested firmwares Notes
Kobra 3 (+ combo) 2.4.4.7 2.4.5 2.4.6.4 2.4.6.7
Kobra 2 Pro 3.1.2.3 3.1.4 Only with mainboard Trigorilla Spe B v1.0.x. 3.1.4 seems to be buggy for some people
Kobra S1 (+ combo) 2.5.8.8 2.5.9.9 2.6.0.0 2.7.0.7 2.7.0.9 2.7.2.1
Kobra 3 Max (+ combo) 2.5.1.3 2.5.1.7 2.5.2.8
Kobra 3 V2 (+ combo) 1.1.0.1 1.1.0.4 1.1.2.7 1.1.2.8
Kobra S1 Max (+ combo) 2.1.6 2.6.6 2.6.9.3

New Contributors

Full Changelog: 20260501_01...20260601_01

Don't miss a new Rinkhals release

NewReleases is sending notifications on new releases.