Control Software Development/Preference Confusion

This is going to be a bit of a read so please bear with me and forgive me if i come across negatively as that is not my intent at all. I’m just trying to get a better understanding of where the maslow is in terms of development and focus.

Finished assembly of my Maslow and am at the software point and have become a bit confused as to what is the best control software to actually use.

I have successfully installed both webcontrol and makerverse and can control my sled with either one, however I am concerned over development and the potential of having to reconfigure down the road because i misunderstood the direction future development was headed.

Webcontrol hasn’t had a release pushed in over 2 years, though there has been a bit of activity in the code base in the past month. Gives the impression this is deprecated.

Makerverse is in even worse state, though a release was pushed a year ago, there haven’t been any code changes to the repo since last year indicating makerverse may no longer be being maintained at all and also deprecated.

Then we get to CNCJS, which Makerverse forked off due to inactivity with the repo, but which is now back in very active development with a release pushed out just last week, but I see no mention of it being used or useable with maslow now.

Coming from a background dealing with “traditional” cnc machines, laser engravers, 3d printers etc I am also a bit surprised that I haven’t seen any mention of marlin or klipper for control.

What is the current supported/recommended control software where development is focused?

Are Makerverse or Webcontrol still being maintained and updated?

Has anyone looked into the possibility of building a marlin configuration for the maslow?

I want to help improve things but I do not want to end up wasting my time improving code that is deprecated, nor do I wish to host or maintain any forks.

Does CNCJS now support the maslow natively? If not why haven’t the makerverse improvements been merged back into the main fork? If they have and I overlooked it, can someone point me to info on setting it up to use with the maslow? It seems that would likely be the most future proof option if so.

Thanks in advance for your patience and responces!

The problem with the firmware from traditional CNC machines is that they all
assume that you have stepper motors controlling the machine. The Maslow uses DC
motors + encoders (aka closed loop servos)

Servos are considered superior, but many self-contained servos present
themselves to the controller as if they are steppers.

In addition, traditional control firmware assumes cartesian or coreXY
confiuration (Klipper does include support for cable robots, which would include
the Maslow)

It would be possible to make some klipper-compatible controller firmware that
talks to clipper as if it was managing steppers, but instead managed servos, and
even better, Klipper could implement a slightly higher-level communication
protocol that provided more of it’s intent to the controller fimeware in a way
that servos could take advantage of. But that work hasn’t been done

But I don’t think that anything other than klipper has a chance.

Once the maslow is calibrated, you can use any sending software that knows how
to talk to grbl to actually run the machine. It’s only during the calibration
that you really need something maslow specific (there are a few things, like
resetting chains and resetting the Z zero that you would need to make some
custom macros for, but that should not be hard to do)

I haven’t been following development of the control software recently, so I
can’t say what is happening there. So I’ve focused on the “why doesn’t the
maslow use X like other CNC machines” part of the question.

David Lang


Thank your for the thoughtful and detailed reply.

Based on your information I can understand why neither marlin nor klipper firmware currently exist, however based on a project I encountered about 4 years ago, hangprinter, I do believe it would be possible to do a marlin firmware.

I don’t know much about the klipper side, but I know there are existing marlin projects that have used servos instead of steppers, and there is even a hardware project that replaces the X and Y stepper drivers on a RAMPS CNC control board with two channel DC motor quadrature encoder controls using cheap, common, easy to solder components.

If you wouldn’t mind I would love to pick your brain at a future date once I’ve actually been using my maslow for awhile and am ready to experiment a bit :slight_smile:

Your question is valid. If you want the newest release in software, technically groundcontrol had a release this last year, so it is the newest though it is the oldest. Webcontrol isn’t deprecated or planned for obsolescence… there is nothing to replace it. Makerverse is the only way to use the Due controlled systems, but it has its own set of issues and while it is functional with the mega controller, and could be considered the path forward, there is zero development on it, while webcontrol still has some work being done recently on it as you mentioned.

I like that klipper idea, but for function and use, I’m sticking with webcontrol for now. There is some work going on to update the python packages and bring it up to a newer version. There are a few minor changes and additions behind the scenes, but no major releases yet. The challenge is that new versions of webcontrol bring new firmware versions with it and that is its own challenge.

The sole makerverse developer has ghosted, so I don’t know what the story is for makerverse V2. He had done some work on it, but the last I reached out there was no reply.

A link to the Marlin project with the DC motors would be interesting.

