CNC Remote control panel V3

Last Updated on November 21, 2023

CNC Remote control panel V3 for the Buildbotics / Onefinity CNC controller

NOTE: it’s not possible to order V3 anymore. It is replaced by V4.

This is the full assembly guide of the new V3 remote control panel for the Onefinity / Buildbotics* CNC controller. The biggest improvements compared to the first release are the preassembled PCB and components. For the full list of changes compared to V1 see the “What’s new” tab below.

This is a partial DIY project, please read this carefully before ordering.
*Satoer Creations has no affiliation with the Onefinity or Buildbotics company.

Feature video

List of features

Enable X / Y

Activate the X , Y or both axis to control with the joystick. Very useful if you want to do a quick straight cut in the X or Y direction. Or flatten a surface by hand. The axis that are enabled light up.

Speed selection

Select one of the 4 maximum speed modes. The selected speed lights up.


Move the gantry in X, Y and Z (turning) direction with a single stick. Convenient if you want to use your other hand for other things. The stick is analog, the further you move it away the faster it goes (but not faster than the selected speed mode).

Router ON / OFF / AUTO

  • On: Router is on (if “Arm router” is enabled).
  • Off: Router is off.
  • Auto: Router start and stops automatically when CNC program is started.

Dust collector ON / OFF / AUTO

  • On: Dust collector is on.
  • Off: Dust collector is off.
  • Auto: Dust collector start and stops automatically when CNC program activates the router. In “Auto” mode the dust collector activates 1 sec behind the router. This will limit power surges.

Arm Router

This safety toggle prevents the possibility for the router to power on. It electrically disconnects the relay that powers the router. Always disarm the router if you want to change bits.

OH SHIT Emergency button

If there is trouble, hit this button. This also doubles like the main switch to power the system.

ACC 1 and ACC 2

Two extra buttons to do with whatever you want. You can change the behavior to latching (Press once: ON. Press again: OFF) or momentary (Press and hold: ON, release: OFF). See configuration paragraph below.

Probe connector

Replaces the Molex connector on the probe cable. (The Molex connector is not designed to reliably plug and unplug many times). A remote connector also releases the strain on the wire of the Onefinity controller connector.


There are 4 relays. The relays are rated for max 20A / 250V. The relay contact does contain a “snubber” circuit (to prevent sparks and electrical interference noise) but I discourage switching higher currents than 12 Amps. If you want to switch higher currents, you might want to switch a big contactor with the relay.

Touch probe pocket

A neat little pocket to hold the touch probe. You can mount the magnet on the corner screw.
It its just a hole in the panel, but cnc plans to route out a pocket are included. (see links below)

USB ports

Easy access to the USB ports when using USB sticks.

Improvements and changes compared with V1:

*V2 was an unreleased closed internal version.

Complete populated PCB

No need for hand soldering the components anymore. The newly designed PCB is fully populated and preassembled. The new schematic is still backwards compatible with the original firmware

Presoldered buttons and switches

The buttons and switches now come with a presoldered connector.

Prewired Joystick

The joystick now comes with its own PCB with a connector.

Printed panels

The panels are now silk screen printed directly on the acrylic plate.

Prewired DB25 cable

The DB25 connector now comes prewired.

Accessory port

There is a new port for expansion options

Power icon removed

Because it is possible to use the buttons for uses other than powering on and off devices, the power icon on the button is removed and replaced by a generic white button.

Logical connector layout

The connector layout on the PCB is now more logical. Some connectors are also replaced for screw terminals for more ease of use. It is no longer possible to connect a wrong item in a connector because they use a different number of pins.

Slight changes in panel

Layout is still the same, but there are some minor changes in the panel design.

Compatible Routers

The On / Off / Auto feature of the panel is compatible with the Makita RT0700C and Makita RT0701C router. Or any other router without “Anti-restart function”. You can test if your router is compatible by turning it on, pulling the plug, wait a couple of seconds and reinserting the plug. If the router turns on again, than it’s compatible. The Makita RT0702C is not directly compatible because it features an “Anti-restart function”, but with a simple hack it can be made compatible.

Spindle / VFD information

The remote panel is designed to make a “stupid” router (like the Makita) more smart. It is not specifically designed for spindles with a VFD, although it might work with spindles. It’s a tough subject because there are so many VFD’s with their own set of (programmable) options. The panel does also have two extra ACC (accessories) buttons and are free to use to control VFD options if you wish. A future firmware update (or hardware add-on) might incorporate more options for spindles, but for now it does not provide “official” support for it. If you do use it with a spindle, please share some experience with it.

Kit contents

These items are all included with the kit:

PCB Mainboard V3.0

Completely populated and soldered.

Arduino Leonardo

Preprogrammed with firmware 1.5.


With soldered connector PCB and screws.

5-Pin JST Cable

Joystick cable.

