- Background
- Special thanks to all the contributors
- Installation
- Common Features for the Stand Alone Printer & for Octoprint
- The 7x7-Mesh
- Linear Advance
- Hosts Commands and Support for Runnout Sensor
- Input Shaping Menu
- Added Extrusion Flow Item to the Tune Menu
- Added Mute/Unmute LCD Buzzer to the Prepare Menu
- Improved M600 feature
- Raised Max Temperatures Values
- Fixed Print Information details for SD Print
- Linear Advance quick Menu
- Custom Extrusion Menu
- Features for Octoprint
- FAQS
After Creality released the Ender 3 V3 SE source code, many forks started to work on it and suddenly I was involved in this thread on Creality's Forum were good folks from everywhere started a conversation about what could be good enhancements for the Firmware. So I thought will be a nice contribution for the community to merge the most common forks into One Repo and start from there new features for the firmware.
Also I wanted to go a little bit further, since I'm using Octoprint, so I started to focusing on the integration of the Firmware with it, specially to make my LCD alive again.
- @aschmitt1909
- @queeup-Forks
- @rtorchia
- @eduard-sukharev
- And the folks from Creality Forum because they are making continuos tests and feature requests.
Caution
Disclaimer
I'm not responsable of the damage or brick that may happen to your printer if you don't know what are you doing. I'm provided this fork tested on my own printer without warranties.**
Tip
First you need to flash creality firmware version 1.0.6. and the TFT files for the display. If your printer is already in that version you can do it directly.
From: Latest Release of Printer's Firmware without Gcode Preview download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.
or From: Latest Release of Printer's Firmware with Gcode Preview download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.
Unzip and:
- Turn Off your printer.
- Format you SD to FAT32 recommended to use MiniTool Partition or Gparted.
- Rename the file to something random, i.E. “OC198B.bin” and copy to the SD.
- Put the SD on your Printer SD-Card Reader(Not the LCD).
- Turn On your printer.
- Wait for the update to finish - it needs ~10-15 seconds.
- Run a new Autolevel.
For Octoprint:
- Download the Latest Release plugin: navaismo/OctoPrint-E3v3seprintjobdetails
- Install it manually using the Plugin Manager.
- Follow the below section of Octoprint to configure it.
Based on the fork of @aschmitt1909, and merged with the PR#18 from @eduard-sukharev
Based on the fork of @queeup-Forks, for this version follow these instructions to enable it:
- #30
- https://forum.creality.com/t/ender-3-v3-se-config-settings-to-roll-our-own-firmware-please/6333/278
Based on the fork of @rtorchia
Based in the fork of TomasekJ
- For BED 110°C
- For Nozzle 300°C
Be careful with the Nozzle Temperature because the PTFE Tube from extruder will deform startint at 260°C
Merged the PR#22 from @eduard-sukharev to Enable the Input Shaping Menu in the LCD.
Enabled the option in Tune menu to modify the extrusion flow/rate of the printer during the print job.
Added an Item in Prepare Menu to mute or unmute the LCD when you press the Knob. From feature request in: Issue #27. Sometimes you want to be quiet. To preseve the state of the feature go to Menu Control --> Save settings.
When using M600 code to change filament now the head will park and raise Z to a decent distant to handle the purges. Also was increased the purge lenght to have a better extrusion clean.
Important
- When using standalone printer, the Knob will control the Pause and Continue processes. If you connect the host(Octoprint) then the Knob became useless and you need to control the Pause and Continue from the Octoprint GUI until you disconnect or restart the printer.
Merged the fix of PR#39 from @eduard-sukharev to get the print details like filament, Estimated time and layer height, when printing from SD Card.
Added a quick Linear Advance Menu under Motion Menu from feature request on Issue#26
Added a custom Extrusion Menu under Prepare Menu from feature request on Issue#27. You can Extrude based on different tempearatures and lengths to match your material.
Tip
- Set your desired temperature above 195°C, else an error will come out.
- Set your desired extrusion length above 10mm, else an error will come out.
- Click on proceed.
After that the Noozzle will heat till +-3 Degrees of the desired temp and will extrude the desired length automatically.
Finally just click on the confirm button to go out the menu.
To have the most of Octoprint and this firmware you will need to install the Custom Octoprint Plugin for the printer.
To work correctly the plugin needs the following Plugins to be installed already:
Disable or Unistalled:
- Disable Display Layer Progress
Depending on the Firmware version that you've downloaded add the Baud Rate in the additional baud rates box.
Note: If youe are using OCTO4A the only baud rate that will work is 115200 due to an Android or Octo4A limitation.
To properly show the Ready connection string at Menu's header add the following in the
- After Serial Connection to printer established
- Before Serial Connection to printer is closed
- For After Print Job Completes:
G1 X0 Y220
- For After Print Job is Cancelled:
In this section is important to add the last M117 command it will help to clear some variables before going to Main Menu
; relative moving G91 ; move head 10mm up G1 Z10 F800 ; absolute moving G90 ; move print head out of the way G1 X0 Y220 F3000 ; disable motors M84 ; disable all heaters {% snippet 'disable_hotends' %} M104 S0 ; Set Hotend to 0 {% snippet 'disable_bed' %} M140 S0 ; Set Bed to 0 ;disable fan M106 S0 ; send message to printer. M117 Print was cancelled
- For After Print Job is Paused:
{% if pause_position.x is not none %} ; relative XYZE G91 M83 ; retract filament of 0.8 mm up, move Z slightly upwards and G1 Z+5 E-0.8 F4500 ; absolute XYZE M82 G90 ; move to a safe rest position, adjust as necessary G1 X0 Y220 {% endif %}
- For After Print Job is Resumed
{% if pause_position.x is not none %} ; relative extruder M83 ; prime nozzle G1 E-0.8 F4500 G1 E0.8 F4500 G1 E0.8 F4500 ; absolute E M82 ; absolute XYZ G90 ; reset E G92 E{{ pause_position.e }} ; WARNING!!! - use M83 or M82(extruder absolute mode) according what your slicer generates M83 ; extruder relative mode ; move back to pause position XYZ G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500 ; reset to feed rate before pause if available {% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %} {% endif %}
Of course you can change it to your desired behaviour above are just working examples in my setup.
Enable the option to Turn On the Job details on the LCD. Otherwise left M117 and any other plugin will send information to it.
M177 has a basic implementation and I'm not planning on improve M117 messages
If you installed the firmware from the Repo that Enable the Gcode Preview Using Octoprint, enble the slicer so the plugin can send it to the LCD.
Important
- The supported size for the GCODE Preview is a size of 96x96.
- Supported Slicers are Cura and Orca.
- In Orca use the following 96x96/JPG.
- In Cura default 96x96 setting is enough.
- In your slicer use a filament color other than black or the Image will be barely visible.
- Previews will only work after enable those settings and for the new Files that you upload, any old file will not work
- Transmitting and Rendering the preview will take up to 2 minutes.
-
Time Pogress: Will render the circle percent progress based on the estimation of the Time Printer or PTG plugin. Is a known issue that Printer or PTG arent accurate at all so this is not the best option.
-
Layer Progress: Will render the circle progress based on the calculation of the percent bewteen the Curren Layer and the Total Layers.
-
M73 Progress: Will render the circle progress based on the information that the Gcode file send trhough M73 command. This is the recommended one.
You need to enable your slicer to send this information is not by default and must follow the standar command like: M73 P10 R60
If you disable the Thumbnail in the plugin's configuration or using the Firmware from this REPO, the default Creality Image will be rendered:
Most of the questions has been answered in the Issue section of the Repo but here are the most common:
+ 1. Why I don't see the updates in real time on the LCD?
TL;DR: Because rendering the LCD will affect your print quality.
Take a look on the Issue #7 to get the full backgorund of why the Real Time response was removed.
+ 2. Do I need Octoprint to work with this?
No, the common feeatures works for both, you just will see the stock LCD Layout. The new layout with Gcode Preview, Layer count etc. Will be render only using Octoprint.
+ 3. Why you don't Increase the connection Baud Rate?
TL;DR: Because printer cannot handle communication above 150000.
Take a look on the Issue #5 to get the full backgorund.
+ 4. Got a leveling error?
This error is only present when using Octoprint and is expected since you flashed a new Grid with no values. So after flashing the new firmware start a new fresh level procedure and then connect Octoprint again.
+ 5. Why the Render of GCcode Preview takes so much time?
+ 5a Why there is no Gcode Preview without Octoprint?
TL;DR: Because LCD is closed and we haven't found it it has a SRAM to store images. An thats why is only supported by Octoprint and not stand alone. To process the image and send it.
Take a look on this Discussion to see the efforts. Eduard and I spent a lot of time trying to find an Address with no luck.
+ 6. Sometimes when Thumbnail Enabled the printer pauses and has weird movement behaviour before the print starts?
This is because the plugin programaticaly pauses the print job until the Thumbnail is rendered, to avoid affect the print quality.
It is recommended to Load the file first and then click on Print. If is a direct print, is recommended to preheat the filament so the transmission will start faster, else it will wait till nozzle reach the temperature.
+ 7. Sometimes when the thumb is disabled an loaded the Job in LCD I see the Default image dissapearing slowly while the other is rendering. Can you just clean the LCD?
This is a personal decision, I like a lot to see how the Creality Man dissapear slowly, it brings me peace.
+ 8. Sometimes in the Tune Menu appears the Nozzle and Bed Icons, Why?
This is beacuse the encoder/Knob is moved too fast and enter in an unknow state that by default try to render the lower info area. If you move it slowly this will no appear.
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!
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.
Before building Marlin you'll need to configure it for your specific hardware. Your vendor should have already provided source code with configurations for the installed firmware, but if you ever decide to upgrade you'll need updated configuration files. Marlin users have contributed dozens of tested example configurations to get you started. Visit the MarlinFirmware/Configurations repository to find the right configuration for your hardware.
To build Marlin 2.0 you'll need Arduino IDE 1.8.8 or newer or PlatformIO. Detailed build and install instructions are posted at:
Platform | MCU | Example Boards |
---|---|---|
Arduino AVR | ATmega | RAMPS, Melzi, RAMBo |
Teensy++ 2.0 | AT90USB1286 | Printrboard |
Arduino Due | SAM3X8E | RAMPS-FD, RADDS, RAMPS4DUE |
ESP32 | ESP32 | FYSETC E4, E4d@BOX, MRR |
LPC1768 | ARM® Cortex-M3 | MKS SBASE, Re-ARM, Selena Compact |
LPC1769 | ARM® Cortex-M3 | Smoothieboard, Azteeg X5 mini, TH3D EZBoard |
STM32F103 | ARM® Cortex-M3 | Malyan M200, GTM32 Pro, MKS Robin, BTT SKR Mini |
STM32F401 | ARM® Cortex-M4 | ARMED, Rumba32, SKR Pro, Lerdge, FYSETC S6 |
STM32F7x6 | ARM® Cortex-M7 | The Borg, RemRam V1 |
SAMD51P20A | ARM® Cortex-M4 | Adafruit Grand Central M4 |
Teensy 3.5 | ARM® Cortex-M4 | |
Teensy 3.6 | ARM® Cortex-M4 | |
Teensy 4.0 | ARM® Cortex-M7 | |
Teensy 4.1 | ARM® Cortex-M7 | |
Linux Native | x86/ARM/etc. | Raspberry Pi |
- Submit Bug Fixes as Pull Requests to the (bugfix-2.0.x) branch.
- Follow the Coding Standards to gain points with the maintainers.
- Please submit your questions and concerns to the Issue Queue.
The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources:
- Marlin Documentation - Official Marlin documentation
- Marlin Discord - Discuss issues with Marlin users and developers
- Facebook Group "Marlin Firmware"
- RepRap.org Marlin Forum
- Tom's 3D Forums
- Facebook Group "Marlin Firmware for 3D Printers"
- Marlin Configuration on YouTube
Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to all the contributors who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them.
Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of:
- Scott Lahteine [@thinkyhead] - USA - Project Maintainer
- Roxanne Neufeld [@Roxy-3D] - USA
- Keith Bennett [@thisiskeithb] - USA
- Victor Oliveira [@rhapsodyv] - Brazil
- Chris Pepper [@p3p] - UK
- Jason Smith [@sjasonsmith] - USA
- Luu Lac [@sjasonsmith] - USA
- 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.