Skip to content

Lower Snapmaker 2.0 Bracing Kit Z acceleration to match base presets - #990

Open
highpowerxh wants to merge 2 commits into
Snapmaker:mainfrom
highpowerxh:highpowerxh-z-hop-speed-limit
Open

highpowerxh wants to merge 2 commits into
Snapmaker:mainfrom
highpowerxh:highpowerxh-z-hop-speed-limit

Conversation

@highpowerxh

@highpowerxh highpowerxh commented Oct 11, 2026 •

Copy link
Copy Markdown

Description

Closes #989. Related investigation: #970.

Lower machine_max_acceleration_z from 3000 to 500 mm/s² in eight A250/A350 single/dual-head Bracing Kit base profiles, including Quick Swap + Bracing Kit variants.

The shared fdm_linear2 base remains unchanged at 500. This revision matches the existing non-Bracing-Kit preset value instead of changing all Snapmaker 2.0 presets to the firmware default of 100. All 64 concrete A250/A350 presets now resolve to Z acceleration 500. Only the 32 Bracing Kit concrete presets change their effective Z acceleration.

The reporter observed actual mechanical Z height falling behind the reported position. Lowering Z travel speed alone did not resolve it; excessive acceleration is the leading explanation. The Bracing Kit currently raises the base Z acceleration sixfold, without hardware validation located during this investigation. The reporter will test 500 next; 500 is a candidate inherited baseline, not yet a validated fix or a proven maximum reliable value. The absence of many reports does not itself establish reliability.

The official controller configuration uses Z maximum acceleration 100, which remains useful context but is not the value proposed in this revised PR. For idealized 0.4 mm rest-to-rest motion, acceleration 500 gives a peak of approximately 14.14 mm/s and duration 56.57 ms; acceleration 3000 gives 34.64 mm/s and 23.09 ms. Requests of either 40 or 100 mm/s are not reached. Actual acceleration may be lower due to M204, junction planning or other firmware constraints; see #989 for the broader calculations.

This is deliberately preset-only: keep the 40 mm/s Z speed ceiling, do not add travel_speed_z=10, and exclude the separate writer/position-tracking changes from #970. Artisan, J1 and U1 definitions are unchanged. No dependency or schema changes. Existing user overrides may need manual adjustment; no forced migration is introduced.

Screenshots/Recordings/Graphs

N/A: no UI implementation changes. Generated Bracing Kit machine-limit output changes from M201 ... Z3000 ... to M201 ... Z500 ....

Tests

  • git diff --check — passed.
  • JSON parsing, inheritance and net-diff checks below — passed: all machine JSON parses, 64 concrete A250/A350 presets resolve to acceleration 500/speed 40, and only eight Bracing Kit acceleration fields differ from main:
python3 - <<'PY'
import json, pathlib, subprocess
root = pathlib.Path('resources/profiles/Snapmaker/machine')
profiles = {p.stem: json.loads(p.read_text()) for p in root.glob('*.json')}
def resolve(name):
    d = profiles[name]
    parent = d.get('inherits')
    return {**(resolve(parent) if parent in profiles else {}), **d}
count = 0
for name, d in profiles.items():
    if name.startswith(('Snapmaker A250', 'Snapmaker A350')) and 'inherits' in d:
        effective = resolve(name)
        assert effective['machine_max_acceleration_z'] == ['500'], name
        assert effective['machine_max_speed_z'] == ['40'], name
        count += 1
assert count == 64
changed = []
for path in root.glob('*.json'):
    old = json.loads(subprocess.check_output(['git', 'show', 'main:' + str(path)], text=True))
    new = json.loads(path.read_text())
    if old != new:
        assert {k for k in old.keys() | new.keys() if old.get(k) != new.get(k)} == {'machine_max_acceleration_z'}, str(path)
        assert old['machine_max_acceleration_z'] == ['3000'] and new['machine_max_acceleration_z'] == ['500']
        changed.append(str(path))
assert len(changed) == 8
assert profiles['fdm_linear2']['machine_max_acceleration_z'] == ['500']
print('Passed: 64 presets resolve to Z acceleration 500/speed 40; only eight Bracing Kit acceleration fields differ from main.')
PY

No application rebuild or native C++ suite was run specifically against this isolated preset-only revision. The prior 844-assertion result belongs to the separate experimental writer changes, not this PR. Physical testing with 500 is pending, including repeatability across affected variants.

highpowerxh and others added 2 commits October 10, 2026 19:25
Set A250/A350 inherited machine Z acceleration limits to 100 mm/s², including bracing-kit overrides. Leave the 40 mm/s Z speed limit and process travel settings unchanged. Investigated in Snapmaker#970.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the existing 500 mm/s² base value and lower Bracing Kit overrides from 3000 to 500 pending hardware testing. User-directed revision of the preset-only fix for Snapmaker#989.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@highpowerxh highpowerxh changed the title Restore Snapmaker 2.0 Z acceleration to firmware defaults Lower Snapmaker 2.0 Bracing Kit Z acceleration to match base presets Oct 11, 2026
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.

Snapmaker 2.0 presets override Z acceleration defaults, causing lost Z height

1 participant