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

1 participant