Skip to content

Allow external spool workflow with Filament Track Switch#11336

Open
PollyBot13 wants to merge 2 commits into
bambulab:masterfrom
PollyBot13:fix/10328-fts-external-bypass
Open

Allow external spool workflow with Filament Track Switch#11336
PollyBot13 wants to merge 2 commits into
bambulab:masterfrom
PollyBot13:fix/10328-fts-external-bypass

Conversation

@PollyBot13

Copy link
Copy Markdown

Summary

This draft addresses bambulab/BambuStudio#10328 by allowing the existing per-nozzle external spool virtual slots to be selected in Studio when a Filament Track Switch is installed.

Current behavior blocks external spool selection in the FTS / dynamic mapping dialog and tells users to uninstall the Filament Track Switch. That forces users to physically unplug/remove the accessory for cases where the filament can be routed externally:

  • normal external spool through the external buffer
  • TPU Feed Assist / flexible filament routed directly to a toolhead
  • PTFE/Y-split bypass setups where FTS remains installed for the other nozzle

Implemented Scope

This is intentionally a small Studio-side change:

  • keep existing virtual external slots:
    • 255 / main-right external spool
    • 254 / deputy-left external spool
  • allow those virtual slots to remain selectable in LEFT_AND_RIGHT_DYNAMIC mapping mode
  • when sliced nozzle data is available, keep only the external slot matching the filament's sliced nozzle selectable in dynamic mapping mode, so a left-nozzle filament cannot be mapped to the right external slot and vice versa
  • remove the click-handler guard that silently ignored virtual external slots in that mode
  • allow the device-page external-slot Load / Unload actions to reach the existing assisted feed-direction flow when the Filament Track Switch is installed
  • do not require Filament Track Switch setup/readiness for Ext-L / Ext-R, because those virtual external slots represent user-assisted external routing that may intentionally bypass the switch
  • persist device-page filament choices for Ext-L / Ext-R by sending material settings for virtual slots and preserving the correct virtual tray id (254 or 255)
  • replace the old "uninstall Filament Track Switch" warning with guidance that the external filament must be routed through the external buffer or directly/bypassing FTS to the selected toolhead

Studio sends the same existing external virtual-slot mapping for both physical routing cases; the operator/printer must enforce the actual route.

Non-goals

This does not implement a full routing graph or claim that the Filament Track Switch can retract arbitrary external spools.

It also does not add a persisted via buffer versus direct bypass mode, because I have not found an existing printer/job protocol field for that distinction in Studio. The patch only re-enables the existing external virtual-slot mapping that Studio already serializes.

Desired Product Behavior

The desired product behavior is:

  • FTS may remain electrically connected and installed.
  • A selected nozzle may use an external spool.
  • The external spool may be routed through the existing buffer path for normal filaments, or directly to the selected toolhead for TPU/flexible-feed-assist setups.
  • FTS/AMS can still be used for the other nozzle when the mapping is otherwise valid.

If printer firmware currently rejects external virtual-slot mapping while FTS is installed, this Studio patch will need a matching firmware capability/update. In that case, the same UI change should be gated behind a firmware/capability flag instead of being rejected as a hardware impossibility.

Validation

  • git diff --check
  • local macOS arm64 build:
    • dependencies: CMAKE_BUILD_PARALLEL_LEVEL=8 ./BuildMac.sh -d -a arm64 -x -c Release
    • app: ninja -C build/arm64 -j8
    • packaged app: build/arm64/BambuStudio/BambuStudio.app
  • local X2D LAN UI smoke test with Filament Track Switch present:
    • bound 20P9BJ620301973 (LAN) from an isolated test profile
    • sliced bundled Bambu_Cube.stl with the X2D preset
    • confirmed the filament-switcher path is active in Studio
    • opened the send/mapping dialog without clicking Send
    • confirmed the selector shows Ext-L/Ext-R plus the new route/firmware note
    • confirmed Ext-L is selectable for the sliced nozzle side while Ext-R is shown but disabled
  • source inspection of the device-page load menu confirmed the old FTS guard also blocked virtual external-slot Load / Unload; this patch removes that blanket block so both assisted operations can proceed through the existing feed-direction flow without requiring FTS readiness for Ext-L / Ext-R
  • source inspection of the device-page filament setting path confirmed virtual external slots were not persisted reliably: ordinary filament presets were not sent unless the slot was already classified as third-party, both virtual slots were serialized as tray 254, and the response parser only refreshed the main/right virtual slot. This patch sends virtual-slot material settings explicitly and keeps Ext-L / Ext-R distinct.
  • Code inspection of existing external virtual-slot mapping path:
    • src/slic3r/GUI/DeviceCore/DevDefs.h
    • src/slic3r/GUI/DeviceCore/DevMapping.cpp
    • src/slic3r/GUI/SelectMachine.cpp
    • src/slic3r/GUI/AmsMappingPopupUpdate.cpp
    • src/slic3r/GUI/AmsMappingPopup.cpp
    • src/slic3r/GUI/StatusPanel.cpp

Still not validated:

  • firmware/printer acceptance of 254/255 external virtual-slot mapping while FTS is installed

Addresses #10328.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant