Skip to content

X2D Support#13388

Merged
SoftFever merged 18 commits into
OrcaSlicer:mainfrom
glowstab:x2d-support
May 9, 2026
Merged

X2D Support#13388
SoftFever merged 18 commits into
OrcaSlicer:mainfrom
glowstab:x2d-support

Conversation

@glowstab

@glowstab glowstab commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Description

Adresses #13294

  • Adds the X2D printer definition, machine presets, process presets, filament presets, BBL profile index entries, CLI config entries, filament blacklist updates, and printer/load/calibration/cover assets.
  • Updates dual-nozzle handling to use configured toolhead labels and match Bambu X2D hotend placeholders.
  • Adds X2D-specific wipe tower cooling placeholder support and 3MF filament/nozzle change sequence metadata import/export plumbing.

Note

I own a P2S and an X2D. That's all. I frankly have no idea if my changes cause regression on other printers, and have no capability to test. I know that for my X2D, which runs an AMS, .2mm nozzles, SuperTack, and in LAN mode, this has been working without issue.

Screenshots/Recordings/Graphs

Dual nozzle control

Dual nozzle control

image

Multi nozzle filament override

X2D Machine config and dual nozzle support

X2D Machine config and dual nozzle support

Filament for Supports test prints

Filament for Supports has been used in over 20 hours of test prints

Left vs Right filament distinction

Left vs Right filament distinction

Custom filament mapping

Custom filament mapping

Auto map

Auto map

LAN mode send print with X2D preview and no errors

LAN mode send print with X2D preview and no errors, dual nozzle selection

Tests

  • 20 hours of dual-nozzle printing.
  • 100% CTest tests passed
  • Validated 208 changed JSON files.

How to Download Pull Requests Artifacts for Testing
Fix #13294

@github-actions

Copy link
Copy Markdown

Hi @glowstab, you can manage the labels for this PR by /bot add-label and /bot remove-label

Allowed labels are:
bug-fix, enhancement, Localization, profile, QoL, UI/UX and dependencies.

Examples:

/bot add-label bug-fix
/bot add-label bug-fix, UI/UX
/bot remove-label bug-fix, UI/UX

@glowstab glowstab marked this pull request as ready for review April 28, 2026 17:55
@glowstab

Copy link
Copy Markdown
Contributor Author

/bot add-label enhancement

@github-actions github-actions Bot added the enhancement New feature or request label Apr 28, 2026
@glowstab glowstab mentioned this pull request Apr 28, 2026
1 task
@glowstab

glowstab commented Apr 28, 2026

Copy link
Copy Markdown
Contributor Author

Accidentally dropped a commit. Just pushed 925a4d7 for filament override.

image

@RF47 RF47 added the Community testers wanted Looking for community testers and feedback label Apr 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@jondunning

Copy link
Copy Markdown

@glowstab Looks to require external storage in Orca but not in Bambu Studio. Both connected via LAN only.

image

@jondunning

Copy link
Copy Markdown

Actually this might just be an unrelated change in Orca that is required

image

@jondunning

Copy link
Copy Markdown

@glowstab Local storage does work — the issue was that the N6.json file was missing. After deleting the ~/Library/Application Support/OrcaSlicer directory and then reopening OrcaSlicer, the N6.json file was recreated, and local storage started working properly.

@ianalexis

Copy link
Copy Markdown
Collaborator

Accidentally dropped a commit. Just pushed 925a4d7 for filament override.
image

Personally, I'm strongly opposed to this design decision by BBL.
It seems very unscalable to me and appears to be more of a quick fix than a real solution.

4 buttons for 2 extruders and 2 hotends?
When we have 4 extruders with 4 hotends, will the solution be 16 buttons?
How are we going to apply this to machines that aren’t from Bambu?

This looks more like a matrix than an array to me.
n Tabs per extruder and each extruder a hotend option.

I understand that this PR would bring things in line with BBL, but I still want to express my concern about scalability and future support.

@glowstab

Copy link
Copy Markdown
Contributor Author

@glowstab Local storage does work — the issue was that the N6.json file was missing. After deleting the ~/Library/Application Support/OrcaSlicer directory and then reopening OrcaSlicer, the N6.json file was recreated, and local storage started working properly.

This is interesting to me. I never had this error on P2S but had it on X2D immediately upon opening Bambu for the first time. To be honest, I inserted storage and never though about this again. I will at least look at this but based on what you're saying it seems like changes aren't needed at this time(?).

Thanks a lot for testing!

@glowstab

Copy link
Copy Markdown
Contributor Author

4 buttons for 2 extruders and 2 hotends? When we have 4 extruders with 4 hotends, will the solution be 16 buttons? How are we going to apply this to machines that aren’t from Bambu?

Valid, but that would require Bambu to release a printer with a printer with 4 different extruder types not just 4 extruders. Surely they wont do that... I hope.

@glowstab

glowstab commented Apr 29, 2026

Copy link
Copy Markdown
Contributor Author

Next steps:

  1. Perform line-by-line comparison of all machine parameters and G-code in Orca to latest Bambu Slicer beta.
  2. Disable auto-calibrations and perform a benchmark PLA calibration on each nozzle (i.e. VF, FR, APA).
  3. Repeat step 1 with PETG.
  4. Send a couple of multi-material test prints (e.g. PETG w/PLA support).
  5. Report issues and/or successes.

I've personally completed all 5 of these and have noticed one oddity, which I will struggle to articulate:

Trying to run max volumetric flow test on my external PETG (listed as filament 5) and nozzle 2, but the maximum speed of the test is being determined by filament 1 despite setting the object filament to 5. For example, if I have a low flow rate filament in slot 1 and slice, and then change it to high flow rate and slice, my second test runs faster, despite neither test using filament 1 at all.

I can't figure out if this is expected, the wiki doesn't mention this behavior, and my local state is such a mess now it's hard for me to even tell if this is regression. I'll continue testing today but let me know if you run into something similar.

@glowstab

Copy link
Copy Markdown
Contributor Author

maximum speed of the test is being determined by filament 1 despite setting the object filament to 5

I've found that this is not the case in BambuStudio 2.6.0.

@@ -4294,7 +4307,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
else if (key == BED_TYPE_ATTR)
{
BedType bed_type = BedType::btPC;
ConfigOptionEnum<BedType>::from_string(value, bed_type);
const std::string bed_type_value = value == "SuperTack Plate" ? "Supertack Plate" : value;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can use a Case-insensitive string comparison to avoid future issues here.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, but I'd prefer to do it in a separate PR — other bed types can benefit from the same change, not just this one.

@Vootour

Vootour commented May 10, 2026

Copy link
Copy Markdown

I've been testing this software for about two days now. I printed some PETG, PLA, and PA using two nozzles, and everything worked great— no issues at all. The communication between the software and the machine is completely stable. Sometimes it crashes in the Device tab, but a simple restart usually fixes it. Now it feels like the connection is getting better and better. I don't have a filament track switch, so I can't test it. Thank you so much for your work!

@SoftFever

Copy link
Copy Markdown
Collaborator

Do we support filament track switch as well?

can you give it a try? Filament track is mostly a fireware side featue? so it should work out of the box
i don't have it so can't try it myself

@BigFudgeDD

Copy link
Copy Markdown

I just downloaded the nightly build, the printer is in there, I configured the filaments and it prints at the moment. Thus far everything seems to be fine. The only thing I'm still missing is the option to set the nozzle type (standard/high flow). Do I overlook something? Will it be added at a later point in time? Is there a workaround? Thanks in advance to anybody who can provide some insight.

@SoftFever

Copy link
Copy Markdown
Collaborator

I just downloaded the nightly build, the printer is in there, I configured the filaments and it prints at the moment. Thus far everything seems to be fine. The only thing I'm still missing is the option to set the nozzle type (standard/high flow). Do I overlook something? Will it be added at a later point in time? Is there a workaround? Thanks in advance to anybody who can provide some insight.

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

@ClaraPotato

ClaraPotato commented May 11, 2026

Copy link
Copy Markdown

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

That feels way more complicated to keep track of imho. It's not going to automatically flip over to the filament profiles for a high flow nozzle because I have a high flow nozzle installed.
So if I have an AMS with 4 rolls, or maybe two AMS's with no 8 rolls. I have to go in and manually click over the profiles for each and every roll one by one.

I mean what's the point of having all the settings inside a single filament profile for High Flow and Standard Flow, if I have to change filament profiles each time I switch out my nozzles anyway.
This is waaaaay more complicated that just hitting "High Flow" from one drop down, and knowing that it's going to use the high flow settings that are already saved in my single filament profile.

So now we have profiles that have features that simply aren't used (no way that will be confusing) and a ton of extra steps when swapping out my nozzles.

This is really going to keep me from using Orca Slicer in the future. I used Orca because it made my life easier. Now it does the opposite. Really bad design here.

dbaarda pushed a commit to dbaarda/OrcaSlicer that referenced this pull request May 11, 2026
* main: (60 commits)
  Fix new IS wiki redirection (OrcaSlicer#13569)
  Machine Input Shaping (OrcaSlicer#11202)
  Tool Position window improve reading of vertex info (OrcaSlicer#12614)
  Printer selection dialog redesign (OrcaSlicer#12248)
  Adjust creality generic ASA first layer temp from 60c to 100c (OrcaSlicer#13558)
  Fixed an issue that X2D 0.4 don't have default material
  Fix DropDown submenus on Linux/Wayland (OrcaSlicer#13563)
  K2 Plus/K2: add print area bounding box for adaptive bed mesh (OrcaSlicer#13290)
  Add Flashforge printer profile for Creator 5, Creator 5 Pro. (OrcaSlicer#13259)
  Add Cubicon xCeler-Mini printer model and material profiles (OrcaSlicer#13172)
  Add Repetier Gcode Flavor as option (OrcaSlicer#13126)
  Add FILL3D PLA Basic, PETG, PP, PPCF, PA filament profiles (OrcaSlicer#12973)
  Add Anycubic Kobra 3 Max (OrcaSlicer#11586)
  Warn user for abnormal temperature differences for nozzle and bed (first layer vs other layers) (OrcaSlicer#12345)
  Fix support interface semantics, gap handling, behavior; fix bottom interface generation for organic trees; fix non organic tree interfaces (OrcaSlicer#11812)
  Fix “Jump to” links for non-print preset settings (OrcaSlicer#13381)
  Fix K2 family chamber temperature control defaults (OrcaSlicer#13399)
  Add GreenGate3D PETG filament profile (OrcaSlicer#13448)
  X2D Support (OrcaSlicer#13388)
  attempt to reduce freezing issues caused by model dialog on Linux
  ...
@BigFudgeDD

Copy link
Copy Markdown

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

That feels way more complicated to keep track of imho. It's not going to automatically flip over to the filament profiles for a high flow nozzle because I have a high flow nozzle installed. So if I have an AMS with 4 rolls, or maybe two AMS's with no 8 rolls. I have to go in and manually click over the profiles for each and every roll one by one.

I mean what's the point of having all the settings inside a single filament profile for High Flow and Standard Flow, if I have to change filament profiles each time I switch out my nozzles anyway. This is waaaaay more complicated that just hitting "High Flow" from one drop down, and knowing that it's going to use the high flow settings that are already saved in my single filament profile.

So now we have profiles that have features that simply aren't used (no way that will be confusing) and a ton of extra steps when swapping out my nozzles.

This is really going to keep me from using Orca Slicer in the future. I used Orca because it made my life easier. Now it does the opposite. Really bad design here.

I agree 100 %

To use different filament profiles for standard and high flow nozzles is one thing and I guess depending on the point of view it might indeed be simpler doing it that way. But what are the different settings within one filament profile there for then? When they aren't used anyway, why not thor them out all togehther and make the interface cleaner?

Besides, not having the option to distinguish between standard and high flow, leads to constant conflicts with the printers firmware. When I change the nozzle, usually I tell the printer which kind of nozzle is installed over its interface. When I set the nozzle to high flow in the printer, I instantly get an error message when I want to send the sliced object to the printer, because it complains about incompatible nozzles.

I appreciate the concept of making things as easy as possible. But in my opinion nothing could be easier than allowing to set different nozzles types in the printer profile, sync the information with the printer (what Orca can already do), grab the corresponding settings from the filament profile (which are already there) and go. With that approach I wouldn't have to think about the filament profile at all, let alone managing a bunch of different profiles, that basically only differ in the maximum flow rate.

You do you, but I would strongly suggest to reconsider, if keeping seperate filament profiles really is the easiest workflow for the user. For me, it certainly is not.

@magnus1133

Copy link
Copy Markdown

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

That feels way more complicated to keep track of imho. It's not going to automatically flip over to the filament profiles for a high flow nozzle because I have a high flow nozzle installed. So if I have an AMS with 4 rolls, or maybe two AMS's with no 8 rolls. I have to go in and manually click over the profiles for each and every roll one by one.

I mean what's the point of having all the settings inside a single filament profile for High Flow and Standard Flow, if I have to change filament profiles each time I switch out my nozzles anyway. This is waaaaay more complicated that just hitting "High Flow" from one drop down, and knowing that it's going to use the high flow settings that are already saved in my single filament profile.

So now we have profiles that have features that simply aren't used (no way that will be confusing) and a ton of extra steps when swapping out my nozzles.

This is really going to keep me from using Orca Slicer in the future. I used Orca because it made my life easier. Now it does the opposite. Really bad design here.

I have to add my agreement here. As a person who likes to dial in each and every filament (brand, type/finish, color, nozzle size, etc.) this would mean creating FOUR different custom filament profiles for EACH nozzle effectively. Granted, I may not need a filament profile for each and every type, but the fact I would ultimately see several dozen profiles over time, the list of custom filaments would become extremely lengthy. I have about 40 filaments as it stands right now. So that would mean nearly 200 filaments PER NOZZLE.

Please adopt the Bambu Labs methodology where possible. On the X2D, the two extrude types might make this a challenge, but I leave that to the far more knowledgeable. The Bowden versus Direct Drive is causing me some difficulties.

@ansonl

ansonl commented May 11, 2026

Copy link
Copy Markdown
Contributor

Since the filament "high flow" has mostly the same settings as the normal filament settings. I think it may be useful to make the "high flow" filament profile inherit from the base normal filament settings.

It's not sustainable to keep adding additional nozzle types to the filament profile because there are endless combinations like "extra high flow", "stainless steel", or "ruby tip".

With inheritance, when the base filament setting is changed, the inheriting "high flow" filament settings profile will also use that value unless it was one of the customized options.

Right now it's not easy to view the filament inheritance tree nor can inheritance be changed in the UI from what I can see. Exposing this inheritance info and making it changeable in the UI for existing filaments would encourage people to use settings inheritance.

@peterb-aus

Copy link
Copy Markdown

This PR has broken file transfer to BBL A1s on my network.

I opened a new issue, [https://github.com//issues/13583]

@ClaraPotato

Copy link
Copy Markdown

@peterb-aus
The crashing when going to the device tab is:
#13300
and completely unrelated to the x2d changes.

Maybe, but for me, it only happens if the selected printer is X2D, none of my other printers do this, BBL or otherwise.

If you are running with Linux it's likely due to a messed up dependency. I was also having this issue for a while.
The issue is the package "webkit2gtk".

Removing "webkit2gtk" from your computer and install "webkit2gtk-4.1" from the official repository.
Since I primarily use the AUR repository for Arch linux, I had to re-install the Bambu slicer after doing this from a package with the corrected dependency. (https://aur.archlinux.org/packages/bambustudio-appimage)

I haven't played around with it much in Orca because until they add a better method of switching nozzles to include switching back and forth from HF nozzles to the SF nozzles, I won't be using OrcaSlicer, while Bambu slicer makes that change easy and straight forward, and the devs here want OrcaSlicer to the be the most convoluted confusing process on the planet.

It'll take me longer to switch the filament profiles in the software than it will take me to swap out my nozzles on a whim.

But I imagine the issue plaguing some users on Orca and BBL with crashing on the device page are stemming from the same issue source, being the problematic dependency on "webkit2gtk" The issue is definitely unrelated to this pull request though.

@malventano

malventano commented May 12, 2026

Copy link
Copy Markdown
Contributor

The import/export code added in this PR references two config options (enable_filament_dynamic_map and has_filament_switcher) at bbs_3mf.cpp:4550-4565, but these were never registered in PrintConfig.cpp. This causes UnknownOptionException on .3mf load for any project exported by builds since May 9 — see #13623 for the fix.

@glowstab

Copy link
Copy Markdown
Contributor Author

@glowstab I made a fix for the previously found issue. Pls let me know you notice any issue

Apologies for the delay. This has slipped in my priorities list.

Looks like we merged! Thank you so much for the review and the fix @SoftFever. Glad to contribute.

@malventano

Copy link
Copy Markdown
Contributor

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

This is not how the H2D builds currently handle high flow - the profiles contain both normal and high flow values, but Orca exposes the flow field that corresponds to the detected installed nozzle. There is no toggle currently exposed to the user even though both are present in the filament profile. Example from the H2D ABS profile:

	"filament_max_volumetric_speed": [
		"20",
		"35"
	],

If a high flow nozzle is installed, 35 is shown, and edits will change the second field. If normal flow is installed, 20 is shown and changes will alter the first field. What's more confusing is that if Orca is launched and the printer hotend was changed but not yet detected, the user ends up changing a value that does not correspond to their config, and once the printer is refreshed, the value switches without their knowledge.

@SoftFever

Copy link
Copy Markdown
Collaborator

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

That feels way more complicated to keep track of imho. It's not going to automatically flip over to the filament profiles for a high flow nozzle because I have a high flow nozzle installed. So if I have an AMS with 4 rolls, or maybe two AMS's with no 8 rolls. I have to go in and manually click over the profiles for each and every roll one by one.
I mean what's the point of having all the settings inside a single filament profile for High Flow and Standard Flow, if I have to change filament profiles each time I switch out my nozzles anyway. This is waaaaay more complicated that just hitting "High Flow" from one drop down, and knowing that it's going to use the high flow settings that are already saved in my single filament profile.
So now we have profiles that have features that simply aren't used (no way that will be confusing) and a ton of extra steps when swapping out my nozzles.
This is really going to keep me from using Orca Slicer in the future. I used Orca because it made my life easier. Now it does the opposite. Really bad design here.

I agree 100 %

To use different filament profiles for standard and high flow nozzles is one thing and I guess depending on the point of view it might indeed be simpler doing it that way. But what are the different settings within one filament profile there for then? When they aren't used anyway, why not thor them out all togehther and make the interface cleaner?

Besides, not having the option to distinguish between standard and high flow, leads to constant conflicts with the printers firmware. When I change the nozzle, usually I tell the printer which kind of nozzle is installed over its interface. When I set the nozzle to high flow in the printer, I instantly get an error message when I want to send the sliced object to the printer, because it complains about incompatible nozzles.

I appreciate the concept of making things as easy as possible. But in my opinion nothing could be easier than allowing to set different nozzles types in the printer profile, sync the information with the printer (what Orca can already do), grab the corresponding settings from the filament profile (which are already there) and go. With that approach I wouldn't have to think about the filament profile at all, let alone managing a bunch of different profiles, that basically only differ in the maximum flow rate.

You do you, but I would strongly suggest to reconsider, if keeping seperate filament profiles really is the easiest workflow for the user. For me, it certainly is not.

Point taken.
We will re-evaluate the UX for bbl H2D printers

SoftFever pushed a commit that referenced this pull request May 16, 2026
…onfig options (#13623)

fix(printconfig): register enable_filament_dynamic_map and has_filament_switcher options

PR #13388 (X2D Support) added import/export for these options in
bbs_3mf.cpp but never registered them in PrintConfig.cpp. Loading any
.3mf containing these keys throws UnknownOptionException at
PartPlate.cpp:6153 when config->apply() looks up the missing definition.
igiannakas added a commit to igiannakas/OrcaSlicer that referenced this pull request May 16, 2026
commit 3533c70
Merge: 82aaf31 83179d5
Author: Ioannis Giannakas <[email protected]>
Date:   Sat May 16 07:40:44 2026 +0100

    Merge branch 'main' into toolchange-order

commit 83179d5
Author: Francesco Palmarini <[email protected]>
Date:   Sat May 16 08:37:16 2026 +0200

    Make flushing volumes dialog resizable (OrcaSlicer#13663)

commit fb5296a
Author: Allyn Malventano <[email protected]>
Date:   Sat May 16 02:24:26 2026 -0400

    fix: register enable_filament_dynamic_map and has_filament_switcher config options (OrcaSlicer#13623)

    fix(printconfig): register enable_filament_dynamic_map and has_filament_switcher options

    PR OrcaSlicer#13388 (X2D Support) added import/export for these options in
    bbs_3mf.cpp but never registered them in PrintConfig.cpp. Loading any
    .3mf containing these keys throws UnknownOptionException at
    PartPlate.cpp:6153 when config->apply() looks up the missing definition.

commit 74f2bec
Author: RobertKuszmar <[email protected]>
Date:   Fri May 15 23:20:43 2026 -0700

    Fix PrinterWebView only clear deferred url on success (OrcaSlicer#11508)

    * Fix only clear deferred url on success

    * add comments

    ---------

    Co-authored-by: Ioannis Giannakas <[email protected]>
    Co-authored-by: yw4z <[email protected]>

commit 1555fc9
Author: Justin Levine <[email protected]>
Date:   Fri May 15 18:40:36 2026 -0700

    docs(readme): update logo credit GitHub username (OrcaSlicer#13680)

commit 2f74413
Author: Ian Bassi <[email protected]>
Date:   Fri May 15 20:44:33 2026 -0300

    Updates for printer covers (OrcaSlicer#13660)

    * Remove border for X2D image

    * RatRig improvement

    * Update Elegoo Centauri_cover.png

    * Update Kingroon KLP1_cover.png

    * Update FlyingBear Reborn3_cover.png

    * Update Folgertech FT-6_cover.png

    * Update Snapmaker J1_cover.png

    * flashforge c5

    * RatRir diagonal

    * FlashForge perspective

    * Update Orca Arena X1 Carbon_cover.png

    * Update Tiertime UP310 Pro_cover.png

    * Update Folgertech i3_cover.png

    * Update FlyingBear Ghost 6_cover.png

    * Update Lulzbot Taz 4 or 5_cover.png

    * Update Snapmaker J1_cover.png

    * Revert "Update Orca Arena X1 Carbon_cover.png"

    This reverts commit a6e0f59.

    * Update Orca Arena X1 Carbon_cover.png

    * Update Elegoo Centauri_cover.png

    * Update Tiertime UP310 Pro_cover.png

    * Update Snapmaker J1_cover.png

    * Update Bambu Lab X2D_cover.png

    * flashforge creator

    * Update Snapmaker U1_cover.png

    * Update Folgertech FT-6_cover.png

    * Update Kingroon KLP1_cover.png

    * Update Folgertech i3_cover.png

    * LH stinger

    * Update Lulzbot Taz 4 or 5_cover.png

    * flyingbear

    * LH Stinger

    * deltamaker

    * ratrig

    * Update Generic Repetier Printer_cover.png

    ---------

    Co-authored-by: yw4z <[email protected]>

commit b3bb860
Author: yw4z <[email protected]>
Date:   Fri May 15 20:12:30 2026 +0300

    UI fixes / improvements (OrcaSlicer#12513)

    * bbl device selector search box

    * align file and more menus with its button

    * fix multiline inputbox border color on windows

    * fix multiline inputbox border color on windows

    * preferences: use content width on combobox dropdowns

    * about:  match version text size on macOS

    * msg dialog improvements

    * fix canvas menu overlapping with sliced plates toolbar

    * bbl bind dialog button placement

    * bbl color picker

    * Update StepMeshDialog.cpp

    * drop file dialog

    * drop dialog revert fonts

    * revert windows multiline border

    * Update StepMeshDialog.cpp

    * update

    * Flushing Volumes: match style of combobox

    * fix hyperlink color on canvas notifications

    * fix possible issues with shared profiles notification

commit d614917
Author: Francesco Palmarini <[email protected]>
Date:   Fri May 15 19:09:31 2026 +0200

    Fix H2D LAN print job routing (OrcaSlicer#13662)

commit 4154785
Author: Ocraftyone <[email protected]>
Date:   Fri May 15 11:45:39 2026 -0400

    Speed up encoding check (OrcaSlicer#10873)

    Update encoding check

commit 2167378
Author: SoftFever <[email protected]>
Date:   Fri May 15 19:45:24 2026 +0800

    Enhancement: eliminate UI freeze during cloud preset sync on startup (OrcaSlicer#13673)

    fix: eliminate UI freeze during cloud preset sync on startup
      Move synchronous HTTP calls off the main thread in
      GUI_App::start_sync_user_preset():

      - Call scan_orphaned_info_files() and process_delete_presets() in
        the background sync thread instead of the UI thread, so their
        HTTP DELETE calls don't block startup.
      - Call reload_settings() directly from the background thread
        instead of via CallAfter, so get_user_presets() (HTTP GET) and
        load/save_user_presets (file I/O) run off the main thread.
      - Guard update_side_preset_ui() and app_config->save() with
        is_main_thread_active() / CallAfter so they're safe when called
        from a worker thread.
      - Simplifiy finishFn lambdas: the progress-dialog case only
        destroys the dialog; the no-dialog case is a no-op.

commit cf0dfd1
Author: yw4z <[email protected]>
Date:   Fri May 15 05:03:17 2026 +0300

    Clarify Create nozzle for existing printer (OrcaSlicer#11773)

    * Update CreatePresetsDialog.cpp

    * add information for existing nozzles

commit 4088824
Author: Eldenroot <[email protected]>
Date:   Fri May 15 03:58:45 2026 +0200

    CLI: add layer_height and sparse_infill_density and wall_loops into result (OrcaSlicer#13001)

    * CLI: add layer_height into result

    cherry pick bambulab/BambuStudio@0b857b4

    * add sparse_infill_density and wall_loops

    cherry pick bambulab/BambuStudio@ea9b205

commit 23e6d84
Author: Ocraftyone <[email protected]>
Date:   Thu May 14 21:57:41 2026 -0400

    Bump Devcontainer Ubuntu Version (OrcaSlicer#12252)

    Bump ver

commit 3471b24
Author: yw4z <[email protected]>
Date:   Fri May 15 04:57:12 2026 +0300

    Fix: Font rendering pixelated when cleartype disabled (OrcaSlicer#12201)

    init

commit 6852845
Author: SoftFever <[email protected]>
Date:   Fri May 15 09:52:19 2026 +0800

    fixed an logic error  when adjust logging level

commit 82aaf31
Author: Ian Bassi <[email protected]>
Date:   Thu May 14 21:09:53 2026 -0300

    Update PrintConfig.cpp

commit a46e846
Author: Ian Bassi <[email protected]>
Date:   Mon May 11 19:59:35 2026 -0300

    Improve descriptions

commit 6e3dab8
Author: Ian Bassi <[email protected]>
Date:   Mon May 11 19:29:40 2026 -0300

    Use fallback PrintConfig and support cyclic ordering

    Add fallback to obtain PrintConfig from the PrintObject when m_print_config_ptr is null in both handle_dontcare_extruder overloads, and update checks to use the local print_config. Initialize m_print_config_ptr in the ToolOrdering constructor from the PrintObject. In reorder_extruders_for_minimum_flush_volume, introduce use_cyclic_ordering and adjust the get_custom_seq lambda to consider layer_filaments when cyclic ordering is enabled (sorting and converting filaments to 1-based indices). These changes prevent null dereferences and enable cyclic toolchange ordering based on per-layer filament data.

commit dabce09
Author: Ian Bassi <[email protected]>
Date:   Mon May 11 18:31:42 2026 -0300

    Add toolchange ordering option (Optimized/Cyclic).

    Adapted from prusa3d/PrusaSlicer@517954e#diff-6a6d0a3d3ce08babafde7b52f3743d7b9b599df0bd1b62b3a962e3096c311a8e

commit ecc53d9
Author: Hyiger <[email protected]>
Date:   Thu May 14 10:06:52 2026 -0700

    Fix LAN printing crashes and hangs on Bambu H2D (OrcaSlicer#13296)

    Two related fixes for LAN printing with newer Bambu networking plugins:

    1. FileTransferUtils: guard against missing ft_tunnel_* symbols

       The eMMC tunnel constructor calls ft_tunnel_create / ft_tunnel_set_status_cb
       without checking if the plugin exported them. Older plugins (e.g.
       01.10.01.01) don't have these symbols, so the calls dereference null and
       crash when sending a print. Now throw a clear exception so callers can
       fall back gracefully.

    2. PrintJob: disable eMMC print path by default

       Plugin 02.03.00.62's eMMC tunnel code hangs indefinitely at the upload
       phase (30%) on Bambu H2D, blocked inside the plugin waiting on a future
       that never resolves. Cancel doesn't work because the plugin doesn't
       check cancel_fn during the wait. The plain FTP path works reliably.

       Default to try_emmc_print=false; opt-in via AppConfig setting
       "disable_emmc_print" = "0". Also wrap the eMMC tunnel creation in
       try/catch so a missing-plugin exception cleanly falls back to FTP
       instead of killing the worker thread.

    Co-authored-by: hyiger <[email protected]>
    Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
    Co-authored-by: SoftFever <[email protected]>

commit d14819e
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:59:19 2026 +0300

    Fix air filtration settings hidden on printers that support that feature (OrcaSlicer#13384)

    Enable air filtration support in affected system printer profiles

    Some system printer profiles that support air filtration had the feature
    incorrectly disabled in the printer settings.

    This caused the related filament settings to be hidden, making the feature
    unavailable to users even though it is supported by the printer.

    Enable "support_air_filtration" in affected system printer profiles and
    bump profile version thus forcing Orca to refresh cached settings.

    This ensures air filtration settings are visible and usable on printers
    that support the feature.

commit 69594fa
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:57:52 2026 +0300

    Fix Windows file handoff when single-instance mode is enabled (OrcaSlicer#12944)

    Fix Windows single-instance file handoff

    On Windows, opening a model file while OrcaSlicer is already running could
    fail when single-instance mode was enabled.

    The second launch correctly detected that another instance already existed,
    but it could no longer find the running main window to forward the file-open
    request. As a result, the new process exited and the file was dropped.

    This happened because the existing-instance lookup depended on the native
    window title containing "OrcaSlicer". After the titlebar change from OrcaSlicer#12706,
    the title may contain only the project name, so the running instance was no
    longer discoverable that way.

    Fix this by identifying the existing main window through stable window
    properties instead of title text:
    - require the expected wxWidgets window class
    - require the instance hash properties to exist
    - match against the current instance hash

    This restores forwarding of externally opened files to the already-running
    instance without depending on the current titlebar text.

commit 291b34a
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:50:20 2026 +0300

    Hide some non-applicable settings for tree supports to prevent confusion (OrcaSlicer#12367)

    Hide tree support parameters not in use

    - hide independent support layer height for organic tree support
    - hide threshold overlap for tree supports

    Co-authored-by: SoftFever <[email protected]>

commit 26e6216
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:48:23 2026 +0300

    Fix stale keyboard refresh and auto-resize flicker of speed profile window in Preview tab (OrcaSlicer#12707)

    * Fix speed popup refresh and sizing in Preview

    Fix two UX issues in the Preview actual speed profile popup.

    Keyboard-driven horizontal slider changes could leave the popup visually stale
    until a later input event, which made keyboard navigation feel delayed.
    Also, the speed-profile popup could briefly render at an incorrect height
    before resizing on the next frame.

    This change makes keyboard slider updates explicitly request a follow-up frame,
    so refresh no longer depends on incidental mouse activity.

    It also removes auto-resize from ToolPositionTableWnd and sizes the popup
    before begin() each frame. The popup height is computed from plot height,
    table rows, and window paddings, then clamped to at least the height of the
    adjacent ToolPosition window.

    The popup width is now computed from translated header text and padding terms,
    with a 16:9-derived minimum for a more stable appearance. The width is cached
    for the session and recalculated when UI scale changes.

    Result:
    - keyboard navigation updates reliably
    - popup no longer shows the transient wrong-height first draw
    - sizing is more stable across scale and localization

    * Fix ToolPosition window also + other fixes

    * Fix compile error when ENABLE_ACTUAL_SPEED_DEBUG disabled

    IMGUI_DEFINE_MATH_OPERATORS is needed even if ENABLE_ACTUAL_SPEED_DEBUG is not enabled

    * Guard seam fallback vertex index in GCodeViewer

commit 700292f
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:46:05 2026 +0300

    Fix: Right Edge of G-code Viewer Legend Rows Not Interactive (OrcaSlicer#11899)

    Fix legend hover hit-testing

    Fix GCode viewer legend where the eye icon and right edge don’t respond to hover/click unless you click slightly left (works after switching view types unless the vertical slide is used).

commit d2ca5d3
Author: Kiss Lorand <[email protected]>
Date:   Thu May 14 19:44:40 2026 +0300

    Fix hybrid tree first-layer support base behavior and expose density setting (OrcaSlicer#13454)

    Fix hybrid tree first-layer support base flow and UI consistency

    Fix incorrect first-layer generation for hybrid tree supports.

    The support base on the first layer used brim flow instead of support material flow,
    which could lead to incorrect extrusion behavior and wrong material usage in
    multi-material prints.

    Additionally, spacing and density for the regular support part were not consistently
    derived from the actual first-layer support flow when first-layer and regular
    line widths differed.

    Hybrid-specific behavior is clarified:
    - first-layer expansion applies only to the regular support part
    - tree-only regions keep their existing behavior

    The first-layer support pattern is aligned with normal and organic tree supports
    to ensure consistent and meaningful density behavior.

    Also make first-layer support expansion and density settings visible whenever
    supports are enabled, as density was already affecting hybrid supports but was
    hidden in the UI.

commit dd8cb89
Author: Francesco Palmarini <[email protected]>
Date:   Thu May 14 18:41:04 2026 +0200

    Fix freeze after hiding sync popup (OrcaSlicer#13657)

    Avoid calling Show() on the main frame when it is already visible from BaseTransparentDPIFrame::on_hide(). On GTK this can re-enter size/layout handling after filament sync and leave the UI unresponsive.

commit 9c5f33f
Author: Ian Bassi <[email protected]>
Date:   Thu May 14 12:55:55 2026 -0300

    Fix Filament for Features (OrcaSlicer#13607)
@magnus1133

Copy link
Copy Markdown

In Orca, we aimed to keep the workflow simple by taking a different approach. Instead of having separate high and standard flow filament and nozzle settings, we use the filament profile to differentiate them. If you need to set a high flow for one nozzle, just select the high flow filament profile. You can create a high flow version of any filament by simply increasing the maximum volumetric speed in the profile settings.

That feels way more complicated to keep track of imho. It's not going to automatically flip over to the filament profiles for a high flow nozzle because I have a high flow nozzle installed. So if I have an AMS with 4 rolls, or maybe two AMS's with no 8 rolls. I have to go in and manually click over the profiles for each and every roll one by one.
I mean what's the point of having all the settings inside a single filament profile for High Flow and Standard Flow, if I have to change filament profiles each time I switch out my nozzles anyway. This is waaaaay more complicated that just hitting "High Flow" from one drop down, and knowing that it's going to use the high flow settings that are already saved in my single filament profile.
So now we have profiles that have features that simply aren't used (no way that will be confusing) and a ton of extra steps when swapping out my nozzles.
This is really going to keep me from using Orca Slicer in the future. I used Orca because it made my life easier. Now it does the opposite. Really bad design here.

I agree 100 %
To use different filament profiles for standard and high flow nozzles is one thing and I guess depending on the point of view it might indeed be simpler doing it that way. But what are the different settings within one filament profile there for then? When they aren't used anyway, why not thor them out all togehther and make the interface cleaner?
Besides, not having the option to distinguish between standard and high flow, leads to constant conflicts with the printers firmware. When I change the nozzle, usually I tell the printer which kind of nozzle is installed over its interface. When I set the nozzle to high flow in the printer, I instantly get an error message when I want to send the sliced object to the printer, because it complains about incompatible nozzles.
I appreciate the concept of making things as easy as possible. But in my opinion nothing could be easier than allowing to set different nozzles types in the printer profile, sync the information with the printer (what Orca can already do), grab the corresponding settings from the filament profile (which are already there) and go. With that approach I wouldn't have to think about the filament profile at all, let alone managing a bunch of different profiles, that basically only differ in the maximum flow rate.
You do you, but I would strongly suggest to reconsider, if keeping seperate filament profiles really is the easiest workflow for the user. For me, it certainly is not.

Point taken. We will re-evaluate the UX for bbl H2D printers

And that's why we LOVE OrcaSlicer!

My current issue is trying to dial in filament parameters between the two nozzle types; direct driver (Main) and bowden (Aux). I am finding that the acceleration and speed settings are vastly different, and those are NOT controlled in a the filament profile, but in the Process Presets.

So now we add another layer of complexity for this printer.

I did notice the Bambu Studio now reflects a distinction between nozzles in their 'Speed" section of the Process Presets.
Screenshot 2026-05-16 002929

@malventano

Copy link
Copy Markdown
Contributor

Point taken. We will re-evaluate the UX for bbl H2D printers

As much as I agree that Bambu Studio seems to make this overly complicated (you'd think only flow needs to change between normal and high flow), I went through the profiles and found several other fields change when switching to HF (retraction length, temps change for some profiles, filament wipe differs for most of of the X2D profiles).

...so I think a HF toggle in the filament settings UI is in order here, and Orca can do it better than BS by defaulting the toggle presented to the detected nozzle (so the user is less likely to adjust the 'wrong' version of the profile). At least the toggle would enable the user to edit the other types instead of having to raw edit the profiles outside of Orca as is necessary now.

SoftFever pushed a commit that referenced this pull request May 23, 2026
#13806)

PR #13388 added resources/printers/N6.json for X2D support but did not
bump resources/printers/version.txt. PresetUpdater only copies files
from the install's resources/printers/ to the user's data_dir/printers/
when the resources version is newer than the user's stored version, so
every existing install stays at 02.00.00.29 and never receives N6.json.

At runtime, json_diff::load_compatible_settings("N6", "") reads from
data_dir/printers/N6.json; the silent file-missing failure leaves
is_support_bed_leveling, is_support_pa_calibration, and
SupportCalibrationNozzleOffset at their defaults, hiding the Bed
Leveling and Nozzle Offset Calibration checkboxes in the Send Print
Job dialog for the X2D.

Bumping the patch version triggers the existing propagation logic on
next startup.

Fixes #13780
Fixes #13794

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
@Bingo2023

Copy link
Copy Markdown
Contributor

Hint:
I implemented the machine code update from BBL from 8.5.2026 and created a pull request.
Mandatory if you want to print 2 color (maybe also bed adhesion improvement).

I had lot of trial & error the last 3 weeks and was about to give up w/ X2D, caused me 1 roll of filament & lots of headache.

#13944

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Community testers wanted Looking for community testers and feedback enhancement New feature or request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

X2D support