I have used marlin on another cnc and I much prefer the web interface of webcontrol over octoprint. There is no LCD for manual selection. Instead you use a smart phone and web browser. I have found that the maslow firmware has a faster response when you pause it during a job than marlin does, which seems to run for quite a while before it halts. Just my opinioin, hopefully useful in some way.

Based on your information I can understand why neither marlin nor klipper
firmware currently exist, however based on a project I encountered about 4
years ago, hangprinter, I do believe it would be possible to do a marlin

I am familiar with the hangprinter, but it used steppers (and had several issues
with it’s math that we addressed mechanically with the maslow, I haven’t looked
into that in a while, I need to check on it.

I don’t know much about the klipper side, but I know there are existing marlin
projects that have used servos instead of steppers, and there is even a
hardware project that replaces the X and Y stepper drivers on a RAMPS CNC
control board with two channel DC motor quadrature encoder controls using
cheap, common, easy to solder components.

can you point me at that? I would be very happy to modify other fimware to drive
the maslow.

If you wouldn’t mind I would love to pick your brain at a future date once
I’ve actually been using my maslow for awhile and am ready to experiment a bit

Ask away.

David Lang

1 Like

I will have to do some hunting for links for you guys as I haven’t really messed with any non standard marlin stuff in awhile so I don’t have any relevant links handy. However here is a link to the ramps servo board project which may be of some interest GitHub - SZiv/RAMPSSB: RAMPS Servo Board. Replaces the X and Y stepper drivers on a RAMPS CNC control board with two channel DC motor quadrature encoder control using cheap, common, easy to solder components.

Oh I don’t care for octoprint at all. One of the reasons I was curious about marlin was because I’m interested in being able to use something like a BTT TFT35 to control my maslow.

Though typing that now I’m thinking it would likely be easier and more effective to just grab a rooted fire tablet, throw fully kiosk on it, and set it to open the webcontrol page on boot.

By default marlin completes the current layer when you pause a job, but there is a way to change that behavior.

I discovered your fork between when i posted and you replied, so now I want to know if your fork is going to be the new main fork, as it has far more activity and progress at this point… I also saw someone doing addressable led integration via an esp which was right up my alley. (I actually discovered the maslow because of my obsession with addressable light shows and desire to speed up making new props)

Forgive my ignorance here, I really should and wanted to know far more about the maslow and its infrastructures before attempting to engage in this level of discussion, but I have a tendency to dive into everything head first and play catch up.

Why does a new version of webcontrol require a new firmware version, and what challenges does that present? I think I know why, but I’d prefer to know for sure and not be running off of false presumptions.

Very useful! I appreciate any and all information and input I can get. I can spend the next 12 hours researching on the forums and pouring through various tutorials/docs and not get as good a feel for things as i can spending a few minutes here and there discussing things with knowledgeable people such as yourself!

Random question that just popped into my head… has anyone given any thought to adding MQTT to webcontrol? I was just thinking about how to incorporate the maslow into my smart home, example, on detection of smoke, heat, or flame on camera, send a shutoff command over to the maslow.

Welcome aboard!!

I have a BTT 35 E3v3 lcd, and it would be great to control the maslow, but it would need custom firmware written and a binary compiled. It could connect via the ESP-1 or the 8266 WIFI device. Both would need custom firmware to connect and send the appropriate commands. The HTTP GET command to retrieve info from webcontrol via web socket communication is one of the additions in my fork. Adding this screen is outside the scope of my available time.

Regarding marlin and its layer-stopping behavior. That is good to know. The last time I customized Marlin was so my 3D printer boot screen said something different and enabling the thermal runaway protection instead of running the provided Ender3 firmware.

I had been working to pull my changes into the main repo, but it turned into dependency hell. My method for making changes and saving them did not lend itself to cleanly merge back into the main branch, so a great deal of time is required to get it merged, tested and functional. I would say currently, no, it isn’t. I do customizations and try new things on working software. I don’t develop new software, so me managing a repo isn’t the best idea for a community I have found. I’ve tried to make beta releases with my changes, but the firmware isn’t right for one of the calibration methods and it has stalled. There are others on here who are better qualified with more experience to do such a thing, but time ends up being a limiting factor when doing this for free since it won’t pay the bills. I am offended when folks say Webcontrol is dead, but I do admit it is on life support and needs a new release. I really like its code structure, but only because it is in python and I understand it… not because it is a case study in software engineering. It works and I can make it talk to my wii controller, I can make custom buttons and displays, communicate with it via web socket… and it generally just works. Once the python version upgrade works, I think it will be worthwhile to plug in some of the changes one by one to add the functionality I have been prototyping.

Webcontrol is a full-feature package and includes compatible firmware for the controller with its distribution and from the web menu, it will flash the mega controller for you with the included binaries. While you can change those versions by moving files to the correct locations after install, it helps to have the right version with the release bundle when it installs.
The issue with the firmware is that there are 2 versions that depend on your calibration method (triangular or holey). Newer arduino servo motor control shields have been added to the lineup since the last release so the new firmware needs to support those and both methods of calibration. It would be great to merge those methods of calibration, but that has yet to be accomplished. I lack the attention span for that… Right now I need my system to run on demand and I don’t have time to tinker with it as I did previously. It is no longer just a fun toy for me, there are production requirements that have to be completed and I need reliability over cool features.

I’m sure it has been thought of, but the general safety advice (from the forum) is never leave the room when your router is running… 3D printing is one thing, but milling is another…

You could add it if you wanted to - if you know how or want to learn how and try it.

1 Like

Thank you for the info.

It sounds to me like I may actually want to be using your fork as you have already done a good deal of work that i can leverage to implement the added functionality i want externally.

Your added web socket functionality can be leveraged to get any relevant data as well as send commands in real-time. That gives me a good paths forward for both a control/info screen and IOT integrations.

Honestly I have as much faith in the safety of the 3D printers as I do the Maslow. Hence the IOT integrations. Its simply not possible, especially if your running production like you do, or caring for an elderly family member like I am, to be in room with an eye on these machines at all times, and disaster could hit at any moment. Even the fully automated commercial and industrial machines advise you not to run them unattended.

Using some sensors, a piezo, relays and an esp, in combination with a coral processed camera feed, you can usually catch any issue before it becomes a problem, and it can even help with your insurance claim should the worst occur.

Having this sort of setup actually saved my @$$ a few years back. The laptop I was using at the time for gcode generation developed a fault in the battery/charging system and began spewing flames through the keyboard and out the sides of the closed screen igniting the filament on the printer next to it in under 10 seconds. This happened while I was in the kitchen getting a drink. Within 3 seconds my alarms were going off and power was cut to everything. Within 30 seconds I was putting out the fire with an extinguisher.

I was working on a prototype that added a servo powered dry fire retardant distribution system above each machine last year, but I got sidetracked halfway through the build and ended up designing a conversion kit for window blinds.

Upside all the windows in my house are now quite smart. Manual remote and voice control, plus automatic opening and closing based off of sun position and time of year to help with heating/cooling. The conversion also features addressable leds around the frame of each window, complete with ddp and e131 control options. Total cost for each window was under $8.

I think I can manage what I need via the webhooks you added, and my brain has already sidetracked from adding MQTT to webcontrol to using something like telegraf on the pi to transmit data directly to an external server. That would have the added bonus of making the data available regardless of control software used and being one less thing to complicate that codebase.

1 Like

@Orob @dlang I had a couple quick questions if either of you is around and available.

  1. What size and type of bit is recommended for the calibration cut? I likely overlooked it but I don’t seem to see any mention of this anywhere.

  2. Would using a marker to do the holey calibration instead of a router bit throw off the calibration in any way? (Assuming the marker is secured properly and is either using a spring loaded holder or has been zeroed in a way to account for the calibration cutting depth)

you are trying to measure to the center of the hole (or from edge to edge, say
left edge to left edge), so the size of the hole doesn’t matter. Most people
tend to use 1/4" bits, but it really doesn’t matter

a marker would work just as well, as long as you are sure that the mark it
produces is centered (doesn’t move if you rotate the router manually)

David Lang


Thank you for the quick reply and for confirming my thinking. Off to run a few calibrations!

And I’m the other person in the mix doing some work on trying to get all of webcontrol’s dependencies up to date, both python and Javascript.

Currently the problem is me having enough time to sit down and review the changes related to significantly jumping up the version of bootstrap and the resulting impact on modals that get used in webcontrol. And hopefully, that should be all that’s outstanding.

With all of the dependencies brought up to date it will make it a lot easier for anyone to do some poking around, refactoring, etc.

The other reason for getting everything updated is with python 3.10+ we can run it under pygion (which is where the python is transpiled to run with .net which runs on everything) yielding a significant jump in performance. And if we can get to Python 3.11 that alone has significant performance improvements


I just learned that from a terminal window on any computer on your local network you can talk to the Maslow. Try it:

curl http://<your IP address for Maslow>:5000/LED

It will dump a Jason string with sled position and some other items that may or may not be of interest. But parsing that with an esp8266 or esp33 should be pretty easy to get info to your mqtt or ifttt setup.

Cool automation sidetrack. Too bad your original project was delayed, but the blinds sound cool.

1 Like

Using NR and a http node you can get that data without the need for the esp, and the json string means its super easy to parse and use :slight_smile:

I’ve come up with a few good paths for data and control integrations, just have to pick one and run with it. I’m also looking into adding a MQ2 (smoke) sensor and piezo buzzer directly to the pi via gpio and integrating them into webcontrol.

Current line of thought is when smoke is detected, trigger buzzer, send mqtt message to defined broker/connected clients, stop all machine activity, save current gcode position to text file (for resuming), and cut power to everything.

The base MQTT integration into webcontrol shouldn’t be too complicated to implement using the python paho mqtt library. The biggest hurdle is looking like it will be figuring out which fork of webcontrol to use/contribute to when I reach that point.

Granted right now I am focusing on learning the ins and outs of the machine itself: best workflow, bit types, speed settings etc. Once Im more confident in myself and my maslow, I need to cut the non printed parts for the meticulous Z axis. Proper wood locally is far to expensive to mess with until then. In the meantime I have made the recommended improvements to the basic Z axis, which did greatly improve the accuracy (thanks @geeklimit).

Oh the blinds were just the beginning of my sidetracking, I liked how the lighting effects i could achieve in the windows looked so much I ended up going down the holiday lighting show rabbit hole, which ultimately led me to the maslow, which seems poised to loop me around to automated fire controls :slight_smile:

1 Like

@Bar was working on ESP32 firmware in the past but that project may have fizzled out. Since then grbl_esp32 has morphed into FluidNC and grbl_esp32 depreciated.

I’m running grbl_esp32 using one of Bart’s boards on a non-Maslow cartesian mini router, and FluidNC on a rotary axis BobsCNC Revolution. FNC had some problems with sticky home switches that they claim to have resolved, although I didn’t put the bad switch back in to test. Other than that it’s been working well, and the wifi interface has been handy with that machine. The Revo’s controller is an uno form factor board, with an uno cnc shield and cost me under $20 US so it’s very affordable. Well, under $30 since if you don’t clip off a pullup resistor on the shield it’ll damage the ESP32. Plan to upgrade the grbl_esp32 machine to FluidNC but haven’t gotten around to it yet


So Bar was working towards FluidNC? I have one of his prototype boards. Are you saying you could retrofit an ESP32 to a mega shield and make the system work?

If we went with fluidNC, would it make sense to have a specialty command program just for calibration and then use anybody else’s sender to actually operate it like cncjs?

Fun idea: With 3 kindle fires laying around, I told my boy who knows scratch that I’d give him some cash if he wrote me an android scratch program (MIT app inventor) that will function as a pendant with the maslow webcontrol program. I’m interested to see what he can come up with.


At the time it was grbl_esp32, which has been replaced by FluidNC. I didn’t realize how long ago the discussion was, but here it is. Today it’s possible that one of Bart Dring’s I/O boards on Tindie could handle a DC motor and encoder but I haven’t dug into it.

1 Like

I’m, still working on the ESP32 based board for Fluid NC, but I got a new job a couple months back and I’ve been really swamped. I’m hoping that in the next month or so I can get back to it in a significant way.

The real issue is that I want to use the new ESP32-S3 generation of boards and FluidNC doesn’t support the S3 architecture yet. They would like to, but it’s going to take some work so porting FluidNC to the S3 version of the ESP32 is the next step.


The S3 marketing glossy says it has “Powerful AI acceleration”, so you could build a neural network to make it always work the way we want it to. And you could hype the first artificially intelligent CNC router. No more CAD/CAM, just say “Maslow, make me a chair”, come back, and sit in it. Or perhaps it’s not quite up to what the press is currently hyping? I’ll be impressed when I can get it to “Show me the equations to generate rose engine rosettes”

Seriously, what advantage does the S3 offer over the older versions?

I’ve found that even after retiring the amount of spare time doesn’t ever increase, alas. Hope your new job is working out


FWIW, I have been having ChatGPT write arduino programs for me for the last couple of months. It doesn’t get it 100% correct the first time but it will revise and improve if asked. It doesn’t do all the work but if i get 50% out of it Im happy. The reality is that with generative AI you have to treat it like any google search. The user needs to exhibit critical thinking and collate the answers they get.

To your point, if AI is the major advantage than I agree, whats the benefit other than using the most current hardware at release?