Modern CNC machines increasingly operate with multiple tool holders, spindles, or additional handling systems. However, classic CNC controls are usually designed for the sequential execution of a single program.

With our LinuxCNC Multichannel Fork, we extend LinuxCNC with the capability to run multiple independent machining channels simultaneously.

The project is publicly available and actively developed:

👉 https://github.com/retrofitcenter/linuxcncMultichannel


Project Goal

The fork extends LinuxCNC with a true multichannel architecture, similar to that known from industrial controls like Siemens Sinumerik or Fanuc.

Multiple machining channels can:

  • execute programs independently of each other

  • control different axes

  • work in parallel

  • dynamically take over or release axes

This makes LinuxCNC a powerful platform for complex machines with parallel motion sequences.


Typical Applications

The multichannel extension enables, among other things, the following machine concepts:

Lathes with Two Turrets

In lathes with two tool turrets, both turrets can operate simultaneously.

Examples:

  • Upper and lower turrets work simultaneously

  • parallel roughing and finishing operations

  • synchronized machining between both tool holders

This significantly reduces machining time.


Lathes with Main and Counter Spindle

Many modern lathes feature:

  • main spindle

  • counter spindle

  • multiple tool turrets

With the multichannel extension, it is possible to:

  • operate both spindles independently

  • transfer workpieces between spindles

  • perform simultaneous machining on both spindles


Machining Centers with NC-Controlled Tool Changers

Another application area is machining centers with complex tool changing systems.

Examples:

  • tool magazines with NC axes

  • automatic tool provision

  • parallel movements of magazine and machine axes

While the machine is machining, the magazine can already prepare the next tool change.


Automated Handling and Transfer Systems

Many special machines have additional axis systems for:

  • workpiece handling

  • grippers

  • transfer axes

  • automatic loading and unloading

With Multichannel, these systems can work in parallel with machining.

Examples:

  • Robots or grippers remove finished parts during machining

  • Workpieces are automatically transferred to subsequent operations

  • Handling axes operate independently of machining


Technical Concept

The multichannel extension is based on an adaptation of the LinuxCNC motion architecture.

Key enhancements are:

  • multiple independent trajectory planners

  • separate program interpreters per channel

  • dynamic axis assignment to machining channels

  • parallel execution of motion sequences

Each channel has:

  • its own program run

  • its own motion planning

  • its own synchronization logic

The control of the physical axes still takes place centrally via the LinuxCNC Motion Controller.


Naming and Organization of Axes

For multichannel machines, axes are named according to an extended scheme.

Example:

 
Z11
Z21
Z22
 

Meaning:

  • first letter = axis type

  • first number = channel number

  • second number = sequential axis within the channel

This allows machines with multiple identical axes to be clearly represented.


First Implementation in the Axis GUI

The first version of the multichannel extension is initially integrated into the classic Axis GUI.

Axis provides a stable foundation for development and enables rapid integration of the new functions.

In further development steps, it is planned to integrate multichannel support also into other LinuxCNC user interfaces, for example:

  • QtDragon

  • ProbeBasic

  • other modern GUIs


Open Source Project

The LinuxCNC Multichannel Fork is developed as an open source project.

The current development status is available on GitHub: