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.