Apr 4, 2018

3D Printer Firmware – Which to Choose and How to Change It?

A central component to any 3D printer setup is its controller board and firmware. Changing your firmware can sometimes be a tricky process, but it can make massive improvements to the performance of your printer if done correctly. In this article, we discuss the pros and cons of changing up your 3D printer firmware, give you tips on how to change it, then go over the most common firmware choices available right now.

What is 3D Printer Firmware?

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.

Changing Your 3D Printer Firmware: Is it Necessary?

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!

Changing Your 3D Printer Firmware: Reasons to Change

Firmware issues come in all shapes and sizes. However, the most common reasons people switch their firmware are:

  • Your printer stutters or crashes when printing at high speeds (especially for Delta or CoreXY printers). The calculations run by a Cartesian printer’s firmware are much simpler than the ones it needs to run for Delta or CoreXY printers. If your Delta printer is stuttering or freezing when trying to run quickly, you might need to upgrade your firmware (and maybe your controller board, too).
  • You want to use features that your current firmware doesn’t support. Everyone has specific needs for their specific 3D printing setup. Maybe you use a magnet sled for automated bed levelling, or use precise servo motors to operate a dual-extruder setup, or even want to give your 3D printer the ability to do laser engraving! Some firmwares can accomplish these things easier than others, and if it’s tough to do in your current setup, you might need to switch.
  • The controller board you want to use doesn’t support your current firmware. Every firmware is specifically designed for certain types of controller boards. For example, Marlin Firmware can run on a RAMPS or a RUMBA board, but not on a Smoothieboard or a Duet. If you’re switching out the controller board of your printer with something new, you might need to switch firmwares just to keep everything compatible!

Making the Switch: Identifying Your Board & Current 3D Printer Firmware

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.

Making the Switch: Checking Compatibility

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.

Making the Switch: Gathering Your Printer-Specific Parameters

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:

  • Steps (mm) for your X, Y, Z and extruder motors
  • Maximum travel distances of your three axes (for circular or non-standard bed shapes, take the radius or whatever values define the motor travel)
  • Maximum feedrates (or speed) and acceleration for your axes and extruder motors
  • The type of thermistor in your hotend and heated bed (i.e. Semtec, Epcos100K, etc.)
  • PID settings for your hotend and heated bed
  • (For deltas) arm radius and arm length
  • Any other custom settings in your original firmware

Making the Switch: Preparing the New 3D Printer Firmware

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.

Making the Switch: Uploading the New 3D Printer Firmware

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!

Popular 3D Printer Firmwares: A Brief Review

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
  • Repetier-Firmware
  • RepRap Firmware
  • Smoothieware
  • Teacup, Klipper and Redeem

Popular 3D Printer Firmwares: Marlin

  • Website: http://marlinfw.org/
  • Key features: Feature-rich, highly compatible, widely used, well-documented
  • Compatibility: Virtually every 8-bit controller board
  • Requirements: Arduino IDE

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.

Popular 3D Printer Firmwares: Repetier-Firmware

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.

Popular 3D Printer Firmwares: RepRap Firmware

  • Website: http://reprap.org/wiki/RepRap_Firmware
  • Key features: Highly modular, web-based configuration and control
  • Compatibility: Duet, RADDS, SMART-RAMPS
  • Requirements: A text editor, Pronterface host software, Bossa (depending on the board)

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.

Popular 3D Printer Firmwares: Smoothieware

  • Website: http://smoothieware.org/
  • Key features: 32-bit compatibility, easy & flexible configuration, support for laser cutters & CNC mills
  • Compatibility: Smoothieboard, R2C2 Electronics Board, Azteeg X5 mini
  • Requirements: Text editing software

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.

Popular 3D Printer Firmwares: Other Considerations

  • Teacup
    • Compatible with a wide range of hardware, from simple 8-bit boards to 32- and 64-bit ARM-based controllers (including the Gen7-ARM)
    • Fast, responsive code with a built-in firmware configuration tool
  • Klipper
    • Experimental 3D printer firmware that runs across both a microcontroller and an application processor (like a Raspberry Pi), where the kinematics are calculated on the processor before being sent to the microcontroller
    • Capable of producing extremely fast calculations, even when using simple 8-bit controller boards
    • (Note: Still in experimental phase, so beginners beware!) 
  • Redeem
    • The 3D printer firmware used in the Replicape board and Beaglebone Black
    • Provides an all-in-one solution for the microcontroller and host software

License: The text of "3D Printer Firmware – Which to Choose and 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…Subscribe

You can’t subscribe to updates from All3DP. Learn more…

B719266D-CB2F-4571-9ABD-AFEC8A7D79DCB719266D-CB2F-4571-9ABD-AFEC8A7D79DCB719266D-CB2F-4571-9ABD-AFEC8A7D79DC