OPEN HARDWARE · v1.0 VALIDATED

Industrial 5-Axis
CNC Controller
Built for Reliability

Open-source CNC controller powered by Raspberry Pi RP2350B + grblHAL firmware. Optically isolated inputs, Ethernet, integrated 0-10V VFD interface, and 5-axis stepper control — in a single 150 × 100 mm board.

5 axes @ 300kHz 10 isolated inputs VFD 0-10V + Modbus Ethernet + USB-C microSD storage Open hardware Free sender included

First batch of 5 boards assembled & bench-tested · Open hardware

The real thing

RectaBot v1.0 — a 150 × 100 mm, 4-layer PCB with ENIG finish. Everything the controller needs is integrated on a single board: 5-axis motion, the spindle interface, optically isolated inputs, Ethernet, USB-C and microSD. No stacked driver boards, no breakout modules, no level-shifter add-ons to wire up. Stepper drivers stay external — this board commands DM556-class drivers, it does not replace them.

  • Soldered, not socketed. Only the field-wiring screw terminals are pluggable — every active part is soldered down, so vibration can't work a module loose over time.
  • Signal-integrity first. High-speed step/dir and communication lines were laid out on the 4-layer stackup with EMI immunity as a priority.
  • Power and USB, at the same time. Leave the 24 V supply and USB-C plugged in together and just work — ORing Schottky diodes hand off the 5 V rail automatically. No VBUS/5 V select jumpers to flip by hand.
  • Coolant is three wires away. CN40 carries +5V · VAC · FLOOD · MIST · GND with M7/M8/M62 already mapped — add relay modules with an optocoupler input and they wire straight on. These are 4 mA signal pins, so buy for ≤ 5 mA input at 5 V; an SSR specified “control 3–32 VDC” needs a transistor between. The docs give the measurements. These outputs also sit on the board's ground — the optical isolation is on the input side.
4-layer · ENIG 150 × 100 mm All-in-one · soldered

System Architecture

Dual-core ARM Cortex-M33 at 150 MHz orchestrates motion, spindle, and I/O, with all 10 field inputs behind a 1 kV isolation barrier (input side only).

RP2350B MCU
Dual Cortex-M33 @ 150 MHz
48 GPIO · 12 PIO state machines
MOTION
PIO step generator
GP8-22 → 74HC14D ×3
Schmitt-trigger 3.3V→5V
CN34-CN38
5× Stepper
STEP / DIR / EN
5V CMOS, common GND
SPINDLE
PWM @ 25 kHz
GP27 → LM358 op-amp
+ 2N7002 open-drain
CN39 (VFD)
0-10V analog speed
EN / DIR open-drain
12V Zener clamp
AUX OUTPUTS
3× 5 V signal outputs
GP0-2 → 74HC14D → 330Ω
Mist / Flood / Vacuum
CN40
Mist (M7) / Flood (M8)
Vacuum (M62/M63)
5V common GND
I/O & COMM
SPI0 → W5500 Ethernet
UART0 → RS422 Pendant
UART1 → RS485 Modbus
RJ45 · USB-C
CN32 RS485
CN41 RS422
microSD slot
⚡ INPUT-SIDE ISOLATION (10× OPTO) ⚡
10× ISOLATED INPUTS
5× Limit switches (X/Y/Z/A/B) · ESTOP · PROBE · CYCLE START · FEED HOLD · DOOR
LTV-217-B-G optocouplers · 24V_ISO domain · B2424S-2WR3 isolated DC/DC
→ CN22-CN31

v1 isolates the input side only.

MOTION

PIO-based step generation reaches 300 kHz per axis with deterministic timing. 5V CMOS outputs through Schmitt-trigger buffer for clean transitions to DM556-class drivers.

SPINDLE

25 kHz PWM filtered through dual-stage RC + LM358 op-amp produces linear 0-10V analog. Trim pot calibration, 12V Zener overvoltage clamp.

INPUT ISOLATION

10 field inputs (limits, ESTOP, probe, controls) cross a 2mm copper void via LTV-217 optocouplers on a separate 24V_ISO rail. Outputs share MCU ground in v1.

Built for Real Workshops

Every design decision optimized for noisy industrial environments where reliability beats specs on paper.

5-Axis Motion

X, Y, Z, A, B axes with hardware-accelerated PIO step generation. Up to 300 kHz per axis. Y-axis auto-squaring via tandem B-axis.

Optically Isolated Inputs

All 10 field inputs (limits, ESTOP, probe, controls) routed through LTV-217 optocouplers on a dedicated 24V_ISO rail — 1kV input-side isolation.

VFD Ready

Two ways to drive a spindle: 0-10V analog speed + open-drain EN/DIR, or digital control over RS-485 Modbus (RTU). Compatible with Huanyang, Lapond, Delta, Hitachi VFDs.

Ethernet + USB-C

On-board 10/100 Ethernet built around a discrete W5500 — laid out to WIZnet's own reference design and their engineers' recommendations, not a plug-on module. J1B1211CCD magnetics, Bob Smith termination, hardware TCP/IP stack (zero CPU overhead). USB-C 2.0 for programming and debug.

microSD Storage

Store G-code files, configuration and macros on the card, and run them from it. A PC running RectaControl streams the job over Ethernet or USB; the board also carries an RS-422 pendant header (CN41) for handheld control.

Open Source

grblHAL firmware fork (GPL-3.0) and the RectaControl sender (GPL-3.0). Hardware design files under CERN-OHL-S v2, docs and configurator under MIT. No vendor lock-in, no obsolescence anxiety.

FIRMWARE PICKER

Which firmware?

There are seven builds, one per motor layout, and the file names do not explain themselves. Answer two questions about your machine and the configurator names the build and hands you the exact .uf2.

  • ✓ 3, 4 or 5 axes — the fourth can be rotary
  • ✓ Dual-Y gantry: ganged, or self-squaring on its own switch
  • ✓ Tells you the homing sequence that build expects
  • ✓ Drag it onto the RPI-RP2 drive, or let RectaControl flash it

Worth getting right: grblHAL lays its settings out by axis and motor count, so an image built for a different layout resets the board to defaults — and a build without ganging never steps the second Y motor.

Try Configurator →
; Example answer
Axes4 (X Y Z + rotary A)
Dual Yauto-square
; the build that matches
grblHAL_RectaBot_4axis-a-autosquare-y_v1.0.uf2
HomingX- · Y- · Z+ · Y2
→ One file, no build toolchain

Pendant-ready: The board carries an RS-422 pendant header (CN41) for handheld control without a computer.

CN41 · RS-422
DESKTOP SENDER · GPL-3.0

Meet RectaControl

A controller is only as good as the thing you drive it with. RectaControl is our own sender, built alongside the board and tested on the same machine — it knows this hardware, so setting the machine up is answering questions, not looking up $-numbers and bitmasks. It talks grblHAL, so it also runs other grblHAL boards.

It knows the board

Click a connector on the board diagram and it tells you what goes on each pin. An input test lights up the connector a switch is actually wired to — the fastest way to find the one that is dead, with hard limits suspended while you press.

Settings without bitmasks

A guided editor with real controls, a steps/mm calculator and a raw $ browser with search. Settings are backed up automatically, exported to a file, and compared against it later.

Probing that draws itself

Tool Z, edge and corner zeroing, and skew — which measures how far the workpiece is turned and rotates the program to match, so a part that is not square to the table still cuts right. Each cycle is drawn as its numbered touches.

3D view, park & resume

Toolpath in 3D with a live tool marker and the cut path recoloured as it goes. Pause a job, jog the head away to clear a chip or change a tool, then return to the exact line it stopped on and continue.

Errors in plain language

Every grblHAL alarm and error with its cause, what to do about it, and one-click recovery. If a board loses its settings, a guided recovery walks it back: erase, reflash, restore.

