1.4.0 Alpha 2 (Macros update) (outdated)

New version:



1.4.0 Macros Update ALPHA 2

This is the second test release version of firmware 1.4.0

This is test firmware. As with all test/alpha/beta software, DO NOT INSTALL unless you like to be on the bleeding edge and can live with potential bugs.

Alpha 2 adds:

  • Warning message show only if the user enabled the check box in macro settings
  • New lines are generated once the user edit the macro in text box - (word wrap)

This update includes:

  • Add the ability to have up to 20 custom Macros.

Known Issues:

  • If you name a macro the same as a file name, when deleting the file name or macro, it will delete both.

Download here (click the blue link below to download. Do not unzip the file.):
bbctrl-1.4.0_alpha2.tar.bz2 (2.7 MB)

How To Install:

Updating via USB
You’ll do an update via USB using the following steps:
After downloading, DO NOT UNZIP THE FILE!!!
Copy the blue .bz2 file above onto a usb stick (it must be formatted as fat 32 or ntsf). Click the flyout menu (three bars on top left), general, under firmware click ‘UPLOAD’. Select the 1.3 file.
If you are on firmware 1.0.8 or lower, it may ask for a password.
the password to update will either be buildbotics or onefinity

Manual on how to update.

Why would you want Macros?

Macro buttons on a CNC (Computer Numerical Control) machine, such as the Onefinity CNC, can offer several advantages for users. Here are some reasons why Onefinity CNC users might want macro buttons:

  1. Workflow Efficiency: Macro buttons allow users to automate sequences of commands or repetitive tasks with a single button press. This can significantly streamline the workflow and reduce the time and effort required to perform certain operations.
  2. Customization: CNC users often have specific preferences and workflows. Macro buttons provide a way to customize the machine’s operation according to individual needs, making it easier for users to work with the machine in a way that suits their style.
  3. Complex Operations: CNC machining may involve complex operations with multiple steps. Macro buttons can be programmed to execute these sequences, simplifying the process for users and reducing the chance of errors.
  4. Repeatability: Macros ensure consistent and repeatable results. Users can save specific toolpaths, speeds, and other parameters in macros, ensuring that the same settings are applied consistently across different projects.
  5. Reduced Operator Fatigue: Automation through macro buttons can help reduce operator fatigue by automating repetitive tasks, allowing users to focus on more critical aspects of the machining process.
  6. Emergency Situations: In case of an emergency or unexpected situation, having macro buttons with predefined emergency procedures can be crucial for quickly stopping or pausing the machine, preventing potential damage.
  7. Learning Curve: For users who are new to CNC machining, macro buttons can simplify the learning curve. Instead of memorizing complex commands, users can rely on macro buttons for common tasks until they become more familiar with the machine’s operation.

How the Macros work:

Upon install you will notice 8 unassigned Macro buttons below the probe buttons and above the play/stop buttons.
You can assign any gcode you want to these buttons. It will always show a minimum of 8 buttons but up to 20 macro buttons can be created.

How to assign the Macros.

Push the 3 line button in the upper left of the main screen to access the flyout menu. The MACROS word will be near the top. Tap this access the macros setting.

Macros Configuration Page

The macro configuration page is how you add or remove or edit the macro functions. At the top you have the delete all button, which deletes all macros you’ve created and sets Macros back to default of 8 with nothing assigned.
The New Macros button assigns a new macros button starting with Macro 9 through 20.
Delete Selected button will delete any selected macros from 9-20. It will not delete the default 1-8 macro buttons. 8 will always be showing.

Below that is the ‘select a macros’ drop down. You will click this drop down to access the macros button you want to assign a function to.

