Years ago I developed a few branches of Repetier firmware. Then for a few years I used and tinkered with Marlin. But it was all so time consuming and I would occasionally cause bugs in the firmware. I’m getting lazy and I want things to just work without having to recompile and flash. So I tried RRF (RepRap Firmware) and the Duet boards. I fell in love! The Gcode “EVERYWHERE” approach makes it so I don’t have to edit a single line of firmware but I can accomplish more than I ever did before. There are many many many reasons to love the RRF for a DIY CNC machine. And I plan to use this thread to share many of them.
The single most important reason I love RRF is the fact that it is built with a gcode “Everywhere” approach. I can get the firmware to do just about anything I want without having to recompile the firmware. Even if you are not afraid of setting up Visual Studio Code with Platform IO it is still a lot of work to get everything to compile and then flash it back onto your board. It takes time. And its scary when a new version of firmware is released because then you have to get a copy and apply all of config settings to it again. Waste of my time. With RRF all I have to do is modify a couple gcode files and the work is done. If I want to upgrade (or downgrade) the firmware all I have to do is download the zip and click “upload new system files.” It will install the firmware for me and then I will get warning messages if and of my gcode is obsolete and should be changed.
The main way that RRF configures all of the custom behavior for a machine setup is in a gcode file called config.g. That is where you setup:
- How many steppers to use and what axes they control.
- What type of endstops and where they are
- machine size
- default travel feedrates
- max feedrates
- accelerations and steps per mm
- Use Cartesian vs delta configurations, CoreXY etc.
- machine name and network settings.
And the list goes on.
When the machine turns on it will run the config.g and setup the machine. So anything saved into that file will be used on startup.
The cool part is that you can change settings at any time. I can test different configurations like when trying to add a new probe like the BLtouch. I don’t have to reboot the machine each time I just setup a macro with my new test settings and run the macro. If it works how I would expect then I copy the final gcode into the config.g file so it will continue to work after the next reboot.
I could even do some fancy stuff with swapping out stepper motors mid job. Imagine a 3D printer that is using a specific tool with a direct drive extruder. If I want to park that extruder. detach it and then attach new one in its place I could. I can simply use M18 E0 to turn off the Extruder stepper. Do my detach and attach then run gcode that would setup my new motor for E0. I could even have different size motors with different steps per mm, acceleration and current settings. The point is that none of it is configured in a configuration.h file and then compiled into the firmware. Instead it is all done with gcode that can be executed at any time.
This saves me so much time and brain power its worth a couple bucks for the Duet board.
Now RRF is a little more locked down is terms of boards you can run it on. Sure you can try to compile the firmware yourself to get it to run on other boards but I haven’t bothered with that. From what I know it runs on Duet boards, clones, and a few other knock offs that offer cool features like 7 drivers on a single board. But I would rater pay for quality branded parts. If I need more steppers then I could use an expansion board that would allow me to connect more steppers, heaters etc… I do know that there are a few SKR boards that can run RRF with wifi etc. That sounds awesome!