2 metal green LED buttons

Wired with connector.

4 metal blue LED buttons

Wired with connector.

4 metal white LED buttons

Wired with connector.

Safety switch

Wired with connector.

Acrylic front panel

Silkscreen printed.
W: 257mm / 10.12in
L:182mm / 7.17in
H:2mm / 0,08in

Acrylic back panel

With status LEDs PCB
W: 257mm / 10.12in
L:182mm / 7.17in
H:3mm / 0.12in

7-Pin JST Cable

Status LEDs cable.

4 Screws

For screwing the acrylic panel inside a cabinet.

5 plastic standoffs

For securing the main PCB inside the cabinet.

XLR male panel mount

With screws. For the probe connector replacement.

XLR female cable mount

Probe connector replacement.

Emergency button

Double make double break.

DB25 cable


USB Cable

For connecting the Arduino Leonardo to the controller.

Dual USB extension

Things you might need

(These items are not provided with the kit.)

  • Solder
  • Screws
  • Basic wires
  • Heat shrink tubing
  • Spade connectors for the relay terminals
  • Hot glue
  • 12V Adapter (if not using the build-in power supply inside the controller)
  • Fuse cable
  • Power strip
  • Mains plugs

Tools you might need

  • Screw drivers (hex, Philips and flat)
  • Soldering iron
  • Wire stripper / cutter
  • Crimp tool
  • Drills

Assembly notes

Protect yourself from ESD. Or touch at least a ground contact for a couple of seconds before handling the components.

Connection map

Assembly instructions

Acrylic panels

Remove the protective sheet from the panels before assembling. The two panels are stacked together. No glue necessary.

WARNING: Do not tighten the corner screws too much, otherwise the acrylic might break.


Push the buttons through the holes. and secure with the nut. You don’t need the supplied rubber rings.

Button LED colorLocation
GreenEnable X
Enable Y
BlueSpeed 1
Speed 2
Speed 3
Speed 4
Dust Collector
Acc 1
Acc 2


Push the head of the stick with the rubber gaiter through the hole from the back in the orientation of this image. Use the 4 screws and the plastic ring to secure the joystick.

Connect the joystick to the main board using the 5-pin JST cable.

Status LEDs

Connect the status LEDs to the main board using the 7-pin JST cable.

Probe connector Male and Female

This is an XLR connector (It has 3 pins but only 2 are used). This is the only part that needs a little soldering because you need to replace the original wire. Cut the Molex connector with about 5CM wire. Reattach this Molex connector to a new wire, and solder that to the XLR male panel mount.

Use the supplied M3 nuts, rings and bolts to mount inside the panel.

Do not plug in a microphone or DMX peripheral.

Blue: Original probe cable. Green: New cable

Emergency switch

Press white latch to disconnect the switching mechanic. Screw on the plastic nut tightly and secure it with the two metal screws (on the nut). But before screwing in the two metal screws, make sure the text on the button is in the correct orientation.

This is a double break / double make contact. Use terminals 11/12 (red). Switch both mains power lines (live and neutral). Use this to switch a power strip to completely shutdown everything (Router and controller). See “High voltage diagram” below.

USB ports

Just connect the two USB cables to the Onefinity / Buildbotics controller. Use a drop of dish soap on the threads if the nut is too tight to screw on.

DB25 connector

This connector connects to the Onefinity / Buildbotics controller. Connect the brown wire / red connector to the “SIGNAL” screw terminal on the PCB (point 20 in the connection map). Connect the blue wire / black connector to the GND screw terminal (point 21 in the connection map) .

WARNING: Do not swap the power screw terminal (Point 18 & 19) with the DB25 screw terminals (Point 20 & 21). If you do, you will blow the optocoupler. (part U7)


Use isolated spade connectors (not included) or solder directly to these contacts to switch the router, dust collector or other peripherals like lights or VFD functions with them. (VFD’s not officially supported).

Use heat shrink tubing to isolate the exposed metals. (The unused relays contacts can be left exposed). Keep the high voltage wires away from the low voltage wires.

PCB mounting

You can mount the PCB to the back of the housing. Do not screw the panel tight against the wood. Use the 5 included plastic standoffs. (Screws not included)


If you don’t use the relay driven functions (Router, Dust Collector, Acc 1, Acc 2), only the USB connection to the controller is sufficient. If you do use the relay driven functions you need to add extra power to the board. There is a step-down circuit incorporated in the PCB design. You can connect 12V to 40V to the power screw terminals (point 18 and 19 in the connection map). You can route the 36V from the Onefinity / Buildbotics controller’s power supply directly into these screw terminals. It is advisable to fuse this line with an 1A fuse near the power supply (Fuse cable not supplied with the kit). If you don’t want use the build-in 36V power supply from the Onefinity / Buildbotics controller, you can use an adapter with at least 12V / 1,5A

