klipper_faq:klipper_0_auf_100:orange_pi_3_zero_7_display_skr_pico
Table of Contents
Orange Pi 3 Zero, 7" Display, SKR Pico
Hinweis
Diese Anleitung beschreibt das Einrichten der aufgeführten Komponenten (siehe Equipement). Die Anleitung kann nicht 1:1 für andere Hardware Konstellationen verwendet werden!
YouTube Video #127
Equipment
- Orange Pi 3 Zero mit 64GB SD-Karte
- BTT Pi HDMI7 V1.2 (HDMI Anschluss)
- BTT SKR Pico (RP2040)
SD-Karte vorbereiten
- Image für den Orange Pi 3 Zero laden
http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html- → Debian Image
The image of the linux6.1 kernel version-20250112T175611Z-009.zip
entpacken- daraus dann
Orangepizero3_1.0.4_debian_bookworm_server_linux6.1.31.7z
entpacken Orangepizero3_1.0.4_debian_bookworm_server_linux6.1.31.img
das ist was wir suchen- Das Image mit dem Raspberry Pi Imager auf die SD Karte schreiben
- danach noch einmal mit Ja bestätigen und warten bis die Karte fertig ist
erster Start
- SD Karte in den Zero 3
- den Zero 3 mit Strom versorgen
- Netzwerk (LAN) anschließen
- ggf. HDMI Display direkt anschließen
- Zero 3 starten und per SSH einloggen
Der erste Start dauert ein paar Minuten (je nach SD Karte). Der Zero 3 muss erst die Partition anpassen und bootet 1-2 durch … - SSH Zugang User orangepi Passwort orangepi
Netzwerk
Hinweis:
Es gibt keine einfache Möglichkeit hier das WLAN im Vorfeld einzustellen. Also erstmal per LAN in Betrieb nehmen und dann später das WLAN aktivieren wenn nötig!
- IP finden
- Über Router nachsehen
- Über MobaXTerm Netzwerkscan durchführen (Tools → Network scanner)
- Default mit LAN (DHCP)
- WLAN Konfig
nmtui
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 i2c-tools speedtest-cli iotop fio ir-keytable && mkdir -p ~/.local/share && tldr -u
sudo apt autoremove -y modem* cups* pulse* avahi* triggerhappy*
Klipper & Co installieren
cd ~ && git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh
- Neue Version verwenden → Auswahl 3
- → 1) [Install]
- → 1) [Klipper]
- Number of Klipper instances to set up → Enter
- Create example printer.cfg? → Enter
- warten …
- → 2) [Moonraker]
- Create example moonraker.conf? → Enter
- warten …
- → 3) [Mainsail]
- Download the recommended Mainsail-Config? → Enter
- Configure Mainsail for port (default=80) → Enter
- kurz warten …
- B → Back
- Q → Quit
SKR Pico
- Klipper kompilieren
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 ---> () GPIO pins to set at micro-controller startup (NEW)
- Q und Y zum beenden und speichern
make -j4
um Klipper zu kompilieren
- Board in den Flash Modus bringen
- Reset Button drücken (RST)
- in der SSH Konsole
dmesg
eintippen und es muss in etwa folgendes kommen (wichtig ist RP2 Boot)
orangepi@orangepizero3:~/klipper$ dmesg [ 1475.287435] usb 6-1: new full-speed USB device number 3 using ohci-platform [ 1475.516439] usb 6-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00 [ 1475.516454] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1475.516461] usb 6-1: Product: RP2 Boot [ 1475.516466] usb 6-1: Manufacturer: Raspberry Pi [ 1475.516472] usb 6-1: SerialNumber: E0C9125B0D9B [ 1475.518547] usb-storage 6-1:1.0: USB Mass Storage device detected [ 1475.518921] scsi host0: usb-storage 6-1:1.0 [ 1475.579543] usbcore: registered new interface driver uas [ 1476.550477] scsi 0:0:0:0: Direct-Access RPI RP2 3 PQ: 0 ANSI: 2 [ 1476.550901] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1476.560507] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB) [ 1476.570479] sd 0:0:0:0: [sda] Write Protect is off [ 1476.570504] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00 [ 1476.580483] sd 0:0:0:0: [sda] No Caching mode page found [ 1476.580501] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 1476.627468] sda: sda1 [ 1476.631561] sd 0:0:0:0: [sda] Attached SCSI removable disk
- Flashen
make flash FLASH_DEVICE=2e8a:0003
orangepi@orangepizero3:~/klipper$ make flash FLASH_DEVICE=2e8a:0003 Building rp2040_flash gcc -c -Wall -ggdb -DHAS_LIBUSB -I../pico-sdk/ `pkg-config libusb-1.0 --cflags` main.c -o main.o gcc -c -Wall -ggdb -DHAS_LIBUSB -I../pico-sdk/ `pkg-config libusb-1.0 --cflags` picoboot_connection.c -o picoboot_connection.o gcc main.o picoboot_connection.o `pkg-config libusb-1.0 --libs` -o rp2040_flash Flashing out/klipper.uf2 to 2e8a:0003 sudo lib/rp2040_flash/rp2040_flash out/klipper.uf2 Loaded UF2 image with 151 pages Found rp2040 device on USB bus 6 address 2 Flashing... Resetting interface Locking Exiting XIP mode Erasing Flashing Rebooting device
- Fehler
/bin/sh: 1: pkg-config: not found
Sollte das kommen einfach folgendes installieren und nochmal make flash … versuchen
sudo apt install pkgconf
- Den Jumper aus der Boardmitte abziehen !
Port ermitteln
dmesg -HW
starten- Den USB Stecker abziehen und wieder anstecken. (oder Reset drücken)
- dmesg Ausgabe
pi@Pi3Test:~/klipper $ dmesg -HW [ +3.885051] usb 1-1.4: new full-speed USB device number 7 using dwc_otg [ +0.134266] usb 1-1.4: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00 [ +0.000037] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ +0.000016] usb 1-1.4: Product: rp2040 [ +0.000012] usb 1-1.4: Manufacturer: Klipper [ +0.000012] usb 1-1.4: SerialNumber: 455035712913A168 [ +0.001607] cdc_acm 1-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
- Den zugehörigen Link ermitteln
ls -lR /dev/ | grep -v '\->\s../tty' | grep -e 'tty[[:alpha:]]' -e serial
- Wir brauchen die Info unter
/dev/serial/by-id:
:
lrwxrwxrwx 1 root root 13 Dec 13 22:03 usb-Klipper_rp2040_455035712913A168-if00 → ../../ttyACM0
- Achte darauf das am Ende die gleiche tty Bezeichnung steht wie sie im vorherigen Schritt ermittelt wurde (hier also ttyACM0)
- Was für für die Konfig brauchen ist dann am Ende:
/dev/serial/by-id/usb-Klipper_rp2040_455035712913A168-if00
kurzer 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 /dev/serial/by-id/usb-Klipper_rp2040_455035712913A168-if00
Der Pfad am Ende muss natürlich mit dem übereinstimmen, was ihr im vorherigen Schritt ermittelt habt!
Wenn ihr ein connected
am Anfang des Textes seht, ist das Board richtig geflasht.
Konfig
cd ~/printer_data/config
wget "https://raw.githubusercontent.com/bigtreetech/SKR-Pico/refs/heads/master/Klipper/SKR Pico klipper.cfg" -O printer.cfg
nano ~/printer_data/config/printer.cfg
[mcu] serial: /dev/serial/by-id/usb-Klipper_rp2040_455035712913A168-if00 restart_method: command
- Die Zeile mit
serial
eintragen oder ggf. die#
am Anfang der Zeile entfernen (Port ermitteln siehe oben)
Klipperscreen
cd ~ && ./kiauh/kiauh.sh
- → 1) [Install]
- → 7) [KlipperScreen]
- Press enter for default (Yes) → Enter
- Backend Xserver or Wayland (cage) → Enter (wir nutzen X-Server !)
- warten …
- Install NetworkManager for the network panel → Enter
- Passwort eintippen. Default ist orangepi
- Der Zero 3 rebootet dann und es sollte Klipperscreen angezeigt werden.
Hinweis:
Jetzt kann auch über Klipperscreen das WLAN eingerichtet werden!
Klipper Update
- Klipper Dienst stoppen
sudo systemctl stop klipper.service
cd ~/klipper && make menuconfig
- Die Einstellungen sind genauso wie im Kapitel SKR Pico
make flash -j4 FLASH_DEVICE=/dev/ttyACM0
- Wie man an den Port (hier ttyACM0) kommt, ist Port ermitteln beschrieben
- Das Ergebniss sollte so aussehen:
Entering bootloader on /dev/ttyACM0 Device reconnect on /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4 sudo lib/rp2040_flash/rp2040_flash out/klipper.uf2 1 8 Loaded UF2 image with 101 pages Found rp2040 device on USB bus 1 address 8 Flashing... Resetting interface Locking Exiting XIP mode Erasing Flashing Rebooting device
- Klipper Dienst starten
sudo systemctl start klipper.service
Goodies
Die folgenden Punkte sind für den Betrieb mit Klipper nicht notwendig. Vielleicht ist es aber für den ein oder anderen interessant
X11VNC
- Manueller Start
x11vnc -usepw -forever -display :0
- Automatischer Start
sudo x11vnc -storepasswd /etc/x11vnc.pass
sudo nano /lib/systemd/system/x11vnc.service
[Unit] Description=Start X11VNC After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -display :0 -usepw -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared Environment=DISPLAY=:0 [Install] WantedBy=multi-user.target
sudo systemctl enable x11vnc.service
IR Empfänger
- Alle Protokolle an
sudo ir-keytable -p rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp,cec,imon,rc-mm
- Testen
sudo ir-keytable -t
orangepi@orangepizero3:~$ sudo ir-keytable -t Testing events. Please, press CTRL-C to abort. 1416.657164: lirc protocol(necx): scancode = 0xef07 repeat 1416.657198: event type EV_MSC(0x04): scancode = 0xef07 1416.657198: event type EV_SYN(0x00).
sudo apt install python3-evdev
- Device finden mit
evtest
orangepi@orangepizero3:~$ evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: /dev/input/event1: sunxi-ir
- Python Code
import evdev from evdev import InputDevice, categorize, ecodes import argparse def main(device_path): try: # Öffne das spezifizierte Eingabegerät device = InputDevice(device_path) print(f"Listening to events from device: {device.name} ({device_path})") # Hauptschleife zum Lesen von Ereignissen for event in device.read_loop(): # Überprüfen, ob es sich um ein EV_MSC-Ereignis handelt if event.type == ecodes.EV_MSC and event.code == ecodes.MSC_SCAN: scancode = hex(event.value) print(f"Scancode detected: {scancode}") # Überprüfen, ob es sich um ein Key-Ereignis handelt elif event.type == ecodes.EV_KEY: key_event = categorize(event) if key_event.keystate == 1: # Key pressed print(f"Key pressed with scancode: {key_event.scancode}") elif key_event.keystate == 0: # Key released print(f"Key released with scancode: {key_event.scancode}") except FileNotFoundError: print(f"Device {device_path} not found. Please check the device path.") except PermissionError: print(f"Permission denied. Try running the script with sudo.") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Monitor IR key events from a specific input device.") parser.add_argument("device", help="Path to the input device (e.g., /dev/input/event0)") args = parser.parse_args() main(args.device)
Links
klipper_faq/klipper_0_auf_100/orange_pi_3_zero_7_display_skr_pico.txt · Last modified: 2025/01/17 17:10 by dominik