Additional documentation can be found at the Marlin Home Page. Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by!
- Frame: Ender 3 Pro (v1)
- Mainboard: BigTreeTech SKR v1.4 Turbo
- Stepper drivers: BigTreeTech TMC2209
- Display: Original Universal LCD 12864 Creality CR10
- Extruder:
- Type: Direct
- Hotend: BMG Aero Volcano
- Gears: BMG Aero Volcano
https://marlinfw.org/docs/features/unified_bed_leveling.html#unified-bed-leveling
View endstop statuses with M119
- Enable
DEBUG_LEVELING_FEATURE
andM114_DETAIL
- Enable (in ubl.h) or add
#define UBL_DEVEL_DEBUGGING
(to Configuration.h) - Build and flash the Firmware to your 3D Printer board
- Connect to your printer from host software such as Octoprint, Cura, Printrun or Repetier Host
- Issue the command
M111 S247
to enable maximum logging (orM111 S32
for Bed Leveling logging) - Perform a
G28
to do your standard homing procedure - Do a
G29 W
to view debug data for UBL - Do a
G29 P1
to start Phase 1 of UBL bed leveling
M502
Factory resetM500
Save settings to EEPROMM501
Load settings from EEPROM
- Heat the hot-end to material nominal temperature
G1 E100 F100
- Measure the extruded length (ml)
- Find current value set (using m503) (cl)
- Calculate new S = 100/ml * cl
- https://www.thingiverse.com/thing:2484766
M303 C8 S200 U1
- get resulted values from firmware response
1 Connect the calibrated thermistor to Hotend connector on the main board
1 Set TEMP_SENSOR_0
to proper model for the calibrated thermistor
1 Insert the thermistor that will be calibrated to bed thermistor connector on the main board
1 Change HEATER_0_MAXTEMP
to reflect desired max temperature to reach by calibrated thermistor
1 Change BED_MAXTEMP
to reflect desired max temperature to reach by calibrating thermistor
1 In Configuration_adv.h
uncomment #define SHOW_TEMP_ADC_VALUES
1 Use Pronterface to connect to printer and set temperature while reading ADC values
Not for production use. Use with caution!
Marlin 2.0 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below.
Download earlier versions of Marlin on the Releases page.
To build Marlin 2.0 you'll need Arduino IDE 1.8.8 or newer or PlatformIO. We've posted detailed instructions on Building Marlin with Arduino and Building Marlin with PlatformIO for ReArm (which applies well to other 32-bit boards).
Marlin 2.0 introduces a layer of abstraction so that all the existing high-level code can be built for 32-bit platforms while still retaining full 8-bit AVR compatibility. Retaining AVR compatibility and a single code-base is important to us, because we want to make sure that features and patches get as much testing and attention as possible, and that all platforms always benefit from the latest improvements.
board | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Arduino AVR | ATmega, ATTiny, etc. | 16-20MHz | 64-256k | 2-16k | 5V | no |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Arduino Due, RAMPS-FD, etc. | SAM3X8E ARM-Cortex M3 | 84MHz | 512k | 64+32k | 3.3V | no |
board | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
ESP32 | Tensilica Xtensa LX6 | 160-240MHz variants | --- | --- | 3.3V | --- |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Re-ARM | LPC1768 ARM-Cortex M3 | 100MHz | 512k | 32+16+16k | 3.3-5V | no |
MKS SBASE | LPC1768 ARM-Cortex M3 | 100MHz | 512k | 32+16+16k | 3.3-5V | no |
Selena Compact | LPC1768 ARM-Cortex M3 | 100MHz | 512k | 32+16+16k | 3.3-5V | no |
Azteeg X5 GT | LPC1769 ARM-Cortex M3 | 120MHz | 512k | 32+16+16k | 3.3-5V | no |
Smoothieboard | LPC1769 ARM-Cortex M3 | 120MHz | 512k | 64k | 3.3-5V | no |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Adafruit Grand Central M4 | SAMD51P20A ARM-Cortex M4 | 120MHz | 1M | 256k | 3.3V | yes |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Arduino STM32 | STM32F1 ARM-Cortex M3 | 72MHz | 256-512k | 48-64k | 3.3V | no |
Geeetech3D GTM32 | STM32F1 ARM-Cortex M3 | 72MHz | 256-512k | 48-64k | 3.3V | no |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
STEVAL-3DP001V1 | STM32F401VE Arm-Cortex M4 | 84MHz | 512k | 64+32k | 3.3-5V | yes |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Teensy++ 2.0 | AT90USB1286 | 16MHz | 128k | 8k | 5V | no |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Teensy 3.2 | MK20DX256VLH7 ARM-Cortex M4 | 72MHz | 256k | 32k | 3.3V-5V | yes |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Teensy 3.5 | MK64FX512VMD12 ARM-Cortex M4 | 120MHz | 512k | 192k | 3.3-5V | yes |
Teensy 3.6 | MK66FX1M0VMD18 ARM-Cortex M4 | 180MHz | 1M | 256k | 3.3V | yes |
boards | processor | speed | flash | sram | logic | fpu |
---|---|---|---|---|---|---|
Teensy 4.0 | IMXRT1062DVL6A ARM-Cortex M7 | 600MHz | 1M | 2M | 3.3V | yes |
Teensy 4.1 | IMXRT1062DVJ6A ARM-Cortex M7 | 600MHz | 1M | 2M | 3.3V | yes |
-
This branch is for fixing bugs and integrating any new features for the duration of the Marlin 2.0.x life-cycle.
-
Follow the Coding Standards to gain points with the maintainers.
-
Please submit Feature Requests and Bug Reports to the Issue Queue. Support resources are also listed there.
-
Marlin Documentation - Official Marlin documentation
-
Marlin Discord - Discuss issues with Marlin users and developers
-
Facebook Group "Marlin Firmware"
-
RepRap.org Marlin Forum
-
Facebook Group "Marlin Firmware for 3D Printers"
-
Marlin Configuration on YouTube
The current Marlin dev team consists of:
- Scott Lahteine [@thinkyhead] - USA Donate
- Roxanne Neufeld [@Roxy-3D] - USA
- Chris Pepper [@p3p] - UK
- Bob Kuhn [@Bob-the-Kuhn] - USA
- Erik van der Zalm [@ErikZalm] - Netherlands
Marlin is published under the GPL license because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork.
While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own.