Marlin (firmware)

{{Short description|Open source firmware for 3D printers}}

{{Infobox software

| title = Marlin (firmware)

| name = Marlin (firmware)

| logo =

| logo size =

| screenshot =

| caption =

| author =

| developer = Marlin core team + Marlin community

| released = {{Start date and age|2011|12}}

| latest release version = 2.1.2

| latest release date = December 18, 2022

| latest preview version =

| latest preview date =

| ver layout = simple

| programming language = {{nowrap|C++}} core

| operating system = Arduino platform

| platform = 8-bit AVR and 32-bit ARM based microcontroller units

| size =

| language =

| language count =

| language footnote =

| genre = 3D printing

| license = GPLv3

| alexa =

| website = {{URL|marlinfw.org}}

}}

Marlin is open source firmware originally designed for RepRap project FDM (fused deposition modeling) 3D printers using the Arduino platform.{{Cite news|url=https://3daddict.com/beginner-guide-marlin-printer-firmware/|title=Marlin 1.1 Beginner Guide for 3D Printer Firmware {{!}} 3DAddict|date=2017-07-26|work=3DAddict|access-date=2018-08-04|language=en-US}}{{Citation|author=Thomas Sanladerer|title=How it's Made: The Marlin Firmware!|date=2018-08-04|url=https://www.youtube.com/watch?v=QJx75PWE6dQ|access-date=2018-08-04}}{{Cite news|url=http://www.3ders.org/articles/20140211-muve3d-releases-improved-marlin-firmware-for-all-3d-printers.html|title=mUVe3D releases improved Marlin firmware for all 3D printers|work=3ders.org|access-date=2018-08-04|language=en-US}}

Marlin supports many different types of 3D printing robot platforms, including basic Cartesian, Core XY, Delta, and SCARA printers, as well as some other less conventional designs like Hangprinter{{Citation|author=Thomas Sanladerer|title=[2016 version] How to set up the Marlin firmware!|date=2016-08-20|url=https://www.youtube.com/watch?v=3gwWVFtdg-4|access-date=2018-08-04}} and Beltprinter. In addition to 3D printers, Marlin is generally adaptable to any machine requiring control and interaction. It has been used to drive SLA and SLS 3D printers, custom CNC mills, laser engravers (or laser beam machining), laser cutters, vinyl cutters, pick-and-place machines, foam cutters, and egg painting robots.{{Cite news|url=http://www.3ders.org/articles/20180330-3d-printing-on-eggs-50-percent-infill-one-shell.html|title=3D printing on eggs: 50% infill, one shell?|work=3ders.org|access-date=2018-08-04|language=en-US}}{{Cite web|url=https://www.3dhubs.com/talk/thread/custom-built-3d-printer-cnc-mill-marlin-firmware-help|title=Custom Built 3D Printer / CNC Mill marlin firmware help|website=3D Hubs|language=en|access-date=2018-08-04}}

History

Marlin was first created in 2011 for the RepRap and Ultimaker printers by combining elements from the open source Grbl and Sprinter projects. Development continued at a slow pace while gaining in popularity and acceptance as a superior alternative to the other available firmware. By 2015, companies were beginning to introduce commercial 3D printers with Marlin pre-installed and contributing their improvements to the project. Early machines included the Ultimaker 1, the TAZ series by Aleph Objects and the Prusa i3 by Prusa Research.

By 2018 manufacturers had begun to favor boards with more powerful and efficient ARM processors, often at a lower cost than the AVR boards they supplant. After extensive refactoring Marlin 2.0 was officially released in late 2019 with full support for 32-bit ARM-based controller boards through a lightweight extensible hardware access layer.{{Cite web|url=https://www.reddit.com/r/3Dprinting/comments/e5elvj/marlin_firmware_200_final_has_been_tagged_for/|title = R/3Dprinting - Marlin Firmware 2.0.0 final has been tagged for release}}{{Cite news|url=https://hackaday.com/2016/07/19/new-part-day-sts-32-bit-3d-printer-controller/|title=New Part Day: ST's 32-Bit 3D Printer Controller|date=2016-07-19|work=Hackaday|access-date=2018-08-04|language=en-US}} While Marlin 1.x had only supported 8-bit AVR (e.g., ATMega) and ATSAM3X8E (Due) platforms, the HAL added ATSAMD51 (Grand Central), Espressif ESP32, NXP LPC176x, and STMicro STM32. Marlin also acquired HAL code to run natively on Linux, Mac, and Windows, but only within a simulation for debugging purposes.

As of October 2022, Marlin was still under active development and continues to be very popular, claiming to be "the most widely used 3D printing firmware in the world." Some of the most successful companies using Marlin today are Ultimaker, LulzBot, Prusa Research, and Creality.

Marlin firmware is not alone in the field of open source 3D printer firmware. Other popular open source firmware offerings include RepRap Firmware by Duet3D, Buddy Firmware by Prusa Research, and Klipper by the Klipper Foundation. These alternatives take advantage of extra processing power to offer advanced features like input shaping, which has only recently been added to Marlin (only limited version; Marlin does not support hardware accelerometers which is the best way to fully take advantage of input shaping).{{Cite web|url=https://github.com/MarlinFirmware/Marlin/pull/24797|title=Marlin Input Shaping|website=GitHub }}

Technical

Marlin firmware is hosted on GitHub, where it is developed and maintained by a community of contributors. Marlin's lead developer is Scott Lahteine (aka Thinkyhead), an independent shareware and former Amiga game developer who joined the project in 2014.{{Cite news|url=https://www.3ders.org/articles/20180214-marlin-3d-printer-firmware-developer-thinkyhead-seeking-support.html|title=Marlin 3D printer firmware developer 'thinkyhead' seeking support|work=3ders.org|access-date=2018-08-04|language=en-US}} His work is entirely supported by crowdfunding.

Marlin is written in optimized C++ for the Arduino API in a mostly embedded-C++ style, which avoids the use of dynamic memory allocation. The firmware can be built with Arduino IDE, PlatformIO, or Auto Build Marlin extension for Visual Studio Code. The latter method is recommended because it is very easy but it only being an Visual Studio Code extension requires Visual Studio Code to be installed on the building system first.

Once the firmware has been compiled from C++ source code; it is installed and runs on a mainboard with onboard components and general-purpose I/O pins to control and communicate with other components. For control the firmware receives input from a USB port or attached media in the form of G-code commands instructing the machine what to do. For example, the command "G1 X10" tells the machine to perform a smooth linear move of the X axis to position 10. The main loop manages all of the machine's real-time activities like commanding the stepper motors through stepper drivers, controlling heaters, sensors, and lights, managing the display and user interface, etc.{{Cite news|url=https://hackaday.com/2016/09/30/3d-printering-trinamic-tmc2130-stepper-motor-drivers-shifting-the-gears/|title=3D Printering: Trinamic TMC2130 Stepper Motor Drivers|date=2016-09-30|work=Hackaday|access-date=2018-08-04|language=en-US}}

License

Marlin is distributed under the GPL license which requires that organizations and individuals share their source code if they distribute the firmware in binary form, including firmware that comes pre-installed on the mainboard. Vendors have occasionally failed to comply with the license, leading to some distributors dropping their products.

In 2018 the US distributor Printed Solid ended its relationship with Creality due to GPL violations and quality issues.{{Cite news|url=https://hackaday.com/2018/08/27/gpl-violations-cost-creality-a-us-distributor/|title=GPL Violations Cost Creality a US Distributor|date=2018-08-27|work=Hackaday|access-date=2018-08-29|language=en-US}}

As of 2022, some vendors are still spotty in their compliance, deflecting customer requests for the source code for an extended period or in perpetuity after a product release.{{cite web|title=Known GPL violations list on webpage|url=https://github.com/MarlinFirmware/Marlin/issues/24801|website=Marlin GitHub, issue 24801|access-date=26 September 2022}}

Usage and license compliance

Marlin firmware is used by several 3D printer manufacturers, most of which are fully compliant with the license. Compliance is tracked by Tim Hoogland of TH3D Studio, et. al.. The following table may be out of date by the time you read this.

class="wikitable"

|+

!Company

!GPL compliance

Aleph Objects' Lulzbot printers{{Cite web|url=https://code.alephobjects.com/project/profile/6/|title=Marlin|website=code.alephobjects.com|access-date=2018-08-04|archive-url=https://web.archive.org/web/20191010170100/https://code.alephobjects.com/project/profile/6/|archive-date=2019-10-10|url-status=dead}}{{Cite news|url=https://all3dp.com/4/aleph-objects-debuts-aerostruder-v2-micro-tool-head/|title=Aleph Objects Debuts Aerostruder v2 Micro Tool Head {{!}} All3DP|work=All3DP|access-date=2018-08-22|language=en-US}}

|Yes{{Cite news|url=http://www.3dprintergploffenders.com/3d-printer-companies/|title=3D Printer Companies|date=2018-04-05|work=3D Printer - Known License Violators|access-date=2018-08-29|language=en-US|archive-url=https://web.archive.org/web/20180829222111/http://www.3dprintergploffenders.com/3d-printer-companies/|archive-date=2018-08-29|url-status=dead}}

Anet{{Cite web|url=https://github.com/MarlinFirmware/Marlin/tree/1.1.x/Marlin/example_configurations|title=MarlinFirmware/Marlin|website=GitHub|language=en|access-date=2018-08-07}}

|

Artillery 3D

|Yes{{Cite web|title=Artillery Genius Firmware With Marlin 2.0.5.3|url=https://3dprintbeginner.com/artillery-genius-firmware/|last=Ciprian|website=3D Print Beginner|language=en-US|access-date=2020-05-24}}

AnyCubic

|Yes{{Cite news|url=http://www.3dprintergploffenders.com/2018/08/27/anycubic-returns-to-gpl-compliance-chiron-firmware-source-released/|title=AnyCubic returns to GPL compliance! Chiron Firmware source released.|date=2018-08-27|work=3D Printer - Known License Violators|access-date=2018-08-29|language=en-US|archive-url=https://web.archive.org/web/20180829212504/http://www.3dprintergploffenders.com/2018/08/27/anycubic-returns-to-gpl-compliance-chiron-firmware-source-released/|archive-date=2018-08-29|url-status=dead}}

Alphawise{{Cite news|url=https://www.generation-nt.com/alfawise-u10-imprimante-3d-grand-format-prix-agressif-actualite-1952409.html|title=Alfawise U10 : une imprimante 3D grand format à prix très agressif|work=Génération-NT|access-date=2018-08-07|language=fr-fr}}

|Yes

Bibo

|

BQ

|

BCN3D{{Cite web|url=https://github.com/BCN3D/BCN3DSigma-Firmware|title=BCN3D/BCN3DSigma-Firmware|website=GitHub|language=en|access-date=2018-08-07}}

|Yes

BCN3D{{Cite web|url=https://github.com/BCN3D/BCN3DSigma-Firmware|title=BCN3D/BCN3DSigma-Firmware|website=GitHub|language=en|access-date=2018-08-07}}

|Yes

[https://github.com/bigtreetech BIQU/BTT]{{Cite web|url=https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/|title=BTT/BIQU Firmware|website=GitHub|language=en|access-date=2021-11-11}}

|Yes

Creality{{Citation|last=3D Printing Nerd|title=Creality GPL Update - Naomi Wu Released CR-10S Marlin Source Code|date=2018-04-09|url=https://www.youtube.com/watch?v=pODH6FR4nU8&vl=en|access-date=2018-08-04}}{{Cite news|url=http://www.3dprintergploffenders.com/2018/07/09/first-completely-open-source-3d-printer-from-china/|title=First Completely Open Source 3D Printer from China|date=2018-07-09|work=3D Printer - Known License Violators|access-date=2018-08-07|language=en-US|archive-url=https://web.archive.org/web/20180807175600/http://www.3dprintergploffenders.com/2018/07/09/first-completely-open-source-3d-printer-from-china/|archive-date=2018-08-07|url-status=dead}}

|No: CR-X{{Cite news|url=http://www.3dprintergploffenders.com/2018/08/26/a-disappointing-month-for-gpl-compliance/|title=A disappointing month for GPL compliance|date=2018-08-26|work=3D Printer - Known License Violators|access-date=2018-08-29|language=en-US|archive-url=https://web.archive.org/web/20180829222113/http://www.3dprintergploffenders.com/2018/08/26/a-disappointing-month-for-gpl-compliance/|archive-date=2018-08-29|url-status=dead}}

Yes: CR-10S and Ender3{{Cite news|url=https://www.printedsolid.com/blogs/news/we-are-ending-our-relationship-with-creality|title=We are ending our relationship with Creality.|last=Solid|first=Printed|work=Printed Solid|access-date=2018-08-29|language=en}}

FLSun

|Yes

FolgerTech

|

Geeetech

|Yes

JGAurora{{Cite news|url=http://www.3dprintergploffenders.com/2018/04/16/jgaurora-release-a3s-and-a5-gpl-compliant-source-code/|title=JGAurora release A3S and A5 GPL compliant source code|date=2018-04-16|work=3D Printer - Known License Violators|access-date=2018-08-07|language=en-US|archive-url=https://web.archive.org/web/20180807175603/http://www.3dprintergploffenders.com/2018/04/16/jgaurora-release-a3s-and-a5-gpl-compliant-source-code/|archive-date=2018-08-07|url-status=dead}}

|No: A8, A7, Z-603S

Yes: A1, A5S, A3S, A5

Ideaformer

|No

LMYSTAR

|No

Makerbase

|Yes{{Cite web|title=Sapphire Plus Review - Affordable CoreXY|url=https://3dprintbeginner.com/sapphire-plus-review/|last=Ciprian|website=3D Print Beginner|date=5 March 2020|language=en-US|access-date=2020-05-24}}

Mingda

|No

Printrbot{{Cite web|url=https://github.com/Printrbot/Marlin|title=Printrbot/Marlin|website=GitHub|language=en|access-date=2018-08-04}}

|Yes

Prusa Research

|Yes, and they base their custom firmware on Marlin{{Cite news|url=https://hackaday.com/2016/06/15/prusa-shows-us-the-new-i3-mk2-3d-printer-and-where-the-community-is-headed/|title=Prusa Shows Us the New i3 MK2 3D Printer and Where the Community is Headed|date=2016-06-15|work=Hackaday|access-date=2018-08-04|language=en-US}}

Sunlu

|No

Tevo

|No

TronXY

|No

Ultimaker{{Cite web|url=https://github.com/Ultimaker/Ultimaker2Marlin/tree/master/Marlin|title=Ultimaker/Ultimaker2Marlin|website=GitHub|language=en|access-date=2018-08-04}}

|Yes

Wanhao

|Yes

Zonestar

|Yes

See also

References