Releases: FredericM88/linuxcnc-sim
Release list
linuxcnc-sim v0.1.2
What's changed
This release improves LinuxCNC compatibility testing and updates the Phase 3 example to exercise a more realistic milling-machine homing configuration.
LinuxCNC compatibility
- Detect the actual LinuxCNC HAL API used by the Stepper-Ninja build tests instead of assuming it from the LinuxCNC version or build mode.
- Verified compatibility with LinuxCNC 2.9.10 (HAL API 0) and LinuxCNC 2.10.0-pre2 (HAL API 1).
Phase 3 machine configuration
The example machine now uses a more realistic 600 × 400 × 200 mm travel:
- X: 0 .. 600 mm
- Y: 0 .. 400 mm
- Z: -200 .. 0 mm
X and Y home toward their minimum switches.
Z now homes upward toward its maximum switch, approaching it from below. The virtual physical switches are located 1 mm outside the normal soft travel.
Additional tests cover:
- positive-direction Z max-switch triggering
- switch hysteresis and release
- physical switch positions
- HOME_OFFSET consistency
- homing directions and velocities
- HAL input mappings
Validation
Full simulator test suite: 91/91 tests passed
The updated Phase 3 configuration was also manually tested with LinuxCNC 2.10.0-pre2.
Z successfully homes upward to the physical switch at +1 mm, then returns to G53 Z0.
A subsequent move:
G53 G0 X10 Y10 Z-5
produced exactly:
X = 4000 steps = 10.000 mm
Y = 4000 steps = 10.000 mm
Z = -2000 steps = -5.000 mm
No communication, checksum, timing, overflow, or packet-ID errors were observed.
linuxcnc-sim v0.1.1
This release adds LinuxCNC 2.10 HAL API compatibility for the pinned
Stepper-Ninja Board-0 UDP interface while retaining LinuxCNC 2.9 support.
Highlights
- Added compatibility with the LinuxCNC 2.10 HAL API.
- Retained LinuxCNC 2.9 compatibility and the existing 32-bit integer-pin semantics.
- Added support for building a loadable
stepgen-ninja.soagainst:- an installed LinuxCNC development environment, or
- a configured LinuxCNC Run-In-Place (RIP) source tree.
- Unconfigured LinuxCNC source trees can still be used for compile-only API validation.
- Added compatibility, parity, source-preparation and build-mode regression tests.
- No changes were made to the simulator wire protocol, motion/material implementation, or frozen material references.
LinuxCNC 2.10 validation
Runtime validation was performed with:
- LinuxCNC
2.10.0~pre2 - HAL API 1
- POSIX/uspace realtime
- pinned Stepper-Ninja Board-0 UDP profile
The compatibility module was tested end-to-end with LinuxCNC and the simulator,
including module loading, homing, machine motion, virtual probe input and
persistent material removal.
The new configured-RIP CMake build path was also tested separately by building
a fresh stepgen-ninja.so, loading that exact artifact under LinuxCNC 2.10,
homing the machine and verifying bidirectional UDP communication and exact
X/Y/Z motion.
Scope
This release does not claim validation of every LinuxCNC 2.10 build,
realtime backend or Stepper-Ninja hardware variant.
The existing upstream checksum/connected-reference issue remains known
and is not fixed in this release.
linuxcnc-sim v0.1.0
linuxcnc-sim is an early experimental standalone CNC machine simulator for
LinuxCNC. It emulates motion hardware behind LinuxCNC instead of independently
interpreting G-code. LinuxCNC remains responsible for interpretation, trajectory
planning, coordinate systems, offsets and compensation.
Highlights
- Four simulated step axes and configurable scales through the original
Stepper-Ninja HAL/UDP interface. - Virtual digital inputs, limit switches and LinuxCNC homing interaction,
plus a configurable point/plane probe input. - Interactive console, motion recording and CSV export.
- OpenGL visualization, machine-space workpiece placement and sparse voxel stock.
- Persistent flat-end material removal with continuous sweeps and exact batching.
- Simulator INI configuration, CLI overrides and startup configuration inspection.
Current limitations
Experimental development software; not a machine safety system.
Geometry is millimetre-based with a flat-end cutter only. There is currently no
geometric stock probing, toolsetter, spindle/holder simulation, general collision
detection, or rotary material transform.
Performance and voxel resolution are workload-dependent; this is not a hard-real-time
or CAD-exact machining guarantee.
Stepper-Ninja
Stepper-Ninja, by Zsolt Viola, provides the existing HAL driver and protocol used
as the current interface. linuxcnc-sim does not claim authorship of that code.
This choice does not require a later physical CNC machine to use Stepper-Ninja
hardware. Other adapters are possible future work.
linuxcnc-sim is MIT-licensed; the bundled Stepper-Ninja files preserve their
separate original MIT license and attribution.
See the README, configuration guide and release validation documentation for
installation, configuration and validation details.