Learn/GcodePilot/Connection & firmware
Firmware Settings
Updated v2.3.0At a glance
- The controller's $ settings with friendly labels and units — Read from device, edit, Write back
- Signed per-axis Travel drives max travel, homing direction, and direction invert automatically
- Soft limits follow your travel envelope once homed
- FluidNC config.yaml generation from the machine profile
Machine Config gains a Parameters node for any machine on a GcodePilot post: the controller's $
settings presented with friendly labels and units instead of bare numbers. Read from device imports
the live values ($$); Write to device pushes your edits back ($N=val). The values are stored on
the machine profile, so a machine can be configured offline and reconciled on connect. GRBL keeps its
motion settings in millimeters internally; the report-units setting ($13) follows the machine's Units
automatically.
Travel drives the motion settings
You don't set homing direction, max travel, and direction invert separately — the signed per-axis
Travel in the Axes section derives them. Its magnitude becomes GRBL's max travel ($130–$132),
its sign sets the homing direction mask ($23 — negative travel homes toward the axis maximum, the
usual plasma Z), and the per-axis Rev checkbox maps to the direction-invert mask ($3). With soft
limits enabled, GRBL then enforces that same envelope once the machine is homed. The full convention is
covered in Travel Limits & Bounds Check.
FluidNC: config.yaml instead of numbers
FluidNC has no numbered $ settings — its configuration is a config.yaml file on the controller.
GcodePilot generates it from the machine profile (axes and motors, pins, spindle, user I/O, probe, THC
tuning) and on connect runs a semantic diff against the file actually on the device. A real value
difference prompts a two-way sync: Use JetCad3 config pushes the generated file and reboots, or
Import from controller autofills the machine profile from the device. Settings JetCad3 doesn't model
are left alone, so a hand-edited section never trips a false prompt — and the connection-badge menu can
edit the controller's live config.yaml directly or force a push at any time.