Holey Triangular Calibration

I think I have holey calibration working in webcontrol but I don’t have a functioning maslow to test it out. Who is willing to give it a go? I had to push the firmware keys for the new holey calibration values out of range of my optical calibration firmware keys (no reasonable way to change the optical calibration values without a whole lot of new code work). So the firmware will be different than @joshua’s repo. But when I get it ready to test, I’ll have a compiled version of the firmware baked into the docker so it’ll be easy to update.

1 Like

I should be able to test it this weekend.

David Lang

1 Like

Well, I have to get it built and packaged… will take time… will see when I can get it done.

1 Like

I can probably find some time to try in the next couple weeks! I’ve wanted to give it a go, but having to switch back and forth between WebControl and GroundControl gets annoying pretty fast.

Speaking of — @bar, @dlang and others: if I could package up WebControl so that it runs in an Electron.js desktop app would we consider replacing GroundControl all together? CNCjs does that for their desktop app. The 3d gcode visualizer alone I think makes it worth the switch.


I started a thread for the discuisson (and instructions)


I am thinking along similar lines, we would need to figure out the right
packaging. I’m not familiar with electron.js WC is written in python, why would
packaging it in electron be the right thing?

Support will be important. The calibration routines in GroundControl took a large amount of support in the first year, and continue to require a lot. Who will step up to provide this?


Electron.js is just the desktop web-app framework I’ve heard about the most. Possibly there are other ones that would be a better fit. You can run Python-backend web apps inside Electron.js from my understanding. Slack and Discord’s desktop apps are written in Electron.



Webcontrol has calibration in it. However, it doesn’t have that step-by-step wizard that I personally think really is the source of most of the problems… People either don’t read, don’t read closely, or misunderstand… nothing against the idea, but people get tripped up on it continually… and then it all goes wrong.

In Webcontrol, you measure the machine by hand (distance between motors, and height of motors above workarea and use those values in the “Quick Configure”. You then set sprockets to zero, extend chains (all from same page), attach sled, and start the calibration process… cut pattern, measure and enter values, hit calibrate.

The same people that help everyone else out with calibration.

But regardless of the above, I think if we can package it up into something like a desktop app, that’s a win. But maybe that discussion should be in its own thread :slight_smile:

Related: I recently discovered that my meter stick and tape measure have a meaningful disagreement about the size of a mm, so I want to buy some better measuring equipment. I created a new thread to discuss what tape measures people recommend. I’d love input/recommendations from the experienced people here, since seems like to get the most out of HoleyCalibration, I should get my measurements as accurate as possible.

calibration routines are not going to change just because you use WebControl
instead of GroundControl

but yes, support is important.

I just made a PR to the master branch of the firmware and I think your fork has ‘similar’ issues. Since I can’t make add an issue to your fork, I’m posting here. In the master branch, when chainsag and chain tolerance were being modified, the position of the sled wasn’t automatically updated. So when a move is made after making a big change, the delta from where the sled was to where the sled gets calculated to be at the first step of the move could exceed the position error limit (default 2.0 mm). This would then cause an alarm.

In your fork, you have used kinematics::recalculateGeometry, but all that does is recomputes the machine’s bedwidth and bedheight and a few variables used in quadrilateral. What should be called is kinematics::init. I’ve made that mistake a number of times (calling recomputeGeometry and not init). Init causes a kinematics::forward to occur and that then sets the position of the sled to agree with the new variables.


the measures are from center to center? I can’t find details of from where to where should the measurements be taken.

center to center, left to left, right to right, they should all be the same, do whichever works easiest for you.

One of the videos on that wiki page shows it being done.

take your tape measure (any), and start measuring from the 10mm mark. When you get your final measurement, subtract 10mm and that is how you can measure accurately. No need to buy new tape measure or reinvent the wheel.

Hello All - newbie question. I’ve just purchased an original maslow. I am trying to upgrade the firmware for the holey calibration as described here - How To: Holey Triangular Calibration (GroundControl and Firmware).

I have downloaded the holey firmware. When I attempt to upload the compiled cnc_ctrl_v1.ino file to the arduino, I get this error - redeclaration of ‘float Tension2’.

Can someone point me in the right direction?

Thanks in advance,


The easiest way to do the firmware update for holey calibration is to download and run webcontrol. In webcontrol is a button to upgrade to Holey firmware and it will do the rest.

1 Like

Orbo - thanks for the insight. I’ve got webcontrol running. I’ve tried to do the firmware update a couple of times, but it does not seem to update. The terminal seems to close the connection and then nothing. I’ve given it a 30 min. That seems to be more than enough time to download and install. Here is a screen shot of my terminal window.

Any thoughts on what may be happening?


that window appears to be normal communication, not reprogramming. It might be faster to open the arduinoIDE and manually flash it with 51.28. I can’t do much for you and the mac, since I don’t have one and it has been since Tiger or leopard that I last used one.