Firmware, like its name implies, is the bridge between the hardware and software of a computer system. When software sends commands to the hardware of a computer system, the firmware interprets and translates the software commands into a form that is recognizable by the hardware.
In our case, when your 3D printer software (like Repetier Host, Cura or OctoPrint) sends G-code to your 3D printer, the firmware translates the G-code commands into specific electrical signals that are sent to the motors, heaters, fans and other components on the 3D printer.
For example, if the host software sends “G1 X50 Y50” to the 3D printer, the 3D printer firmware determines how far the motors need to turn to move the extruder to X = 50 mm and Y = 50 mm, then sends the electical signals to the motors to turn them the appropriate amount.
In the world of 3D printing, it’s always wise to take the adage “If it isn’t broke, don’t fix it“. Switching firmware can be tricky even for the most seasoned of 3D printing enthusiasts. If your 3D printer runs perfectly fine, or if all of your problems can be fixed with calibration or other fine-tuning, replacing your firmware can be more trouble than it’s worth.
If you’re considering a firmware upgrade because your print quality is lower than you’d expect, try doing a thorough troubleshooting regimen to make sure the problems aren’t related to the mechanical properties of your printer. (Check out this guide for some troubleshooting tips.) Especially if you built your printer from a kit (or from scratch), the problem could just be a loose screw or a misaligned rail. Even just tightening a belt or re-levelling the bed can to get your prints looking fabulous!
Firmware issues come in all shapes and sizes. However, the most common reasons people switch their firmware are:
Once you’re certain that you want to change your firmware, there are a few things you can prepare to make the switch a little easier. If you’re changing your firmware but want keep the same controller board, make sure to identify the controller board (and its version) as specifically as possible. Most of the time, the name of the board is silkscreen-printed somewhere on the controller board PCB. (If it’s not obvious from the board itself, try looking up your printer on the manufacturer’s website. The product listing usually makes a mention of what board is installed in the printer.)
Some printers, especially for expensive, industrial-grade printers, have proprietary controller boards. In this case, you probably can’t replace the existing firmware with one that isn’t provided by the company. However, you might be able to remove the original board and transplant it with a new one. (Be careful, though! This trick only works with some printers and will absolutely void warranties!)
In addition to identifying the board, try to figure out what type of firmware is currently in your printer and how to get your hands on another copy. If you set up the firmware yourself, or modified the firmware from its stock configuration, use your personal, modified copy of the firmware. If you didn’t upload the firmware yourself, it’s very tough to manually extract the firmware files from a printer’s controller board. Thankfully, in most cases you can just download your printer’s firmware files from the manufacturer’s website.
Once you’ve identified your controller board (or if you’re upgrading to a new controller board), the next most important thing is to check whether your chosen firmware is compatible with the board.
Check the websites belonging to the firmware and controller board companies to see whether either one mentions supporting the other. (Firmware websites sometimes maintain specific, pre-configured versions of their firmware for popular printers.)
If you can’t find any mention of your desired firmware in the documentation of the board (or vice versa), they probably don’t work together. Of course, if you’re using a firmware or controller board that were released very recently, there might not be any documentation because it’s too new. When in doubt, you can always contact the makers to make sure.
Once you’ve made sure your controller board and firmware are compatible, it’s time to begin migrating your current setup over to your new setup! Within your firmware files, navigate to where the machine-specific configurations are stored. (It might be a section in your firmware or a standalone file, depending on your starting firmware.) Some important values to record are:
With the important parameters from your original setup on hand, it’s time to prepare your new firmware. Download it from whatever source you’ve chosen, making sure to use the most recent, stable version.
Save a separate copy of the new firmware as a backup, then open it’s configuration section (or file, depending on the firmware) using a compatible editing software. (Some firmwares are sensitive to the type of program used to open their files. See below for more details.) Carefully scroll through each parameter, replacing the default values with the parameters gathered from your previous version when necessary.
Side note: Be wary of changes to units when entering values for speed or acceleration. Some firmwares measure speed in mm/s, but others sometimes use mm/min.
Once you have your new firmware personalized and tweaked for your specific machine, it’s time to upload it to the controller board (also known as “flashing” the firmware to the board). The specific process greatly depends on which board is being used, so stick with the official documentation as much as possible.
Refer to the website that maintains the controller board or firmware to see what process is recommended. Sometimes, controller boards require specific drivers to run with certain computer operating systems. If the uploading process fails for no obvious reason, or the board isn’t recognized by your computer, the problem could be an issue with the drivers.
After successfully uploading the new firmware, connect your motors, heaters, power supply and other components to the board, then try powering it on. If everything went well, your new firmware should be up and running!
In this section, we’ll be going over a few of the most popular firmware choices, discussing their pros and cons and providing info for learning more. There is a huge number of firmware distributions out there, all of them with inherent advantages and disadvantages. (For example, grbl can be used to drive a 3D printer, but is mostly used to drive CNC machines.) We’ll stick to discussing the following firmwares:
Marlin began as an offspring of two other firmwares, Sprinter and grbl. Since then, it’s been under steady development, and is used in a wide range of 3D printers the world over. Marlin can support a huge number of controller boards, allows for a range of innovative features, and is a rock-solid choice for running a Cartesian 3D printer.
One limitation is its non-compatibility with 32-bit logic controller boards, which means a Delta printer might not be able to run at top speed with Marlin. Also, while the code is very well-documented, the amount of features can make configuration a bit overwhelming at first.
Repetier-Firmware comes from the same group who made the popular software Repetier-Host, and as such, the firmware and software is optimized to work extremely well together. Boasting high-speed communication and an excellent setup guide, Repetier-Firmware also supports the use of 32-bit AVR-based controller boards like the Arduino Due and RADDS.
Like Marlin, Repetier-Firmware requires you to edit an Arduino file to set the configuration, and the sheer number of features can make this process a little intimidating. However, by sticking to the clear documentation and with a little practice, it shouldn’t take long to get the hang of it.
Originally designed for the Duet controller board, RepRap Firmware was one of the earlier firmwares to support 32-bit boards. Updating the configuration of the RepRap Firmware is as simple as changing a configuration file on the SD card, and is also the only firmware to come with a complete web-based interface, effectively creating a host software that runs from the controller board itself. There’s also a great online configuration tool that can help you define or update your firmware configuration file.
One limitation is that RepRap Firmware only works on a small number of boards, specifically ones that use 32-bit AVR chips. Furthermore, setting up RepRap firmware can be intimidating, especially for anyone unfamiliar with setting up 3D printer firmware. However, if you have the patience to read through the documentation (and seek help where necessary), the features it offers are well worth your time.
Written for the Smoothieboard controller board, Smoothieware is another firmware designed for 32-bit boards. Updating this firmware and its configuration is extremely straightforward, involving just loading a configuration text file and firmware binary file onto an SD card. It also allows for a huge amount of custom configuration, including the ability to add extra stepper motors to a board and configure the board for laser cutting or CNC milling.
Like RepRap Firmware, Smoothieware only works on a limited number of boards, the only major ones being the Smoothieboard itself and the Azteeg X5 Mini. As a relatively new player on the field, it also has a smaller user base than Marlin. However, its deep and clearly-written documentation can definitely make up for the small (but growing) Smoothie community.
License: The text of "3D Printer Firmware – Which to Choose & How to Change It" by All3DP is licensed under a Creative Commons Attribution 4.0 International License.
Subscribe to updates from All3DP
You are subscribed to updates from All3DP
You can’t subscribe to updates from All3DP. Learn more…