Skip to content

Fix LAN printing crashes and hangs on Bambu H2D#13296

Merged
SoftFever merged 2 commits into
OrcaSlicer:mainfrom
hyiger:fix/lan-print-hang-h2d
May 14, 2026
Merged

Fix LAN printing crashes and hangs on Bambu H2D#13296
SoftFever merged 2 commits into
OrcaSlicer:mainfrom
hyiger:fix/lan-print-hang-h2d

Conversation

@hyiger

@hyiger hyiger commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

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.

Description

Screenshots/Recordings/Graphs

Tests

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: Claude Opus 4.6 (1M context) <[email protected]>
@github-actions

Copy link
Copy Markdown

Hi @hyiger, 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

@SoftFever SoftFever left a comment

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.

LGTM.
Thank you for handling this.
I've seen some user reports about the 30% hang issue.
I will merge it now so more people can test it.

@SoftFever SoftFever merged commit ecc53d9 into OrcaSlicer:main May 14, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from Tracking to Done in OrcaSlicer Community Board May 14, 2026
@hyiger

hyiger commented May 14, 2026

Copy link
Copy Markdown
Contributor Author

@SoftFever yes, the hang would occur at 30%

@SoftFever

Copy link
Copy Markdown
Collaborator

@SoftFever yes, the hang would occur at 30%

👍 appreicate!

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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants