K2 Build Log Part Eleven: Drive Tests

Apr 21, 2022

In the last part, we wired up the backpack and all drives. Now, you might be tempted to keep building and - say - wire the toolhead. If so, you may skip to the next part of this build log. However, I would strongly recommend taking a break to turn on your printer and verify both the assembly as well as your wiring. You’d be surprised at the issues you find, ranging from something as simple as the wrong motor being wired, to the Z drives being upside down (yes, the latter happened to me). In fact, after this section I recommend iteratively testing each time you wire up something new to your printer: bed heater, thermistor, extruder etc.

In order to actually run your printer and do this testing, you’re going to need firmware. The most logical (and the only officially supported) choice is Klipper. There are two popular “frameworks” that bundle Klipper, Moonraker (a Web Server for Klipper) and their own UI: Fluidd and Mainsail. I ran Mainsail for a while until I ran into a number of performance issues. The devs weren’t very receptive, so I switched to Fluidd and have been using that on all my printers ever since. I believe the performance issues with Mainsail have been resolved, so you can pick either one. Both have excellent installation instructions, I recommend you follow those till you get to the point where you need to upload a printer config file.

The K2 repository comes with Klipper configs for three supported combinations of controllers. However, those configs are meant to be used when everything in your printer is fully wired up. At this stage, we don’t have any thermistors connected, and using one of those configs will cause Klipper to stop at bootup since the temperatures for the missing thermistors will be outside the allowed range. Additionally, those configs use a Klipper module for dockable probes, and that module does a Z hop at the start of homing. Since we don’t know whether our Z drives work yet, it’s unsafe to do Z hops. Plus, that module assumes that you have a probe wired up, and we don’t have that. As such, I took the config for Spider and BTT Expander and made the following changes:

You can use my config, or you can download the official config file and make the same set of changes there. Whichever option you choose, read the entire config file and make changes to X, Y and Z coordinates as needed based on the size of your printer.

⚠️ As before, use my config file at your own risk. I accept no responsibility for any damage that might be caused as a result of using this config.

Once you have your desired config in place, restart the firmware and verify that your UI loads up correctly, with negative temperatures being shown for the bed and extruder. If you run into issues, ask for help on the Annex or Klipper discord servers. Once everything’s up and running, let’s start our testing.

Buzzing the motors

A motor “buzz” is functionality that Klipper provides to ensure that your motor is wired up correctly. The command is:


For example, the front left X stepper can be buzzed with


When you issue the buzz command, klipper will move the motor back and forth 10 times - first in the positive direction, then in the negative direction. For X, you’ll see the corresponding end of the Y cross extrusion move first to the right, then back to the left. For Y, you’ll see the X cross extrusion move first to the back, then to the front. And for Z, you’ll see that bed corner move first down, then up. Buzz all eight motors:

  1. stepper_x
  2. stepper_x1
  3. stepper_y
  4. stepper_y1
  5. stepper_z
  6. stepper_z1
  7. stepper_z2
  8. stepper_z3

Here are some issues you might encounter at this stage:

Nothing happens

Verify that your motor is actually wired up to the controller, that a stepper driver is plugged in, and that the right ports are in the config file. If all of the above are valid, and you have another motor that buzzes correctly, try swapping slots: the slot for this motor might be faulty. If that’s the case, you’ll need to either use a different free slot or replace the controller.

Motor makes a weird noise and doesn’t move

Verify that the port mappings are correct in the config file. Also verify - by looking at the spec sheet for your motor - that you have wired up the right pairs together. Motors come with four wires, internally they are two pairs of two wires each. If you mixed up the pairs while wiring, the motor will not work. Config that the order of your wires matches the spec sheet.

A different motor moves

Either swap the wires with the motor that moved, or change the ports in your config file

Motor moves in the wrong direction

Flip the dir pin for that stepper in your config file with a !. For example, PA0 will be flipped as !PA0 and vice versa.

Z drive motor makes a clicking, banging or knocking sound

I ran into this on all four Z drives. Verify that the worm gear is meshed correctly with the wheel on the shaft. Verify that the motor is sitting high enough that the set screw on the worm isn’t touching the wheel. And verify that the fat printed part with a T on it is the top half of the drive. A slight knocking sound seems okay, we’ll test the Z drives further in a latter section in this post.

Home X and Y

If you’re not using my config file, make sure that you haven’t downloaded the dockable probe module to klippyer/klippy/extras and confirm that you have a homing_override section in your config. We’re about to move things under power for the first time, and we need a way to quickly kill Klipper if something goes wrong. Both Mainsail and Fluidd come with Emergency Stop (henceforth referred to as EStop) buttons in their UI. I don’t know what Mainsail’s looks like, but for Fluidd it’s a red circle with an exclamation mark inside it. In desktop mode, it’s in the top right corner; on phones, it’s in the bottom left corner. Familiarize yourself with its location, be ready to press it, and click on the Home icon.

Ideally, your toolhead will move to the left until the X carts hit the drives, and stop. Then, the toolhead will move towards the front of the printer till the Y carts hit the drives, and stop. With my config, the toolhead will then move to the middle of your print volume, and stop.

Ideally, you should hear a mild thunk, but not a loud one. Tuning the thresholds is important - if they’re too high, your printer might think it’s homed without actually reaching X0 or Y0, causing a crash later. If they’re too low, your printer might vibrate itself and damage the printed parts or rails.

Once you get to the point where X and Y both home reliably, move the drive to the middle of your print volume. Push the toolhead against the X cross rail cart till you feel it lying flat against the cart, and tighten the four bolts attaching the toolhead to the cart. Repeat the process for the Y cross rail cart and the four corresponding bolts. You can then place your extruder onto the toolhead and bolt it in. For the Sherpa Mini, that’s 2x M3x12 BHCS on the sides, and 1x M3x10 SHCS at the front.

Force moves for Z

Unfortunately, I discovered that successful buzzing doesn’t guarantee correct functioning for the Z drives. So, we’re going to use force moves. Since contortion is bad for the bed and the bed frame, remove the four shoulder bolts holding the bed frame to the Z joints, and remove the frame from your printer. Now, we’re going to move each Z drive 10 mm at a time at a very slow speed, and listen to how it sounds. The command to do this is:


Distance and velocity are both in mm. Ideally, you should see the Z joint move down 10mm, and the Z drive should sound smooth. As before, if you hear any knocking, clicking or banging sounds, adjust the worm gear meshing and verify the motor height. If your mesh is fine and the drive is built correctly, but the worm gear looks low, you might have to add shims between the motor and the printed part to raise the height of your worm and motor relative to the rest of the drive. If you encounter this issue, I recommend asking for help on the Annex discord server before adding any shims.

Repeat this process for all four Z drives, and you’re done with this part of testing. In the next post, we’ll wire up the toolhead and bed, LEDs if you have them, and test them all too.