Welcome to Part 7 of RaveRobot’s Voron 2.4 build diary. In this post we will discuss the installation of the klipper firmware, test flight checks, and first print.
Intro
Having previously installed the wiring, the printer is official built. The next big step for this build is the compiling and installation of the firmware. Once that is done there are some basic tests to perform and ensure everything is behaving as it should. After that we’ll be ready to push some plastic and get a print going. I’m no stranger to klipper having previously converted my Ender 3 to klipper. As such a lot of this will be very similar to what I’ve done before.
Determine Your Interface and Setup the Raspberry Pi
Octoprint, Fluidd, or Mainsail are your choices for web interface for Klipper. Fluuid and Mainsail are designed to be lightweight but as I’m using the Pi4 from my previous Ender 3 which is running Octoprint I’m going to go ahead and keep that. Octoprint has a ton of plugins and advanced options but it requires a more expensive pi in order to run successfully.
If you do not have Octoprint already installed then instructions for doing so can be found here. I already have a functioning installation so I’m going to jump right into getting Klipper installed. We need to run the command
cd
git clone https://github.com/Klipper3D/klipper
./klipper/scripts/install-octopi.sh
which will download and install the latest version of klipper. If you are starting with a fresh Pi image then you can get one which already has Klipper on it and skip this.
Once the install is done then reboot the Pi and log into Octoprint to ensure that things look ok. I needed to set the “Serial Port” to “/tmp/printer” and then click connect. Everything checked out on the terminal window when I typed “status” so I also grabbed the OctoKlipper plugin since it’ll be very useful later.
Flash Klipper on Main Boards
The next step in our adventure is to prepare the Klipper firmware file for the SKR 1.4 boards that I’m using through the Raspberry Pi. I connected through Putty via SSH and ran the commands
sudo apt install make
cd ~/klipper
make menuconfig
which launches the Klipper build window. For a SKR 1.4 which is not a turbo I wanted an lpc1768 processor, with “Target board uses Smoothieware bootloader” and “Use USB for communication” enabled. After saving the config I ran the commands
make clean
make
which builds the klipper.bin file on the Pi. As I need to get that .bin file off the Pi and flash it to the SKR boards via SD I used WinSCP to connect to the Pi and grab the file from /home/pi/klipper/out folder and copy it to my desktop. The file needs to be renamed firmware.bin and then you just copy it to an SD card, insert it into the SKR, and then power it on to flash. Flash was successful if the SD card now contains FIRMWARE.CUR.
Load Default Config Into Klipper
I downloaded a default printer.cfg file from the voron github for a V2 running SKR 1.4 boards and loaded it to the /home/pi/ folder, it must be named printer.cfg so rename it if it downloads with another name. Using the OctoKlipper tab in Octoprint I was able to edit the printer.cfg file right in the web browser.
One critical piece of information I needed was the serial ID of the two boards so connecting to the Pi through Putty I was able to run the command
ls /dev/serial/by-id/
to get the ID for each board. It is easiest to do this with one board not connected to the Pi and then connect it and run it again. One will need to be listed in the [MCU] section and one in the [MCU Z] section of the printer.cfg depending on which one has the Z motors plugged into it. For an Octopus or Spider board you’ll only need one and it’ll just be MCU.
Adjust Pins in Config
At this point the next set of things to do is to go through the printer.cfg file and adjust the various values for your specific printer. Set the thermistor types, endstop locations, max position, and stepper driver types, quad gantry level settings, and the z end stop location. This is all pretty hardware specific so the default printer.cfg will get you close but things need slight adjustments. If you are going to use mesh leveling, runout sensors, additional fans, etc then those all need to be set up as well. I would suggest waiting until later to write macros, we are still focused on making sure everything is set up right and specialized macros can wait until the printer is complete.
Test Endstops, Fans, Heater, Themistors
Testing the endstops is fairly simple, just type “QUERY_ENDSTOPS” in the terminal and see what they report. They should not be triggered unless you are closing them so they should all return open. Press on them one at a time and again query to ensure that all are working as expected. The same test can be done for the inductive probe by using a piece of metal to trigger it, just make sure it isn’t too close to the bed and starting off triggered.
Test the part fan by turning it on and ensure it is blowing the correct direction and the speed can be controlled through Octoprint. The hotend fan and electronics case fans are both set in the firmware to come on when the hotend or bed heat up so heat them one at a time and ensure that the thermistors return reasonable values, they actually heat up, and that the correct fan also comes on and blows the required direction
Test Motors
The first test of the motors is what is called a stepper buzz, this will cause a single motor to move a few steps back and forth and lets you confirm that they are all wired up and the direction is correct. The command is “STEPPER_BUZZ stepper_x” for the X motor. Replace X with either Y, Z, Z1, Z2, or Z3 for the other XYZ motors and then finally “STEPPER_BUZZ extruder” for the extruder stepper. If they all move 1mm positive first then they are correct. If the motor moves negative first then you need to invert the dir_pin in the printer.cfg file by either adding or removing a ! for the motor.
OK so everything looks good, time to actually get this moving. Since this will be the first test of the motion system be ready to hit the power if things go wrong. After sending a G28 homing command the printer should move the gantry to the right and back and hit the end stops. If movement goes the wrong way or anything grinds then hit the power. Mine moved as expected and then went and homed Z over the endstop which I already located.
Inductive Probe Testing
It is a good idea to go ahead and test the inductive probe by running a G28 to home and then move the head to the center of the bed and run “PROBE_ACCURACY” to have the printer repeatedly probe the bed. We are looking for no failures and if the nozzle is contacting the bed on probing then your inductive probe is too high and needs to be lowered before continuing. Ideall we want to see a narrow range and standard deviation for the repeated probings. If that looks good then running a “QUAD_GANTRY_LEVEL” to tram the gantry to the bed would be a nice next step. If the level fails it could be your gantry is just too skewed and you may need to manually move it to try and get it slower to level before trying again.
PID and Other Final Tuning
PID tuning for the hotend and bed are very simple in Klipper but something that should be done before attempting a test print.
PID_CALIBRATE HEATER=heater_bed TARGET=100
PID_CALIBRATE HEATER=extruder TARGET=245
The Z offset for the endstop and the inductive probe need to be determined using Klipper functions. This is pretty simple and once done you should be good to go. I could have decided to do extruder rotation distance, pressure advance, and flow rate calibrations here but honestly I just wanted to get it printing and have a baseline to compare to.
Will run the PID tune, just replace the target temperatures with your default printing temperatures.
Test Print
With all that done and the printer seemingly alive it is time to slice up a simple test print and let it go. Don’t start too fancy, a cube or some other simple and quick print is best. Once that is working get more creative. If you wires are all managed nicely and the printer is printing then it is time to head on over to reddit with a video of it running in order to get your new voron a serial number. With that your printer is functional and you have joined the club!
Voron Build Diary Guide
- 1 – Sourcing Your Parts
- 2 – Building the Frame
- 3 – Assembling the Z-Motion System
- 4 – Assembly and Installation of the X/Y Gantry
- 5 – The Afterburner Direct Drive Extruder
- 6 – Wiring and Electronics
- 7 – Klipper Firmware Installation and Test Flight
- 8 – Printer Tuning and Finishing Touches (Coming Soon)