Voron 2.4 Build — Spider Mainboard Klipper Firmware Installation and Startup

After running the Spider mainboard test firmware as a sanity check of the Spider’s operation and LCD cabling, several paths are available to get Klipper installed onto the Spider. My factors were:

  • not feeling like continuing to power the Pi from an external source, even during the firmware process
  • not feeling like continuing to re-jumper the Spider board for DFU programming
  • my Spider should now have a working 32K bootloader installed

That led me directly to SD-card firmware installation, which was easy-peasey since I have another *nix-ey computer available for one step.

The Voron instructions for installing Klipper onto a Spider board are clear and thorough; I’m first noting the short path I took through their branching options, then adding some build-specific details not in the instructions.

Build the Firmware

The OctoKlipperPi image I chose had the Klipper source code already installed, so the Pi was the obvious place to compile it; and by running type make (or which make for you BSD-snorting younguns) I could see that make was already installed as well. So it was just:

cd klipper
make clean
make menuconfig

Then pick all the Spider-related options listed on the Voron documentation page, then:


to build the Klipper firmware. According to my Pi, compilation took 1m1.830s . The first network newsreader I used took about 26 hours to compile on my NCR Tower computer a little larger than a box fan.

Flash the Spider

That firmware needs to go onto an SD card as a plain file (not as a card image), which is tricky to do on a Pi that’s using its SD card socket to hold the OS it’s running on. From my Linux workstation, copy the firmware file from the Pi to a local SD card, renaming it to be recognized by the Spider bootloader’s firmware updater:

scp voron24:klipper/out/klipper.bin /run/media/neufeld/0403-0201/firmware.bin

Then power off the Spider (I powered off the entire Voron power supply), insert the SD card into the Spider, power on, and it flashes new firmware. After that, confirm that the Pi sees the Spider’s USB connection:

$ ls /dev/serial/by-id

Configure Octoprint

OctoPrint was already installed thanks to the Pi image I used, so all of the action steps in the Voron OctoPrint installation instructions were already done for me.

OctoPrint update prompt

OctoPrint did politely prompt me to let it update itself — in spite of my already having run apt-get upgrade — which I allowed it to do and which occurred seamlessly.

OctoPrint control panel

With the update done, pressing OctoPrint’s Connect button successfully connects to the Klipper host software running on the Pi, which I understand is called Klippy. We’re not yet talking to the Klipper firmware installed on the Spider mainboard.

Configure Klipper

Klipper status response with no printer.cfg

Going to OctoPrint’s Terminal tab and sending a status command to Klippy tells us that we don’t have a Klipper printer.cfg file yet.

The Voron software configuration instructions walk through configuring printer.cfg for whatever board and wiring you may have, and the first step is downloading a sample printer.cfg file as a starting point.

Voron provides a sample printer.cfg configuration file for the Fysetc Spider mainboard and Fysetc provides a sample printer.cfg configuration file for the Voron 2.4 printer. Um, which to choose? Well, let’s put them both on the Pi for easy comparison, and then … pick the Fysetc sample file, since Fysetc provided the only documentation recommending how to wire your components to your Spider … wait, what’s this I see? Looks like Voron has provided Spider wiring instructions since the time I started planning my wiring. The stepper connections are definitely different between the Fysetc and Voron diagrams, so I’ll start with the Fysetc sample file that hopefully matches my Fysetc wiring diagram.

wget -O printer.cfg-voron https://raw.githubusercontent.com/VoronDesign/Voron-2/Voron2.4/firmware/klipper_configurations/Spider/Voron2_Spider_Config.cfg
wget -O printer.cfg-fysetc https://raw.githubusercontent.com/FYSETC/FYSETC-SPIDER/main/firmware/Klipper/printer.cfg

cp printer.cfg-fysetc printer.cfg

With a printer.cfg file present, the OctoKlipper Klipper tab Restart Host button or typing restart into the terminal will make Klippy have another look for a configuration file.

Klipper status response with undefined configuration

Then checking status again shows that Klippy is unhappy because we haven’t defined some required pins, so I edited printer.cfg and uncommented lines pertaining to my build configuration:

## Uncomment below for SpiderVersion 1.x
sensor_pin: PC3 # TB Position

[heater_fan hotend_fan]
## Hotend Fan - FAN0 Connector
## Uncomment below for SpiderVersion 1.x
pin: PB0

## Print Cooling Fan - FAN1 Connector
## Uncomment below for SpiderVersion 1.x
pin: PB1

## Uncomment for 350mm build
position_endstop: 350
position_max: 350

## Uncomment for 350mm build
position_endstop: 350
position_max: 350

## Uncomment below for 350mm build
position_max: 340

## Gantry Corners for 350mm Build
## Uncomment for 350mm build
## Probe points

[gcode_macro G32]
## Uncomment for 350mm build
G0 X175 Y175 Z30 F3600

Restarting Klippy and checking status again:

Klipper status response with undefined serial communication

Now it doesn’t hang up on configuration but the Klippy host software on the Pi is unable to connect to the Klipper firmware on the Spider. So I paste in the USB serial device ID obtained earlier:

serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_25004E000B50563046363120-if00

Klipper status response when ready

Restart Klippy, check status, and we’re connected.

Voron 2.4 LCD

Even more exciting, Klippy is now able to send Klipper its first text to display on the LCD! This is starting to look like it might be a real thing.

Leave a Reply