This is the 1.1.9 version of vanilla Marlin Firmware pre-configured for Creality Ender 3 printers with the original or generic BL Touch sensors. The standard configuration file from Marlin distribution was carefully reviewed to include the latest Ender 3 specific settings from the official Creality firmware. If you don't have a BLTouch sensor please use this version of Marlin that supports Mesh Bed Leveling.
I made avaliable the 2.x versions of Marlin for the same board and printer but I recommend using the 1.1.9.x because it is much more stable and has more features. The 2.x versions of Marlin are too big for the board memory and several features had to be removed in order to fit the firmware.
There are three installation options available, the traditional with Arduino IDE, the new method using Visual Studio Code + PlatformIO and the third one that is uploading the compiled firmware directly to the board. I recommend the PlatformIO option for most of the users, once the software is downloaded, the firmware can be upgraded in less than 5 minutes.
This firmware was made for 8-bit boards and will not work on 32-bit boards.
Features
- Official Marlin firmware + bugfix with all hardware settings from Creality latest official firmware (April 2020).
- BLTouch original/generic up to 3.x. enabled by default (BLTouch 3.x might need the 5V logic enabled from the LCD menu).
- No need to remove any capacitors from the board.
- Installs from the original Arduino IDE (smaller download and frequent updates from Arduino team).
- Source code was modified to prevent releasing the BLTouch sensor during "beep" events triggered by LCD menus.
- Thermal runway protection enabled.
- Does not reset the bed level settings after the G28 (Home) command.
- Custom menu with maintenance mode, emergency mode and full auto bed leveling sequence (warmup, wait, home, level and then save settings).
- Ultra-precise bilinerar bed leveling algorithm with 25 probing points and slow probing (takes around 5 minutes to complete, 10 including the bed heating).
- Run and toggle the bed level and BLTouch tools from LCD menus.
- BLTouch voltage/logic settings from the LCD menu.
- Slim menus enabled.
- Baby steps enabled and configured for the "Magic Numbers".
- Emergency parser enabled.
- All changes from the original Marlin config file were marked with the comment "//Customized DBP"
Requirements
- 8-bit boards only! This will not work with 32-bit boards.
- BLTouch installed on pin 27
- Z stop switch removed (it can block the Z axis movement)
- IMPORTANT! BLTouch tip height must be adjusted according to the official instruction manuals. There are different BLTouch sensors and the YouTube videos tips are most of the times wrong
- Bootloader installed in your board
- Arduino IDE for installation option 1
- Visual Studio Code for installation option 2
- AVRDude for installation option 3 in Linux or MacOS (AVRDude for Windows is included in the package)
Note about the bed leveling strategy
There are two ways to perform the automatic bed leveling, the first is before every print and the second is only when necessary. Based on my experience with the Ender 3, it's better to do an extremely precise (slower) bed leveling when necessary than a simpler one before every print. This firmware configuration reflects this choice.
If you want to do quick/imprecise bed leveling before every print you will need to reconfigure the firmware.
Instructions using Arduino IDE (option 1)
- Install the Arduino IDE
- Quit any software that could try to access the printer from the USB port (Cura, Serial Monitor, OctoPrint, etc...).
- Run the Arduino IDE and configure to download the Sanguino board. Add the following URL to the board manager (File->Preferences->Additional boards manager):
https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
- Install the following libraries/boards in the Arduino IDE:
- U8Glib
- Sanguino
- With all requirements in place unpack this entire Marlin distribution to a folder and open the "Marlin.ino" file from the Arduino IDE.
- Look for the configuration.h file and change the following lines to the relative coordinates of your BLTouch mount to the Nozzle. The actual settings are for this mount. If you don't have the measurements now you can configure it later with the M851 GCode (see instructions below).
#define X_PROBE_OFFSET_FROM_EXTRUDER -42 #define Y_PROBE_OFFSET_FROM_EXTRUDER -5 #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
-
Disable the endstop interrupts feature by commenting (//) the following line in configuration.h. This feature needs to be disabled only if you are using Arduino IDE, with PlatformIO this problem does not exist.
//#define ENDSTOP_INTERRUPTS_FEATURE
- Compile and upload the firmware. Make sure you are using the following settings.
- Board configuration: ATMega 1284P 16Mhz
- Programmer configuration: AVRISP MKII
- COM Port: Depends of your computer. Usually only one is available for selection.
- Follow the post-installation instructions below.
Instructions using Visual Studio Code + PlatformIO (option 2)
- Download and install Visual Studio Code.
- From Visual Studio Code extension menu, install the PlatformIO IDE extension.
- With all requirements running, unpack the entire Marlin source code downloaded from the link below to a folder.
- From Visual Studio Code select File->Open folder and select the folder where the platformio.ini file is located. Attention! Use the "open folder" command, not the"open file".
- Look for the configuration.h inside the "Marlin" sub-folder and edit the following configuration to the relative coordinates of your BLTouch mount to the Nozzle. This does not need to be too precise, the only purpose is avoiding the probe to test outside the bed. The default settings X = -42mm, Y= -5mm and Z=0 are for this mount:
#define X_PROBE_OFFSET_FROM_EXTRUDER -42 #define Y_PROBE_OFFSET_FROM_EXTRUDER -5 #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
- Save the file and then select Terminal->Run Task->Build . It will take a few minutes for the system to download all dependencies and compile the code.
- If the code compiled properly you will see something like this in the terminal: "=== 1 succeeded in 00:00:30.050 ===".
- Connect your printer to the computer using the USB cable.
- Go to the Visual Code menu Terminal->Run Task->Upload .
- If everything goes well another message like this "=== 1 succeeded in 00:00:55.010 ===" will be printed.
Installing the pre-compiled HEX (option 3)
The pre-compiled firmware is also available here. You can simply burn the compiled HEX file directly to your Ender3 board without installing the Arduino IDE or Visual Studio Code.
To upload the pre-compiled firmware you will need the AVRDUDE 6.3 tool. For your convenience I included the Windows version of this tool in the zip file that contains the HEX firmware but the tool is also shipped with the Arduino IDE. The upload command in Windows PowerShell should look like this:
./avrdude -p atmega1284p -c arduino -P COM3 -b 115200 -v -U flash:w:firmware.hex:i
The serial port is something between COM1 and COM8, depending on where the USB driver is pointing to, and firmware.hex is the file you are uploading. If you are using other operating system like Linux the port address will be somehting like this /dev/ttyUSB0.
After initializing the board with the new firmware don't forget to reconfigure the probe offsets running the following command from any serial terminal. Replace the default offset values in the command (-42, -5, 0) with the ones for your probe mount.
M851 X-42 Y-5 Z0
M500
Finally, follow the post-installation instructions below.
Post-installation configuration
- Manually pre-level the bed! This is important because the BLTouch has limited max/min detection ranges and the print quality can be affected if the Z-Axis moves too much.
- Cool down the bed and the nozzle. Heating should have little to no effect on this specific procedure.
- Disable stepper motors using the LCD menu command.
- Place a credit card on one the bed, the thickness of the card will be used as a reference distance.
- Turn the Z axis with your hand until the nozzle hits the credit card.
- Move hot end to several positions of the bed, starting from the 4 corners. For each position, adjust the bed level knobs to keep the nozzle at the credit card thickness distance from the nozzle. This is what you would do in manual calibration but instead of using a paper you will use the card for convenience. The card thickness does not matter because the BLTouch probe will redefine the Z reference.
- Heat the bed to the printing temperature and run the bed level command from the LCD (Prepare -> Bed Leveling -> Level bed) or using the G29 gcode or using the Heat and Level command from the custom menu (recommended). Note that the Heat and Level command waits 2 minutes after the bed is hot to allow the mounted surfaces to expand/contract properly.
- Save the settings using the LCD menu or the M500 gcode (if you used the Heat and Level custom command, they will be automatically saved).
- Add the following gcode to the startup code of you slicer, right after the line of the G28 command to load the bed level configuration from the memory before every print:
M420 S1
- After enabling the bed level, print something large and flat to adjust the Z offset. The nozzle will always be far from the bed until you adjust the offset to a negative value (LCD -> Prepare -> Bed Leveling -> Z Offset). Don't forget to save the settings after the print to keep the offset in the memory, you can use the LCD or the M500 GCode for this.
Troubleshooting tips
- No serial COM port appears when connecting to the board: Download the FTDI Drivers
- Bed level failing:
- 1st - make sure you manually leveled the bed, the probing tends to fail if any part of the bed is >2mm lower or higher than the home level.
- 2nd - make sure you have the M420 S1 command AFTER the G28 line in your print initialization GCode.
- 3rd - make sure your probe was installed properly, there are maximum and minimum height clearences between the BLTouch tip and the nozzle tip and that changes for each version of BLTouch.
- 4th - check the wiring! Sometimes the wires are inverted in the default connector setup.
- 5th - if you are using BLTouch 3.x see the next topic.
- BLTouch 3.x failing to probe: Be aware that this is rare contition, the vast majority of the users run BLTouch 3.x without problems. I suspect this is related with the hardware (probe/board components, etc) and there is little we can do from the firmware side:
- 1st - Enable the 5V logic in the LCD menu (LCD -> Control-> BLTouch). BLTouch versions 1.x and 2.x don't have voltage modulation do not require this setting.
- 2nd - If the previous does not work, enable SW mode (LCD -> Control-> BLTouch).
- 3rd - Enable and adjust the delay setting in configuration_adv.h (requires recompiling the source). This is trial an error but try values from 300 to 700 increasing/decreasing by 100.
- 4th - If the BLTouch is version 3.0 (not 3.1, 3.x...) enable BLTOUCH_FORCE_MODE_SET setting in the configuration_adv.h.
- 5th - If none of the above work you either have a faulty probe or a problem with the capacitor in the board.
#define BLTOUCH_DELAY 500
- Error "..._PIN is not interrupt-capable..." in Arduino IDE: This is an Arduino IDE bug, disable the feature in the configuration.h file according to the example below to fix (put "//"). If you are using PlaformIO you should leave this option enabled.
//#define ENDSTOP_INTERRUPTS_FEATURE
- Disable serial port clients before flashing: If the COM ports are used by any other app, the flashing process will fail. Shutdown Cura, OctoPrint, any other slicer and any other Serial Monitor program like the Arduino IDE before compiling/flahsing the new ROM.
- Correct fuse settings: If you are using other software than AVRDUDE (PROGISP, for example) to upload the firmware make sure you are using the correct fuse settings. Apparently the Creality tutorial has the wrong settings and the board fails to boot afterwards.
- Reset the EEPROM: Sometimes the EEPROM memory is not reset during the Marlin reflash and this can cause problems. To reset manually use the following G-Codes from any Serial Terminal: M502 followed by M500.
- Blank screen after flashing: You did not flashed the firmware properly. Please use AVRDude according to the instructions above and if this does not work you might have to reflash the bootloader.
- Serial Port Monitor for Windows: This small program allows you to send/receive GCode to the printer. If the characters look strange you are probably using the wrong baud rate (start with 115200bps).
- avrdude: stk500_getsync() attempt 1 of 10: not in sync: Wrong baud rate for the serial port or serial port already in use (OctoPrint, Cura, etc..). Try configuring the upload rate to 115200bps. If you are using PlatformIO to upload, make sure you are using the correct baud rate for your environment in the platformio.ini file.
- Reconfigure the BLTouch probe offsets: Use the following command replacing the -42, -5 and 0mm coordinates with the offsets of your actual mount:
M851 X-42 Y-5 Z0 M500
If you have problems compiling the firmware...
I can compile the firmware for you. Please see here for more details.
Comments
1.1.5 + progisp
I had the same 1.1.5 issue as reported by others where it would only boot sometimes, but also that i didn't have a real usbisp/usbasp device (03EB/C8B4) so i couldn't get avrdude to work it, with it as some other guy did to fix it (using asbusp-clone and setting PID/VID in the config also didn't work).
Was going for the arduino ide self compile over usb way (since i also couldn't use usbasp there as well) as others reported working, but the laptop i used was very slow so while arduino was loading stuff i googled some more and found someone explaining how to do it all using progisp using the files from this website and that did the trick for me: https://medium.com/@jethro_20307/creality-ender-3-pro-bltouch-v3-1-marl…
FOR 4.2.7 BOARD?
Is this firmware for the 4.2.7 board?
Board
Works for all 8-bit boards. I don't know if this version is 8 or 32.
Ender 3 8-bit board
Hi Daniel,
I installed marlin following the instructions for AVRDude. It looks like everything flashed properly, I see the options for bilinear bed leveling in the menu. However now when I boot the board under my screen is making a continuous beeping sound. It sounds like the beep it would make when I would "click" the button in. But it is just doing this continuously. Any ideas?
Sean
One more thing, there is a…
One more thing, there is a fairly large black cylinder on the back of the board that I can tell is making the noise. If I cover it with my finger it dampens the sound. Is this a capacitor doing this?
Update update: Its…
Update update: Its definitely the beeper just going of continuously. Any ideas would be appreciated!
non-constant condition for static assertion
Hi, I keep getting this error when trying to compile the firmware:
"
Compiling .pioenvs\melzi\src\pca9632.cpp.o
In file included from Marlin\endstops.cpp:35:0:
Marlin\endstop_interrupts.h: In function 'void setup_endstop_interrupts()':
Marlin\endstop_interrupts.h:121:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(X_MIN_PIN) != NULL, "X_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
In file included from C:\Users\user\.platformio\packages\framework-arduino-avr\cores\arduino/Arduino.h:258:0,
from Marlin\HAL.h:36,
from Marlin\MarlinConfig.h:39,
from Marlin\Marlin.h:35,
from Marlin\endstops.cpp:27:
C:\Users\user\.platformio\packages\framework-arduino-avr\variants\sanguino/pins_arduino.h:112:70: error: reinterpret_cast from integer to pointer
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
~^~~~~~~
Marlin\endstop_interrupts.h:121:21: note: in expansion of macro 'digitalPinToPCICR'
static_assert(digitalPinToPCICR(X_MIN_PIN) != NULL, "X_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~~~~~
In file included from Marlin\endstops.cpp:35:0:
Marlin\endstop_interrupts.h:141:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
In file included from C:\Users\user\.platformio\packages\framework-arduino-avr\cores\arduino/Arduino.h:258:0,
from Marlin\HAL.h:36,
from Marlin\MarlinConfig.h:39,
from Marlin\Marlin.h:35,
from Marlin\endstops.cpp:27:
C:\Users\user\.platformio\packages\framework-arduino-avr\variants\sanguino/pins_arduino.h:112:70: error: reinterpret_cast from integer to pointer
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
~^~~~~~~
Marlin\endstop_interrupts.h:141:21: note: in expansion of macro 'digitalPinToPCICR'
static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~~~~~
In file included from Marlin\endstops.cpp:35:0:
Marlin\endstop_interrupts.h:161:7: error: non-constant condition for static assertion
static_assert(digitalPinToPCICR(Z_MIN_PIN) != NULL, "Z_MIN_PIN is not interrupt-capable");
^~~~~~~~~~~~~
compilation terminated due to -fmax-errors=5.
*** [.pioenvs\melzi\src\endstops.cpp.o] Error 1
============================================================================================================ [FAILED] Took 4.69 seconds ============================================================================================================
Environment Status Duration
------------- -------- ------------
melzi FAILED 00:00:04.692
====================================================================================================== 1 failed, 0 succeeded in 00:00:04.692 ======================================================================================================
The terminal process "C:\Users\user\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1.
"
The strange thing is, this file compiled perfectly fine on my old computer, and only became an error when I reinstalled Windows.
Any suggestions?
a
Forgot to include this in the main post: this is happening with Visual Studio Code.
Disable the endstops…
Disable the endstops interrupt feature. See details in the FAQ.
disable #define ENDSTOP…
disable #define ENDSTOP_INTERRUPTS_FEATURE in the Configuration.h that worked for me.
Ender 3 Pro 1.1.4 board with CR Touch LCD display issues
I have an Ender 3 Pro with 1.1.4 board and I've upgraded to use the CR Touch bed leveling system. The BL Touch firmware from Creality is crap and doesn't seem to appropriately use the Z-Offset value once it has been set. After I installed your configuration of Marlin it works great with one minor, yet annoying issue. When I go to perform a bed level the system sometimes resets in the middle of the operation. It doesn't seem to matter whether I use the custom heat + level option or a Bed Leveling->level bed option and it resets at different times during the bed-leveling. The LCD display will blank out and reboot, sometimes asking if I would like to recover my print and sometimes directly back to the main screen. If I burn the original Creality BL Touch firmware, I don't have this issue. Maybe it's not firmware related but only appears when I use the Marlin 1.1.9+Fix. Any ideas how I might further troubleshoot this issue and possibly find a resolution?
It is not firmware related…
It is not firmware related. This is definetely a hardware issue. Board resets either due low power or RAM memory failure.
Does this problem happens if all the heaters are off?
More troubleshooting relates to SD Card
Hi Daniel,
I greatly appreciate you taking the time to provide some support. I have considered power related issues. What I have found is that it doesn't matter whether the bed is heated or not when the error occurs. Additionally, when I am able to get configured and select a print the machine is able to complete successfully. RAM or memory related failure is a possibility.
I didn't think it was related to the SD card but with further exploration, I have found that while using the LCD menu to access gcode files to print, the interface is sluggish and it's difficult to select a file. This behavior seems to occur when I have the original 8GB SD card inserted that came with the printer several years ago. I have tried reformatting the original SD card but it doesn't make a difference. If I do not insert an SD card, I sometimes experience the random bed leveling restart or at the end of the bed-leveling the LCD screen locks-up and I must toggle the power switch to restart the system. When I swap out the SD card for another of the same size, the LCD menu behaves normally and so does the bed-leveling. My theory so far is either there is a firmware issue or there is an issue with the system memory and the SD card and bed-leveling reveal the issue. I can think of two more tests I can perform to further isolate this issue. I have an identical Ender 3 Pro machine setup, same board version, and upgrades except it uses the magnetic bed instead of glass. I will try testing that machine with the SD card. The only other test I can think to try is to swap out the board for another.
Tested with a second Ender 3 Pro with identical hardware
I have confirmed that my second Ender 3 Pro with identical hardware ( except for the magnetic bed instead of glass ) has the exact same issue.
Same issue on both machines
I've determined that I have the same issues on both machines and I am *sometimes* able to perform a bed-level and use the machine as expected. Unfortunately, it doesn't seem to matter whether an SD card is present or not so that seems to be incidental.
I would disable some…
I would disable some features to free more memory. This board is extremely limited and depending on the size of the bootloader there is very little room for the firmware itself.
Bootloader + Firmware
Do you think it's possible that the bootloader and firmware is a little too much for the 1.1.4v board? Would it make much of a difference to burn the firmware directly without the bootloader?
Removed the bootloader
I've removed the bootloader by burning the firmware directly to the board and I have not seen the issue again. If it returns, I'll look into what features I can disable to free up some memory - any suggestions?
Thank you, again, for taking the time to respond and support your work. You're much appreciated!
Creality latest official firmware
Hello Daniel,
I'm comparing the Configuration.h with all version I found in the internet.
Unfortunately I did not find any reference for the lines
// Creality Ender-3
#define DEFAULT_Kp 29.84 //Customized DBP according to the Ender 3 original firmware
#define DEFAULT_Ki 1.96 //Customized DBP according to the Ender 3 original firmware
#define DEFAULT_Kd 55.47 //Customized DBP according to the Ender 3 original firmware
From where do you take over these settings?
Thanks a lot in advance.
Best regards
Konrad
Possibly wrong value
I was comparing Configuration.h to stock firmware provided by Creality and I found these defines. They are labelled with "// Stock CR-10S Hotend fan 100%" rather than "// Creality Ender-3", but they are the only uncommented ones. However, Default_Kp is 20.84 in stock firmware and 29.84 in this one, which seems like a significant difference.
Can not Build in visual Studio
I have downloaded the files from the links you provided. I have not changed anything about them as offsets are the same as mine. When I go to Terminal, Run Task , Platform IO:Build it comes back with 8 errors, including:
[{
"resource": "/c:/Users/donni/Desktop/Ender 3/Marlin 1.1.9/Marlin-1.1.9.1+Fix/Marlin/endstop_interrupts.h",
"owner": "cpp",
"severity": 8,
"message": "non-constant condition for static assertion",
"startLineNumber": 121,
"startColumn": 7,
"endLineNumber": 121,
"endColumn": 7
}]
[{
"resource": "/c:/Users/donni/Desktop/Ender 3/Marlin 1.1.9/Marlin-1.1.9.1+Fix/.vscode/c_cpp_properties.json",
"owner": "c:\\Users\\donni\\Desktop\\Ender 3\\Marlin 1.1.9\\Marlin-1.1.9.1+Fix",
"severity": 4,
"message": "Cannot find \"c:\\Users\\donni\\Desktop\\Ender 3\\Marlin 1.1.9\\Marlin-1.1.9.1+Fix\\include\".",
"startLineNumber": 11,
"startColumn": 17,
"endLineNumber": 11,
"endColumn": 89
}]
[{
"resource": "/c:/Users/donni/Desktop/Ender 3/Marlin 1.1.9/Marlin-1.1.9.1+Fix/Marlin/Marlin_main.cpp",
"owner": "cpp",
"severity": 4,
"message": "this 'if' clause does not guard... [-Wmisleading-indentation]",
"startLineNumber": 2947,
"startColumn": 5,
"endLineNumber": 2947,
"endColumn": 5
}]
I am not familiar with virtual studios, so I have no idea what is going on.
Also tried the Adruino option.
Everything complies, but when I try to upload it gives this error: avrdude: stk500_getsync()
Which is odd, seeing how I have installed 1.1.9 without the BL Touch already this same why. I am now upgrading to the BL Touch.
Boot Issue after install the new Firmware
Hi
i have installed the sanguino bootloader with progisp --> no problems and i flash the firmware with option 3 (AVRdude) --> no errors after compete the installation. But now if i Restart the Printer the screen ist still clear (Blue).
If i start pronterface and connect to the printer, the the firmware comes up in the display. But this works only with this procedure. If i want to start the printer only with on/off Button (without an Laptop) the display stay "blue".
Has somebody a idear of this or is this normal with the new firmware?
Thanks a lot for your help^^
same problem...
Hi, i used the progisp to flash the 1.1.9 with BLTouch .hex directly to the board.
Screen ist blue after starting...
whats the reason?
Same problem here
Did you find a solution ?
Probe offset cannot be changed on 8bit Ender 3 board
I have uploaded the pre compiled FW on my Ender 3 original 8 bit board. Everything seems to work OK but setting the X and Y offset of the probe has no effect.
During Bed leveling command the BLtouch tip will try to probe outside the bed on Y axis (~1mm out). My real probe offsets are: X-42 Y-8 mm
I have sent M851 X-42 Y-8 Z0.1 then M500, M501
When I check the eeprom content by M503 I get:
So the Z offset is saved but there is no indication that X and Y offsets are stored or at least there is no reading using M503.
When I perform auto home it is working fine, BL touch is triggered and procedure is finished well.
Then when I try Bed leveling command the probe just misses the bed on Y azis with ~1mm.
I tried also erasing the eeprom with M502 and then setting the offsets again but no change.
Any idea?
Additional info
I also observed that many times when I start my printer the LCD display will not be initialized and the printer hangs. I need to restart it or try to connect via Octoprint. This will solve the problem.
an issue of Marlin
I had excactly the same issue and then I read somewhere that Marlin 1.1.9 only support adjustments for Z. Therefore I switched to the Marlin 2.0 version and now it works. Also a M503 now shows all the adjustments for X, Y and Z.
Problem with setting steps/mm
Hello,
I've uploaded this version of marlin to my ender 3 with chinese 3D touch senzor. Worked like a charm ! But then I changed my Z rod (extending the machine in Z axis). I had to change my steps/mm from 400 to 1600 for the new Z rod, which wasn't problem, I just uploaded the Marlin with correct numbers for steps/mm. But I have to switch back to my old rod and no mather what I do I can't change the steps/mm back. I've tried multiple uploads (of course everything in Marlin is changed accordingly as far as I'm concerned) but despite the fact that in the code in arduino IDE is written 400 for steps/mm in Z axis, after upload nothing changes and the stepps are still on 1600. I can' t figure out what to do.
The step value you set in…
The step value you set in the firmware is just a default to populate the config after it resets. If you reset your EEPROM the new default will be applied.
It is important to note that you don't need to reflash the firmware every time you want to change the step settings. You can do this using the terminal or a customized G-Code:
Thank you very much ! You…
Thank you very much ! You really saved me, both with your version of Marlin files as well as with this answer.
BL works if G29 is in start gcode but not with M420 S1
Hi All
For the past few days I've been struggling with a particular issue with this firmware.
I recently bought a BLTouch and hooked it up to my Ender 3 (stock V1 8-bit board).
I have configured the nozzle to probe offsets correctly for the mount I printed (I'm comfortable with building and flashing the firmware myself).
What is working:
What is not working
To save some time when I'm doing consecutive shorter prints (probing 25 points takes a while), I would like to level the bed once in a while and use that mesh for my prints without the need to level before each print in the start gcode
Prepare > Bed leveling > Level bed
(I have tried sendingM29
myself as well)M500
andStore Settings
from the LCD)G29
in my print start gcode, the nozzle starts printing above the bed, so much that there is no adhesion.I'm not sure what is going wrong, but it would be so much more comfortable in my workflow to be able to level when I want it, not standard before every print. It seems as though in the second scenario my configured Z-offset is ignored (maybe why it's printing in the air), although some compensation seems to be applied.
As I said, in the first scenario the results are perfect. I manually leveled my bed to minimize the delta and my bed/ x-axis have no wobble and my frame is square. (if that would be an issue it would fail in the first scenario as well). It feels like I'm missing something obvious.
What can I check/ what can I try out?
Any help will be greatly appreciated!
Hi, I would suggest erasing…
Hi,
I would suggest erasing the EEPROM before anything. Marlin. 1.x unfortunately does not check the EEPROM configuration version before loading.
Then I recommend you to follow the entire bed leveling process from the terminal. If one point fails the calibration cannot be saved.
Regards
Hi Daniel Thanks for your…
Hi Daniel
Thanks for your answer. I've tried erasing the EEPROM using `M502` followed by `M500` several times, unfortunately to no avail. I am starting to think this might be a board issue, I just tried with Creality provided BLTouch firmware (not as awesome as yours of course) and I have the exact same problem. I tried so many things that the only thing left could be hardware related. The probe itself is doing fine and the leveling goes without a hitch when I follow it up close with the terminal output next ot it. No failures during probing.
It seems I'm in need of an upgraded board (I still have the stock melzi 8-bit). I'm not sure if that is the problem but it's the only other thing I can think of.
For now a 'workaround' is to include G29 in my print start gcode, then the print results are perfect.
Did you checked the terminal…
Did you checked the terminal to see if the bed leveling and saving didn't failed?
My second suggestion would be recompile the Firmware without the bitmaps to save some memory. Maybe this could be the problem.
Hi Daniel I checked the…
Hi Daniel
I checked the terminal but didn't see anything out of the ordinary when running G29 and M500. The mesh is correctly saved when I check M503. I'm also guessing it might be a memory limit I'm experiencing, so I will definitely try removing the bitmaps, thanks!
Thank you for this. I wasn't…
Thank you for this. I wasn't able to upload my firmware via USB so the HEX upload was particularly useful.
Nozzle runs into bed
Hi Dan,
thank you so much for this very excellent tutorial and firmware. I got so frustrated with my Ender 3 and the BL Touch, I'd put in the corner and have not been using it for almost two years. Now that I found your tutorial, I (almost) got it to run perfectly.
There is one issue I stumbled upon and I'm not able to solve myself: I set the Z-axis to -2,6, which works really well in my case. However: sometimes the Ender 3 seems to double this value, the nozzle dives into the bed (already ruined one). I'm using Cura for slicing. Do you have a hint for me on where the error could be? Is there a gcode I can put into Cura to "erase" prior printer settings, so maybe (if this is the problem) the already set offset is not read again?
Thanks!
Thomas
guide to burn bootlader?
hi,
can't get firmware installed printer currently lies dead...
i have ender 3 pro, 1.1.5 main board, bltouch 3.1
i bought bltouch as kit from creality so i have their usbisp. i dont have an arduino
i installed com com drivers (ftpd or whatever it was?!) and usb conection to printer yields USB SERIAL CH340 (COM3) in device manager
(following https://medium.com/@jethro_20307/creality-ender-3-pro-bltouch-v3-1-marl…)
i connected the supplied usbisp to mainboard and used progisp to flash optiboot_atmega1284p from https://github.com/Lauszus/Sanguino/archive/master.zip
then i used usbisp to flash https://www.danbp.org/downloads/Marlin-1.1.9.1+Fix_HEX_TMC2208.zip
rebooted and printer screen was blank...
then i reflashed same bootloader via usbisp, and used powershell Marlin-1.1.9.1+Fix_HEX_TMC2208> ./avrdude -p atmega1284p -c arduino -P COM3 -b 115200 -v -U flash:w:firmware.hex:i which seemed to work fine
rebooted and printer screen lights but just kinda flickers regularly...
any help massively appreciated i've got a ton of printing that needs doong!
thanks!
sorted
started again using arduino and compiling from source myself... all worked as intended...
thanks so much for your contribution!
ARC support and filament change (M600)
Hi, thanks for the instructions, everything worked well.
I really wanted ARC support (for plotter usage), and ADVANCED_PAUSE_FEATURE for M600 filament change. To get these features in the available space, I sacrificed POWER_LOSS_RECOVERY, PID_AUTOTUNE, M503 and LCD_INFO_MENU as bellow.
Hope this is useful for someone.
diff ./Configuration_adv.h
586c586
< //#define LCD_INFO_MENU
---
> #define LCD_INFO_MENU
655c655
< //#define POWER_LOSS_RECOVERY
---
> #define POWER_LOSS_RECOVERY
858c858
< #define ARC_SUPPORT // Disable this feature to save ~3226 bytes Customized DBP
---
> //#define ARC_SUPPORT // Disable this feature to save ~3226 bytes Customized DBP
1041c1041
< #define ADVANCED_PAUSE_FEATURE
---
> //#define ADVANCED_PAUSE_FEATURE
1076c1076
< #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
---
> //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
diff ./Configuration.h
364c364
< //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
---
> #define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
1227c1227
< #define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
---
> //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
1278c1278
< #define NOZZLE_PARK_FEATURE
---
> //#define NOZZLE_PARK_FEATURE
diff ./Marlin_main.cpp
10409c10409
< /* #if HAS_PID_HEATING
---
> #if HAS_PID_HEATING
10427c10427
< #else*/
---
> #else
10430c10430
< /* #endif */
---
> #endif
Estep not changing
Hello,
I'm changing the Estep using M92 but no matter what I change it to the extrusion does not change. Am I missing something? Thanks
baby step
Olá,
Instalei numa ender 3 pro.
Durante a impressão clico duas vezes no botão, vai p tela Z offset e
aparentemente muda de 0,4 em 0,4. Esperava q fosse 0,2 mm.
Como faço para saber que o baby step está ativado?
obrigado
Está ativado e integrado com…
Está ativado e integrado com o Z-Offset. A resolução é de 0.04mm, não 0.4mm.
O motivo pelo qual não está configurado para 0.02mm é porque o driver dessa impressora não suporta subdivisões de passo tão pequenas.
Baby step
Opa isso mesmo, 0,04mm.
O firmware ficou bem amigável, obrigado pelo seu esforço!
Aproveitando, a função pausa, para inserção de rolamentos... , tá desativada?
No creality v1.1.6.2 com o prusaslicer eu conseguia com o uso do M601, teria alternativa?
Abç
Marlin 2.0.5.4 endstops
Hi since flashing with this firmware (thank you by the way) my endstops seems to have stop functioning, Auto Home sends the hot end crashing into the front left of my frame and continues to try to move that direction. Is this something I can edit in the configuration.h file to set the limits?
You can try disable the …
You can try disable the "endstops interrupt feature". This should be already disabled if you compiled using Arduino IDE.
Marlin 2.0.5.4 endstops
I have found I need to alter the following lines:
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
to false... mine is the Ender 5 btw which I realise could be a crucial bit of information I missed out.
Z Stop
When you say Z stop switch removed do you mean the physicsal switch has been removed or just unplugged? Should the BLTouch Z min pin still be plugged in? Also what is the purpose of disabling the endstop interrupts, as this seems like a feature one would desire on the printer. Thanks
Thanks, and one tip ... ?
Thanks for the write-up and Marlin 1.1.9 + Creality source. I had an issue with my BLTouch 3.1 staying stowed after I turned on the printer. It would deploy/retract twice but then during the "home all" operation, it would remain stowed. I checked my wiring, etc., and all was fine. I was just messing with the BLTouch and moving the pin in/out and I believe this calibrated the BLTouch because after that it is working correctly! Not sure if this is a normal step (didn't see it mentioned in multiple things I've read/watched), but maybe it will help someone.