Calibration Data - Copy-and-paste between several laptops?

I have ordered a Maslow Kit with z-axis controller. My wife and I are going to donate it to our children’s school’s FabLab. (I checked with the teacher; he thinks it’s a great idea.)

Ideally, there will be multiple students using this, each with their own laptop for design projects.

Is there a single data file that can be copied between multiple laptops after the initial calibration is done?

Daniel Burke

1 Like

Welcome @Daniel_Burke to the Maslow forums! That is a wonderful idea to donate that to a school. It’s a great machine for learning how CNC routers work.

A similar question came up in the Freezing the Calibration thread:

The question was about having a backup of settings in Ground Control, which is the program that sends commands to the machine. @Bar may have to confirm this, but I believe that the groundcontrol.ini file could be copied between each of the students’ laptops and they would be able to run their programs with no issues.

The important task would be to make sure that everyone has a current version of the ini file. If someone were to miss a calibration that could throw off their cuts.

There has been talk of programming the firmware so that the calibration gets saved to the Arduino instead, which would do away with needing to copy this file between computer. That would make it very easy to just plug a laptop into the USB cable and run a program. However, I don’t believe that change has been made yet.


Does the arduino have any nonvolatile memory and does the firmware currently use it?

1 Like

The Arduino has nonvolatile memory. This is what your are flashing to when you upload a file. However typically it’s hard coded data. There isn’t as it sits separate memory to write to. So in theory you would need to update the firmware file with your settings and resend it to the Arduino. We could add external memory and read write the variables to it but that would drive up the cost of the system.

the more logical approach would be to add a SD card slot to the shield

With this we could probably develop a display system to calibrate and run files from the SD card. This would effectively turn the Maslow into a 2D copy machine. Very useful for repeating designs.

if we add a ESP8266 with a SD slot as a sub processor we could use the WiFi on it to get to a WiFi SD card system. This would require some code magic of course but it’s do able.

food for thought

Thank you

1 Like

No special boards are needed the ATMega2560 has 4kb of EEPROM which is more than enough to hold the necessary settings data. We already store the encoder steps there, which is how the machine knows where it is when you turn it on.

I have been feverishly working on an upgrade to the firmware that will allow us to store all of the necessary settings in EEPROM, but it is a complicated task. If you want to see the progress it is this branch:

I only need a few more days, but with holidays and testing it may not be ready for prime time until January.

Once this is done, it could be an option to disable the settings checker in GC, so that it would just use whatever was on the machine. I don’t know enough about GC to know whether this would actually work. But either way, copying the groundcontrol.ini file around would solve the issue.


I was hoping the answer would be that easy. Thanks for the info.


@krkeegan: I had thought I had seen you mention you were writing a fix to make the settings store in the Arduino’s EEPROM. I’m no expert on the Arduino IDE, but I can image how complicated that code is. You continue to be an indispensable member of our community! I really appreciate all the work you’ve been putting into program fixes. Keep up the great work, and don’t worry too much about getting results immediately. Enjoy the holidays as well :smiley:

@Daniel_Burke: Not a problem. I haven’t tried it myself, but based on what I’ve read and what little I do know about Ground Control I had a feeling copying the file could be the solution to your problem.


I have to Me too - MeticulousMaynard

Your work is recognized and appreciated. We have 2 weeks until the next release. Please enjoy the Holidays

Thank you

1 Like

There’s a library for that.

I’d recommend creating a structure with a version number as the first field so you can tell when it’s changed. Marlin takes the easy way out, resets everything to defaults if it detects a different version in the firmware and EEPROM, probably good enough if GC can restore the values.

Marlin’s M50x might provide some ideas on how to handle the EEPROM

That is pretty much what I have. The EEPROM work isn’t the issue. Writing the parser to handle it all and then weaving it into the code is really where the hard part is.


Is SPI available or is the shield using it? I’m asking because i want to know if implementing a SD card is even an option? Access to the SD card would only be when not running a file. I’m trying to understand if the SD slot could co-exist. Not just for backing up the eeprom, but other tasks as well.

Who designed the shield - BTW?

Thank you

If memory serves me, the version-detection arrangement on the Maslow board uses one or two of the pins needed for SPI.

1 Like

It looks like on the mega the hardware SPI is pins 50-53. Correct me if I’m wrong but I assume the version is passed during GC startup, I would not think it would keep looking for it after that and possibly allow the SPI to be reused?

Thank you

Unfortunately, the pins are tied to ground on the PCB.

1 Like

Well that would lead to another direction. I appreciate your input. That helps me decide where next to put my efforts.

Thank you