# Initial Startup Checks\[Nov/28]

点击查看需要覆盖的点击查看※Verify Temperature

Start by verifying that temperatures are being properly reported. Navigate to the Mainsail temperature graph.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FNSuonROsjgmEgv0M3qXQ%2F%E6%AD%A3%E7%A1%AE%E8%BF%9B%E5%85%A5%E9%A1%B5%E9%9D%A2.png?alt=media&#x26;token=fc0507f3-5b59-47df-bca2-e8c4ed022f50" alt=""><figcaption></figcaption></figure>

Verify that the nozzle and bed temperatures are displaying correctly and are not increasing. If the temperatures continue to rise, disconnect the printer from power. If the temperatures are inaccurate, the issue may be due to wiring or hardware faults.

### ※Verify heaters <a href="#verify-heaters" id="verify-heaters"></a>

Navigate to the temperature graph and type in 50 followed by enter in the “Tool” temperature target field. The extruder temperature in the graph should start to increase (within about 10 seconds or so). Then go to the “Tool” temperature drop-down box and select “Off”. After several minutes the temperature should start to return to its initial room temperature value. If the temperature does not increase, Please check the wiring.

{% hint style="danger" %}
**Nozzle Preload and Filament Leakage Notice**

During the initial setup of your Rapido 2.0 hotend, please be aware that some nozzles may have insufficient preload, which can cause filament leakage during printing. To prevent this, it is recommended to retighten the nozzle after the first heating of the hotend.

The kit includes two nozzles: a 0.4mm copper-plated (silver) nozzle and a pre-installed 0.6mm hardened steel nozzle. Ensure that you configure the correct nozzle diameter in both the printer.cfg file and your slicing software. Incorrect settings may result in under-extrusion or over-extrusion.
{% endhint %}

Perform the above steps again with the bed.

### ※Check Motor Operation

To verify that each stepper motor is operating correctly, send the following command in the terminal:

`STEPPER_BUZZ STEPPER=stepper_x`

The STEPPER\_BUZZ command will cause the given stepper to move one millimeter in a positive direction and then it will return to its starting position. It will perform this oscillation ten times. we will verify direction again later, ideally all motors will be running correctly at the end of this test. See the list below for the expected motion for each command.

Note, if you have trouble seeing what direction a motor is rotating, try adding a small sharpy mark on the pulley. clockwise and counterclockwise are from the top down view looking at the X and Y motors.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FWoHI2NAkvdzCnfu8C012%2F%E4%B8%89%E5%8F%89%E6%88%9F%E7%94%B5%E6%9C%BA%E7%A4%BA%E6%84%8F.jpg?alt=media&#x26;token=b374bac1-53a4-451a-b811-34ecd1b74f05" alt=""><figcaption></figcaption></figure>

Run this command for each of the motors:

<table><thead><tr><th width="165"></th><th></th></tr></thead><tbody><tr><td>stepper_x</td><td>The motor will rotate counterclockwise first, then back clockwise.</td></tr><tr><td>stepper_y</td><td>The motor will rotate counterclockwise first, then back clockwise.</td></tr><tr><td>stepper_x1</td><td>The motor will rotate counterclockwise first, then back clockwise.</td></tr><tr><td>stepper_y1</td><td>The motor will rotate counterclockwise first, then back clockwise.</td></tr><tr><td>stepper_z</td><td>The front left corner of the bed moves down, then back up.</td></tr><tr><td>stepper_z1</td><td>The back of the bed moves down, then back up.</td></tr><tr><td>stepper_z2</td><td>The front right corner of the bed moves down, then back up.</td></tr><tr><td>extruder</td><td>Movement: Direction will be tested later.</td></tr></tbody></table>

If the specified motor is not turning, please check the wiring and ensure that it is connected to the correct port.

### ※XY Endstop Check <a href="#endstop-check" id="endstop-check"></a>

Make sure that none of the X, Y endstops are being pressed. Then send a `QUERY_ENDSTOPS` command. The terminal window should respond with the following:

```
Send: QUERY_ENDSTOPS
Recv: x:open y:open z:triggered
```

If any of them say “triggered” instead of “open”, double-check to make sure none of them are pressed. Next, manually press the X endstop switch, send the `QUERY_ENDSTOPS` command again, and make sure that the X endstop says “triggered and the Y s stay open. Repeat with the Y  endstops.

If it is found that one of the endstops has inverted logic (i.e. it reads as “open” when it is pressed and “triggered” when not pressed), Check if the Endstop is properly installed, the cables are secure and not damaged, and if they are connected to the correct port.

### ※XY Homing Check <a href="#xy-homing-check" id="xy-homing-check"></a>

At this point everything is ready to home X and Y.

**Important:** You need to be able to quickly stop the printer in case something goes wrong (e.g. the tool head goes the wrong direction). There are a few ways of doing this:

1. There is a red emergency stop icon in the lower left corner of the display. Click on it to see what happens—Klipper should shut down, but the Raspberry Pi and Mainsail should remain running, although disconnected from Klipper. Press "Connect" in the upper left corner of Mainsail, then send a `FIRMWARE_RESTART` command in the Mainsail terminal window to reboot the printer and get it running again.
2. Have a computer right next to the printer with the `RESTART` or `M112` command already in the terminal command line in Mainsail. When you start homing the printer, if it goes in the wrong direction, quickly send the restart command and it will stop the printer.
3. As a “nuclear” option, power off the printer with the power switch if something goes wrong. This is not ideal because it may corrupt the files on the SD card and to recover would require reinstalling everything from scratch.

Once you have a testing procedure for stopping the printer in case of an issue, you can proceed to test the X and Y movements. Note: You need to test both X and Y to accurately determine what adjustments are necessary. First, send a `G28 Y` command. This will home the Y-axis only: the tool head should move to the back of the printer until it hits the Y endstop. Next, test the X-axis by sending a `G28 X` command; the tool head should move to the right.

{% hint style="info" %}
**Why move the Y-axis before the X-axis?**\
Due to the AWD structure, the platform loses a portion of the area at the front on both sides. If the tool head home  while near the front, it may collide with the motor.

**Not moving in the expected direction?**&#x20;

Check that the XY motor cable and extension cable wire sequence are consistent, check that the extension cable is plugged into the port of the MANTA M8P and that the wire sequence is in the same order as shown in the wiring diagram, if not, adjust the wire sequence.

**Not only is it not moving in the expected direction, but it is also making a strong noise and shaking?**&#x20;

Repeat the Check Motor Operation procedure to ensure that all motors are turning in the direction shown in the documentation.
{% endhint %}

### ※Check Fan

{% hint style="warning" %}
Note: If you are from the first batch of pre-sales or if your shipment was before August 29, 2024, please update your configuration. Copy the following settings and overwrite the existing fan configuration in `printer.cfg` before testing.
{% endhint %}

<details>

<summary>Click to see the configurations that need to be overridden</summary>

```
#####################################################################
##                  Fans
#####################################################################

[heater_fan hotend_fan]          # Hotend fan
pin: EBBCan:gpio14               # Hotend fan pin
heater: extruder                 # Associated heating device
heater_temp: 50.0                # Temperature to start the fan
cycle_time: 0.01                 # Cycle time

#--------------------------------------------------------------------

[heater_fan Skirt_fan]            # Skirt fan 
pin: PF9                         # FAN-2
cycle_time: 0.00003              # Cycle time
shutdown_speed: 0.0              # Closing speed (Please do not change)
kick_start_time: 0.5             # start-up time (Please do not change)
heater: heater_bed               # Related equipment: heater_bed
heater_temp: 50                  # How many degrees does the heat bed reach to activate the fan
fan_speed: 0.5                   # Fan speed

#--------------------------------------------------------------------

[controller_fan driver_fan]      # Driver cooling fan
pin: PF8                         # Fan pin 
cycle_time: 0.01                 # Cycle time
max_power: 1.0                   # Maximum power
shutdown_speed: 0.0              # Shutdown speed
fan_speed: 0.8                   # Fan speed when heater or stepper driver is active (0.0 to 1.0). Default is 1.0.
idle_timeout: 90                 # Time in seconds to keep the fan running after the stepper driver or heater is no longer active. Default is 30 seconds.
idle_speed: 0.4                  # Fan speed after the stepper driver is no longer active and before idle_timeout is reached (0.0 to 1.0). Default is fan_speed.
stepper: stepper_x               # Active motors
#Define the name of the heater/stepper configuration section associated with this fan. 
#If a comma-separated list of heater/stepper names is provided here, the fan will be enabled when any of the given heaters/steppers are enabled.
#The default heater is "extruder", and the default stepper is all steppers.

#--------------------------------------------------------------------

#Note: The following FAN0/FAN1/FAN2 settings are only applicable when using OrcaSlicer,
#as only OrcaSlicer allows for the additional configuration of parts cooling fans and filter fans. 
#If you use other slicing software, please comment out the following configurations.
# instead of using [fan], we define the default part cooling fan with [fan_generic] here
# this is the default part cooling fan

[fan_generic fan0]               # 5015 Part cooling Blower 
pin: EBBCan:gpio13               # Fan pin 
cycle_time: 0.01                 # Cycle time
hardware_pwm: false              # hardware pwm

#--------------------------------------------------------------------

[fan_generic fan2]               # 12032 Auxiliary Part cooling Blower 
pin: PA0                         # Fan pin
cycle_time: 0.00003              # Cycle time
hardware_pwm: false              # hardware pwm
kick_start_time: 0.5             # start-up time (Please do not change)

#--------------------------------------------------------------------

[fan_generic fan3]               # Fume_Pack Exhaust Fan
pin: PF7                         # Fan pin     
cycle_time: 0.01                 # Cycle time
hardware_pwm: false               # hardware pwm
kick_start_time: 0.5             # start-up time (Please do not change)

#--------------------------------------------------------------------
[gcode_macro M106]
gcode:
    {% set fan = 'fan' + (params.P|int if params.P is defined else 0)|string %}
    {% set speed = (params.S|float / 255 if params.S is defined else 1.0) %}
    SET_FAN_SPEED FAN={fan} SPEED={speed}
```

</details>

To add the following code to the `CANCEL_PRINT` and `PRINT_END` macros to turn off specific fans when the print is canceled or ends, you can update your `printer.cfg` file as follows:

```ini
[gcode_macro CANCEL_PRINT]
gcode:
    # Your other code...
    SET_FAN_SPEED FAN=fan0 SPEED=0
    SET_FAN_SPEED FAN=fan2 SPEED=0
    SET_FAN_SPEED FAN=fan3 SPEED=0
    # Your other code...

[gcode_macro PRINT_END]
gcode:
    # Your other code...
    SET_FAN_SPEED FAN=fan0 SPEED=0
    SET_FAN_SPEED FAN=fan2 SPEED=0
    SET_FAN_SPEED FAN=fan3 SPEED=0
    # Your other code...
```

This will ensure that `fan0`, `fan2`, and `fan3` are turned off when a print is canceled or ends. Make sure to integrate these commands with the existing logic in your macros.

Identify all the fans inside the machine and check if the configured pins match the actual ones.

<table><thead><tr><th width="213">Name</th><th width="137">Specifications</th><th width="111">PIN</th><th>Startup method</th></tr></thead><tbody><tr><td>Hotend_fan</td><td>4010 FAN</td><td>EbbCan：gpio14</td><td>Hotend＞50℃</td></tr><tr><td>Controller_fan</td><td>6020 FAN ×2</td><td>PF9</td><td>Heatbed＞50℃</td></tr><tr><td>Driver_fan</td><td>4010 FAN ×2</td><td>PF8</td><td>Stepper_x Starts</td></tr><tr><td>Fan1 （part cooling fan）</td><td>5015 Blower fan</td><td>EbbCan：gpio13</td><td>Manually or in slicing software</td></tr><tr><td>Fan2 （Auxiliary part cooling fan）</td><td>12032 Blower fan</td><td>PA0</td><td>Manually or in slicing software</td></tr><tr><td>Fan3（Fume_Pack）</td><td>5015 Blower fan ×2</td><td>PF7</td><td>Manually or in slicing software</td></tr></tbody></table>

{% hint style="warning" %}
In the first batch of kits, the Driver\_fan's wiring might be too short to reach the PF8 pin. You can move it to the PA4 fan port on the right and update the PF8 configuration in `printer.cfg` to PA4.(Don't forget to plug in the 24V jumper.)
{% endhint %}

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FNvXmNtZPGyAWOeskIQ7o%2F%E4%B8%89%E5%8F%89%E6%88%9F%E9%A3%8E%E6%89%87%E7%A4%BA%E6%84%8F.jpg?alt=media&#x26;token=e08cf46b-1ee1-4848-9a45-ca3461962a77" alt=""><figcaption><p>Fan position diagram</p></figcaption></figure>

**Check** **Hotend\_fan**

Heat the hotend to above 50°C and check if the Hotend\_fan is rotating correctly. When you stop heating and the temperature drops below 50°C, the fan will automatically turn off.&#x20;

**Check** **Controller\_fan**

Heat the heated bed to above 50°C and check if the Controller\_fan starts rotating. When you stop heating and the temperature drops below 50°C, the fan will automatically turn off.&#x20;

**Check** **Driver\_fan**

Send the `G28 X` command, and after the X Stepper starts, observe if the Driver\_fan begins to rotate. After turning off the motor using the `M84` command, the fan will continue to run for 90 seconds before stopping.&#x20;

**Check** **Other fan**

The Part cooling Blower, Auxiliary Part cooling Blower, and Fume\_Pack can be directly controlled in Miscellaneous for on/off and speed settings. We will also configure them in the slicing software so that they can be activated when necessary.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FWLeVrbjf0D3x82vRVxQS%2F%E9%A3%8E%E6%89%87%E5%BC%80%E5%90%AF%E7%A4%BA%E6%84%8F%E5%9B%BE.png.jpg?alt=media&#x26;token=8097e748-df5b-44b5-8200-46f5002553f1" alt=""><figcaption></figcaption></figure>

### ※PID Tune Heated Bed <a href="#pid-tune-heated-bed" id="pid-tune-heated-bed"></a>

Move nozzle to the center of the bed and approximately 5-10mm above the bed surface, then run:

`PID_CALIBRATE HEATER=heater_bed TARGET=100`

It will perform a PID calibration routine that will last about 10 minutes. Once it is finished, type `SAVE_CONFIG` which will save the parameters into your configuration file.

#### PID Tune Hotend <a href="#pid-tune-hotend" id="pid-tune-hotend"></a>

Set the part cooling fans to 25% (`M106 S64`) and then run:

`PID_CALIBRATE HEATER=extruder TARGET=245`

It will perform a PID calibration routine that will last about 5 minutes. Once it is finished, type `SAVE_CONFIG` which will save the parameters into your configuration file.

### ※Cartographer Calibration

{% hint style="info" %}
**October 29, 2024, Note:** We have already upgraded the Cartographer Probe to Survey Touch mode in the previous section. If you have not yet completed this update, please follow this tutorial: [Survey Touch Mode Update Guide](https://docs.siboor.com/siboor-trident-june/faq-oct-17/new-cartographer-to-survey-touch-mode).
{% endhint %}

#### Initial Calibration <a href="#initial-calibration" id="initial-calibration"></a>

Home the machine in X and Y:

```
G28 X Y
```

Depending on the machine model, send the corresponding command below to move the toolhead above the center of the platform.

{% tabs %}
{% tab title="300 Model" %}

```
G0 X150 Y150
```

{% endtab %}

{% tab title="350 Model" %}

```
G0 X175 Y175
```

{% endtab %}
{% endtabs %}

Send the following command to start the calibration process: `CARTOGRAPHER_TOUCH METHOD=manual`

1. Place an A4 sheet on the platform.
2. Use the web interface to adjust the nozzle height relative to the bed.
   * The **two blue buttons on the left (--/-)** lower the toolhead, bringing it closer to the platform.
   * The **two blue buttons on the right (++/+)** raise the toolhead, moving it farther away from the platform.
3. The value at the bottom indicates the increment or decrement for each adjustment, measured in millimeters (mm).
4. Continue adjusting until you feel noticeable resistance when pulling the A4 sheet, but not enough to damage it. Once this condition is met, click **ACCEPT** to save the parameters.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FoUgWtwWCWapJW0UGTnl3%2F%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20241128104327.png?alt=media&#x26;token=fe2f1937-89d1-4be7-b625-9bbc2d0b4428" alt=""><figcaption></figcaption></figure>

Wait a few seconds, then send `SAVE_CONFIG` to save the results to your configuration file.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FcfNCk070W9B21hKQ67CK%2F%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20241128105621.png?alt=media&#x26;token=19b49ee9-e94d-467c-94e7-364aecc466df" alt=""><figcaption></figcaption></figure>

**Testing Cartographer Accuracy**

1. Send the `G28` command to home your printer.
2. Send `PROBE_ACCURACY` to test the accuracy. Cartographer will automatically perform 10 measurements and provide a summary of the results.for example：

```
probe accuracy results: maximum 2.006740, minimum 2.005369,
range 0.001371, average 2.006095, median 2.006096, standard 
deviation 0.000393
```

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FIJew87cpcJJ6cM6wpyaY%2Fcartog.png?alt=media&#x26;token=43fa8c55-5581-49a0-b46c-14934cb7c372" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The meanings of the terms in the probe accuracy results:

* **Maximum**: The highest value recorded by the probe during multiple measurements.
* **Minimum**: The lowest value recorded by the probe during multiple measurements.
* **Range**: The difference between the maximum and minimum values, indicating the measurement fluctuation. Smaller values mean better stability.
* **Average**: The mean of all measurements, representing the overall central trend.
* **Median**: The middle value of all measurements, less affected by outliers and reflects the true data distribution.
* **Standard Deviation**: A statistical indicator of data fluctuation. Smaller values indicate more consistent measurements.

**Summary**: The probe shows a small range and low standard deviation, demonstrating high accuracy and stability.
{% endhint %}

**Measuring Z-Axis Backlash**

1. Run the command: `CARTOGRAPHER_ESTIMATE_BACKLASH` to estimate Z-axis backlash.
2. The results will be displayed, for example:

   ```
   Median distance moving up 1.99607, down 2.00201, delta 0.00594 over 20 samples
   ```

   * Look for the **"delta"** value in the output, which represents the measured backlash.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2F7WAGdy8qjQgD1csqMN6j%2Fimage.png?alt=media&#x26;token=90471a53-f44d-4d6d-b5c4-95eb02de4317" alt=""><figcaption></figcaption></figure>

3. In your **Printer.cfg**, find the section labeled for backlash compensation and input the delta value as follows:

```
backlash_comp: 0.00594
```

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FvhrC4qTQaLDagd834p47%2Fimage.png?alt=media&#x26;token=3b0cf297-4d93-438a-9c8a-33dd5b72acb9" alt=""><figcaption></figcaption></figure>

### ※Z\_TILT

The Trident uses automated bed leveling using 3 motors. There is a macro `Z_TILT_ADJUST` built into Klipper for that function. It is very similar to the `QUAD_GANTRY_LEVEL` used by V2, but supports 3 or more motors. Run the `Z_TILT_ADJUST` and it will probe each of the 3 points 3 times, average the readings, then make adjustments until the gantry is level.

If youa re using a printer which supports either `Z_TILT` you will need to ensure that your probe is positioned above the bed when performing this, open up your `printer.cfg` and find the appropriate section, for example your Z\_TILT section may look like this:

{% hint style="warning" %}
Check the `z_tilt` speed. The initial parameter speed is too fast, which may cause missed steps. Please adjust the speed to 300.
{% endhint %}

{% tabs %}
{% tab title="First Tab" %}

```ini
[z_tilt]                 #300 Model
##  Use Z_TILT_ADJUST to level the bed.
##  z_positions: Location of toolhead
z_positions:
   -50, 18
   175, 398
   400, 18
points:
   50, 50                 # Point 1
   150, 250               # Point 2
   250, 50                # Point 3
##--------------------------------------------------------------------

speed: 300                 # Speed of Z tilt adjustment
horizontal_move_z: 2       # Z axis move speed for adjustments
retries: 10                # Number of retries for adjustment points
retry_tolerance: 0.0075    # Retry tolerance for adjustment accuracy
```

{% endtab %}

{% tab title="Second Tab" %}

```
[z_tilt]                 #350 Model
##  Use Z_TILT_ADJUST to level the bed.
##  z_positions: Location of toolhead
z_positions:
   -50, 18
   175, 398
   400, 18
points:
   50, 50                 # Point 1
   175, 300               # Point 2
   300, 50                # Point 3
##--------------------------------------------------------------------

speed: 300                 # Speed of Z tilt adjustment
horizontal_move_z: 2       # Z axis move speed for adjustments
retries: 10                # Number of retries for adjustment points
retry_tolerance: 0.0075    # Retry tolerance for adjustment accuracy
```

{% endtab %}
{% endtabs %}

You should in your console navigate to each point to ensure that your probe is not hanging off the edge, you can do this using a `G0` command such as `G0 X50 Y25` for point 1, or `G0 X50 Y250` for point 2.

If at all points, Cartographer is safely over the bed, you should be good to go for running a  `Z_TILT` .

### ※Setting up Touch <a href="#setting-up-touch" id="setting-up-touch"></a>

Perform a homing.

```
G28
```

If using a printer that requires Quad Gantry Level or Z Tilt Adjust, perform that.

```
Z_TILT_ADJUST
```

Once that is finished, do another home or G28 Z

```
G28 Z
```

Initiate a threshold scan. This will determine your threshold for cartographer. The threshold will determine how much force is required to touch your bed consistently.

Start by doing the generic scan

[Visit here for an explanation of `CARTOGRAPHER_THRESHOLD_SCAN`](https://docs.cartographer3d.com/cartographer-probe/survey-touch/settings-and-commands#cartographer_threshold_scan)

```
CARTOGRAPHER_THRESHOLD_SCAN 
```

This should start a touch process that will move the toolhead into a starting position and then lower until it touches the bed, repeating itself. Its okay if at first it doesnt touch the bed at all, this is completely normal. It will eventually start touching.

If however you get a final IDEAL result and it didnt touch the bed, start the process again OR adjust the parameters as follows where MIN= the found threshold value of the false positive.

```
CARTOGRAPHER_THRESHOLD_SCAN MIN=500 
# If 400 was a false positive
```

Once it finds an excellent or ideal threshold and you've seen the nozzle touching the bed. It will stop this process and move on.

Now do a touch calibration with the new threshold.

```
CARTOGRAPHER_TOUCH CALIBRATE=1     
# starts touch test and calibration 
```

If everything went correctly the touch test should pass and you can now finish by saving these variables to your config.

```
SAVE_CONFIG                        
# saves model and threshold
```

### ※BED\_MESH

On the HEIGHTMAP interface, first home all axes, then click **CALIBRATE**.\
The machine will begin probing the heated bed and generate a graphical representation of the bed mesh.

The normal deviation range should be between **0.05-0.15mm**. If the deviation is too large, check if the gantry frame profiles on both sides are aligned to the same horizontal plane.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FVQhj1j1EYvOnVU6pfhrY%2F%E5%BA%8A%E7%BD%91.png?alt=media&#x26;token=cdef16cf-0ad2-4809-9a09-cf96fe41d1c4" alt=""><figcaption></figcaption></figure>

### ※**Setting Z Offset**

Before modifying your Z Offset, make sure that you have set your Z position to 0, to do this you can run the following command.

`G1 Z0 F1500`

Once you have done all of the above, it is worth re-calibrating the Z-Offset. This can be done in Mainsail or Fluidd using the graphical interface. OR you can use G-Code in the window to console to do&#x20;

`SET_GCODE_OFFSET Z_ADJUST=+0.01 MOVE=1`&#x20;

`SET_GCODE_OFFSET Z_ADJUST=-0.01 MOVE=1`

Once the offset has been perfectly calibrated apply that offset using the following command

`Z_OFFSET_APPLY_PROBE`

And now save your config.

### ※Extruder Calibration (e-steps) <a href="#extruder-calibration-e-steps" id="extruder-calibration-e-steps"></a>

Before the first print, make sure that the extruder extrudes the correct amount of material.

Set the appropriate temperature for the hotend based on the type of filament. For example, for PLA, we use 210°C.

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2Fo48gCtWs0OV48QajYCvd%2Fimage.png?alt=media&#x26;token=e4cda0e4-6dcf-4401-8b91-739ff3028344" alt=""><figcaption></figcaption></figure>

* First, make sure the extruder is running the correct direction: heat the hotend, and extrude 10mm or so of filament:
  * If the extruder pulls the filament in, all is well.
  * If the filament gets pushed back out the top, , reverse the extruder in your printer.cfg by finding the `[extruder]` `dir_pin`, and adding a `!` to the pin name. (if one is already present, remove it instead)
* With the hotend at temperature, make a mark on the filament between the roll of filament and your extruder, between 120mm and 150mm away from the entrance to the extruder. Measure the distance from the entrance of the extruder to that mark.
* In Mainsail, set the extrusion speed to 1mm/s, and extrude 50mm 2 times, (for a total of 100mm since Klipper doesn’t allow you to extrude more than 50mm at a time).

<figure><img src="https://3855363247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcs6QyzgclSdyKWWV05Sb%2Fuploads%2FsqedXMU3zfh0Bj2jlnEb%2F%E6%8C%A4%E5%87%BA%E8%80%97%E6%9D%90.png?alt=media&#x26;token=bbea5a10-0c53-4497-8344-5b3545a2b948" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Why is my interface greyed out and unclickable? This happens because the nozzle is either not heated or hasn’t reached the target temperature. The extrusion function is locked to prevent filament from being forcefully extruded without proper heating.
{% endhint %}

* Measure from the entrance of your extruder to the mark you made previously.
  * In a perfect world, assuming the mark was at 120mm, it would measure 20mm (120mm - 20mm = 100mm), but usually won’t be.
* Update `rotation_distance` in the extruder section of the configuration file using this formula:
  * New Config Value = Old Config Value \* (Actual Extruded Amount/Target Extruded Amount)

Note: a higher configuration value means that less filament is being extruded.

Paste the new value into the configuration file, restart Klipper, and try again. Once the extrusion amount is within 0.5% of the target value (ie, 99.5-100.5mm for a target 100mm of extruded filament), the extruder is calibrated!

Typical `rotation_distance` values should be around 22.6789511 for Stealthburner &#x20;