Free, and yours

GPL-3.0, source on GitHub, no account and no licence key. Flash firmware from inside the app, manage the SD card over the network, and keep a g-code library on the PC.

Windows 10/11 · installer or portable · macOS and Linux build from the same source

Technical Specifications

The numbers that matter.

MCU Raspberry Pi RP2350B (QFN-80), dual ARM Cortex-M33 @ 150 MHz
Firmware grblHAL fork for RP2350B (GPL-3.0)
Axes 5 (X, Y, Z, A, B), up to 300 kHz step rate
Stepper Drive Topology Common Anode (compatible with DM556 / TB6600 / DM860)
Spindle Output 0-10V analog (LM358 op-amp), open-drain EN/DIR (2N7002 60V tolerant)
Isolated Inputs 10× LTV-217-B-G optocouplers, 24V_ISO domain
Aux Outputs 3× 5 V signal, ~4 mA (Mist M7, Flood M8, Vacuum M62/M63) — for optocoupler-input relay modules
Ethernet 10/100 Mbps via W5500 + RJ45 with integrated magnetics
Serial Buses RS-485 Modbus, RS-422 Pendant (full duplex)
Storage microSD (up to 32 GB FAT32)
Power Input 24V DC, 2A max — observe polarity (no reverse-polarity protection in v1)
Input Isolation 10× field inputs via LTV-217 optocouplers, 24V_ISO domain (B2424S DC/DC) — input side only in v1
PCB 150 × 100 mm, 4-layer, 1.6 mm, ENIG finish
Operating Temperature -10°C to +60°C

VFD Compatibility

Universal 0-10V interface works out-of-the-box with most VFD families.

✓ WORKS
Huanyang
HY01, HY02
✓ WORKS
Lapond
SVD-EM
✓ WORKS
Delta
VFD-M, EL
✓ WORKS
Hitachi
WJ200
✓ WORKS
ATO
Inverter
+ RELAY
Siemens
G120
+ RELAY
ABB
ACS580
+ RELAY
Schneider
ATV

Sinking (NPN) inputs are supported natively by the integrated 2N7002 open-drain MOSFETs. Sourcing (PNP) inputs on industrial VFDs require a small external relay module (~$3 on AliExpress). Detailed wiring instructions are in the documentation.

How RectaBot Compares

Honest comparison against established CNC controllers.

Feature RectaBot v1.0 Closed all-in-one controller PC + parallel-port breakout PC + FPGA motion card
Axes 5 4 4 9+
Optically Isolated Inputs ✓ 10× opto ✓ Partial ⚠ Limited ✓ 7i76e
Ethernet
VFD 0-10V (built-in) ⚠ Add-on ⚠ Add-on ⚠ Add-on
Open Hardware ✓ Yes ✗ Proprietary ⚠ Varies ✓ Yes
Open Firmware ✓ grblHAL ✗ Proprietary ✗ Licensed ✓ Open-source
Control Software ✓ RectaControl, free & open ⚠ Bundled, proprietary ⚠ Paid licence ✓ LinuxCNC
PC Required to Run Yes · sender included Yes (Windows) Yes (Windows) Yes (Linux)
Target Price from $149 ~$300 ~$100 + license ~$400

* Category comparison for orientation; specifics vary by product and configuration.

OPEN HARDWARE · CERN-OHL-S + GPL-3.0

Build on RectaBot

Schematics, Gerbers, BOM, firmware, the configurator and the RectaControl sender are all open. Explore the design, build your own, or make it yours.

Prefer a board that's built, flashed and bench-tested?

Assembled RectaBot v1.0 — from $149. The first batch is limited and hand-assembled; join the list to be notified when boards are available.

Join the waitlist →

The button opens your mail app. If nothing happens, it means this computer has no mail app set up — copy the address instead and write from wherever you read your mail. Tell me your country and whether you need 3, 4 or 5 axes.