- Other Stuff
- Show Your Stuff
- [WIP] IO_decoder: A modular High-Density USB I/O system (up to 128 pins)
[WIP] IO_decoder: A modular High-Density USB I/O system (up to 128 pins)
- bobwolf
- Offline
- Senior Member
-
Less
More
- Posts: 54
- Thank you received: 5
11 Jan 2026 17:01 #341281
by bobwolf
[WIP] IO_decoder: A modular High-Density USB I/O system (up to 128 pins) was created by bobwolf
Hi everyone,
I’d like to share a personal project I’ve been working on: io_decoder.
It’s a modular system designed to expand LinuxCNC I/O capabilities via a High-Speed USB connection.
Important Note on Use Case: This system is specifically designed for Operator Panels (HMI), pendants, and secondary controls. Since it communicates via USB, it is not intended for hard real-time machine functions (like step/dir motor control). It is the perfect companion for those who need a massive amount of I/O for buttons, switches, encoders, and potentiometers without using up expensive real-time FPGA pins.
How it differs from DIY serial solutions: Unlike standard serial-over-Arduino projects, io_decoder uses a dedicated HAL component optimized for lower latency and handles complex tasks (like keyboard mapping and encoder scaling) natively at the driver level, rather than requiring complex HAL logic.
Key Features:
Scalability: Modular design from 8 to 128 Digital I/O pins.
Smart Inputs: Built-in support for keyboard emulation (mapping pins directly to keysyms) and toggle functions.
Encoders & Analog: Supports up to 4 encoders and 3 ADC inputs for joysticks or feed-rate overrides.
Robustness: Integrated Hot-Plug management (auto-reconnect if the cable is unplugged).
Special Functions: Digital outputs with "blink" functionality and DAC outputs.
Project Status: This is a "labor of love" in active development. I have already produced and tested the first batch of PCBs. They are "first-run" prototypes with some "growing pains" (youthful mistakes!) that I’m currently fixing for the next hardware revision. The software side is stable and I'm already using it for my own setup.
Video Demo & Documentation: I've recorded a short video showing the current prototype in action: Video Link:
In the video you can see:
0:05 - Digital I/O (Buttons and LEDs) reactivity and HAL pin monitoring.
0:50 - Analog potentiometer (ADC) and Encoder tracking.
1:20 - Hot-Plug Test: Watch the driver automatically recover after disconnecting the USB cable!
Links: Official Project Page: bobwolfrst.github.io/io_decoder-linuxCNC/ GitHub Repository: github.com/bobwolfrst/io_decoder-linuxCNC
I’m looking forward to any feedback, technical advice, or questions from the community!
Best regards,
bobwolf
I’d like to share a personal project I’ve been working on: io_decoder.
It’s a modular system designed to expand LinuxCNC I/O capabilities via a High-Speed USB connection.
Important Note on Use Case: This system is specifically designed for Operator Panels (HMI), pendants, and secondary controls. Since it communicates via USB, it is not intended for hard real-time machine functions (like step/dir motor control). It is the perfect companion for those who need a massive amount of I/O for buttons, switches, encoders, and potentiometers without using up expensive real-time FPGA pins.
How it differs from DIY serial solutions: Unlike standard serial-over-Arduino projects, io_decoder uses a dedicated HAL component optimized for lower latency and handles complex tasks (like keyboard mapping and encoder scaling) natively at the driver level, rather than requiring complex HAL logic.
Key Features:
Scalability: Modular design from 8 to 128 Digital I/O pins.
Smart Inputs: Built-in support for keyboard emulation (mapping pins directly to keysyms) and toggle functions.
Encoders & Analog: Supports up to 4 encoders and 3 ADC inputs for joysticks or feed-rate overrides.
Robustness: Integrated Hot-Plug management (auto-reconnect if the cable is unplugged).
Special Functions: Digital outputs with "blink" functionality and DAC outputs.
Project Status: This is a "labor of love" in active development. I have already produced and tested the first batch of PCBs. They are "first-run" prototypes with some "growing pains" (youthful mistakes!) that I’m currently fixing for the next hardware revision. The software side is stable and I'm already using it for my own setup.
Video Demo & Documentation: I've recorded a short video showing the current prototype in action: Video Link:
In the video you can see:
0:05 - Digital I/O (Buttons and LEDs) reactivity and HAL pin monitoring.
0:50 - Analog potentiometer (ADC) and Encoder tracking.
1:20 - Hot-Plug Test: Watch the driver automatically recover after disconnecting the USB cable!
Links: Official Project Page: bobwolfrst.github.io/io_decoder-linuxCNC/ GitHub Repository: github.com/bobwolfrst/io_decoder-linuxCNC
I’m looking forward to any feedback, technical advice, or questions from the community!
Best regards,
bobwolf
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
- Other Stuff
- Show Your Stuff
- [WIP] IO_decoder: A modular High-Density USB I/O system (up to 128 pins)
Time to create page: 0.065 seconds