====== BTT CB1, Manta M8P, SB2209 ====== > **Hinweis** \\ Diese Anleitung beschreibt das Einrichten der aufgeführten Komponenten (siehe [[klipper_faq:klipper_0_auf_100:btt_cb1_manta_m8p_sb2209#equipment|Equipment]]). Die Anleitung __kann nicht 1:1 für andere Hardware Konstellationen verwendet werden__! ===== YouTube Video #121 ===== {{youtube>3XnImjWQ12U?half}} \\ ===== Equipment ===== * BTT CM1 Compute Modul * BTT Manta M8P V2.0 im Bridge Modus \\ https://bttwiki.com/M8P.html * BTT SB2209 CAN V1.0 Toolhead Board * BTT HDMI5 V1.2 Display ===== Image Alternativen ===== * **Armbian** * https://www.armbian.com/bigtreetech-cb1/ * Bei diesem Image funktioniert der Netzwerkanschluss nicht (Stand 07.12.2024). Infos dazu findet man auch hier: https://forum.armbian.com/topic/46865-unable-to-find-phy/ * Auch das Einrichten vom WLAN vor dem ersten Booten ist weit zu kompliziert \\ https://docs.armbian.com/User-Guide_Autoconfig/ \\ die Konfig Datei muss im /root Verzeichnis liegen (also dem Home Verzeichnis vom root User). Dafür müsste man die Karte aber erst in einem Linux mounten ... * **PCV Image** * https://github.com/PCV-dev/BTT-Pi1.2-CB1-Bookworm-Images-and-ImageCompiler * Hat neueren Kernel, ist aber noch weitestgehend ungetestet und hat noch ein Problem mit der Kernel Konfig (Stand 07.12.2024). ===== SD-Karte vorbereiten ===== >**Hinweis**: Wir verwenden hier ein Armbian Image und kein offizielles CB1 Image von BTT. Der Kernel ist deutlich jünger und auch alle zugehörigen Tools im Betriebssystem. So lässt sich auch Katapult sauber kompilieren! * CB1 Image über Raspberry PI Imager installieren * https://www.raspberrypi.com/software/ * OS Download \\ https://github.com/bigtreetech/CB1/releases \\ Stand 07.12.2024 -> ''CB1_Debian11_Klipper_kernel5.16_20240319.img.xz'' * SD-KARTEN WÄHLEN * Einstellungen schreiben geht nicht weil es kein Raspberry Pi Image ist * Ich habe das Board initial am LAN Port angeschlossen. Wer vor dem ersten Booten WLAN einrichten will findet die Infos hier: https://github.com/bigtreetech/CB1 ===== Netzwerk ===== * IP finden * Über Router nachsehen * Über MobaXTerm Netzwerkscan durchführen (Tools -> Network scanner) * Default mit LAN (DHCP) * WLAN Konfig * ''nmtui'' ===== SSH Login ===== * **User** biqu und **Passwort** biqu ===== Updates ===== * ''sudo apt update && sudo apt upgrade -y && sudo apt install -y git git-lfs silversearcher-ag wavemon hexedit sudoku tcpdump iptraf mc htop dcfldd nano usbutils ranger tldr ncdu can-utils multitail fd-find lsof x11vnc terminator minicom cutecom joystick jstest-gtk i2c-tools speedtest-cli iotop && mkdir -p ~/.local/share && tldr -u'' * ''sudo apt autoremove -y modem* cups* pulse* avahi* triggerhappy*'' * KIAUH * ''cd ~ && git clone https://github.com/th33xitus/kiauh.git'' * Mainsail & Co über die Webseite updaten ===== Manta M8P V2.0 (Bridge Modus) ===== * https://github.com/bigtreetech/Manta-M8P ==== DFU Modus ==== * Das Board in den DFU Modus bringen * Im Terminal auf Meldungen warten \\ ''dmesg -HW'' * Jetzt die **Boot0** Taste gedrückt halten, kurz die **Reset** Taste drücken und dann auch die **Boot0** Taste wieder loslassen. * Hinweis: Die Tasten befinden sich jeweils direkt in der Nähe des µControllers. * Das Board meldet sich mit ''**Product: DFU in FS Mode**'' \\ biqu@BTT-CB1:~$ dmesg -HW [Dec 7 09:52] usb 2-1.4: USB disconnect, device number 6 [ +0.344603] usb 2-1.4: new full-speed USB device number 7 using ehci-platform [ +0.212514] usb 2-1.4: not running at top speed; connect to a high speed hub [ +0.001744] usb 2-1.4: New USB device found, idVendor=0483, idProduct=df11, bcdDevice= 2.00 [ +0.000027] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ +0.000020] usb 2-1.4: Product: DFU in FS Mode [ +0.000015] usb 2-1.4: Manufacturer: STMicroelectronics [ +0.000015] usb 2-1.4: SerialNumber: 374937683033 * Die Meldung mag je nach Manta Board etwas variieren. Allerdings sollte dort immer was mit DFU und oder BOOTLOADER zu lesen sein. * ''STRG+C'' drücken, um die Meldungen zu beenden ==== Katapult flashen ==== > **Hinweis:** \\ Katapult wird **über USB** (DFU-Mode) eingerichtet! * Katapult laden wenn noch nicht vorhanden, sonst in den Katapult Ordner wechseln \\ ''[ ! -d %%"%%$HOME/katapult/%%"%% ] && cd ~ && git clone https://github.com/Arksine/katapult && cd katapult || cd ~/katapult'' * Wegen zu altem Image muss hier eine etwas ältere Katapult Version verwendet werden! \\ ''git checkout 3e23332'' \\ ''arm-none-eabi-gcc --version'' -> arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 * ''make menuconfig'' (**Manta M8P V2.0**) \\ Micro-controller Architecture (STMicroelectronics STM32) ---> Processor model (STM32H723) ---> Build Katapult deployment application (Do not build) ---> Clock Reference (25 MHz crystal) ---> Communication interface (USB (on PA11/PA12)) ---> Application start offset (128KiB offset) ---> USB ids ---> () GPIO pins to set on bootloader entry [*] Support bootloader entry on rapid double click of reset button [ ] Enable bootloader entry on button (or gpio) state [*] Enable Status LED (!PC3) Status LED GPIO Pin * **Wichtig:** Hier wird als Communication interface USB ausgewählt, nicht CAN! * Sonst ist später kein Update möglich! * Katapult kompilieren \\ ''make -j4'' * Katapult flashen (das Board muss im DFU Mode sein !) \\ ''dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D ~/katapult/out/katapult.bin'' * Wichtig ist am Ende ''File downloaded successfully'' bei der Ausgabe im Terminal * Das Board einmal resetten * Reset Taste (Reset) drücken * oder das Board einmal stromlos machen * Die Status LED sollte jetzt am Manta Board blinken === Fehler MASS_ERASE === * Es kann beim Flashen von Katapult zum Fehler **dfu-util: Error during special command "MASS_ERASE" get_status** kommen. In dem Fall einfach das '':mass-erase'' weglassen * ''dfu-util -R -a 0 -s 0x08000000:force -D ~/katapult/out/katapult.bin'' ==== Port ermitteln ==== * Board stromlos machen * ''dmesg -HW'' starten und wieder Strom auf das Board geben \\ biqu@BTT-CB1:~/katapult$ dmesg -HW [Feb10 05:38] usb 2-1.4: USB disconnect, device number 5 [ +0.344916] usb 2-1.4: new full-speed USB device number 6 using ehci-platform [ +0.230326] usb 2-1.4: New USB device found, idVendor=1d50, idProduct=6177, bcdDevice= 1.00 [ +0.000041] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ +0.000015] usb 2-1.4: Product: stm32h723xx [ +0.000013] usb 2-1.4: Manufacturer: katapult [ +0.000012] usb 2-1.4: SerialNumber: 1E0043001051313236343430 [ +0.001680] cdc_acm 2-1.4:1.0: ttyACM0: USB ACM device * Wir brauchen die Information mit **tty...** also in diesem Fall **ttyACM0** * ''STRG+C'' drücken, um die Meldungen zu beenden ==== Klipper flashen ==== * ''cd ~/klipper'' * ''make menuconfig'' * **Manta M8P V2.0** \\ [*] Enable extra low-level configuration options Micro-controller Architecture (STMicroelectronics STM32) ---> Processor model (STM32H723) ---> Bootloader offset (128KiB bootloader) ---> Clock Reference (25 MHz crystal) ---> Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) ---> CAN bus interface (CAN bus (on PD0/PD1)) ---> USB ids ---> (1000000) CAN bus speed () GPIO pins to set at micro-controller startup * Es kann im folgenden Schritt zu einem Fehler kommen (vor allem mit dem CB1 Board): \\ Python´s pyserial module is required to update. Install with the following command: /usr/bin/python3 -m pip install pyserial make: *** [src/stm32/Makefile:111: flash] Error 255 In dem Fall einfach folgendes ausführen \\ ''sudo apt install python3-serial'' * Klipper kompilieren und flashen (über USB / seriell!) \\ ''make -j4 flash FLASH_DEVICE=/dev/ttyACM0'' \\ biqu@BTT-CB1:~/klipper $ make -j4 flash FLASH_DEVICE=/dev/ttyACM0 Creating symbolic link out/board Building out/autoconf.h Compiling out/src/sched.o ... Compiling out/src/stm32/hard_pwm.o Preprocessing out/src/generic/armcm_link.ld Building out/compile_time_request.o Version: v0.12.0-102-g9f41f53c Linking out/klipper.elf Creating hex file out/klipper.bin Flashing out/klipper.bin to /dev/ttyACM0 Entering bootloader on /dev/ttyACM0 Device reconnect on /sys/devices/platform/soc/5200000.usb/usb2/2-1/2-1.4/2-1.4:1.0 /usr/bin/python3 lib/canboot/flash_can.py -d /dev/serial/by-path/platform-5200000.usb-usb-0:1.4:1.0 -f out/klipper.bin Attempting to connect to bootloader CanBoot Connected Protocol Version: 1.0.0 Block Size: 64 bytes Application Start: 0x8020000 MCU type: stm32h723xx Flashing '/home/biqu/klipper/out/klipper.bin'... [##################################################] Write complete: 1 pages Verifying (block count = 477)... [##################################################] Verification Complete: SHA = 381BC7BAE3D7B8717F7169CEDB8EA08E4D59A4CA CAN Flash Success * Die LED sollte jetzt nicht mehr blinken! ===== SBC ===== * Interface einrichten \\ **Achtung** : die Bitrate von 1000000 muss auch in der Board Firmware eingestellt werden! \\ ''sudo nano /etc/network/interfaces.d/can0'' \\ folgendes eintragen, speichern und mit ''STRG + x'', dann ''Y'', dann ''Enter'' beenden \\ allow-hotplug can0 iface can0 can static bitrate 1000000 up ifconfig $IFACE txqueuelen 1024 ==== Test ==== * Testen mit ''ip a'' \\ ''can0: mtu 16 qdisc pfifo_fast state **UP** group default qlen 1024'' * Sollte das Interface auf ''DOWN'' stehen hilft meist ein \\ ''sudo systemctl restart networking.service'' \\ oder ein \\ ''sudo ip link set can0 up type can bitrate 1000000'' ===== Can Query ===== > **Hinweis** \\ Die folgenden Schritte setzen natürlich voraus, das der CAN Bus korrekt im Vorfeld eingerichtet wurde! Wenn das Board über CAN verbunden ist, dann kann man mit den folgenden Schritten prüfen, ob Katapult geflasht wurde: * Klipper Dienst stoppen \\ ''sudo systemctl stop klipper.service'' * ''~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0'' \\ Wenn ein Board gefunden wird, dann sollte folgende Ausgabe erscheinen: \\ biqu@BTT-CB1:~/klipper$ ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0 Found canbus_uuid=fa5ad324b369, Application: Klipper Total 1 uuids found * Die **UUID** (canbus_uuid=**fa5ad324b369**) notieren ! * Wird bei diesem Schritt kein Board gefunden, hilft oft ein Reset am Board (entweder über den Reset Taster oder 1x Strom weg und wieder dran) ===== Konfiguration Manta ===== * ''cd ~/printer_data/config'' * **Beispiel Konfiguration M8P V2.0** \\ ''wget https://raw.githubusercontent.com/bigtreetech/Manta-M8P/master/V2.0/Firmware/generic-bigtreetech-manta-m8p-V2_0.cfg -O printer.cfg'' * ''nano ~/printer_data/config/printer.cfg'' \\ [mcu] canbus_uuid: fa5ad324b369 * Unterhalb ''[mcu]'' die Zeile mit ''serial'' löschen oder auskommentieren * Unterhalb ''[mcu]'' die Zeile ''canbus_uuid'' entsprechend mit der ermittelten UUID von oben einfügen * Klipper starten \\ ''sudo systemctl start klipper.service'' ===== SB2209 ===== ==== Katapult aufspielen ==== * ''cd ~/katapult'' * ''make menuconfig'' \\ Micro-controller Architecture (Raspberry Pi RP2040) ---> Flash chip (W25Q080 with CLKDIV 2) ---> Build Katapult deployment application (Do not build) ---> Communication interface (CAN bus) ---> (4) CAN RX gpio number (5) CAN TX gpio number (1000000) CAN bus speed () GPIO pins to set on bootloader entry [*] Support bootloader entry on rapid double click of reset button [ ] Enable bootloader entry on button (or gpio) state [*] Enable Status LED (gpio26) Status LED GPIO Pin * beenden mit ''Q'' und ''Y'' * Katapult kompilieren \\ ''make -j4'' * Das Board in den Boot Loader Modus bringen * ''dmesg -HW'' * Die **Boot Taste** am Board gedrückt halten und dabei das Board über USB mit dem SBC verbinden \\ {{:klipper_faq:flash_guide:rp2040:pasted:20231213-100546.png}} \\ Wenn das Board schon angeschlossen ist geht auch folgendes \\ **Boot Taste** gedrückt halten, **RST Taste** einmal drücken und loslassen, dann die **Boot Taste** loslassen. * Das Board meldet sich mit ''**Product: RP2 Boot**'' \\ [Dec13 10:07] usb 1-1.4: new full-speed USB device number 44 using dwc_otg [ +0.132594] usb 1-1.4: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00 [ +0.000035] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ +0.000016] usb 1-1.4: Product: RP2 Boot [ +0.000013] usb 1-1.4: Manufacturer: Raspberry Pi [ +0.000012] usb 1-1.4: SerialNumber: E0C9125B0D9B [ +0.003555] usb-storage 1-1.4:1.0: USB Mass Storage device detected [ +0.001922] scsi host2: usb-storage 1-1.4:1.0 [ +1.002900] scsi 2:0:0:0: Direct-Access RPI RP2 3 PQ: 0 ANSI: 2 [ +0.000671] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ +0.000792] sd 2:0:0:0: [sdc] 262144 512-byte logical blocks: (134 MB/128 MiB) [ +0.000871] sd 2:0:0:0: [sdc] Write Protect is off [ +0.000020] sd 2:0:0:0: [sdc] Mode Sense: 03 00 00 00 [ +0.000980] sd 2:0:0:0: [sdc] No Caching mode page found [ +0.000022] sd 2:0:0:0: [sdc] Assuming drive cache: write through [ +0.013172] sdc: sdc1 [ +0.000934] sd 2:0:0:0: [sdc] Attached SCSI removable disk * ''STRG+C'' drücken, um die Meldungen zu beenden * Katapult aufspielen mit \\ ''make flash FLASH_DEVICE=2e8a:0003'' \\ Das Ergebnis sollte sein: \\ pi@Pi3Test:~/katapult $ make flash FLASH_DEVICE=2e8a:0003 Flashing out/katapult.uf2 [sudo] password for pi: Loaded UF2 image with 31 pages Found rp2040 device on USB bus 1 address 44 Flashing... Resetting interface Locking Exiting XIP mode Erasing Flashing Rebooting device * USB Kabel abziehen - ab jetzt wird das Board nur noch über den CAN Bus angesprochen! * **RST Taste** drücken um das Board einmal zu resetten ==== Verkabelung ==== Ganz normale CAN Verkabelung: * CAN H auf CAN H * CAN L auf CAN L * GND & 12 bzw. 24V {{klipper_faq:flash_guide:pasted:20231111-102409.png}} ==== CAN Bus Terminierung ==== * Am U2C Board den Jumper **120R** setzen \\ {{:klipper_faq:flash_guide:stm32g0b1:pasted:20231111-141701.png}} * Am EBB Board den Jumper **120R** setzen \\ {{:klipper_faq:flash_guide:rp2040:pasted:20231213-101233.png}} * Wer will, kann im **ausgeschalteten Zustand** den Buswiderstand mit einem Ohmmeter messen. Es müsste zwischen CAN H und CAN L ca. 60 Ω ergeben. ==== Can Query ==== > **Hinweis** \\ Wenn Katapult gestartet wurde sollte die **rote LED** auf dem SB2209 blinken. > **Wichtig** \\ Die folgenden Schritte setzen natürlich voraus, das der CAN Bus korrekt im Vorfeld eingerichtet wurde! Wenn das Board über CAN verbunden ist, dann kann man mit den folgenden Schritten prüfen, ob Katapult geflasht wurde: * Klipper Dienst stoppen \\ ''sudo systemctl stop klipper.service'' * ''~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0'' \\ Wenn ein Board gefunden wird, dann sollte folgende Ausgabe erscheinen: \\ pi@Pi3Test:~ $ ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0 Found canbus_uuid=73be55aa184d, Application: CanBoot Total 1 uuids found * Die **UUID** (canbus_uuid=**73be55aa184d**) notieren! * Wird bei diesem Schritt kein Board gefunden, hilft oft ein Reset am Board (entweder über Reset Taster oder 1x Strom weg und wieder dran) ==== Klipper per Katapult ==== * ''cd ~/klipper'' * ''make menuconfig'' \\ [*] Enable extra low-level configuration options Micro-controller Architecture (Raspberry Pi RP2040) ---> Bootloader offset (16KiB bootloader) ---> Communication interface (CAN bus) ---> (4) CAN RX gpio number (5) CAN TX gpio number (1000000) CAN bus speed () GPIO pins to set at micro-controller startup * beenden mit ''Q'' und ''Y'' * Klipper kompilieren \\ ''make -j4'' * Klipper flashen \\ ''~/klippy-env/bin/python3 ~/katapult/scripts/flash_can.py -i can0 -f ~/klipper/out/klipper.bin -u '' \\ In diesem Beispiel wäre das dann \\ ''~/klippy-env/bin/python3 ~/katapult/scripts/flash_can.py -i can0 -f ~/klipper/out/klipper.bin -u **73be55aa184d**'' * Die **UUID** von eurem Board eintragen! * Das sollte mit einem ''Flash Success'' beendet werden! * kurzer Test \\ ''~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0'' \\ Sollte jetzt ''... Application: Klipper'' liefern * Klipper Dienst wieder starten \\ ''sudo systemctl start klipper.service'' ==== Klipper Test ==== > **Hinweis** \\ Wenn Klipper gestartet wurde sollte die **rote LED** auf dem SB2209 **nicht blinken**. * ''~/klippy-env/bin/python ~/klipper/klippy/console.py -c can0 **73be55aa184d**'' * Die **UUID** von eurem Board eintragen! * Sollte unter anderem ein \\ ''==================== connected ===================='' \\ liefern * Abbrechen kann man den Test mit STRG + C ==== Konfig ==== * ''cd ~/printer_data/config'' * ''wget %%"%%https://raw.githubusercontent.com/bigtreetech/EBB/master/EBB%20SB2209%20CAN%20(RP2040)/sample-bigtreetech-ebb-sb-rp2040-canbus-v1.0.cfg%%"%% -O BTT_EBB_SB2209.cfg'' * ''nano ~/printer_data/config/BTT_EBB_SB2209.cfg'' \\ [mcu EBBCan] #serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00 canbus_uuid: 73be55aa184d * Die Zeile mit ''serial'' auskommentieren oder löschen * Die UUID bei ''canbus_uuid'' eintragen und ggf. die ''#'' am Anfang der Zeile entfernen (UUID ermitteln siehe [[klipper_faq:flash_guide:stm32g0b1:ebb_sb2209_can#can_query|CAN Query]])! * In der ''printer.cfg'' noch die neue Konfig einbetten \\ ''[include BTT_EBB_SB2209.cfg]'' ==== Test ==== Ob das Board korrekt mit Klipper läuft, lässt sich mit folgendem Befehl schnell testen: \\ ''~/klippy-env/bin/python ~/klipper/klippy/console.py -c can0 44d860c9632b'' Die UUID am Ende muss natürlich mit dem übereinstimmen, was ihr im vorherigen Schritt ermittelt habt! Klipper Dienst wieder starten \\ ''sudo systemctl start klipper.service'' ===== Klipperscreen ===== * In dem CB1 Full Image ist Klipperscreen schon entahlten und kann über MainSail auf den neusten Stand gebracht werden. * Wenn man ein anderes Image verwendet muss Klipperscreen über kiauh nachinstalliert werden.