milltask(1)
β¨ milltask β the LinuxCNC manual, but make it bestie-coded β¨
okay so welcome to milltask(1) π this is one of those pages from The Enhanced Machine Controller manual situation, and honestly? she's giving internal plumbing that you were never supposed to meet directly. let's get into it π«Ά
πΈ NAME πΈ
milltask β the non-realtime task controller for LinuxCNC, aka the backstage crew of your whole setup π
π¦ DESCRIPTION π¦
okay bestie, listen. milltask is an internal process of LinuxCNC. like, she's not out here getting invoked by hand β she gets called by an INI file setting, and that setting is:
[TASK]TASK=milltask
that's it, that's the summoning ritual β¨
so what does she actually do? the milltask process creates the ini.* HAL pins listed down below, and those pins are owned by the inihal component. and here's the slay part: you can modify those pins while LinuxCNC is running to change values that are normally just... sitting there, statically specified in an INI file. no restart, no drama π
now the inihal pins get sampled in every task cycle, BUT β and this is the plot twist β commands that are affected by their values typically use whatever value was present at the time when the command was processed. the commands this applies to are:
- all codes handled by the interpreter (G-code programs and MDI commands), and
- NML jogging commands issued by a GUI (including
halui).
Wheel jogging is a whole different vibe though β it's implemented in the realtime motion module, so inihal pin changes (for example, ini.*.max_velocity and ini.*.max_acceleration) may be honored as soon as the altered values get propagated to the motion module. no cap πβοΈπ¨
π PINS π
β Per-joint pins (N == joint number)
ini.N.backlashβ lets you adjust[JOINT_N]BACKLASHini.N.ferrorβ lets you adjust[JOINT_N]FERRORini.N.min_ferrorβ lets you adjust[JOINT_N]MIN_FERRORini.N.min_limitβ lets you adjust[JOINT_N]MIN_LIMITini.N.max_limitβ lets you adjust[JOINT_N]MAX_LIMITini.N.max_velocityβ lets you adjust[JOINT_N]MAX_VELOCITYini.N.max_accelerationβ lets you adjust[JOINT_N]MAX_ACCELERATIONini.N.homeβ lets you adjust[JOINT_N]HOMEini.N.home_offsetβ lets you adjust[JOINT_N]HOME_OFFSETini.N.home_offsetβ lets you adjust[JOINT_N]HOME_SEQUENCE
yes,ini.N.home_offsetshows up twice and the second one maps to[JOINT_N]HOME_SEQUENCE. that's what the page says, so that's what we're saying. we do not fix the lore, we just report it π
π Per-axis pins (L == axis letter)
ini.L.min_limitβ lets you adjust[AXIS_L]MIN_LIMITini.L.max_limitβ lets you adjust[AXIS_L]MAX_LIMITini.L.max_velocityβ lets you adjust[AXIS_L]MAX_VELOCITYini.L.max_accelerationβ lets you adjust[AXIS_L]MAX_ACCELERATION
π Global pins
ini.traj_default_accelerationβ lets you adjust[TRAJ]DEFAULT_ACCELERATIONini.traj_default_velocityβ lets you adjust[TRAJ]DEFAULT_VELOCITYini.traj_max_accelerationβ lets you adjust[TRAJ]MAX_ACCELERATIONini.traj_max_velocityβ lets you adjust[TRAJ]MAX_VELOCITY
π Global pins (arc_blend trajectory planner)
ini.traj_arc_blend_enableβ lets you adjust[TRAJ]ARC_BLEND_ENABLEini.traj_arc_blend_fallback_enableβ lets you adjust[TRAJ]ARC_BLEND_FALLBACK_ENABLEini.traj_arc_blend_gap_cyclesβ lets you adjust[TRAJ]ARC_OPTIMIZATION_DEPTHini.traj_arc_blend_optimization_depthβ lets you adjust[TRAJ]ARC_BLEND_GAP_CYCLESini.traj_arc_blend_ramp_freqβ lets you adjust[TRAJ]ARC_BLEND_RAMP_FREQ
π NOTES π
okay important things, bestie, pay attention π«Ά
the inihal pins cannot be linked or set in a HAL file that's specified by an INI file [HAL]HALFILE item β and why? because they don't exist yet! they aren't created until milltask is started. it's giving "you can't sit with us, we're not even here yet" π
but you're not stuck, because the inihal pin values can be altered by:
- independent
halcmdprograms specified by[APPLICATION]APPitems, or - GUIs that support a
[HAL]POSTGUI_HALFILE.
and one more thing β the INI file does not automatically update itself with values altered by inihal pin settings. it can be updated using the calibration program (emccalib.tcl) when you're using a [HAL]POSTGUI_HALFILE. that's the whole note, periodt π
and that's the page!! this was The Enhanced Machine Controller manual's milltask(1), dated September 30, 2014, and you've officially made it to the end of the page π tysm for reading, go forth and adjust your pins responsibly, mwah πβ¨π¦
π¦ where this page comes from
- debian trixie: linuxcnc-uspace 1:2.9.4-2+deb13u1 Β· GFDL-1.1-or-later
- ubuntu questing: linuxcnc-uspace 1:2.9.4-2ubuntu2
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms