io_decoder Project

USB HAL driver for LinuxCNC

View project on GitHub

io_decoder

The I/O solution for LinuxCNC: Stable, Fast, Plug & Play.

io_decoder is not just another generic driver. It is a hardware and software ecosystem specifically designed to overcome the common limitations of USB interfaces on LinuxCNC, delivering high-level performance for your machine. This project was born to provide a flexible, large-scale, and structured control panel for LinuxCNC without wasting precious real-time pins required for machine motion.


🎯 Why io_decoder?

Here is how io_decoder changes the game:

1. Zero Port Conflicts (Custom USB ID)

Stop struggling with /dev/ttyACM0 ports that change names upon reboot. Our board is uniquely recognized by the system. Configure it once, and it works forever.

2. β€œBare-Metal” Firmware (No Bootloader)

We have removed the Arduino bootloader for two critical reasons:

  • Safety: No random pin state changes during startup (typical of bootloaders).
  • Speed: The board is operational within a few milliseconds.

3. Native HAL Driver

The driver is written in C to integrate perfectly into the LinuxCNC Real-Time environment, ensuring minimal latency and a level of stability that generic drivers simply cannot offer.

4. Simple yet Robust System

Developed to be as easy to install and use as possible. Stable and tested both on the USB software management side and the electronic hardware side.


πŸ›  Technical Specifications

Feature Description
Compatibility LinuxCNC 2.8+ (HAL component)
Connection High-Speed USB with custom ID
Digital Inputs from 8 to 128 with emulated keyboard and toggle functions
Encoder Inputs 4 with up/down and invert functions
ADC Inputs 3 with joystick, invert, and scale functions
Digital Outputs from 8 to 128 with blink functionality
DAC Outputs 2 with invert and scale functions
  • Technical Documentation & Installation: Available in the README.en.

πŸ“¦ Get the Hardware

While the HAL software is open to the community, it requires our dedicated io_decoder base board and io_decoder expansion_8 boards to function.

  • Project Status: In development.
  • Technical Specs: Available in the Installation-Requirements section of the README.en.
  • Contact: For prototypes, or integration support, please use the [βœ‰οΈ Contact]

Note for Developers: > If you wish to contribute to the HAL driver, clone the repository and consult the developer section.

πŸ“– English Manual