config.g, what needs to stay?

  • With the help of folks here, I now have my X5SA printing with the Duet Wifi, Thanks!

    I'm used to MKS control boards and using Arduino to modify the config file, then recompiling and uploading Marlin firmware to the controller.

    In the config file for Duet, there are a lot of machine definition settings. Do those always have to be reloaded each time you turn on the machine ( it appears to me config.g get run at every power on )? Would an M500 permanently store those things? Does it matter?

    I read through the docs and pick up bits and pieces, but this is still a question to me.


  • the duet firmware does not have machine specifics compiled in.

    so the settings you change in marlin in the code you change in the config.g on the duet.

    if you execute M500 on the duet it creates a config-overwrite.g which contains heater config and delta config on a delta.
    this is just a normal g code file like the config that gets exectucuted by the M501 command.

    there is no eeprom like on marlin.

  • Moderator

    This is the heart of reprapfirmware. Everything is configured by a gcode. And everything can be configured in real time. If you power on the duet with no SD card inserted, it won't have any configuration applied. Config.g is just a list of gcodes that gets run at startup. It contains all the commands needed to tell the duet how to behave. all the characteristics of the printer. There is no eeprom or firmware precompiled information.

    M500 doesn't work the same way it does on the 8bit boards. It tries to perform a similar functionality to save some calculated or measured values, but it doesn't save any and all arbitrary gcode settings.

  • Sounds fine to me. I am getting used to this way of dong things. So far I like it better, just some things to learn and understand.


  • Coming from the older "compile" firmwares, there is something that may not be obvious: Every configuration command takes effect at the moment it is entered.

    This is FANTASTIC for figuring out the nuances of a command that will ultimately end up in config.g. Enter the command at the console, and see the effects instantly. When you get it doing exactly what you want, put the final version in config.g.

    The only limitation is "common sense" ordering. For example, you must define an axis prior to setting acceleration on that axis. Or define a heater before setting its temperature limit, etc.

Log in to reply