Shipping Lead time: 4-7 weeks
Shipping Lead time: 4-7 weeks
The KAY3D Cheetah 5.0 Firmware is designed to be edited in less than 5 minutes. If you are an owner of a KAY3D CoreXY machine, you can download firmware.bin files here.
The current Cheetah 5.0 firmware version is 1.4.1
The objective of this tutorial is to help you load up Cheetah 5 onto Visual Studio and allow you to change different the parameters and values easily. After which, you will learn how to locate the firmware.bin file which will be ultimately used to flash your compatible board.
For a list of compatible boards, machines and features, please visit the home page Cheetah 5.0.
This guide will based on Platform IDE for VSCode and it's build on top of Microsoft's Visual Studio Code. If you don't have the platform installed, here's a great and simple link showing you what you need to download:
For most parts of the tutorial, you will learn how to select and define something by removing // from the code. For example, if there's a line of code that looks like this:
//#define Auto_bed_level
And you do have an auto bed levelling sensor installed, you will want to define this code. You can do that by removing // from the code so your code will look like this instead: #define Auto_bed_level and the text will also light up on the compiler; indicating it's now active. But if you don't have a sensor installed, it'll remain green/ grey, indicating it's not active.
If you want to hide a code instead, you can do the reverse; just add // to the front of it!
Once you're ready, let's get you started!
Prefer a full video walk-through instead?
1) Download Cheetah 5.0 using the button below.
Prefer to download from Github? You can download it here:
2) Next, locate it in your downloads folder. It may be called Marlin-2.0.x Cheetah 5.0 instead. (Note: Cheetah 5.0 is built on Marlin 2.0.5)
4) Once downloaded, unzip it.
5) Your new unzipped folder may not be in the same directory. Be sure to remember which directory it is in. We need it in the next step.
6) Open up Visual Studio Code and click File -> Open Folder ...
7) This is where most people get confused so please be sure to follow accordingly. Navigate to the same folder that you unzipped earlier on until you see these files. Then click Select Folder.
8) VS code will take a few seconds to open up all the files required and you will see the Marlin Folder on the left. Click on it and it will reveal all the files that you need in the next section.
8) Double click these three files: Configuration.h, Configuration_adv.h and platoformio.ini to open them as tabs on the right hand side of the window.
9) There are a total of 14 different sections and we'll go through them together. If you ever get lost, reach out for Crt + F ( Windows ) and Cmd + F (Mac) and search for "Section X" where X is the section that you got lost at etc.
10) We'll start with Section 1. Look for SET UP Wizard in your Configuration.h file. You'll choose and define your motherboard by removing the // in front of them. Click here for a list of integrated motherboards
In this image, we chose BigTreeTech's SKR Mini E3 v1.2 Board by removing // from //#define BTTSKRE3MINIV1_2. If you read below, you now have to copy "STM32F103RC_btt_512K" and proceed to platformio.ini.
This value will change from time to time. Always copy what you see in the codes.
Look for "change_value" in the platformio.ini that you opened up earlier.
Replace "change_value" with what you copied. Since you chose BTT SKR Mini E3 v1.2 as your board, you will paste what you copied: STM32F103RC_bigtree_512K
This value will change from time to time. Always copy what you see in the codes.
11) Now head back to Configuration.h and choose your LCD connection type. Choose CR10_STOCKDISPLAY if you have a stock SKR Mini E3 board. Many users have reported that BTT TFT screens work natively with this option selected.
If you have other types of main board like the SKR 1.4, you may have to enable RERAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER if you want to take advantage of your TFT screens.
Now scroll down to Section 2. Choose your drivers. If you have the BTT SKR Mini E3 v1.2, you may have all TMC2208 or TMC2209. If you have the SKR 1.3, please define your own drivers. Drivers requiring SPI pins may require additional work*. Drivers not requiring SPI pins to drive should work natively.
In our example, we have the E3 Mini so we have all our drivers set as TMC2209
12) Moving on, we choose our machine type. If your machine is not supported here but would love to use Cheetah 5.0, you can input your custom machine parameters here under Custom_printer. In our case, choosing Creality's Ender 3 is just a 1 second job. You can remove // from //#define Ender_3. It's really that simple!
P.S. If you have the Ender 3 Pro, you can also select Ender 3
13) On to Section 4 and 5 , you can leave them as default unless you have more than 1 extruder and you're using filament that is not 1.75mm.
14) In Section 6, choose your extruder type. We have the usual Creality style extruder with a single sided hobbed gear. If you have the BMG type, please choose the correct one. The e-steps are mentioned for your reference.
If you have an extruder that is not available as a selection, remove // from #define custom_extruder and replace 'change_value' with your desired e-steps.
15) Section 7 time! Choose your hotend. We've taken care of the thermistor settings for you. All you have to do is choose what you're using and you're set! Have a custom hotend instead? You can see it yourself under the Custom_hotend section and remember to remove // from //#define Custom_hotend
16) As for your heated bed in Section 8, you'll like to do the same. Most heated beds are using thermistors classified as 100k thermistor - best choice for EPCOS 100k (4.7k pullup). If you are using that, choose Creality_e3 as an option. If you have something else, choose Custom_heatedbed instead and enter your own thermistor values. For a full reference on the type of thermistor to use, crt + F and look for "Temperature sensors available" within configuration.h
17) Section 9A - If you have an auto bed levelling sensor installed, you need to remove // from //#define Auto_bed_level. Please do not enable section 9B if this is enabled.
Section 9B - If you don't have an auto bed levelling sensor installed and want to enable Manual Mesh bed levelling, you need to remove the // from //#define Maual_mesh_bed_level. Please do not enable section 9A if this is enabled.
In Section 10, if you have KAY3D's KAVA sensor, you want to define that by removing //from #define FIX_MOUNTED_PROBE
----------------------------------
//#define BLTOUCH_v3_v3_1
//#define BLTOUCH
#define FIX_MOUNTED_PROBE
----------------------------------
However, if you have a BLtouch v3 or v3.1, you need to define both of them by removing the // comments:
----------------------------------
#define BLTOUCH_v3_v3_1
#define BLTOUCH
//#define FIX_MOUNTED_PROBE
----------------------------------
If you have the regular BLtouch, then just remove // from #define BLTOUCH will do.
----------------------------------
//#define BLTOUCH_v3_v3_1
#define BLTOUCH
//#define FIX_MOUNTED_PROBE
----------------------------------
Please ensure that your auto bed levelling sensors are mounted and connected to the board correctly.
You can view wiring diagrams of the KAVA sensor here.
18) In Section 11A, you can change the settings of your auto bed levelling and manual mesh levelling probe count. Change GRID_MAX_POINTS_X 4 into something else like 3 if you want to probe a 3x3 grid (total 9 points) or 5 if you want to probe 5x5 (total 25 points). We recommend a 4x4 grid.
If you're getting inaccurate bed levelling results, you can also increase the number of probes by changing MULITPLE_PROBING and increase the default of 2 to 3 etc.
Another option to increase probing accuracies during auto bed levelling is to turn off your heaters. You can do that by removing // from PROBING_HEATERS_OFF to activate this feature.
In Section 11B, if you have an auto bed levelling sensor, you can control how near the sensor probes on the edge of the bed through MIN_PROBE_EDGE. We recommend a safe value like 10-20. The less the value, the more likely your sensor will probe too near the edge of the bed or have nothing to probe at all.
in Section 11C, if you have activated Maual_mesh_bed_level, you can choose the distance the nozzle probes from the edge of the bed. We recommend a safe value of 10-20
19) Section 12 only applies if you have an auto bed levelling sensor. Manual mesh bed leveling does not count.
We're going to tell Marlin how far our probe is away from the nozzle. If you have an Ender 3, choose one of your installed ducts by uncommenting on it. In this case, we've selected the Herome_fanduct_40105015 which represents us using the Hero me fan duct with a single 4010/5015 fan. If you've got the dual fan one, choose the _dual5015 option instead. You can also find the duct representation on thingiverse via the thing: number in the comments section of the line of code.
If you don't have an Ender 3 or your mount is not included, you can define your own offsets by uncommenting #define Custom_ABL_mount and then, #define NOZZLE_TO_PROBE_OFFSET and set your values by changing 'change_value'. { change_value, change_value, 0 } = ( x offset value, y offset value, z offset value )
You can either use offset values provided by the designers who created your fan duct, or manually measure them using a pair of calipers. (Measure the probe point with reference to the nozzle)
20) In section 13A, you get to choose if you want a cool feature. This cool feature actually allows you to change filament in the middle of a print! To activate it, please uncomment #define ADVANCED_PAUSE_FEATURE. You do not need to have a filament sensor to use this cool feature.
Now once this activated, you'll automatically have new menu items:
a) You can now have the option to change pause print to change filament
b) You can now tell Marlin to load your filament for you without being in the middle of a print. You just need to load filament into extruder
c) You can now tell Marlin to unload your filament without being in the middle of a print
You will also observe that your parked nozzle will be at top/front left of the bed.
An image below shows the default parked position of the nozzle on an Ender 3. Image is a screen grab from teaching tech's youtube channel
If you don't like that parked position and prefer top/front right of the bed, just uncomment #define Nozzle_topright_park and the firmware will automatically configure the settings for you
In order for such automation, you will also need to tell Cheetah 5.0 your values.
Measure the estimate distance in mm (millimetres) between your extruder's position and the hotend's nozzle and replace it with change_value.
Measure between the two yellow arrows;
Top yellow arrow, measure from the point that your filament is already engaged by the extruder gears all the way to the tip of your nozzle. We know it is difficult to get a precise value and you don't have to. An estimate is good enough.
For example, if your measured value between the 2 arrows including the bowden tube is 240mm, you will add 10mm just to be safe. Your change_value in this case will be 250.
If you have a direct drive, please do the same; except you don't have a bowden tube. You total length may only be 25mm +10mm. Therefore your change_value may only be 35.
For example, since we'll like to use this feature, we'll enable ADVANCED_PAUSE_FEATURE. And since we prefer to have it parked on the left by default, we can disregard the setting.
Since our previously calculated distance is 250mm (240+10), we replace change_value with 250.
21) Now moving on is another handy feature to have on 3D printers. If you have a filament sensor, you will have to enable it in this step. If you don't have one, you can skip this section entirely
To activate Filament sensor, just remove the comments off #define FILAMENT_RUNOUT_SENSOR
And if your filament sensor ever fails to work because it's not triggering, you can always invert the logic of it by enabling INVERT_FS_LOGIC :)
Please ensure that your filament sensor is connected to the board correctly.
You can use this guide here as a reference to connect your filament sensors.
If you cannot find a guide for your board, we recommend searching for "Your motherboard name + FIL_RUNOUT_PIN" online. That should give you a clue on where to connect your Filament sensors' wires.
22) In Section 14, you will discover some of the settings that your printer has.
We included a function //#define INVERT_XYZ. When enabled, it can automatically invert all three of your Axis(s), X, Y & Z together. You will use this function when you realise that all 3 Axis (s) are going in the wrong way. This usually affects BTT SKR E3 DIPs and some older Boards. Please do not enable if you don't have an issue with inverted Axis(s).
An equally important setting here is the INVERT_E0_DIR true. If your extruder ever turns in the wrong direction, all you have to do is flip the value to false and reflash your board. (Remember that it's case sensitive. The firmware strictly only accepts true and false. True and False will not work)
As for the other settings, you can leave them as default or tweak them if you like!
You can see that S_CURVE_ACCELERATION has been enabled for you. If you want to switch it off, just add // to it.
23) Now that you're done with section 14, we'll move on to the last one. You will find the last section in configuration_adv.h
Finally! Section 15 has all that you need activated. You can see that we also activated Linear advance for you. However, a value of 0 doesn't do anything. You will have to perform Linear Advance calibration before you can truly benefit from it. We've left a handy Linear Advance 1.5 guide specifically for Marlin 2.0 in the facebook support group.
24) If you made it this far, congratulations! All you have to do now is press the little tick/ checkmark icon at the bottom left of VS code.
If you encounter any errors, please double check if you've defined the items correctly by going through the steps. If you still cannot fix it, look for troubleshooting steps at the bottom of this guide. Whatever happens, the community at KAY3D would love to help you out, if you reach out. Please feel free to connect with us in two ways.
KAY3D Labs Support Group
KAY3D Labs Discord Channel
If there are no errors, you should get green line below telling you that 1 has succeeded.
25) Now before we can transfer this firmware onto your board, we need to located the firmware.bin file. Navigate to the Marlin folder you unzipped earlier on and locate the '.pio' folder. Click into it.
26) Then click into the 'build' folder
27) Click on on your processor name. 'LPC1768'. This is the name of the Microcontroller used on the SKR 1.3. Your folder's name may be different depending on the type of microcontroller used on your board
28) Locate firmware.bin file and place it in the root of your SD card
29) Insert the SD card into the SD card slot, turn on the machine and your LCD screen should be completely blank. It should only have a lit backlight for the default screen. It will be blank for the next 7-15 seconds.
If you see the KAY3D Cheetah logo on boot up, congratulations. Flashing is partially complete. If you don't, a graphical bootscreen file may be missing, or you simply turned off the option to display bootscreen.
Check your printer by moving it up, down, left & right via your LCD. Check your Auto Home function as well to make sure it's homing in the right direction etc. Once the printer moves correctly, you can continue below.
To complete the flashing, remove your SD card from the card slot and insert it back into your computer. Navigate to the root folder again to ensure that the file firmware.bin is no longer there. Instead, you will find the firmware.cur file present.
If you saw the KAY3D cheetah logo earlier on on boot up but cannot find firmware.cur file, delete the firmware.bin file. This is a known bug from BigTreeTech where the firmware.bin file does not automatically become firmware.cur after flashing. Do not worry as your firmware flashing has already been completed.
Bonus:
If your firmware never, ever gets to work, please reach out. If you were told to add custom codes to your firmware and don't have the slightest clue on where to add them, you can put them in this section!
Troubleshooting:
If you cannot compile the codes and you're not sure if it's your codes or VS code, download a fresh copy of Cheetah 5.0. At the top, look for kay3d_debuggingmode and define it. Head over to platformio.ini and replace change_value with STM32F103RC_btt_512K (use the values found in the firmware as this value changes all the time)
Once debuggingmode is enabled, it will automatically allow the compiler to choose preset configurations to compile. If that doesn't work, your VS code probably needs some updating.
Here's a video about Cheetah 5.0's kay3d_debuggingmode in action:
If you get the error regarding squiggles, please download a fresh copy of Cheetah 5.0 and unzip the file into the root C: (or equivalent) folder of your computer and work from that folder via VS Code. This error happens because the path is longer than 260 characters and sometimes, windows doesn't like that. Thank you Corey from Ohio, USA for highlighting that to us on our discord channel.
Here are a few common errors that you many also get during your editing & compiling process. You can view the FAQ here: