ACE2 #26
Reference in New Issue
Block a user
No description provided.
Delete Branch "gangoke/KX-Bridge-Release:ACE2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ACE2 Support
Automatic switching between 3 modes
ACE Auto Refill
ACE Dryer
Index Mapping Reference
This section summarizes how ACE2 separates display labels, internal global indices, physical box/slot addresses, and print-facing AMS indices.
_global_to_box_slot()resolves an internal global index to(box_id, local_slot)_box_local_to_global()converts a physical(box_id, local_slot)back to the internal global index_slot_to_print_ams_index()converts the internal global index into the printer-facingams_indexglobal_index + 1, so the UI is one-based while backend mapping remains zero-basedMode Detection
toolhead: only the toolhead box is presentace_direct: ACE channels are exposed directly and only the first ACE box is usedace_hub: toolhead channels are present and ACE boxes are mapped after themIndex Map: toolhead mode
global_to_box_slot(1) -> (-1, 1)slot_to_print_ams_index(1) -> 1Index Map: ace_direct mode
(box_id=0, slot=0)(box_id=0, slot=1)(box_id=0, slot=2)(box_id=0, slot=3)global_to_box_slot(2) -> (0, 2)slot_to_print_ams_index(2) -> 2Index Map: ace_hub mode
(box_id=0, slot=0)(box_id=0, slot=1)(box_id=0, slot=2)(box_id=0, slot=3)(box_id=1, slot=0)(box_id=1, slot=1)ace_hub, toolhead slots occupy internal indices0..23global_to_box_slot(7) -> (1, 0)means displayed Slot 8 maps to ACE box 1, local slot 0box_local_to_global(1, 0) -> 7slot_to_print_ams_index(7) -> 8UI Enhancements
Filament Section
gCode Color Mapping Dialog
Bug Fixes and Enhancements
ACE2to WIP: ACE2Hi @gangoke — first off, huge thanks for this contribution. The auto-detection between
toolhead/ace_direct/ace_hubplus the index-mapping helpers (_global_to_box_slot/_box_local_to_global/_slot_to_print_ams_index) are exactly the kind of clean abstraction this code needed for multi-box support. The Happy-Hare MMU change (only syncing populated slots) is also a nice catch and aligns with OrcaSlicer PR #13372.A few notes / questions before we merge:
PR is currently a Draft. Once you feel it's ready, please mark it "Ready for review" — that's our signal to merge.
Test coverage. You mentioned 2–4 ACE units are theoretical and only Docker-tested. Could you confirm:
toolhead, 4-slot stock filament box)? That's the configuration most users have, and I want to make sure auto-detection falls through cleanly.skip/start+skip/query_obj(the part-skip feature from v0.9.10) still work in your Docker test? The new index mapping shouldn't touch that path, but worth a sanity check.Hardware on our side. We don't have ACE2 hardware here either, so merging this means releasing it on trust — that's fine, but we'll mark it experimental in the v0.9.11 CHANGELOG so users know.
GPLv3 header. No action needed from you — the project went GPLv3 a few days ago, and our
release.shwill add the standard header to the file automatically on the next release build. By submitting this PR you've already implicitly agreed to GPLv3 redistribution.Process. We'll merge into our dev repo first (not directly into release-repo master), run it on the real 4-slot Kobra X here, and then push to release-repo as v0.9.11. So once you flip this to Ready, there might be a short delay before it shows up as a release.
Minor: The PR adds both
config.ini.example(root) andconfig/config.ini.examplewith the same[ace_dry_presets]section. We can clean that duplication up separately — no change needed in this PR.Again, really appreciate the work — the dryer presets and the per-slot pulsing UI feedback are great touches. Looking forward to flipping the switch on this.
@viewit thanks for the feedback.
I ran out of time testing before I had to go to work, but I wanted to get something out there. Most testing I was able to get through was done in Ace_hub mode. Plan for today is focus on toolhead mode testing. Once I validate toolhead mode is solid I'll open this pr for review. I'll add skip part feature to my tests.
WIP: ACE2to ACE2Ready!
All current features tested for all 3 modes (limited to 1 ACE2): PASS
❤️
👍
Glad to put in the work. I'm a huge advocate of breaking free of cloud reliance. Thank you for laying a foundation.
🎉 Released as v0.9.11! — https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases/tag/v0.9.11
@gangoke thank you again for this. Here's how it went on our side:
toolhead(no-ACE) path live against a real 4-slot Kobra X: auto-detection correctly reportsfilament_mode=toolhead, all 4 slots render with their colors, and the v0.9.10 skip-objects feature + multi-printer setup are untouched. ✅/printer{num:\d+}route string is now a raw string (was emitting aSyntaxWarningon newer Python).config.ini.examplecleanup and the dryer-visibility fix from your follow-up commits are included.I'm closing this PR rather than merging it through Gitea for a purely mechanical reason: our public release repo is generated from a separate dev repo (that's where the GPLv3 header gets stamped on by
release.sh), so the code lands here as a build commit rather than via the PR's own history. That means Gitea can't mark it "merged" even though your work is 100% in the v0.9.11 release. Not a reflection on the contribution — you're credited by name in the CHANGELOG.ACE Pro 2 support is shipped as experimental (single-unit tested by you, multi-unit hub untested on real hardware, and we don't have ACE2 hardware here either) — so if multi-ACE users hit anything, it'll come back as issues and we'll iterate.
Really appreciate you pushing the cloud-free cause forward. 🙏 Door's open for the next one.