Skip to content

navaismo/Ender-3V3-SE

Repository files navigation

Ender3 V3 SE Community Edition Firmware for Octoprint

MainPrint


Table of Contents

Background.

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.

Special thanks to all the contributors:


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.**



Installation:

FeedRate Selection:

The Release of the firmware starting from version 1.0.9.8_1c is compiled with two FeedRates(speed of movements):

Normal:

Which uses the same stock's feedrates:

    #define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
    #define MAX_ACCEL_EDIT_VALUES { 8000, 8000, 200, 8000 }
    #define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 30 }
    #define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 }
    #define DEFAULT_MAX_ACCELERATION { 2500, 2500, 100, 2500 }
    #define DEFAULT_ACCELERATION 2500

Fast:

Which uses bigger values to move faster the printer; but generates more noise.

    #define HOMING_FEEDRATE_MM_M { (80*60), (80*60), (80*60) } 
    #define MAX_ACCEL_EDIT_VALUES { 8000, 8000, 500, 8000 }
    #define DEFAULT_MAX_FEEDRATE { 600, 600, 12, 30 }
    #define MAX_FEEDRATE_EDIT_VALUES { 900, 900, 40, 60 }
    #define DEFAULT_MAX_ACCELERATION { 3500, 3500, 200, 3000 }
    #define DEFAULT_ACCELERATION 3000

Important

  • When choosing betwen Fast or Normal FeedRates, after flashing the new firmware YOU MUST reset the printer so the default values are loaded again.

  • Take a look on this Discussion Topic to understand why you perceive more Noise when using the firmware.

  • All issues opened without reading release notes are going to be closed automatically.


Hardware Version CR4NS200320C13(SMT32F103RET6)

You can find the latest code on the main branch

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:

  1. Turn Off your printer.
  2. Format you SD to FAT32 recommended to use MiniTool Partition or Gparted.
  3. Rename the file to something random, i.E. “OC198B.bin” and copy to the SD.
  4. Put the SD on your Printer SD-Card Reader(Not the LCD).
  5. Turn On your printer.
  6. Wait for the update to finish - it needs ~10-15 seconds.
  7. Run a new Autolevel.

For Octoprint:

  1. Download the Latest Release plugin: navaismo/OctoPrint-E3v3seprintjobdetails
  2. Install it manually using the Plugin Manager.
  3. Follow the below section of Octoprint to configure it.



Hardware Version CR4NS200320C14(SMT32F401RET6)

You can find the latest code SMT32F401 branch

Tip

First you need to flash creality firmware version 1.0.9. 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 with the SMT32F401 tag on it, download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.

or From: Latest Release of Printer's Firmware with Gcode Preview with the SMT32F401 tag on it, download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.

Unzip and:

  1. Turn Off your printer.
  2. Format you SD to FAT32 recommended to use MiniTool Partition or Gparted.
  3. Create a folder called "STM32F4_UPDATE" in the root of the SD Card
  4. Rename the bin file to something random, i.E. “OC198B.bin” and copy to the SD inside the SMT32F4_UPDATE folder.
  5. Put the SD on your Printer SD-Card Reader(Not the LCD).
  6. Turn On your printer.
  7. Wait for the update to finish - it needs ~10-15 seconds.
  8. Run a new Autolevel.

For Octoprint:

  1. Download the Latest Release plugin: navaismo/OctoPrint-E3v3seprintjobdetails
  2. Install it manually using the Plugin Manager.
  3. Follow the below section of Octoprint to configure it.



Common Features for the Stand Alone Printer & for Octoprint.

* The 7x7-Mesh:

Based on the fork of @aschmitt1909, and merged with the PR#18 from @eduard-sukharev

Grid


* Linear Advance:

Based on the fork of @queeup-Forks, for this version follow these instructions to enable it:


* Hosts Commands and Support for Runnout Sensor:

Based on the fork of @rtorchia