Macros name has a default white box on the left and a text box on the right. The left box assigns the macros a color, and the text box names the macro. The text can contain up to 15 characters. Special characters (like &%^$(*(#, etc) MAY not work (as this hasn’t been tested n it’s alpha firmware state).

Below that is the Macros G-Code section.
The left has a drop down box that says Create G-Code by default. To the right is the upload button, and to the right of that is the delete button.

The drop down allows you to select any Macros you’ve written or uploaded in the past. The upload button will upload gcode (must be a file that ends in .nc). We have some premade Macros in this linked forum post.
The delete button will delete the gcode assigned to this macro.

The text box at the very bottom is where you can write custom gcode on the fly, see the gcode of any uploaded macros, or edit any macro gcode.

Finally, the save button is at the bottom and must be pushed for any changes made to occur.

Default view of the macros setting:

Parking Gcode example:

Confirmation box

What it looks like when a macro is assigned:

Where can I get premade Macros?


sweeeeet. thanks to all involved.

1 Like

Ran into one issue that I caused. I put a “.” in the macro name during creation. it saved it in the macro name but didn’t save the Macro “File”

When I went to edit it, it wouldn’t let me, I had to delete the macro and add it again.

Love the ability to give it RGB values! love the ability for choice on the “are you sure” button.

Knocking it outta the park again you guys.

My favorite Firmware addition so far.

1 Like

Can you upload a video of this so we can take a look?

I tried to make a video, but it didn’t do it again. I’ll keep trying and try to upload something

Hi guys,
Love the new updates, but if you could fix some of the glitches, it would be awesome.
Trying to upload videos, but I think the storage is full, upload fails every time.


Be aware that video uploads to this forum are limited to 30M files.
I had to convert, and reduce, all my videos to get them small enough to upload.
That took quite a bit of time to do.

Feel free to list and show the “glitches” you are referring to.

Trying to upload the first video (23mg), but it keeps spinning at 100% mark…

I uploaded to my google drive.
Here is the link to the video file:

try deleting those macros and rebuild them. i have tried to reproduce what yours is doing and can’t. if it still does it reboot and try again.

1 Like

Thanks for the cool macro features! I look forward to giving them a try!

I also wonder if it might be possible to make the “Load 1: Off, Load 2: Off” section of the UI toggle those loads with buttons instead of just display. Of perhaps this firmware is planned for the future Auto Control Box (coming soon!)?

Or maybe there’s a way to make a single Macro button toggle on/off? Or if state (like Load 1 status, etc) can’t be detected by a macro, maybe an option to iterate/loop through one or more macro files on a single macro button?

M7 and M8 turn on loads 1 and 2 and M9 turns them both off

1 Like

Thanks. Yes. And m7.1 and m8.1 turn them off individuality.

By toggle I meant one button to do both on and off.

Ahh I just used macros next to each other… single button would be nice though

Ok ran into an issue. When you are using macros there seems to always be code in the interface. So when you delete all programs after you run them one of your macros always populates please see video. Also a second video showing a interface hang that is repeatable.

We really need you to increase the file
Size above 30mb please and thank you lol

Just a quick note that I setup and used a bunch of macros this weekend. Very nice feature to have! The firmare with them seems pretty stable to me. I web updated from the previous stable 1.3.1 release.

I don’t ever “delete all” uploaded files, so I didn’t notice @ahandeman issues.

I do have an issue where every few power down/up cycles my screen is stuck all black and I have to power cycle to get it to work. I assume my original SD card needs to be replaced, but thought i’d mention it.

It’s notable that macros can’t be run while the machine is running other files, since it’s basically like a quick shortcut button to run a file without needing to select it in the normal file gcode dropdown. That means if you forget to turn on your dust collector or air assist with an M7, M8 macro, you have to stop your program to run the macro. (this is just an example as obviously those commands would ideally be in your postprocessed gcode file already)… it’d be nice if it could inject macro gcode into the current running gcode buffer. that might also allow for rudimentary overriding with preset feeds/speeds.

I enjoy the ability to setup colors too, and the option to bypass the warning. thanks!

Makes me wish I had a bigger monitor than this little 8" that was the only one in stock when I ordered my machine! (but I keep telling myself not to buy a larger monitor instead of a Masso!)

A feature request would be the ability to switch tools using a macro button, eg between laser and spindle, etc. Probably not feasible since that’s probably a backup/restore rather than a cgode feature.

As previously noted, if you’re going between a computer and the touchscreen controller, the web browser gets out of sync while you’re configuring macros, so it’s important to refresh the browser when hopping back to the other device. It’d be nice if the controller would auto-refresh the browser when the state changed on any device accessing the controller.

I also look forward to a build that can display the “path view preview” on the touchscreen. I know that’s probably in the 2.0 branch that may be problematic…

I really appreciate the work on new features!


Hey tmuka,

It’s the Raspberry Pi 3B inside the controller with its small memory that is the problem. The 3D graphics support isn’t even installed. Switching to a Raspberry Pi 4 with its different design and bigger RAM would allow to install and run the 3D graphics acceleration driver and to show the 3D toolpath simulation. The original Buildbotics firmware was successfully built on a Raspberry Pi 4. It’s just the back panel that won’t fit anymore because the USB and ethernet ports changed their position with Raspberry Pi 4.

But I find there is no problem if you simply omit the monitor which is directly connected to the Onefinity Controller, and use a laptop over an ethernet cable instead, even if the laptop is directly beside the machine, because you see the 3D toolpath simulation and you never have to deal with USB media.



@Aiph5u That makes sense. I thought I remembered them saying the previews WOULD work on the pi3b once they were on the 64 bit OS, although that seems weird since I think that would use even more RAM. I probably do have an older laptop with touchscreen I could leave in place there…

I thought of one more bit of MACRO alpha feedback. I know it’s feature creep, but I wish there was a way to re-order the macros without deleting and re-creating them. Currently they show in order created after the original 8. It’s probably clunky, but the old school way would be to have a “sort order” number field in the edit macro screen, so they could be arbitrarily ordered, and you could say set your new macro to “sort order: 1.5” to have it show between original macro 1 and 2. of course, a modern drag and drop ui would be welcome too :smiley:


Another “notable” about the 1.4.0 Alpha 2 firmware. I noticed on reboot if the last thing I did on my machine was run a macro, the “Select previously uploaded GCode programs.” select dropdown is empty, and the G-code from the last run macro shows in the G-code text window. I also see the “Download” html href points to the macro file. <a download="" title="Download the selected GCode program." href="/api/file/go to midpoint.ngc">

Definitely not a big deal, but just a little different. I’m sure behind the scenes macros are just G-code files and the UI is just hiding them from the select dropdown. Perhaps the ui should store the last non-macro G-code file to run to repopulate the ui select/download buttons on reboot/refresh.