M7/M8/M9 Command Support

I’m sure it has been covered before (I did a search and it showed nothing though) but is there a way to get support for M7 and/or M8 support as a function in Easel? Or is it already there and I’ve just missed it?

Much like the spindle control, it’d just be an option that you can check and then through the Carve screen you’d have another button after turning on the spindle that says like “Enable M7” and/or “Enable M8” (depending on the check boxes) and at the end, it’d just turn it off. In addition, when exporting Gcode, the M7 and/or M8 command along with a M9 command at the end would be added to the Gcode exported.

The outputs are readily available on both Gshield and Xcontroller and it’d be a feature that, personally, I would need to consider to use Easel as a viable Gcode sender as my shop vac is connected to M8. I know at some point there was talk of a relay box for the Xcontroller so that would need this feature as well. Currently, I export the Gcode, manually add a M8/M9 command (before the spindle for M8, after the spindle command for M9) and then send through UGCS. For non-Easel Gcode, I just set up Fusion 360 to include it as a command. I could just move the vac to the same relay as the spindle but I like independent control because if I need to do post-carve cleanup I just send a M8 command and only the vac turns on for cleanup.

You can modify the Easel post processor to have M7 or M8 in the startup G-code and M9 in the shutdown portion of the G-code. You could have one post processor with the M7/M8/M9 commands and one without them.

Not as convenient as a button, but it would work.

The Easel post processor as a function of Easel itself? Is that Easel local modification?

I’ve got my external applications setup to export the proper commands but its the designs I use Easel to layout and setup that, once exported from Easel, don’t have the commands added (but the spindle commands are added!).

In addition, when cutting through Easel, it would need a way to turn it on during the carve setup screen that is processed and I don’t know if the post processor for Easel carving comes into play necessarily.

Maybe I spoke too soon. I’m not sure if you have access to the Easel post processor that Easel actually uses. There was a discussion in another thread concerning selection of the Easel post processor, but I don’t remember what CAM software was being discussed at the time.

You actually don’t even have to configure the post processor in Fusion360 for start-up/shutdown. When setting up the bit settings, if you tell Fusion360 to use FLOOD coolant for the bit, that triggers the command output from what I can gather based on experience and interweb searching. I’ve tried both Easel and GRBL post processors and both have worked.

I’ll also throw it out there to any Inventables developers reading that I’d be more than willing to alpha and/or beta test this feature.

An interesting oversight on their part. They have M7 enabled in their version of grbl, but Easel doesn’t support it?

Easel’s GCODE import does support the M7/M8/M9 commands.
Easel unfortunately does not support generating those commands.
This is how I do my laser engraving. I use Easel to generate the tool paths, export, convert Z movements to M7/M9, and reimport and carve using Easel.

Again to stay on topic, you want to be able to use Easel to generate M7/M8/M9 commands?
At the very least send one via the Carve screen?
Try importing your modified GCODE into Easel and it should already work…

I agree that imported Gcode would work fine, but I’m not concerned with imported Gcode. If I’m importing Gcode from Fusion360, the commands are already there (plus I’d probably go with UGCS for this scenario). There are 2 scenarios where this would be needed:

  1. There are some simple jobs that I’ll import an SVG into Easel, lay it out, set the carve depth and then export the Gcode. Right now, Easel will add M3/M5 commands for spindle control but I have to manually go in and add M8/M9 commands. Is it a minor inconvenience? Yes, but with the Xcontroller now front and center with FLOOD and MIST outputs on the back panel, you’d think support for this is either a) in the works or b) should have been already added. My primary setup is a Raspberry Pi using UGCS to send out Gcode but I like the simplicity of Easel for quick carves instead of getting Fusion360 involved and I can connect my laptop directly and use Easel to control a carve. Even if I’m not using UGCS, I’d need to export the Gcode, adds the commands, and then reimport it into Easel which also means I can’t make small adjustments on the fly. Any small adjustment would mean going to the original project, changing the design, re-exporting the code, re-adding the commands, re-importing the Gcode. It can get a bit cumbersome.

  2. Make a design in Easel/import SVG, lay it out, setup the parameters then use Easel itself to do the carve. When you click the Carve button, it goes through Homing (if needed), thickness confirmation, probing/home position confirmation, if its setup, it’ll even turn on the spindle. But then there is no option to turn on a Vac that is connected to FLOOD/MIST before hitting “Carve” and starting the carve. You’d basically be forced to go into scenario #1 involving export, adding of commands, and import of code.

Is it all minor? Yes. But, with the Xcontroller taking center stage and FLOOD/MIST readily available on the back panel, I personally think it’d be a smart thing to add. It could just simply be a checkbox in Advanced machine setup saying “Enable M8 output” and “Enable M7 output” which would then just add those commands or give a box during the carve setup screen saying “Turn on M8” and/or “Turn on M7”.


Yes, Inventables dropped the ball on this one. Should have been there before the X-controller was released.

1 Like

@EricDobroveanu any insight you can share?

We don’t add a M7/M8/M9 to the start/end of your job. I’d be interested in adding support for this.

Besides turning an airblast or mister on/off, are there any other uses for these commands?

1 Like

My shop vac hooked to my dust boot is connected to an IoT relay from Amazon (which is popular around here) which has its enable input connected to M8 output so that’s why I use it.

It’s not “standard” stuff but the Xcontroller has those outputs readily available (and I’m sure Gshield users have easy access to them as well) and there were plans at one time for a relay power box.

It’s kinda like homing switches. Easel supports them but not everyone uses them so you can enable/disable whether they trigger needing homing.

1 Like

Hey guys, just wanted to give an update on this. We added M7/M8/M9 as a beta feature:

This will send those commands at the start/end of the job if enabled.

To enable it, go to Machine Tab > Advanced > Enable accessory commands


I tested this last night with Gcode export. It worked great. I opened the file just to verify and the commands were in the proper place. Next time I’m down at the machine, I’ll try an Easel carve and see what happens.

Thanks for this!


So ummmm what’s with that second step over value in your machine settings? Super secret feature?


Very secret :slight_smile:


is it at all possible to re-assign the m commands with custom operations.

i’m using my Shapeoko to paint on surfaces - and right now i’m copy/pasting the location / movement / feed / transfer height etc into the gcode where i think it will need to refill - but it would be awesome if i could just add M9 and it will goto and refill with blue paint, M8 is red, M7 water to clean brush etc.

can i edit these will the firmware and reflash the board?

M7 and M8 control independent pins on the Arduino/X-controller. Typical settings (Inventables) will turn the pin on (TTL high) on the respective pin, M9 turns them both off (TTL low).

1 Like

so in a sense this isn’t what i’m looking to do?

i also wondered about macros - i had a convo with Bart about them a while back and got the impression Easel / grbl doesn’t support them. i wonder if the tiny G board does. i should have asked the synthetos folks when i was at MRRF last weekend.

grbl does not support macros.

Which Pin on the Arduino is Activated by the M7 Command?