* Raised Max Temperatures Values.

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


* Software protection against false positive reading of HotBed Termistor.

Starting last month(2025-06-01) my printer sometimes had a bad reading on the bed termistor causing crash on prints with several hours running, and these readings were randomly and during a short period but the printer still cancelled a job. So beacuse of that I added in the Firmware a protection for small readings to ignore it unless we have confirmation and get the same temp several times.

BedTooLow

* Input Shaping Menu:

Merged the PR#22 from @eduard-sukharev to Enable the Input Shaping Menu in the LCD.

InputShaping

You can automate the configuration of your Input Shaping with the Octoprint-Pinput_Shaping plugin for Marlin here




* Added Extrusion Flow Item to the Tune Menu:

Enabled the option in Tune menu to modify the extrusion flow/rate of the printer during the print job.

extrusion


* Added a Display Settings subMenu to the Prepare Menu:

The submenu contains:

  • Option 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.

  • Option to set the Maximum Brightness during current runtime. From feature request in Issue #46.

  • Option to set the (Dimm)Brightness when the printer became inactive.

  • Option to set the Time Before dimming the screen.

  • Option to save settings in EEPROM.

DisplaySettings


* Improved M600 feature.

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.

* Fixed Print Information details for SD Print :

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.


* Linear Advance quick Menu:

Added a quick Linear Advance Menu under Motion Menu from feature request on Issue#26

LinAdv


* Custom Extrusion Menu:

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.

Usage:

Tip

  1. Set your desired temperature above 195°C, else an error will come out.
  2. Set your desired extrusion length above 10mm, else an error will come out.
  3. 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.

CustomExtr


* Printer Statistics:

Added Submenu under Control Menu to show the Print Stats gather by Marlin. From feature request on Issue #48

PrintStats


* PETG/ABS Preheat Settings:

Added options for preheat new Materials: PETG and ABS under Control and Pepare Menus. From feature request on Issue #49

PreheatMat


* Custom Height after Homing:

Added option to edit the height of the nozzle after homing. From feature request on Issue #49

HomeH


* CRTouch Probe tests:

Added option to test the probe to deploay and stow inside Move Menu. From feature request on Issue #105

Probe


* Bed Level Visualizer:

Added option to see the Bed level iso view along the QR code to get help, this is part of the PR #52 which enable Advanced help messages by @eduard-sukharev

BedQR





Features for Octoprint.

To have the most of Octoprint and this firmware you will need to install the Custom Octoprint Plugin for the printer.


Configure the plugin:

* Install Plugin's Dependencies:

To work correctly the plugin needs the following Plugins to be installed already:

Disable or Unistalled:

  • Disable Display Layer Progress

* Set Correct Baud Rate.

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.


* Add GCODE SCRIPTS.

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 Before 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.


* Configure O9000 commands:

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


* Configure The GCODE Preview transmission.

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.


* Select the Based Progress Type for the Percentage .

  • 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



After configuring all the above you will be able to see the New Layout of the screen:

Octoprint GUI while transmitting the Thumbnail.


Receiving & Rendering Thumbnail.

thumb


New Tune Layout.


Tune2


If you disable the Thumbnail in the plugin's configuration or using the Firmware from this REPO, the default Creality Image will be rendered:


FAQS

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.

+ 9. My motors sound different, are it dying. Was the current increased?

No, none of the above take a look on this disscusion topic to find more baout it



Disclaimer

BAU:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

TL;DR:
If your house burns down because this app malfunctioned, you cannot sue me.






Marlin 3D Printer Firmware

GitHub GitHub contributors GitHub Release Date Build Status

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

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.

Example Configurations

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.

Building Marlin 2.0

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:

Supported Platforms

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

Submitting Changes

Marlin Support

The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources:

Contributors

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.

Administration

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:

License

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.

About

Modified firmware for the Creality 3D Printer Ender 3v3 SE focused to work with Octoprint

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published