Zum Inhalt

Dokumentation

BE-IIS-GMSL2-2CAM

Ein Raspberry-Pi-HAT zum Empfang von zwei entfernten GMSL2-Kameras und zur Weitergabe ihrer CSI-2-Videoströme an den Host.

BE-IIS-GMSL2-2CAM

Schrittweise Inbetriebnahme

Die Anleitung GMSL2-Kameras in Betrieb nehmen führt durch drei Fälle: unterstützter Kamerakopf, neuer Imager am BE-IIS-SER und eine andere GMSL2-Kamera. Jeder Fall folgt den Schritten Hardware anschließen, I²C-Pfad aufbauen und MIPI-Pfad aufbauen.

Überblick

Der BE-IIS-GMSL2-2CAM empfängt zwei entfernte GMSL2-Kameralinks und gibt deren CSI-2-Videoströme an einen Raspberry Pi 5 weiter. Der Kamera-Installer verwendet JSON-Profile für Sensor, I²C-Aliasse, Hardwareprüfungen und die Reihenfolge der Link- und Video-Initialisierung. Wähle ein Profil, das zur Boardrevision und zu beiden Kameraköpfen passt. Die folgenden Befehle verwenden dieses Profil durchgängig.

Derzeit verfügbares Profil: imx708-revb für das Rev.-B-Board mit zwei IMX708-Kameraköpfen. Profile für weitere Bildsensoren folgen in Kürze. Die verfügbaren Kombinationen stehen im Profilverzeichnis. Verwende das IMX708-Profil nicht mit einem anderen Sensor.

Voraussetzungen

  • Raspberry Pi 5, BE-IIS-GMSL2-2CAM-HAT und zwei vom gewählten Profil unterstützte Kameraköpfe.
  • Koaxkabel an Link A und Link B; beide Kameraköpfe sind versorgt.
  • Raspberry Pi OS, Netzwerkzugang und Berechtigung für sudo.
  • Während der Initialisierung und des Tests darf keine andere Anwendung oder ein Dienst die Kameras belegen.

Sofern nicht anders angegeben, laufen die Befehle auf dem Pi. Der folgende Ablauf gilt für ein Profil mit zwei Kameras und Overlays für beide Links.

1. Profil wählen und installieren

git clone https://github.com/be-iis/be-iis-cam-installer.git
cd be-iis-cam-installer
PROFILE=imx708-revb
./install.sh "$PROFILE"

Sobald ein Profil für deine Hardware verfügbar ist, ersetze imx708-revb in der PROFILE=-Zeile. Verwende denselben Wert bei Installation, Link-Initialisierung und Beispielen. Wenn der Installer den Kamera-I²C-Bus aktiviert und den Pi neu startet, gehe erneut ins Repository, setze PROFILE noch einmal und starte ./install.sh "$PROFILE" erneut. Die Installation richtet Treiber, Abhängigkeiten und Overlays für das gewählte Profil ein, initialisiert die GMSL-Links aber noch nicht.

Wenn das Repository bereits auf main ausgecheckt ist, aktualisiere es vor der Installation mit git pull --ff-only origin main. Meldekonflikte durch lokale Änderungen musst du vorher lösen.

Nach der Installation im Repository-Verzeichnis:

PROFILE=imx708-revb
make unoverlay
make prepare-a-b PROFILE="$PROFILE"
make pipeline-a-b PROFILE="$PROFILE"

Bei einem anderen Profil änderst du nur den Wert von PROFILE. Setze ihn auch in jeder neuen Terminal-Sitzung erneut. prepare-a-b prüft und initialisiert beide Steuerpfade und lädt die Kamera-Overlays des Profils. pipeline-a-b konfiguriert die CSI-Eingänge der Serializer und den Videoausgang des Deserializers nach demselben Profil. Falls die Links nach einem Reset neu initialisiert werden müssen, wiederhole diese Schritte. Ein systemd-Dienst für die Kamera-Initialisierung ist nicht erforderlich.

3. Beide Videoströme prüfen

rpicam-hello --list-cameras
rpicam-hello --camera 0 -t 0
rpicam-hello --camera 1 -t 0

In der Liste sollten zwei zum gewählten Profil passende Kameras erscheinen. Beende jede Vorschau mit Strg+C, bevor du die nächste startest. Kamera-Indizes und verfügbare Sensormodi hängen vom Profil und von der Kamera-Erkennung des Pi ab. Die Liste bestätigt die Erkennung des Sensors; erst die laufende Vorschau bestätigt, dass Bilder am Pi ankommen.

Beide Bilder nebeneinander auf einem angeschlossenen HDMI-Bildschirm:

make video-dual PROFILE="$PROFILE"

Das Beispiel akzeptiert das gewählte Profil auch direkt. Optional kannst du INA226-Versorgungswerte und GMSL-Linkdiagnose einschalten:

sudo -E python3 examples/dual-hdmi-preview/dual_preview.py --profile "$PROFILE" --ina --gmsl

Das HDMI-Beispiel verwendet eine Anzeigefläche von 800×480 Pixeln. Die Dokumentation des Beispiels erklärt Ausgabeauflösung, Fokus und Überwachung. Das Profil muss die beiden Kamera-Indizes und die Link-Zuordnung für das Beispiel enthalten.

Optional: Vorschau auf einem Linux-PC

Starte nach der Initialisierung beider Links den Sender auf dem Pi. Ersetze die Adresse durch die IP-Adresse deines PCs:

python3 examples/dual-pc-preview/dual_stream_to_pc.py 192.168.178.116 --profile "$PROFILE"

Installiere auf dem PC gstreamer1.0-tools, gstreamer1.0-plugins-base und gstreamer1.0-plugins-good. Starte danach den Empfänger:

gst-launch-1.0 -v \
  udpsrc port=5000 caps="application/x-rtp,media=video,encoding-name=JPEG,payload=26,clock-rate=90000" \
  ! rtpjitterbuffer latency=50 \
  ! rtpjpegdepay ! jpegdec ! videoconvert ! autovideosink

Das PC-Vorschau-Beispiel erklärt die optionale Port-Einstellung.

Aktuelles Profil: IMX708 Rev. B

Das Profil imx708-revb.json stellt beide MAX96716A-Links über I²C auf 6 Gbit/s, Koax und Tunnel-Modus. Rev. B hat keinen DigiPot. Nach einem Link-Reset aktiviert und prüft das Profil die Empfängeradaption. Für IMX708 wird ein angepasster Sensortreiber installiert; prüfe den installierten Modulpfad mit modinfo -n imx708 (er sollte unter updates/ liegen).

Bei diesem Profil ist Kamera 0 Link B (imx708@53) und Kamera 1 Link A (imx708@52). Der getestete Sensormodus ist 2304×1296 RAW10. Register und CSI-Zuordnung stehen in der Inbetriebnahmeanleitung. Diese Aliasse, Indizes, der Modus und die Treiberhinweise gelten nicht automatisch für künftige Profile.

Wenn beide Kameras gelistet werden, aber die Vorschau in einen Timeout läuft, prüfe, ob make pipeline-a-b PROFILE="$PROFILE" erfolgreich war. Beim IMX708-Profil prüfe zusätzlich, ob der angepasste Treiber geladen wurde. Eine erkannte Kamera bedeutet noch nicht, dass der Videopfad funktioniert.

Für Stereo-Anwendungen müssen die Kamerapositionen mechanisch fixiert und die Kameras bei der verwendeten Fokusstellung und Auflösung kalibriert werden. Die Link-Initialisierung führt keine Stereo-Kalibrierung durch.