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_pinGoKlipper doesn't expose, so Mainsail's Z-offset component stops crashing and saves route throughZ_OFFSET_APPLY_PROBE. Also reported upstream as mainsail-crew/mainsail#2508 with fix PR #2509. - Kobra S1 firmware
2.7.2.1is now supported. KS1 owners who already upgraded no longer need an.enable-rinkhalsUSB marker file to boot Rinkhals. - New opt-in
60-firmware-collectorapp. 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. ADry runmode 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]inmoonraker.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-dnssystem 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-generatedkobra-<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
/useremainover an upgrade. - Dev container and
justfilefor 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 viattg_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.confwith hardcoded1.1.1.1/8.8.8.8at 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 beyondMAXNS=3. The fix ships an emptyresolv.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
filenamevariable inpatch_mqtt_printthat crashed Vanilla Klipper (#18, thanks @Kobra-S1). - Fixed GoKlipper panic during homing on Kobra S1 Max by excluding
motion_reportfrom the exposed objects list (#17, thanks @Kobra-S1). - Fixed
process-cfg.pyregex 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_hubobject 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.ITEMSconstant 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-dnsapp: 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 passwordonunzipwith no further explanation. The page now ships the full per-model password table, points at the canonical copies intools.shandprepare-version.sh, recommends a USB SWU re-flash as the first recovery path before mainboard surgery, surfaces/opt/rinkhals/tools/backup-partitions.shas 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.Appscasing throughout. - Repository references migrated to the
rinkhals-communityorganization across all documentation.
Housekeeping
LICENSEnormalized andNOTICEsplit 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/notifyfor receiving notifications from opted-in printers. firmware-fetcherECS 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 theYYYYMMDD_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
- @basvd made their first contribution in #12
- @Kobra-S1 made their first contribution in #17
- @sharpmonk made their first contribution in #19
Full Changelog: 20260501_01...20260601_01