EBB SB2209 RP2040 – USB Flashing First-time flash / recovery
Use this when the EBB has no Katapult yet, or doesn't show up on CAN at all. Connect the EBB's USB-C port directly to the Pi (logged in as ianh).
⚠ Bootloader offset warning: the 16KiB bootloader offset only works if Katapult is already on the board. If you flash Klipper directly over USB with no Katapult, you must use No bootloader. A Klipper build with a 16KiB offset but no Katapult will never boot and won't appear on CAN.
Enter RP2040 boot mode
Fit the VUSB jumper if powering the board from USB.
Hold the BOOT button, then press and release RST (or plug in the USB cable while holding BOOT). Release BOOT.
lsusb
# Look for: 2e8a:0003 Raspberry Pi RP2 Boot
✅ Recommended: Katapult over USB, then Klipper over CAN
Configure Katapult
cd ~/katapult
make menuconfig
Micro-controller Architecture → Raspberry Pi RP2040
Application start offset → 16KiB
Communication interface → CAN bus
CAN RX gpio → 4, CAN TX gpio → 5
CAN bus speed → 1000000
[*] Support bootloader entry on rapid double click of reset button
Flash Katapult over USB (board in BOOT mode, 2e8a:0003)
make clean
make
make flash FLASH_DEVICE=2e8a:0003
# or: cp ~/katapult/out/katapult.uf2 /media/ianh/RPI-RP2/
Swap jumpers: unplug USB, remove the VUSB jumper, fit the 120Ω termination jumper, connect the CAN cable to the Manta.
Not recommended: Klipper directly over USB (no Katapult)
Bootloader offset → No bootloader (required, since 16KiB won't boot).
Interface: CAN (gpio4/5, 1000000), or USB (then use serial: /dev/serial/by-id/usb-Klipper_rp2040_...).
make clean && make && make flash FLASH_DEVICE=2e8a:0003. Future updates need BOOT/RST + USB again.
Troubleshooting: EBB not in CAN query after USB flash
Offset mismatch: Klipper built with 16KiB but no Katapult on the board means it never boots. Reflash Katapult over USB (steps above), or rebuild Klipper with "No bootloader".
120Ω jumper must be on the EBB (and termination on at the Manta). Remove VUSB when running on CAN power.
Stop Klipper before querying:sudo systemctl stop klipper. Already-connected nodes won't show up in -q.
CAN-H/CAN-L wiring: check for swapped or loose H/L wires and confirm ip -s link show can0 is UP with no errors.