New Control Panel for MASSO G3 Touch

Just wanted to share some knowledge with the group as I have recently completed my control panel for the G3 touch.

I did a lot of searching for a way to do some of these and have finally combined them all into one panel. My panel incorporates a macro keyboard with a knob and 3 programmable buttons, and I added in 8 push button switches to control masso inputs. I’ll share a few details below with specifics, hopefully this information being consolidated in one place will help others who are interested in doing something similar.

Macro Keyboard-
I’ve programmed mine with the below config. Programming was very easy, just run the exe they provide and save or “download” each key as you go.

  • Knob CCW: -
  • Knob CW: +
  • Knob Press: CTRL+Z (Z-zero)
  • Key 3: F11 (Feed Override)
  • Key 2: F12 (Spindle Override)
  • Key 1: F3

Push Button Inputs:

  • Home
  • Park
  • Cycle Stop
  • Cycle Start
  • G-Code Rewind
  • Aux Output Toggle (Controls my spindle light)
  • 2 spares (for now!)

For the input button configuration I wired all the buttons into a DB9 breakout connector. I combined all the red wires to a single pin to receive power from masso, then the 8 buttons each went into one of the serial pins. I used a serial cable out the back of my control panel along with the USB cable for the macro keyboard and ran those wires inside the touchscreen unit. I wired the switches to the inputs that were mentioned above, and for start/stop I just connected into inputs 1 & 2. The only one that was complicated was the light, as I ran it into input 6 and configured it as “Aux Output 2 Toggle”. Then I wired my light into output 6 and configured that as “Auxillary 2”, see second picture below.

I have been testing using the input “Autoload GCode-1” and connecting that to one of the spare buttons. Then in the root folder of the USB drive I added the g-code file named “”. This works (but you have to hold the button for a couple seconds) and pressing the button loads that g-code file. I’m not certain how I would use this feature at the moment, perhaps a spindle warmup routine, or a selecting a specific work offset, time will tell.

Let me know if you have any questions, hope this helps some of you build your own control panels .


Thanks for posting! This gives me some new ideas.

Pretty cool! Nice work.

I think I’ll try using this. Where did you get the software to program the macros?

Hi Rob,
The seller of the keyboard included a link in the documentation with the item. It was a quick download and simple setup. If you try it and get stuck just let me know, happy to help out.

The seller of the keyboard included a link in the documentation with the item. It was a quick download and simple setup. If you try it and get stuck just let me know, happy to help out.

Cheers! I’ll get one of these macro keyboards on order.

I should receive an Elite Woodworker this month and among other things I’m thinking of adding a joystick for jogging X-Y and a momentary double-throw switch for jogging Z. I’m guessing that programming the knob for keyboard “-” and “+” makes it a rotary feed override. If so, this is ideal. Is it possible to program the sensitivity of the knob (pulses per angle of rotation)?

Pardon my ignorance, but why did you avoid the Light On/Off output and assign a different input and output for your light? Was it to get a hardware push-on push-off function with a momentary switch or something else?

Did you use a Masso relay module for switching a DC power supply source for the light and tower lights?

Hi Rob,
I am not sure if its possible to change the sensitivity/resolution. Each click of the knob is 3-4%, it fluctuates and is not exact. I’ve also found that you cant spin it overly fast as it doesnt keep up, but that should never be an issue when using it. There is a way to use a keyboard shortcut to change the resolution for moving the gantry around, so maybe this would be a feature request to Masso for that ability with feed/speed override. Here is the documentation they have currently, and there is no mention of resolution control.

The light output can’t be used in conjunction with an input button. Thats why I set it up as an aux output, so I could configure my input button to toggle that aux output (This will make sense when you are in the F1 screen). I did put a jumper wire between the light output and my aux output so the button on the MDI screen can still be used to control the light. Bit of a workaround, but it does work in both locations now. The main advantage is that during a carve you cannot access the MDI screen to use the button there, but my input button works all the time, even during a carve.

I do not believe a joystick will work with the Masso controller, so you may want to consider an MPG pendant. I bought this one off Amazon and it works great. Masso has an excellent guide on how to wire up the pendant, I was able to follow this and get mine working with no issues.

If you do add an MPG pendant there is a space issue with the right side of the Masso board and no room for a standard 15 pin connector to fit. I solved that by adding a flat ribbon cable from the board and ran it out the back with the other conections, here is the one I bought.

1 Like

Thank you for managing my expectations with the knob. I think ideally a function like this would be implemented precisely with a rotary encoder input.

Thanks for the head’s up on the pendant. I wonder what the configurable axis Jog/Rapid inputs are for if not for control with switches or a joystick? On a related note there is no mention of jogging on a diagonal with, say, both X+ and Y+ inputs active.

I also want to us a laser pointer for setting X-Y work origins for jobs that are not position-critical. Hopefully the Laser Pointer On/Off input and offsets for Tool 0 work as I am expecting. :grinning:

I did some experimenting with a DIY Arduino based joystick (apologies if you have seen these before) - see links/discussions below:

I learned that jogging on a diagonal does not work.

I stopped work on a joystick solution and installed a 3rd party pendant - I find it invaluable. I can use it through muscle memory alone, and it is an important part of my workflow WRT probing parts and fixtures.

I set up a cross hair laser pointer earlier on (not connected now as I am changing my Z assembly soon) and it worked/s very well for, as you say, for quick rough X/Y zeroing.

Hi Tom.

I saw your thread on the Arduino based joystick but wasn’t sure why this was necessary as opposed to just using the Jog/Rapid inputs and a joystick with four NO switches and a “speedpot” of some sort. Perhaps the functional limitations will become obvious to me when I actually have hardware to work with and I will move on to a pendant.

I received the macro keyboard and was able to program it with the linked exe. It pays to pay attention to the QR code in the tiny pamphlet. :grinning:

1 Like

Unfortunately only 1 axis at a time, so to use a Joystick it should be gated 4-way or non-cardinal directions filtered out via software to prevent unexpected behavior. Working on this with the USB adapter I had mentioned some time back - just haven’t had any time to tinker lately.

In the links I provided you can see that a few Masso members - especially @zombieengineer - were helping me with this project. Although he and others have helped me learn a lot about electronics over the years, I still know very little.

Below is a response from one of the above mentioned discussions - if true, can your solution potentially overcome these limitations/constraints?

My gut feeling is the jog inputs are not going to deliver what we are looking for (smooth diagonal movement) for the following reasons:


  • In jog/rapid mode only one axis can be stepped at a time
  • The jog input must be held long enough for the step complete. For example with 1.0 mm jog step size it is possible to quickly tap one of the arrow keys (similarly set one of the jog inputs high) to get a sub 1 mm step (on my machine approximately 0.5 mm) yet holding down the arrow key the jog will move the axis exactly 1.0 mm
  • It appears that the active axis cannot change until the previous axis comes to a stop and 50 milliseconds have elapsed (not sure on the gap timing).

I will add that for my use cases and developing work flows, I am finding a pendant superior to any functionality I had with a game pad or keyboard.


No, for any multi-axis movement to work (well), Masso would have to add that capability to their software. Doing logic in a microcontroller attached to USB would be tricky for timing, plus it would have to perform stair-stepping to overcome Masso’s limitations.

What I was mentioning in my previous post was simply a way to make sure the controller doesn’t send unpredictable inputs to Masso when pressing a joystick in a diagonal direction - example, North-East, which direction gets interpreted? So it’s a good idea to filter that out. Or with a classic diagonal-gated joystick, like on the original Pac-Man arcade, you can only trigger the 4 cardinal directions.

@Jester4977 I recently added a USB keypad (12 button with 2 knobs) to my Masso controller. Most of the programmed keystrokes are working properly.
I have been able to program F1, F2, F3, as well as Rewind, Cycle Start, Freehold. Also added overrides F11 and F12 as keypress on knobs along with - and + with knob rotation.

I am having issue with a couple of combination keystrokes, in particular:

The Control+Alt+ keystrokes for Home and Park do not seem to register properly by the Masso. It seems like it is only picking up the Control + Home or Control + P (without Alt).

Any chance you could try programming the Home (Control-Alt-Home) or Park (Control-Alt-P) on your keypad to see if the Masso detects these commands properly on your device?

Great control panel setup on your CNC!

Creating a custom set of commands to a keypad sounds cool. Which keypad did you purchase?

The keypad I have been experimenting with is a 12 key 2 knob version from Amazon.

It has been working reasonably well however some of the combination keystrokes like Park (control + alt + p) are not being recognized properly.
It would be great if the programming software for these devices was more robust and allowed for separate press and release codes.
In the last couple days I have been tinkering with an older X-Keys programmable keypad and have had much more success. I will post more details / photos once I get key labels printed and fully tested.

1 Like

This thread has me looking at this one.
I was looking at the keyboard type varieties but they just weren’t appealing to me. But this one would work okay right? Blue tooth ones dont have any issues?

Figure plenty of keys to mess around with, wireless so I can store it in a few multiple places with a few 3d prints easy enough, and could make a masso parking 3d print to hold and charge it in one spot. Probably on the bottom right so its beside the usb. I’m already running a usb extension from the inside out to the back of the masso for the gcode. Bottom one which is recommended not to use too much, I could put a usb splitter in for the bluetooth dongle and theres plenty of that space for the charging cable to store and not move things around too much.

@BManCan I tried this and had issues with multi key macros. Some times they worked, but most of the time I had to press the key repeatedly for it to work, which is not desirable. That’s why I did as much with input buttons as I could.

1 Like

If anyone wants a macro pad that works 100% reliably and can be programmed to do absolutely any kind of keystroke or combination, look for devices running the QMK firmware (open source) and Via compatible (configuration software and firmware extension).


1 Like