Hardware

OS Install

Download and install the base Klipper kernel

  1. See [1] for the BTT Pi 1 image
  2. Find the pi on the network and login to pi as root/root

Install Klipper, Moonraker and Mainsail

Install KIAUH (cannot install as root)

sudo apt-get update && sudo apt-get install git -y
cd ~ && git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh

Follow prompts to install various components

Install Klipper to Octopus

See https://docs.vorondesign.com/build/software/octopus_klipper.html

cd ~/klipper
make menuconfig
# Enable extra low-level configuration options
#  Micro-controller Architecture (STMicroelectronics STM32)  --->
#  Processor model (STM32F446)  --->
#  Bootloader offset (32KiB bootloader)  --->
#  Clock Reference (12 MHz crystal)  --->
make
  1. Install firmeware to Octopus from file created at out/klipper.bin:
    • Over USB from PI via DFU
    • From memory card (recommended)
  2. Install printer.cfg from

Install 2209 Canbus

cd ~/klipper
make menuconfig
#    Enable extra low-level configuration options
#    Micro-controller Architecture (Raspberry Pi RP2040/RP235x)  --->
#    Processor model (rp2040)  --->
#    Bootloader offset (No bootloader)  --->
#    Flash chip (W25Q080 with CLKDIV 2)  --->
#    Communication Interface (USBSERIAL)  --->
#    USB ids  --->
#[*] Optimize stepper code for 'step on both edges'
#()  GPIO pins to set at micro-controller startup
make

Put Canbus processor in DFU mode by pressing and holding BOOT and then the RST button breifly:

Verify we're in DFU mode by looking for this in the lsusb command:

Bus 002 Device 003: ID 2e8a:0003 Raspberry Pi RP2 Boot

Note the device ID (2e8a:0003) and type in console from the klipper directory:

make flash FLASH_DEVICE=2e8a:0003

  Flashing out/klipper.uf2 to 2e8a:0003
sudo lib/rp2040_flash/rp2040_flash out/klipper.uf2

[sudo] password for bpopp:
Loaded UF2 image with 162 pages
Found rp2040 device on USB bus 2 address 3
Flashing...
Resetting interface
Locking
Exiting XIP mode
Erasing
Flashing
Rebooting device

Verify that the device now shows up under /dev/serial/by-id:

ls /dev/serial/by-id
usb-Klipper_rp2040_50443403101D961C-if00
usb-Klipper_stm32f446xx_1E0035000751313031393839-if00