Marlin 2.x for a CR-10 V3

I’ve been wanting a 3D printer for a while and finally bought one. I ended up with a Creality CR-10 V3 based on a friends recommendation.

CR-10 V3

I added a BL Touch v3.1 to it and then, instead of using the Creality provided firmware based on Marlin 1.1.6 that still says “CR-10 V2” all over it, I built Marlin 2.0.6 for it with a lot of help from some friends.

Here’s my original Reddit post:

Here are my configuration files and some pre-compiled firmware if you want to use it “as is” and not have to build your own:

I’ve just completed a print and appears to have worked just fine so I think this firmware works.

164 thoughts on “Marlin 2.x for a CR-10 V3”

  1. Thank you a lot!!! Working wonderfully. Why is the temperature is limited to 240 only? I used 260 for my PETG before on CR10-v3 Titanium Extruder, and now it’s limited to 240.

    • Looks like 240 might be a default in Marlin 2.x

      If you look in Configuration.h around line 469 these settings are commented out:

      // Above this temperature the heater will be switched off.
      // This can protect components from overheating, but NOT from shorts and failures.
      // (Use MINTEMP for thermistor short/failure protection.)
      #define HEATER_0_MAXTEMP 255
      #define HEATER_1_MAXTEMP 275
      #define HEATER_2_MAXTEMP 275
      #define HEATER_3_MAXTEMP 275
      #define HEATER_4_MAXTEMP 275
      #define HEATER_5_MAXTEMP 275
      #define HEATER_6_MAXTEMP 275
      #define HEATER_7_MAXTEMP 275
      #define BED_MAXTEMP 120

      I suspect if you changed this:

      #define HEATER_0_MAXTEMP 255

      to this:

      #define HEATER_0_MAXTEMP 260

      You’d get your max temp of 260c back.

      I can look into it when the next Marlin Firmware comes out. I don’t print that hot.

      Are you sure the Max is 240c and not 255c?

    • Ah ha, found the answer:

      MAXTEMP is defined as “if a heater reaches this temperature there’s something seriously wrong and we need to do an emergency stop”. By default you can only set a heater temperature to MAXTEMP minus 15 degrees – the extra is so the error condition doesn’t trigger when the temperature is converging to the set value. If you need to set the temperature to 250C you need to set MAXTEMP to 265.

      So 255 – 15 = 240

      You’d need to change:

      #define HEATER_0_MAXTEMP 255


      #define HEATER_0_MAXTEMP 275

      I will do this next Marlin update since our printers are rated for 260c.

  2. Hey Eric, This is awesome!
    I also recently got a BL touch from Creality and it kept bugging me that it had the V2 label instead of V3 (Just one of little details that makes a big difference haha) I tried downloading their source code, but then realised the status screen uses an image and not text for the top left corner.

    I was just curious, have you had any issues with the power recovery feature with this firmware? I was doing some searching of v1 vs v2 and it seems Marlin 2 uses more memory than v1 and on a few boards Marlin v2 doesn’t work correctly due to memory requirements. What I can’t seem to work out is if the V3 has an 8-bit board or not, as I found it strange that Creality was still using v1 on new printers. Thought perhaps this could have been a factor. (or they got lazy haha)

    Again, thanks heaps for this! I plan to try it out anyway once my current print is finished.


    • I believe the V3 uses an 8-bit board. When I compile the firmware I specify the build environment to be “mega2560”.

      A quick Google for “mega2560” comes up with this: which says “The 8-bit board with 54 digital pins, 16 analog inputs, and 4 serial ports.”

      I have not tested the power loss/resume function. I have my printer hooked up directly to a Octoprint VM and don’t use the SD card. I suspect for the resume function to work the print has to be on the SD card.

  3. Will this also work without BLTouch? I don’t currently have one but would like to upgrade to marlin 2.0.x since I think I am having issues with the stock version of the firmware.

    • I haven’t tested it but I don’t see why it wouldn’t work with out a BLTouch attached.

      Just don’t run any of the mesh leveling Gcode and you’re probably fine.

      You can always test and if it doesn’t work revert to the stock firmware. Low risk and doesn’t take long.

      If you want to alter the firmware yourself you basically want to comment out (add //) line 31 in configuration.h:

      //#define CR10V2_BLTOUCH

      With the next release of Marlin I will start compiling a BLTouch and non-BLTouch version of the firmware (if I remember).

      I highly recommend getting a BLTouch.

      • Thank you i will try that.

        I have one ordered but it will take a few days to arrive. But i am having issues with the stock firmware.
        Tough i think i received a lemon since my v3 keeps freezing and i have to hard reset.

        I figured it try another firmware and see if it might reset the pcb. Thanks for answering my question though. and having both versions is a great idea for those people like myself who don’t get bltouch right from the start.

      • Hi Eric,
        I first tried it with your precompiled version of 2.0.7. this did not properly work since i do not have the BLTouch.
        Then I recompiled a Version of your own code with the line changes:

        line #31 commented out
        // Is the BLTouch option installed?
        //#define CR10V2_BLTOUCH

        line # 665, 668 & 669 set to false and removed the ENABLED(CR10V2_BLTOUCH)
        // Mechanical endstop with COM to ground and NC to Signal uses “false” here (most common setup).
        #define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
        #define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
        #define Z_MIN_ENDSTOP_INVERTING false // ENABLED(CR10V2_BLTOUCH) // Set to true to invert the logic of the endstop.
        #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
        #define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
        #define Z_MAX_ENDSTOP_INVERTING false // ENABLED(CR10V2_BLTOUCH) // Set to true to invert the logic of the endstop.
        #define Z_MIN_PROBE_ENDSTOP_INVERTING false // ENABLED(CR10V2_BLTOUCH) // Set to true to invert the logic of the probe.

        this runs Marlin 2.0.7 on CR10v3 without the BLTouch. Thanks for all your hardwork.

        • Thanks for the update! Odd you had to comment out multiple lines. I thought commenting out the bit on Line 31 automatically disabled all BLTouch related code in the firmware.

          Will keep an eye on it for the next release.

        • Hi Lex,
          I have came across Eric’s and your posts while I was searching for an updated firmware for my CR-10 V3 without BLTouch.

          I want to thank you both for having this conversation :)

          My question is: where in the world I can find an 2.x.x marlin port for my printer – without BLtouch?
          Can you guys point me to the right direction?
          Because all the sources I found were having BLtouch versions.

          Thank you to you both so much!

  4. Hi Eric

    Firstly, thanks for the pre-compiled. Saved me a lot of time in figuring out how to compiled i myself. While testing the resume on power failure feature, the screen went berserk and was showing weird large chinese characters. I realized the ‘The POWER_LOSS_RECOVERY’ flag is not uncommented in Configuration_adv.h. Would you please uncomment it and compile a build! This would be much appreciated.

  5. Hi Eric,

    thank you for this nice work and the constructive discussion! Most likely I will buy myself today an CR-10 V3 printer, and I will be able to follow up more with you.

    Do you still recommend this printer for small details (like mechanical parts), and for big prints as well? Does it give accurate and good quality prints?

    • Honestly I wouldn’t call myself an expert on any of this. I still have a TON to learn compared to those that have been doing it for years.

      Now that I’ve worked out the kinks in my CR-10 V3 and learned enough to troubleshoot basic printing problems I’m definitely happy with it. Should I have bought a Prusa instead? Maybe.

      I’d hit up some of the 3D Printing Subreddits if you’re looking for advice on what to buy.

  6. Hi there,
    I have upgraded my current Marlin 2.0.5 (that was having some jerk issues), with your latest, thru the Mattercontrol firmware updater. Fw upload went ok, the LCD is working and I can pester with settings.

    1. I can’t connect to the printer any longer :(
    2. Printer itself is more or less working, while it is clearly having some extrusion steps issues (wire is being janked in an out :D)
    3. I will try to revert to the previous version, or any other hex … do you have any recovery procedure?

    Bed leveling is working fine, a test print show the nozzle brushing the plate.

  7. Hello,
    Managed to recover access back using avrdude; quite a strange behavior indeed; I was not expecting this kind of connection issue!

    I flashed back my previous fw using AVRDude, now the app is working again.

    For everyone out there, AVRDude command line was the following:

    .\avr\bin\avrdude -p atmega2560 -C .\avr\etc\avrdude.conf -c wiring -P com4 -b 115200 -F -U flash:w:crealitylatest.hex -v

    1. – P com4 ; my printer is on COM4
    2. flash:w:crealitylatest.hex ; w is for write, followed by filename

    Luckyly I’m doing a backup each time I try a new firmware :)

    • Thanks for the tips. I’m sure someone will find this helpful if they run into the same problem.

      I use the ‘Firmware Updater‘ plugin in Octoprint to load up my firmware. I’ve yet to run into any issues like you described. Worst case I’ve had to power cycle/unplug/plug my printer to get it to be recognized again. I have yet to have to revert but obviously your mileage may vary.

      I also had a problem where my print head was being dragged across the print even with z-hop enabled and a very generous hop value. I ended up solving the problem (I think) by re-leveling my X arm. It was slightly lower on one side.

      • I am a windows user; still need to setup octoprint over Raspi 3 and dedicate it to printing: I have tried to run it in a container with no luck so far. I haven’t much time to dedicate to this project, unfortunately.

        Current issue with 2.0.5 – the jerk model for movement is not correct: the carriage is standing in the same place too much and the filament will ooze at each corner. I have read that is a known bug of that release; I should enable the standard jerk routine as the “advanced” is failing.

        Yep, that X arm issue happened to me too – I have another printer and can tell that those steppers are a bit underpowered. If you sligthly press the carriage bridge on one side, you will end up misaligning; this won’t happen with the other printer.

        note: bltouch bed leveling behavior from 2.0.5 to 2.0.6 has changed: with 2.0.5 at each point probed, the bltouch probe pin would stove; with >2.0.6, the pin will become red for an instant then the carriage move to the next point.

        I think we have a slightly different printer – I have the CR-10 V2 + Creality BLTouch; so a simple firmware drop-in would not work, I will prolly need to recompile from the basic; each toolchain I’m trying seems to have some bug at a certain step, I’m a bit p!ssed.

          • Update: I’m using the latest; with Creality V2 configs.

            Bugs solved:
            #define BAUDRATE 115200
            Serial disconnection was caused by a wrong serial speed; that was set to 250.000 in the default configs.

            Bugs still open:
            After a bed leveling, the nozzle is still around 10mm over the plate, printing on air – your firmware version was working fine.
            were you using the bugfix release?

          • Checking the configurations I’m using I have this:

            #define BAUDRATE 250000

            That being said my Octoprint is configured for ‘automatic’ when connecting to my printer, I think it negotiates 250000 and “just works”. Maybe you’ve got a bad USB cable or not enough bandwidth on your USB bus? There was one point where I was writing a ton of data to a USB HD using the same USB BUS as my printer and the printer kept dropping it’s connecting and rebooting.

            I can’t actually find anything in the manual or on the website about what the buad rate is supposed to be for the CR-10 V3.

            I wonder if your height issue has something to do with your z-offset?

            I’ve completed 2 prints using my firmware I built a few days ago. Previous to that I was using with no issue.

  8. Thank you, thank you, thank you!
    Lost filament runout abilities after installing Octoprint with original firmware. I really didn’t want to wire it directly to the Raspberry Pi as I thought it shouldn’t be necessary. Doing some research on Marlin 2.0 firmware I ran across your Reddit thread. I really haven’t seen anyone else attempt this yet for our particular printer and I don’t think it would be something I’d attempt on my own at this time. I made some adjustments to align the print with the bed properly and adjusted speed and distant values for the filament change in the advanced park feature (G600). I also adjusted the Park Point to my liking and of course changed Probe Z offset values to match my setup and including the probe to bed offset in that part.
    If you’d like I’m happy to share my changes with you.
    Thank you also for your clear instructions in setting up the Firmware Update Plugin, it was very helpful.
    Have a beer on me!
    Thanks again

    • You’re very welcome! and thank you for the tip!

      Please feel free to share and customization details here or via my e-mail.

      Not going to lie, I’ve just completely bypassed my filament run out sensor and have been relying on weighing my spool and printers and using Excel to keep track of where I think I’m at. Have yet to finish a spool to see how accurate this system is.

      • I was considering doing that exact same thing but the thought about having a bunch of end rolls kicking around turned me off of it!
        The runout sensor works great in Marlin 2.0 after the config changes, you should really try it out. You’ll be able to use those rolls up with confidence!
        Sent you my changelog.

  9. Hey guys, fantastic work here. I do have some questions. I have a brand new cr-10 v3 which I promptly upgraded with an authentic BLTouch. However, when trying your firmware I get a VERY strange sound from the z-stepper motors. I can manually move them via pronter, or disabled with no sound or issues. However, during print it occurs. Also after about 4 or 5 layers the z- appears to not be raising anymore or correctly as the nozzel begins dragging through the spent filament. I have rolled back to the cr-10 v2 w/ bltouch software on the website and the issue resolves. Any ideas what this could be?

    Thanks in advance.

    • I did have a similar issue but I didn’t think it was firmware related. I ended up re-leveling my z axis and I believe that cleared things up for me. I haven’t had any nozzle scraping since then.

      • I’ve done a bunch of tinkering and managed prints to cooperate rather nicely using your firmware, it was related to the x crossbar. I have narrowed down the weird goose honking (best I can describe). It is related to the titan direct drive. Once I noticed and figured it out it can been seen on every retraction. I will take it apart later today and see if I can lubricate anything or decipher the exact cause. This is my first go with a titan. I have 2 other micro-swiss direct drives on ender 3 pro machines.

        My guess is that there are some different values in the firmware possibly related to retraction? I have yet to look. Seems more likely the noise issue should or could be resolved with the physical direct drive itself and was just masked by settings.

        Thanks again for all your work.

        • This is great info. I think I know the honking you’re talking about.

          Let me know if you find any setting tweaks that help.

          Beyond the odd noise from time to time prints come out just fine for me.

        • Hi Kenny,
          Try changing the DEFAULT_RETRACT_ACCELERATION value (in Configuration.h) down to 500. Retraction movements are quite a bit smoother after that, I brought the other acceleration values down to 500 as well.

          • Hi there!
            On my CR-10 V3 there is the strange loud retraction noise, too! I made a short video so everyone is able to get to know this sound ;)


            I’m using the with BLTouch. Switching back to the stock firmware removes this nois an the retraction is slower an smoother.

            Does changing the DEFAULT_RETRACT_ACCELERATION value removes this nois?

          • I personally did not have that noise but slowing down the acceleration value definitely smoothed out the retraction for me. What were the retraction speed and distant setttings set at in the slicer software for that print? Hard to see from the video but it looks too far, too fast from what I can see.

          • Derek, i’m not sure… maybe around 80mm/s and 6mm. But i know that I haven’t changed it when i switched the firmware.

          • Hello Christian,
            Our direct drive extruders do not need that much retraction length and speed, I typically have mine set to 1 – 1.5mm for length and speeds are typically 30 – 40 mm/s. I believe what is causing this honking noise is the high acceleration value applied to retraction values that are too far/fast is possibly causing the filament to slip on the extruder gear (Just my theory).
            Acceleration values are stored in EEPROM so there is no need to modify and reflash the firmware. Send M204 R500 to the printer to set the retraction acceleration value to 500 then save with M500. You can see all the values stored in the EEPROM with the M503 command.
            Hope this works for you because this is great firmware!

  10. Hello,
    I have tested and thanks for this great work,
    My SDCard is not working and makes the CR10 V3 to freeze ? how do i solve this ?

    I do not have a printed holder for the BLTouch I have the regular bracket do I need to change something ?


      • Hello Eric,

        Actually with the formal firmware from creality my SDCARD is working but with this firmware it does not ?

        Do you have the same issue ?


        • Odd. I tested with a SD Card when I first got my printer and used this firmware but not since. I use OctoPrint so I don’t actually use a SD card for printing. Next time I print something I’ll see about testing with a SD card.

          • Thanks Eric,
            With this firmware and octo print do you have the filament sensor activated ?

          • I do not. I have my filament sensor bypassed at this time. I am considering putting it back in play with the next Marlin release and enabling the resume feature per someone elses suggestion in one of these comment threads.

  11. hello Eric, I have cr10 v3 and the same bl touch v3.1 ho w did you connect it to you cr 10 motherboard, do you have a diagram please?

  12. Hello Eric,

    i also own that CR-10 V3 with BL-Touch V3.1.
    Currently still with stock firmware.
    Must the bootloader also be flashed before I flash your firmware?



  13. Thanks for the firmware. Just loaded the latest on my new CR-10 V3. Worked like a charm! Really greateful.

  14. Hi guys. See lot is going on here and i appreciate your work. I bouth CR-10 V3 last month (2020.11) and upgrade it with BL touch that i get from creality store. From then till now only troubles began and i have enough of it and i want to go to stock firmware (with V3 logo) so i can sold that stupid machine. Does any body have that firmware because i can not find it on web. Thank you in advance.

    • Hi,

      I wrote to Creality Support and they sent me the firmware, but I have already deleted it.

      It was the same for me.

      With the Creality BL-Touch firmware the pressure was very bad. No matter what settings I tried. I wanted to remove the BL-Touch again, but with the Marlin firmware with Eric’s configuration my CR-10 prints really well. I just had to compile the firmware myself, because I couldn’t get a connection to the printer. Baud rate is 250000 and i need 115200.
      Otherwise best a mail to the support of creality.

      Greetings Jo

      • Hi Jo,
        thank you for a replay. I will definitely send an email to Creality and ask for .hex file, but because i made my mind to sold the “thing” i would like to be stock firmware onboard. Thank you all again. Regards..

  15. Hi Eric,

    Great work. I’m a relative noob to 3D printing but I’m learning fast, I have CR-10 V3 and your 2.0.7. it works pretty well for me so far (I won’t have exercised a good deal of it yet I’m sure).

    One issue I have seen and I think I know understand what the cause is/was. I found the direct extruder at times but particularly during load/unload/change of filament would grind away at the filament and misfeed (harder filaments) or just misfeed (tpu/soft filament). I believe the feedrate settings for those operations need to be adjust to much lower values to avoid this.

    // (mm/s) Unload filament feedrate. This can be pretty fast.
    // (mm/s) Load filament feedrate. This can be pretty fast.


    • Hello Gavin,
      I made the following adjustments to the filament change values for our configuration. I can confirm these are slow enough to work with softer filaments such as TPU, lengths are adjusted as well for our direct drive extruders.
      2100 #define PAUSE_PARK_RETRACT_FEEDRATE 60 to 5
      2101 #define PAUSE_PARK_RETRACT_LENGTH 4 to 1
      2103 #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 40 to 5
      2105 #define FILAMENT_CHANGE_UNLOAD_LENGTH 435 to 100
      2112 #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 30 to 5
      2114 #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 430 to 90
      2118 #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 to 1
      2119 #define ADVANCED_PAUSE_PURGE_LENGTH 20 to 40
      2130 #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 to 5

      I also adjusted the park point (my personal preference) so the bed moved to the back with:
      1556 #define NOZZLE_PARK_POINT { (X_MIN_POS + 5), (Y_MAX_POS – 5), 10 } to { (X_MIN_POS), (Y_MIN_POS), 10 }

  16. Hi! That is great work! I will install a E3D V6 all metal hotend with a max temperature of 285ºC. Are there any “easy” tutorials on how to configure the firmware? Where did you put all the images and menus? It’s my first time compiling firmware and I don’t want to break anything. For now I want to compile it without the BL-touch. How could I start? I will use your config files, modifying them for my hotend.

    • The maximum temperatures are in Configuation.h on line 468-479. Remember to add 15c to your desired maximum, so for 285c you’d want to put 300c as your max temperature.

      The menus are all built into the firmware, I didn’t change any of that.

      The image I added is defined in _Statusscreen.h. You take a bitmap image and convert it to binary and then copy/paste that into the blob of text around line 39.

      • So, I put the files:

        in the “Marlin” folder, and add the 300c in the Configuration.h file?
        Thank you for the info and great work! Thanks to people like you, people like me may have a shot in programming haha

        • You can ignore the .gitignore folder.

          The max temperature setting is in Configuration.h on Line 471.

          You need Visual Studio Code and you’ll need to install some plugins. Start here: Once you make your configuration changes you have to compile the firmware and then upload it to your printer.

          You’ll probably also want the Version.h file as well but it’s not needed.

  17. Thank you for this excellent work that got me up and running really quickly.

    Just a very quick note, I may be unique but, for Octoprint 1.5.2 with Marlin running on a CR 10 V3 with a 2.5.2 mainboard – I needed to uncomment:

    #define SERIAL_PORT_2 1

    (and change the port from -1 to 1 as -1 is the virtual port)



  18. I noticed in your config file you had defined the bed size as 310 x 310 x 400 just wondering if there was a reason for the extra 10mm ?

  19. Hi Eric,
    I flashed my CR-10 V3 with I auto home and use move Z axis to find the z-offset point. But it doesn’t allow me to move Z below 0.00. Moving it up above 0.00 is fine. Any idea what caused this and how to overcome this limitation ?

    • Maybe try factory defaulting your printer and try again?

      Also check and see if your printer is hitting the z-stop which is preventing it from going lower.

      • I’ll try again with your suggestion. The Z limiting switch has been removed after I installed BLTouch. I was able to move Z below zero with the Creality firmware. Thanks.

  20. Hi Eric,
    I retried with your suggestion. Same phenomenon. I found on other forum this GCode “M211 S0”. I tried that and it worked. The machine is now printing happily. I wonder if I have to enter this command each time after I restart the printer, What can I do to make this permanent ?

    • That’s really weird. You’re the first to report it.

      Here is the documentation for M211:

      The docs say “Requires either MIN_SOFTWARE_ENDSTOPS or MAX_SOFTWARE_ENDSTOPS for the enable option.”

      I checked my Configuration.h file and both are enabled. Why your CR-10 defaults to M211 S1 and mine (and others) are defaulting to M211 S0? I don’t know.

      I checked my slicers GCode (IdeaMaker) and there is no M211 in there. My Octoprint is offline right now but it’s possible the command is in there.

  21. Hi! Thanks a lot for the compiled files!!! I used your in my cr-10 v3 and it works great except the power outrage feature. Except enabling in the LCD screen is there anything else i should do? Thanks!!!!

      • I found the solution. I compiled the latest Marlin bugfix2.x branch and i used the configuration files for cr-10 v2 and followed your instructions in github how to enable power loss recovery and also the stuff for the direct driver and filament sensor and it worked. i just commented some stuff about the bltouch because i don’t have one. Thanks

  22. Hey Eric! Thanks so much for the firmware, I flashed the normal non-bltouch 2.0.7 and it worked pretty well. I just upgraded to an e3d v6 and I’ve read that I need to modify settings in the firmware because of the thermistor. Is that true? I booted it up yesterday (haven’t really been able to use it since I made a mess of the splicing and am waiting on another thermistor) and heated it up to 50 and it seems to work. Not sure if 2.0.7 just has support for different kinds of thermistors or what. I’m very new to this.

    • I honestly do not know. You’re stepping outside the bounds of my experience with printers at this point. I’d recommend e-mailing E3D support and seeing what they have to say or asking on Reddit.

  23. Thanks for all this Eric,
    I’m hitting a non-starter sadly. My printer (on my 3rd V3 from amazon due to mechanical defects) didn’t come with a bootloader installed. Did yours? I have the TH3D bootloader kit and was following his wonderful tutorial, but my creality board (V2.5.2 with a 2560 chip) does not receive power and there is not a power jumper on the board that I can find. Did you run into this issue and if so do you know how to solve it?
    Thanks much!

    • Mine came with a bootloader installed and technically worked out of the box before I started working on Marlin 2.x firmware for it. I did not run into these issues so I can’t really be much help sorry.

  24. Hey Eric, thanks for the great firmware. I’ve been using it on my CR-10 V2 with the titan and bltouch upgrade. However i was wondering why the E steps/mms was set to 415? Creality themselfs say that 382.14 is recommended. And i do get better results with that setting.

    • Long story. I basically found someone on Reddit who was running into print quality issues and they said they changes their esteps to 415 and found it resulted in better prints so I just used that number.

      Someone else recently reached out to me on Reddit saying they did a calibration and came up with 441.48 using this guide:

      Do you have a source for Creality recommending 382.14?

  25. Eric,
    Thanks for pulling this together. Major improvement over the Creality CR 10V3 BL Touch Firmware. I’m new to my CR10 and BL Touch and hope you can help me fix my current issue. I run the autolevel 25pt check using my LCD, save settings or M500 in Octo terminal. I have already set my Z offset in the middle (my case is approx -2.1) and saved too. My issue arises when I’m doing large prints, think like a plate or dish. I can see in the print that the bed isn’t level as I am too close in some spots and too far in others. I thought the bed leveling would measure and account for this….did I do something wrong?

    • I actually ran into a similar problem.

      Turned out my slicer (IdeaMaker) was adding GCode that disabled mesh leveling on print. Once I removed that code I was in business. At least I think it was the silcer, it could have been OctoPrint. I’d check both locations.

      • Thanks for sending me in that direction. I found the issue in my Cura Gcode at start of file. For those out there in the same boat.

        G28 ; auto home (already in your code, and should stay, but turns off usage of autolevel mesh)
        G29 ; initiate autoleveling process (this line not needed if you don’t want to wait each print for auto leveling to happen)
        M420 S1 ; turn on use of autolevel mesh using last saved value

  26. Hello… I just received my CR10 v3 printer with the titan extruder. I had 2 or 3 good prints and now it will not print. It looks like the filament is not sticking to the bed, but on further inspection, it looks like the extruder pulls away from the bed when the print starts. I do the normal level process, so the setup is good to start, it just looks like it pulls away. Would the automatic bed levelling kit fix this problem? I am truly at a loss to figure out what is happening with my prints.

    • Unfortunately this level of troubleshooting is beyond me. I would suggest posting on the CR-10 subreddit or contacting the store you originally purchased from.

  27. Hey Eric, thanks a lot for sharing this. Much better than the Creality CR 10V3 BL Touch Firmware.
    I’m having a minor problem with the Firmware, when I try to set home offsets using M428 in the terminal the printer sends back: echo:Unknown command: “M428”
    Is this expected, maybe some option that disables the M428 command? I had no issues doing it with the original firmware.
    Thanks again for the great job!

  28. in octopi, i am not able to upload file to SD card or see files from sd card since power failure doesn’t work if it is saved in octopi

  29. Any clues on why after installing the precompiled hex, the printer shows “motion” instead of the “prepare” menu? tried off/on, hotend hot and extruder +10mm, nothing… i am missing something?

  30. Hello, testing the firmware now and it works great. Would it be possible to disable alphabetic sorting for SD cards? Normal sorting is by date, newest is on top, which is most convenient.
    Thank you!

  31. How can I update the firmware on The cr-10 V3. I have tried different usb wires and my computer still does not recognize the Cr-10. I have tried on both mac and windows. Also my Auto home has issues with the bed. Please help.

  32. Have you experienced any issues when doing the bed leveling process the probe gets to probe point 16 and fails?

  33. Hey eric thanks for the work you have done on this firmware couple of things i have noticed
    really the only main one anyhow is the stock filament load and unload is set at like 400+ mm at about 40mm/s (cant recall actual values) but ungodly high you may what to update that in your config

    found this to be more suiting and not filament chewy

    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
    #define FILAMENT_CHANGE_UNLOAD_ACCEL 20 // (mm/s^2) Lower acceleration may allow a faster feedrate.
    #define FILAMENT_CHANGE_UNLOAD_LENGTH 10 // (mm) The length of filament for a complete unload.
    // For Bowden, the full length of the tube and nozzle.
    // For direct drive, the full length of the nozzle.
    // Set to 0 for manual unloading.
    #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
    #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material.
    // 0 to disable start loading and skip to fast load only
    #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 10 // (mm/s) Load filament feedrate. This can be pretty fast.
    #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 15 // (mm/s^2) Lower acceleration may allow a faster feedrate.
    #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 20 // (mm) Load length of filament, from extruder gear to nozzle.

    The other question i had was your bl touch nozzle offset im curious how you came up with your measurement of
    44 / 7 ?

    the only reference to offset i see is in the comments and it states Probe offsets: X = 48, Y = 10

    thanks for all the work and clarifications


    • Thanks for the suggestion on the feed rate. I will look it over for the next release of the firmware. This rate might actually be controlled by my slicer for all I know which is why I don’t think I’ve run into any problems.

      My X,Y offset for my BLTouch was based on measuring with a ruler. I believe to figure out your offset you’re supposed to measure from the tip of your BLTouch to the tip of the nozzle. So in my case my nozzle is 48mm to the left of the nozzle 7mm forward if you’re looking at the front of the printer.

      Check out this article, it’s not what I used but I think it explains it:

      Do a CTRL-F for “3) Set a Nozzle to Probe Offset” to find the section you’re looking for.

      Please let me know if I did mine wrong :)

  34. Hey Eric,

    Will this firmware work if I have a CR-Touch instead of BL Touch?

    I purchased a CR-10 V3 with e3d direct drive as well installed CR-touch cuz people say its better than BL touch but now im finding very limited support on CR-touch and kinda regret it. Even the Cr-10 V3 has very limited outdated support from creality.

  35. I honestly do not know. You could always try the firmware and report back. I suspected the CR Touch is just a re-branded BL Touch but I could be wrong.

    • Tried it, so far so good. Made a few simple prints but my nozzle scratchd a tiny piece of the bed, either the bed became out of calibration or the CR-touch is just bad. Keep you posted.

  36. bonjour je vient vers vous car jai une cr10v3 et j’ai un message qui s’affiche a l’écran : heating failed PRINTER HALTED please reset . jai changer ma sonde de température mais rien ne fonctionne et quand jallume l’imprimante la buse es toujour a 130 ° et le plateau a 36 °. pouvez vous maider a reparer ceci . merci beaucoup .

  37. Thanks for this, saved me so much effort working out how to compile marlin, just upgraded to the cr 10 v3 from a prusa i3 clone.

  38. Hi Eric,
    First at all, sorry for my english.
    I try your FW today and I have small problem –
    speed and accelaration of homing moves. Carriage hit the endstop really fast. Is there any option how to slow down it?
    Thanks for your time.

  39. Eric,

    I just wanted to write a quick note of thanks for the work you put into this and for maintaining it. I updated my CR-10 V3 from 1.1.6 to in under 20 minutes last night. I’ll also be throwing a few quid in your tip jar, so hopefully you can get yourself a pint or two.

    Thanks again,


  40. Hi Eric!
    Today i tried to upgrade my CR-10 V3 (with BLTouch) and installed the new BigTreeTech SKR E3 Mini v3 ( but BigTreeTech only serves sample config files for the CR-10. So i had to compile Marlin by myself. The example files are not fully tested i guess… so i had to edit and activate some settings but there are bugs after all…

    I would like to use your config files – this should work, right? Maybe i have to merge some special stuff for my board into your files but it should work….?

    I tried the whole day to get the upgrade finished and now i’m not sure if i get anything wrong. So i would be happy if someone could help :)

  41. Thank you so much for the firmware. I installed it last night and it is so much better than the stock Creality has. I am using the CR Touch and it works perfect. It came with a metal bracket that fits perfect. I have mine set to (X45.00 Y0.00 Z-1.05).
    I have noticed the motors seem a bit louder with your firmware than the stock one. Its not crazy, but with the silent fan mod, they are more noticeable.
    Is there a way via Gcode to throttle them down a bit? I remember it can be done via the configs, but have thus far not been able to get to tweaking firmware.
    I would also like to change the number of points the bed level hits to seven, but do not believe it can be done via Gcode. I know that seems extreme, but a couple extra minutes for more complete leveling is worth it.
    Again, thank you.

  42. I want to update from marlin 1.1.6 to 2.0.9 firmware on my Creality CR 10 V3

    #Define LCD_Bed_Leveling line disappears after I configure for Cr 10 V3

    #if ENABLED(LCD_BED_LEVELING) section is still showing up

    Any ideas why this is happening or does the CR 10 V3 automatically enable LCD Bed Leveling?

    • Are you using my firmware or trying to configure your own? I don’t know what this feature is to be honest but checking my firmware I have this:

      * Add a bed leveling sub-menu for ABL or MBL.
      * Include a guided procedure if manual probing is enabled.
      #define LCD_BED_LEVELING

      #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
      #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
      #define MESH_EDIT_MENU // Add a menu to edit mesh points

      • I looked at your firmware but I didn’t find 2.0.9 without BL touch. As I don’t have BL touch installed, I downloaded the firmware from both Marlin website and from GitHub and have the same issue with both
        My issue is I can’t find where to enable LCD_Bed_Leveling when I don’t have BL Touch

        The line: #define LCD_Bed_Leveling shows up just above the following paragragh, before I configure for CR 10 V3 printer. After I do the configuration, that line has disappeared
        Thanks for your quick reply

        #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
        #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
        #define MESH_EDIT_MENU // Add a menu to edit mesh points

        • If you check here you can see all the releases I do:

          I must have skipped 2.0.9 but there is a, and avalible.

          If you install the “without BL touch” versions then this won’t be true: #if ENABLED(CR10V3_BLTOUCH)

          and if that isn’t true then #define LCD_BED_LEVELING gets disabled.

          I do not know much about the CR Touch but I don’t see any specific mention of it in the Marlin firmware so they might just be treating it as a BL Touch in which case my BL Touch firmware should work for you.

          • I’m not able to find the file when I check out your link for a non BL touch firmware. Could you please send me a direct link to that file

            I would like to set up the firmware to run Mesh Bed Leveling and probe bed manually
            How do I define LCD_Bed_Leveling for Mesh Bed Leveling when that statement disappears when I configure for Creality CR 10 V3
            Before I configure for Creality CR 10 V3, that line is after the #Endif statement for the BL Touch and before #if ENABLED(LCD_BED_LEVELING) statement
            Or do I not need that statement since the BL Touch is not enabled?
            Thanks for your quick replies and help, it is greatly appreciated

  43. Its interesting that when I run a G29 from OctoPrint it is doing a 5×5 level.
    The CR Touch uses all the same settings as the BL Touch; it is a direct replacement with no special settings or firmware.
    I wish creality posted the config files for their firmware so we could compare what is different that makes the motors a little louder now. I did the silent fan mod and the motors are now the loudest part of the print.

  44. Hi, I’m about to try your firmware ( because I don’t have Bltouch).
    Do it has the mesh bed leveling active? That option on screen for bed level that has 4 (or more) defined points to do a manual level without the need of using the move axis option that takes a lot of time and that is one of the main reasons that I want to change the FW.

    Btw besides the Bltouch what were the improvments that you notice with this FW that you made?

    Thanks for your work.

  45. Thanks for the info
    I got to work, that I downloaded from the Marlin site
    My mistake was that I forgot to capitalize the Define LCD_BED_LEVELING line
    After I did that, all works perfectly
    Thanks for your input

  46. Hello Eric, thank you for your work and for keeping with the latest versions of marlin.
    I am going to say outright, I am a 3D printing noob, cr10 v3 is my first printer and is giving me a headache with my first layer (Maybe its a badly warped bed), thats why i decided to use your version of firmware to fix this issue with UBL and other leveling options(tramming).
    The problem still occurs and i think my bed is so badly warped i would need more probing points and mess around with the mesh more, could you please give me the basics on how to compile the code, which ide to use and what settings, I should be able to figure out how to alter your code to do this.

    Thanks again!

  47. Hi,

    I am sorry for the dumb question. How do you determine which baud file is needed by the printer/octoprint?
    I got a CR10 V3 and I want to flash the firmware. Is this based on the mainboard version? Octoprint settings? Something else?


    • In all honestly, try and find out. 250000 baud should work fine. If you find that it doesn’t switch to 115200 baud.

      I only did the slower version because someone requested it for a super long USB cable that was dropping data at the faster speed.

  48. Hi Eric, thank you for the great work:-) I had a strange additional pause after each layer change with Marlin 2-based firmware (including yours) on my CR-10 V3. The pause leaves a blob each layer and causes stringing. It only starts from the 3rd layer (nice first 2 layers, stop at z-change, big blob, and then on). I tried to tune the firmware settings quite a bit already but could not get it work. I am wondering if you know how to deal with this.

    Video of printing with Marlin2 firmware: You can hear the printer pauses briefly when it starts at the bottom left pole.

    The same printer printing the exactly same gcode file with the stock firmware (the one which says CR-10 V2): The movement is the same across all four poles.

  49. hello eric. I also added bl touch to my own printer. but I couldn’t get it to work. I searched a lot but couldn’t solve the problem. can you please help me? my printer is cr 10 v3. I would like to send a video but let me tell you. I updated the bl touch installation software. (I’m not sure if I updated it correctly) When I auto home, the toch light turns red when it touches the ground, but it continues to press down. melp me please. my email adress: [email protected]

  50. Hi Eric,

    really nice work. I try to update your configuration by adding the open/unused pins of the board to control a chamber -heater (HEAT2), -fan(FAN2), – temp(TH2) and -vent(D12).
    How can I activate this? I could not find the pin-table anymore, but I must say, last time compiling marlin was 10 years ago.
    Also the three free pins more for the MAX stops creality don’t use.
    Maybe you can give me a “hint with a post” how to include these pins.


  51. Hi !
    First of all : a great thanks for your work !

    I just tried some marlin firmwares from your GitHub but i can’t upload any of them : “upload failed” with xLoader.

    I have a CR10-v3 with BLtouch, i tried many firmwares (from to 2.1.1, BLtouch version, 115200 and 250000 but always the same result : upload failed)

    I tested to flash the original firmware from Creality with xLoader and upload works…

    I think i do the things the right way.. Can you help me please ?

    Thanks !

  52. is it possible to have the config tell what side the probe is on i recently got a micro Swiss ng revo and the probe is on the left side of the hot-end instead of the stock right side, if so how?

  53. Hello I need your assistance with your firmware for non-bl touch. How do I program the Z axis to Home properly because it doesn’t and it’s just going up every time I try to home it.


Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.