Kurzanleitung zur Inbetriebnahme einer Pi-Cam ab Bookworm

  • Diese Anleitung entstand während der Inbetriebname. Deswegen bitte die Gegebenheiten zu beachten.
    Diese Anleitung funktioniert nicht mit Versionen vor 12 (bookworm).
    Außerdem verwende ich ein Betriebssystem ohne grafische Oberfläche (macht bei einem Zero durch die 512 MB RAM keinen Sinn).
    Ich habe einen Monitor und eine Tastatur angeschlossen um ein paar bestimmte Tests zu machen. Trotzdem arbeite ich remote über ssh. Falls etwas damit nicht geht, werde ich es lokal über tty probieren und das dann natürlich auch erwähnen.

    Code
    Gegebenheiten:
    Raspberry Pi    : Zero 2 W
    RPi-Kamera      : Raspberry Pi Camera Rev 1.3
    Betriebssystem  : Raspberry Pi OS Lite (64 bit)
    Version         : 12 (bookworm)
    1. System vorbereiten
    2. Befehle zur Kameranutzung
    3. Beispiele

    1. System vorbereiten

    Die Dokumentation zu den Kameras auf https://www.raspberrypi.com/documentation/…ies/camera.html.

    1.1 Kamera anschließen

    Kamera im ausgeschalteten und vom Netzteil getrennten Raspberry Pi anschließen!

    Wie die Kamera korrekt angeschlossen wird, wird hier ausführlich beschrieben/gezeigt (incl. Video).

    1.2 Netzteil anschließen und RPi booten

    Der RPi sollte problemlos booten. Falls nicht, den Anschluß der Kamera prüfen.

    1.3 System updaten

    sudo apt update && sudo apt dist-upgrade
    Evtl. reboot (z.B. wenn der Kernel ein update erfahren hat)

    1.4 Kamerasoftware installieren

    Der Link zur Beschreibung der Kamerasoftware (Camera software).

    Die Kamerasoftware installieren (rpicam-apps):

    sudo apt install rpicam-apps

    Die Quellen der Software auf Github.
    Eine Warnung von den Quellen möchte ich noch erwähnen:

    Warning

    These applications and libraries have been renamed from libcamera-* to rpicam-*. Symbolic links are installed to allow users to keep using the old application names, but these will be deprecated soon. Users are encouraged to adopt the new application and library names as soon as possible.

    1.5 Kamera testen

    Seit bookworm braucht es kein raspi-config mehr um die Kamera zu aktivieren.
    Edit (23.12.24): In #4 weist Outlaw darauf hin, daß bei neueren Kameras diese nicht über raspi-config aktiviert werden dürfen.
    Ob die Kamera erkannt wird, überprüft man mit

    rpicam-hello --list-cameras

    Code
    # Meine Ausgabe
    rpicam-hello --list-cameras
    Available cameras
    -----------------
    0 : ov5647 [2592x1944 10-bit GBRG] (/base/soc/i2c0mux/i2c@1/ov5647@36)
        Modes: 'SGBRG10_CSI2P' : 640x480 [58.92 fps - (16, 0)/2560x1920 crop]
                                 1296x972 [43.25 fps - (0, 0)/2592x1944 crop]
                                 1920x1080 [30.62 fps - (348, 434)/1928x1080 crop]
                                 2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]

    1.5.1 Wenn die Camera nicht erkannt wird

    Rufe folgende Webseite auf:

    Hardware Specification

    Die Spalte Deiner Kamera in der Zeile 'Sensor' gibt den Hersteller und die Sensorbezeichnung an. Letzteres merken (notieren).
    Für meine v1.3 wäre das OV5647.

    Editiere (als root, sprich mit sudo) die Datei /boot/firmware/config.txt
    Da gehst Du zu der Zeile
    camera_auto_detect=1
    kommentierst sie ein. Sie sollte jetzt so aussehen:
    # camera_auto_detect=1
    und danach die Zeile mit der eben ermittelten Sensorbezeichnung darunter hinzufügen (ob Groß-, Kleinschreibung relevant ist, weiß ich nicht. Vermutlich sollte es klein geschrieben werden).
    dtoverlay=          
    gefolgt von der Sensorbezeichnung
    Für meine v1.3 würde die Zeile dtoverlay=ov5647 lauten.

    Speichern und reboot.

    1.6 Kamera LED

    Um die Kamera-LED zu aktivieren (leuchtet bei Aufnahme) bzw. zu deaktivieren (bleibt permanent aus):

    Editiere (als root, sprich mit sudo) die Datei /boot/firmware/config.txt
    Schreibe unter camera_auto_detect (bzw., falls verwendet, unter: dtoverlay=[Sensorbezeichnung])
    disable_camera_led=1
    Dabei gilt:
    0 Kamera-LED ist aktiviert
    1 Kamera-LED ist deaktiviert

    speichern und reboot.

    2. Befehle zur Kameranutzung

    Wenn ich von 'Monitor' spreche, ist immer der Monitor am RPi mit der Kamera gemeint.
    ssh: bedeutet, das ich mittels ssh den Befehl ausführe
    tty: bedeutet, das ich den Befehl direkt am RPi mit der Kamera eingebe

    2.1 rpicam-hello

    rpicam-hello zeigt kurz (ca. 5s) ein Vorschaufenster mit dem Video-Feed einer angeschlossenen Kamera an.

    Bei mir ist der Monitor am RPi an, keine GUI installiert, ich bin nicht über tty angemeldet.

    und auf dem Monitor erscheint für ca. 5 Sekunden ein Bild (Framebuffer-Ausgabe).

    Mit rpicam-hello -v0 unterdrückt man die Ausgabe auf der Konsole. Das Bild wird am Monitor angezeigt.

    Natürlich kann man die Vorschau in Position und Größe noch beeinflussen.
    rpicam-hello -f # Vollbild (beachte: das Kamerabild ist nicht 16:9)
    rpicam-hello -p 200,100,640,480

    2.2 rpicam-jpeg

    Erzeugt eine JPEG-Datei.

    Code
    # Erzeuge eine JPG-Datei im aktuellen Verzeichnis ohne Meldungen und zeige eine Vorschau auf dem Monitor.
    ssh:~> $ rpicam-jpeg -v0 -o ./testbild.jpg
    # Erzeuge eine JPG-Datei im aktuellen Verzeichnis ohne Meldungen und zeige keine Vorschau auf dem Monitor.
    ssh:~> $ rpicam-jpeg -n -v0 -o ./testbild_nopreview.jpg
    ssh:~> $ ls *jpg
    testbild.jpg  testbild_nopreview.jpg

    2.3 rpicam-raw

    Erzeugt Rohbilder (sogenannte RAW). Diese lassen sich zum Beispiel mit darktable bearbeiten.

    Die Bilder, die ich damit erzeugt habe, konnte ich in darktable nicht lesen. Vermutlich braucht es da noch ein paar Parameter. Wenn ich da Erkenntnisgewinn habe, ändere ich das hier.
    rpicam-raw -o ./testbild_raw.dng # war nicht bearbeitbar, warum auch immer.

    Bei rpicam-still gehe ich auf RAW-Bilder ein.

    2.4 rpicam-still

    wie rpicam-jpeg, aber im Gegensatz zu rpicam-jpeg unterstützt rpicam-still viele Optionen, die in der Legacy-Anwendung raspistill zur Verfügung stehen.
    Mit rpicam-still kann man auch andere Bildformate erzeugen.
    Dazu wird die Option -e benutzt. Mögliche Formate sind:
    jpg (default), png, bmp, rgb (binärer Dump von unkomprimierten RGB-Pixeln), yuv420 (Binärdump von unkomprimierten YUV420-Pixeln).

    2.4.1 Belichtungszeiten (Edit: 19.11.2024)

    Natürlich kann man auch die Belichtungszeit vorgeben.
    Dazu verwendet man die Option --shutter. Die Angabe erfolgt in Mikrosekunden.
    (1/60 = 1 / 60 * 1.000.000 = 16.667 -> --shutter 16667)
    rpicam-still -v0 --shutter 16666 -o ./test_1-60.jpg

    2.4.2 Lange Belichtungszeiten (Edit: 19.11.2024)

    Die maximale Belichtungszeit ist in der Hardware-Spezifikation angegeben. In der Tabelle die Zeile 'Maximum exposure time' suchen und in der Spalte der verwendeten Kamera ablesen. Für meiner Rev 1.3 sind das 3,28 s.
    Für lange Belichtungszeiten sollten die automatischen Belichtungseinstellungen (AEC/AGC) und der Weißabgleich (AWB) deaktiviert werden. Dazu gibt man die Optionen --gain und --awbgains an.
    Sinnvoll kann auch sein, die Vorschau mit --immediate zu überspringen (rpicam-still --help | grep immediate).

    Da ich bezüglich Fotografie eher eine erloschene Kerze statt einer Hellen bin, verweise ich einfach mal auf den Tuning Guide (PDF) 

    Ein Beispiel möchte ich trotzdem noch anführen. Das habe ich aus einem Astronomieforum und es nach meinen Bedürfnissen angepaßt. Das nutze ich für Zeitrafferaufnahmen in der Nacht:

    rpicam-still -v 0 -n --shutter 8010000 --gain 16 --awbgains 1,1 --immediate --denoise off --mode 2028:1520 -o "$PFAD/$BILD"

    2.5 rpicam-vid (Edit: 23.11.2024)

    2.5.1 lokale Ausgabe

    Ein Video für 10 Sekunden im H264-Format aufnehmen und als test-01.h264 speichern.
    rpicam-vid -t 10s -o test-01.h264
    Wer das Video ohne Anzeige am Monitor und ohne den die Informationen auf der Konsole haben möchte, fügt als Option noch -n -v0 hinzu. Das Video kann man sich dann mit einem Player wie vlc oder mpv anschauen.
    Da ich einen Zero 2 W verwende, nutze ich als Videoformat H264.

    2.5.2 Streaming

    2.5.2.1 Streaming mittels UDP

    Auf dem RPi mit der Kamera
    rpicam-vid -t 0 --inline -o udp://<ziel-ip>:<port>
    und am Zielrechner
    vlc udp://@:<port> :demux=h264
    oder
    mpv udp://@:<port> :demux=h264

    Wenn man am Zielrechner den Videoplayer schließt, steht am Zielrechner der Stream weiterhin an, so das man sich immer wieder damit verbinden kann.

    2.5.2.1 mittels TCP

    Auf dem RPi mit der Kamera
    rpicam-vid -t 0 --inline --listen -o tcp://0.0.0.0:<port>
    und am Zielrechner
    vlc tcp/h264://<ip des RPi>:<port>

    Hinweis: Wenn man am Zielrechner den Videoplayer schließt, beendet sich auch rpicam-vid auf dem RPi und es steht kein Videostream mehr zur Verfügung.

    3. Beispiele

    Werden im Laufe der Zeit ergänzt.

    3.1 Zeitraffer (Edit: 20.11.2024)

    Um Zeitrafferaufnahmen zu machen, reicht ein Befehl:
    rpicam-still -n -v0 -o bwzr_%04d.jpg --timelapse 5000 -t 3600000
    Die Zeitangaben sind in Millisekunden. -t 3600000 ist die Angabe, wie Lange Bilder gemacht werden sollen (hier 1h bzw. 3600 Sekunden). --timelapse gibt den Intervall (hier aller 5s). Die Bildnummer wird automatisch hochgezählt.
    Um daraus ein Video zu machen, kann man ffmpeg verwenden.
    ffmpeg -i bwzr_%04d.jpg zeitraffer_bwzr.mp4 ffmpeg-Optionen darf jeder selbst ermitteln.

    Ich schreibe mir gerne Skripte dafür. Ein Zeitrafferskript könnte so aussehen:

    Display Spoiler

    Ist sicherlich verbesserungswürdig, aber funktioniert.

    3.2 fbi - Bildbetrachter mit framebuffer (ohne X, ohne Wayland) (Edit: 22.11.2024)

    Für diejenigen, die keine GUI installiert haben, aber dennoch das Bild direkt am RPi betrachten wollen: Raspberry Pi OS Lite 12 (bookworm) wird standardmäßig mit aktiviertem framebuffer ausgeliefert. Dadurch bekommt man ja auch die Vorschau von den Programmen aus dem Paket rpicam-apps. Aber ein Bildbetrachter ist nicht enthalten. Ergo muß man sich einen installieren. Ich habe mir fbi ausgesucht. Dieser kann die Formate PhotoCD, jpeg, ppm, gif, tiff, xpm, xwd, bmp, png and webp. Wer andere Formate anschauen will, kann diese mit convert aus dem Paket imagemagick konvertieren.
    sudo apt install fbi
    Allerdings funktioniert fbi nur auf tty. Also nicht mit ssh, was sehr schade ist. Aus der man-Page:

    Quote from man fbi

    BUGS
    ...
    Fbi also needs access to the linux console (/dev/ttyN) for sane console switch handling. That is obvi‐
    ously no problem for console logins, but any kind of a pseudo tty (xterm, ssh, screen, ...) will not
    work.

    Aber wenn man remote die Bilder betrachten will, kann man die ja per scp holen oder man erstellt einen NFS-Export.

  • Kurzanleitung zur Inbetriebnahme einer Pi-Cam ab Bookworm? Schau mal ob du hier fündig wirst!

  • Hallo Bergwichtel,
    danke für die Anleitung.

    Ich habe hier einen RPi4 mit aktuellen bookworm der als Nistkastenkamera laufen soll.
    Über motion konnte ich damit bis buster einen mjpeg Stream über http auf beliebigen port ausgeben.

    MARI0
    November 17, 2023 at 10:41 PM

    Insbesondere die Einstellmöglichkeiten von Motion hätte ich gerne wieder. Bewegungserkennung/Snapshots sind mir wichtig.
    Ich verstehe schon, dass motion nicht mehr die eleganteste, zeitgemäße Lösung ist (wieso muss das als sudo laufen?)

    Die Websuche zu Raspberry-Pi als Webcam führt meist zu veralteten Anleitungen für motion / motion-eye, die aber so seit bullseye nicht mehr funktionieren, da neuere Kameramodule nicht angesprochen werden können.

  • Zu motion kann ich leider nichts sagen, da ich es noch nie versucht habe in Betrieb zu nehmen.

    Die Websuche zu Raspberry-Pi als Webcam führt meist zu veralteten Anleitungen für motion / motion-eye, die aber so seit bullseye nicht mehr funktionieren, da neuere Kameramodule nicht angesprochen werden können.

    Ich weiß es nicht, aber ich würde vermuten, daß das bei einem RPi vor Version 5 schon geht. Zumindest wenn Du die richtige Kamerasoftware installierst. Unter 1.4 Kamerasoftware installieren verweise ich auf die zu installierende Software. Die neue Software hat etwas veränderte Namen, die ich unter 2. Befehle zur Kameranutzung benenne. Noch werden bei der Installation Softlinks von den alten Befehlsnamen auf die Neuen gesetzt. Deshalb vermute ich, daß bis einschließlich RPi 4 ältere Software noch funktionieren könnte.

    Das beste wird sein, Du erstellst einen eigenen Thread mit Begriffen wie "motion unter bookworm (RPi-Cam)". Da werden die Kundigen eher darauf reagieren.

    Falls Du da zu einer Lösung kommst, verlinke ich auch gern auf diesen Thread (für die Nachkommenden).

  • Sollte das nicht in den Tut Bereich ??

    Seit bookworm braucht es kein raspi-config mehr um die Kamera zu aktivieren.

    Die neueren Kameras dürfen NICHT mehr über raspi-config aktiviert werden, da sonst die Ports als bereits belegt gekennzeichnet werden.
    Die erste CAM V1 und imho V2 mit der alten Lib brauchten noch diese Aktivierung, das hat sich inzwischen mit der neuen Lib geändert.

    ;) Gruß Outi :D

    Mein Zeug

    Pis: 2x Pi B, 1x Pi B+, 1x Pi 2 B in Rente / 2x Pi 3 B (Tests / Repetier Server) / 2x Pi Zero 1.2 / 2x Pi Zero 1.3 / 2x Pi Zero W 1.1 / 1x Pi Zero 2 (BW+CUPS/SANE) /
    1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (HomeAssistant) / Pi 400 (BW) / 1x Pi 5 8GB (BW) / 2x Pico / 2x Pico W / 2x Pico 2 / 2x Pico 2 W
    HATs: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT / Pimoroni NVMe BASE / M.2 HAT+
    Cams: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

    Edited once, last by Outlaw (December 23, 2024 at 5:32 PM).

  • Die neueren Kameras dürfen NICHT mehr über raspi-config aktiviert werden, da sonst die Ports als bereits belegt gekennzeichnet werden.

    Danke für den Hinweis. Ich habe die Passage oben im Text entsprechend angepaßt.

    Sollte das nicht in den Tut Bereich ??

    Dort 'Vergammelts', sprich man muß danach suchen.
    Was ich bedeutend besser finde würde, wäre, wenn der Beitrag in /Forum/Hardware/Raspberry Pi Camera Module oben angepinnt werden würde. Das hat den Vorteil, wenn jemand um Rat zum Thema RPi-Cam fragen will, fällt ihm (hoffentlich) der angepinnte Beitrag auf und kann vielleicht damit sein Problem lösen. Ein weiterer Vorteil ist, wenn sich wieder etwas ändern sollte, nimmt den Pin weg und der Beitrag rutscht ins Vergessen.

  • Motion läuft hier unter Bookworm32 auf einem RPi1B+

    Die Service-Datei für systemd:

    less /etc/systemd/system/multi-user.target.wants/motion.service

    Man achte auf die Zeile mit ExecStart

    Hier mal meine motion.conf

    less /etc/motion/motion.conf

    Die Bilder dieser CAM werden auf einem NAS abgespeichert, der über NFS gemountet ist.

    Dann sollte man noch darauf achten, das das motion.log nicht zu groß wird:

    less /etc/logrotate.d/motion

    Code
    /var/log/motion/motion.log {
            rotate 7
            daily
            delaycompress
            missingok
            notifempty
            copytruncate  
    }

    Mit einem RPi1B (512MB) werden nur 1-2 Bilder/s abgepeichert, ein RPi2B brachte es auf 4-5.
    Mir reicht das aus um den Garten zu überwachen

    MfG

    Jürgen

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!