There is a secondary way to power the PCB board by connecting a 12V power supply directly to the Arduino. However, this is less advisable. There are linear voltage regulators on the Arduino, and these are not efficient to convert the voltages and might become really hot. If you do wish to power the PCB this way, you need to change the “USB POWER OVERRIDE” jumper (Point 23 in the connection map) in the left position. I didn’t encounter problems using the linear regulator this way during testing. But it is better to use the efficient build-in step down converter and screw the power wires directly to the screw terminals.

If the OS is complaining that the connected USB device draws to much power, you can set the “USB POWER OVERRIDE” jumper in the left position (only when external power is connected to the terminals). But during testing the current draw never exceeded 300mA. (The Raspberry Pi 3 inside the controller can deliver 1500mA total).

USB Power override

The PCB ships with the jumper in the right hand position. Which is the correct setting. It’s also fine to remove this jumper. Only change this in circumstances explained in the power paragraph above.

Accessory port

The PCB includes an accessory port for future or personal use.


GND+3.3V+5V+12VD0 RXD1 TX

Low-voltage connection diagram

High-voltage connection diagram

Please be observant when working with electronics. Especially the parts that are connected to mains voltages. Use proper isolation and insulation. Make sure theres enough space between the relays and the buttons (if you place the PCB behind the button panel). And keep the low voltage wires away from the high voltage (mains) wires.


You can configure several settings as desired on power up. For every setting you like to adjust you need to re-power the board while holding the desired function button down.

Hold “Enable X” button for 3 secondsInvert X axis on joystick
Hold “Enable X” button for 10 secondsInvert Z axis on joystick
Hold “Enable Y” button for 3 secondsInvert Y axis on joystick
Hold “Speed 1 / 2 / 3 / 4” button for 3 secondsChange default start up speed to selected button
Hold “Router” buttonChange default start up setting to: on / off / auto *
Hold “Dust Collector” button for 3 secondsChange default start up setting to: on / off / auto
Hold “ACC1” or “ACC2” button for 3 secondsChange the behavior from that button from latching to momentary

* WARNING: changing the default start up behavior to “ON” for a router would be incredibly stupid and dangerous. But this option is left in if someone wishes to use this button for uses other than a router. So please don’t do this if you attach a router.


All PCB’s are tested before shipping, but if you want to test the panel before hooking it up to the Onefinity / Buildbotics controller, you can connect the Arduino USB to a Windows computer.

Open control panel, “Hardware and Printers”. Right click “Arduino Leonardo” and Game control settings (These are Dutch screenshots)

Choose “Arduino Leonardo” and then “Properties”

Note: A couple times per second you see a button light up. This is because the panel re-transmits settings.

To test the DB25 input terminals (Point 20 & 21 in the connection map), you need to set the “Router” function to auto, and power the data port with a 3V lithium coin cell battery. + on 20 and – on point 21 (GND). The LED button should light up (and the relay should “click” if 12V is connected).


The “brains” of this project is a ATmega32u4 micro-controller incorporated on a Arduino Leonardo development board. (included)

The source code is published for free. You may use it for your own project as long as it is non-commercial. Feel free to create your personal project with it. Adjust it to your own needs. Even with hardware I didn’t provide. But you may not create a commercial product with it. If you have great ideas to improve the firmware, let me know. Or code it yourself, and I might merge it. You can find the firmware on the Github repository. at a later stage I will probably sell PCB only kits for the users who want to create their own panel with their specific needs.

The supplied Arduino Leonardo comes preloaded with firmware 1.5.


Here are some plans for a cut-out to inset the panel nicely inside a cabinet. The cut-out also provides a space for the probe block. I used 18mm (approx 3/4 Inch) MDF. Use a straight or down cut bit. An up cut or compression bit probably leaves ugly borders. The inset is with 5mm (3/16 inch) probably not deep enough to use a compression bit. Do not forget to add holding tabs. Glue the probe housing block cutouts on top of each other.


You can build a small console to house the control panel.

Onefinity Settings

Use these settings:


Relay “Router” does not work
Relay “Dust collector” has a delay
None of the relays work
Signal in from DB25 connector does not work
Buttons react sluggish, slow or not at all
CNC does not react on joystick
X and Y axis on joystick are switched
Joystick X, Y or Z axis is inverted
Joystick drifts
The panel resets or does not respond anymore after activating devices connected to the relays
Relay does not disengage even if button (and LED) is switched off
Attached LED light to ACC1 or ACC2 flickers when in off position.


For hardware support post a message on the Onefinity forum in this topic, and I (or other users) will try to resolve it.
For software support (problems or suggestions), use the Issue tracker on the Github repository.


The kits costs as introductory offer €280 (ex VAT) euro or approx. $293 (ex VAT). + Shipping.

How to order

You can order over here: