Table of Contents

Crowsnest V4 Guide

YouTube Video #51


TBD: @Juergen2102 @Juergen2102 • vor 5 Minuten @dr.klipper bei einer anderen Kamera kann man sich mit diesem Befehl - v4l2-ctl -d /dev/video0 –list-ctrls - sämtliche Funktionen anzeigen lassen und dann den Fokus manuell in der Crownest.cfg einstellen, mit z.B. v4l2ctl: focus_auto=0,focus_absolute=80


Vielen Dank an Sven van Beckum von 3D Partner (https://partner-3d.de/) für das Sponsoring der Raspberry Pi V3 Cam!

Übersicht

CrowsNest Kamera Typ Stream Dienst Hinweise
Version 3 Raspberry Pi Cam V1 / V2 ustreamer (Legacy) Einbindung der Kamera normal über den /dev/videoXX Pfad
Raspberry Pi Cam V3 nicht unterstützt
ArduCam nicht unterstützt
USB Kamera ustreamer (Legacy) Einbindung der Kamera normal über den /dev/videoXX Pfad
Voraussetzung ist, dass die Kamera vom System erkannt wird
Version 4 Raspberry Pi Cam V1 / V2 camera-streamer siehe Raspberry Pi Cam
Raspberry Pi Cam V3 camera-streamer siehe Raspberry Pi Cam
ArduCam camera-streamer siehe ArduCam
USB Kamera camera-streamer Einbindung der Kamera normal über den /dev/XX Pfad
Voraussetzung ist, dass die Kamera vom System erkannt wird
siehe USB Cam
Version 4
(andere SBCs, X86 / X64)
ustreamer (Legacy)
Hinweis:
Bei älteren Systemen mit Debian Buster ist ein Update auf Bullseye erforderlich!

Was ist neu?

Die größten Neuerungen in Crowsnest V4 sind folgende:

Update V3 -> V4

Hinweis 1
Ab MainSail OS 1.2.0 ist Crowsnest V4 vorinstalliert!
Da könnt ihr euch den ganzen Update Kram also sparen :-)
Hinweis 2
Das Update erfolgt in der SSH Konsole und nicht in MainSail!
Crowsnest V4 lässt sich nicht direkt über den UPDATE Button in Mainsail updaten!
Wenn ihr das angeklickt habt wird Crowsnest sehr wahrscheinlich nicht sauber laufen.
Siehe dazu auch den Hinweis bei Crowsnest V3 deinstallieren.

Konfiguration Pi

Kamera Test

Hinweis
Dieser Test funktioniert nur mit einem laufenden X Server (ich nutze dafür MobaXTerm)

Kamera Infos lesen

Pi Cams

Damit die Raspberry Pi Kameras korrekt in der crowsnest.conf eingetragen werden können, brauchen wir den korrekten Pfad zum Gerät.
Dies kann u.a. aus dem crowsnest Log ausgelesen werden. Einfacher geht es aber mit folgendem Befehl in der Konsole:

libcamera-vid --list-cameras

Als Ergebniss bekommt man dann folgende Ausgaben für die unterschiedlichen Raspberry Pi Cams:

Cam V1 suchen (ov5647 Chip)

pi@TestPi3:~ $ libcamera-vid --list-cameras
Available cameras
-----------------
0 : ov5647 [2592x1944] (/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]

Cam V2 suchen (imx219 Chip)

pi@PiTest:/dev $ libcamera-vid --list-cameras
Available cameras
-----------------
0 : imx219 [3280x2464] (/base/soc/i2c0mux/i2c@1/imx219@10)
    Modes: 'SRGGB10_CSI2P' : 640x480 [103.33 fps - (1000, 752)/1280x960 crop]
                             1640x1232 [41.85 fps - (0, 0)/3280x2464 crop]
                             1920x1080 [47.57 fps - (680, 692)/1920x1080 crop]
                             3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]
           'SRGGB8' : 640x480 [103.33 fps - (1000, 752)/1280x960 crop]
                      1640x1232 [41.85 fps - (0, 0)/3280x2464 crop]
                      1920x1080 [47.57 fps - (680, 692)/1920x1080 crop]
                      3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]

Cam V3 suchen (imx708 Chip)

pi@PiTest:~ $ libcamera-vid --list-cameras
Available cameras
-----------------
0 : imx708_wide_noir [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a)
    Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (768, 432)/3072x1728 crop]
                             2304x1296 [56.03 fps - (0, 0)/4608x2592 crop]
                             4608x2592 [14.35 fps - (0, 0)/4608x2592 crop]

Von dieser Ausgabe brauchen wir die Angabe die mit /base startet. Im Falle der Pi Cam V3 bei mir z.B. /base/soc/i2c0mux/i2c@1/imx708@1a.
Hier kann man sich auch gleich die Auflösung und mögliche FPS notieren die wir ebenfalls in der corwsnest.conf später eintragen müssen.

ArduCam

ArduCams sollen mit Crowsnest V4 auch laufen. Mangels Hardware konnte ich das noch nicht testen.
Die Einrichtung und Pfad Suche dürfte aber sehr ähnlich wie bei der Raspberry Pi V3 Cam sein.

USB Cam

Wie man den korrekten Device Pfad für USB Kameras ermittelt habe ich schon in einem eigenen Video erklärt:

Kurzfassung

crowsnest.log

Neben dem manuellen Auslesen der Kamera Pfade / Infos gibt es auch noch das crowsnest Log. Auch hier kann man die meisten Informationen zu den Kameras finden. Der Vollständigkeit halber hier die beiden Möglichkeiten, die Informationen einzusehen:

crowsnest.conf anpassen

Hinweis: Auflösungen und FPS
Der Raspberry Pi Video De-/Encoder kann maximal eine Auflösung von 1920×1080 verarbeiten. Auch wenn ihr die Auflösung größer einstellt wird nicht mehr ausgegeben. Zudem verringern sich die möglichen Bilder pro Sekunde (FPS) wenn mehrere Kameras verwendet werden (Erfahrungen Stefan Dej : 2x 1920x1080f30 ⇒ 1920x1080f15 / 2x 1280x720f30 ⇒ 1280x720f25). Dies ist ein Hardware Limit vom Raspberry Pi.

Siehe auch die Beispiel Konfig für Crowsnest V4 am Ende dieses Beitrags.

Web Test

MainSail Konfiguration

Damit die Kameras auch in Mainsail angezeigt werden müssen die hier auch konfiguriert werden.

RTSP Stream (VLC)

Die RTSP Streams kann man sich (sofern in der Konfig eingeschaltet) u.a. mit VLC ansehen. Dazu braucht man die IP und den RTSP Port (der ebenfalls in der Konfig eingestellt ist).

Aufrufen kann man das dann wie folgt:

Update Crowsnest (Recompile)

Configs

/boot/config.txt

| config.txt
## LEGACY Mode    ##
## Disable libcamera (interferes with ustreamer, when using raspicams)
#camera_auto_detect=0
## Enable VideoCore at boot, needed for Crowsnest (Raspicams and DSI devices).
#start_x=1
 
## libcamera Mode ##
dtoverlay=vc4-kms-v3d
# CAM V1
#dtoverlay=ov5647
# CAM V2
#dtoverlay=imx219
# CAM V3
#dtoverlay=imx708
# AutoDetect
camera_auto_detect=1

crowsnest.conf V3

crowsnest.conf
#### crowsnest.conf
#### This is a typical default config.
#### Also used as default in mainsail / MainsailOS
#### See:
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
#### for details to configure to your needs.


#####################################################################
####                                                            #####
####      Information about ports and according URL's           #####
####                                                            #####
#####################################################################
####                                                            #####
####    Port 8080 equals /webcam/?action=[stream/snapshot]      #####
####    Port 8081 equals /webcam2/?action=[stream/snapshot]     #####
####    Port 8082 equals /webcam3/?action=[stream/snapshot]     #####
####    Port 8083 equals /webcam4/?action=[stream/snapshot]     #####
####                                                            #####
#####################################################################


[crowsnest]
log_path: ~/printer_data/logs/crowsnest.log
log_level: verbose                      # Valid Options are quiet/verbose/debug
delete_log: true                        # Deletes log on every restart, if set to true

[cam 1]
mode: mjpg                              # mjpg/rtsp
port: 8080                              # Port
device: /dev/video0                     # See Log for available ...
resolution: 640x480                     # widthxheight format
max_fps: 15                             # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags:                          # You can run the Stream Services with custom flags.
#v4l2ctl:                               # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

[cam 2]
mode: mjpg                              # mjpg/rtsp
port: 8081                              # Port
device: /dev/video1                     # See Log for available ...
resolution: 640x480                     # widthxheight format
max_fps: 15                             # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags:                          # You can run the Stream Services with custom flags.
#v4l2ctl:                               # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

crowsnest.conf V4

crowsnest.conf
#### crowsnest.conf
#### This is a typical default config.
#### Also used as default in mainsail / MainsailOS
#### See:
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
#### for details to configure to your needs.


#####################################################################
####                                                            #####
####      Information about ports and according URL's           #####
####                                                            #####
#####################################################################
####                                                            #####
####    Port 8080 equals /webcam/?action=[stream/snapshot]      #####
####    Port 8081 equals /webcam2/?action=[stream/snapshot]     #####
####    Port 8082 equals /webcam3/?action=[stream/snapshot]     #####
####    Port 8083 equals /webcam4/?action=[stream/snapshot]     #####
####                                                            #####
#####################################################################
####    RTSP Stream URL: ( if enabled and supported )           #####
####    rtsp://<ip>:<rtsp_port>/stream.h264                     #####
#####################################################################


[crowsnest]
log_path: /home/pi/printer_data/logs/crowsnest.log
log_level: verbose                      # Valid Options are quiet/verbose/debug
delete_log: true                       # Deletes log on every restart, if set to true
no_proxy: false

[cam 1]
mode: camera-streamer                         # ustreamer - Provides mjpg and snapshots. (All devices)
                                        # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: true                      # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8554                         # Set different ports for each device!
port: 8080                              # Port
#device: /base/soc/i2c0mux/i2c@1/imx708@1a                     # See Log for available ...
device: /base/soc/i2c0mux/i2c@1/ov5647@36
resolution: 640x480                     # widthxheight format
max_fps: 25                             # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags:                          # You can run the Stream Services with custom flags.
#v4l2ctl:                               # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

[cam 2]
mode: camera-streamer                         # ustreamer - Provides mjpg and snapshots. (All devices)
                                        # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: true                      # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8555                         # Set different ports for each device!
port: 8081                              # Port
device: /dev/v4l/by-id/usb-SIT_USB2.0_Camera_SIT_USB2.0_Camera-video-index0                    # See Log for available ...
resolution: 640x480                     # widthxheight format
max_fps: 25                             # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags:                          # You can run the Stream Services with custom flags.
#v4l2ctl:                               # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.