Installationsrezept Raspberry Pi 4 + Doppelnetzwerk + INDI - Sourcecode

fuetti

Aktives Mitglied
Erstellungsdatum 2025-04-21
INDI-Version: 2.1.3

Hallo Astrofreunde,

da mir die Installation von Indi auf einem Raspberry Pi 4 vergleichsweise schwer gefallen ist und ich einige Fehlversuche durchlaufen musste, veröffentliche ich hier das in meinem Falle erfolgreiche Installationsrezept. So könnt Ihr euch Zeit sparen, falls ein Raspberry Pi 4 für die Teleskopsteuerung neu eingerichtet werden soll.
Als Besonderheit sind hier parallel 2 Netzwerkverbindungen vorgesehen, das erste "eth0" läuft über ein 1000er Ethernetkabel und bleibt lokal (keine Verbindung zum Internet) und das zweite "wlan1" ist über eine externe USB-WLAN-Antenne mit dem Internet verbunden. Die interne Antenne ist wenig brauchbar, wenn der Raspberry nicht wenige Meter vom WLAN-Router entfernt steht. Vielleicht liegt es auch am Metallgehäuse meines Raspberrys.

Dabei ist der Adressraum 10.50.10.0/24 fürs Intranet (eth0) und 10.50.11/24 fürs Internet (wlan1) vorgesehen. Für die Intranetverbindung (eth0) werden statische Adressen, fürs Internet (wlan1) dynamische (dhcp) verwendet. Dies hat den Vorteil, dass über WLAN Updates wie gewohnt möglich sind und die Uhrzeit durch Verbindung zu einem Zeitserver automatisch abgeglichen werden kann. Diese Verbindung ist jedoch nicht unbedingt erforderlich. Gleichzeitig laufen die Steuerungsbefehle und der Bilddatenstrom über die zuverlässigere und schnellere Kabelverbindung. Denn es hat sich herausgestellt, dass WLAN-Schwankungen von INDI oft nicht toleriert werden. Die Aufnahmen werden dann plötzlich nicht mehr übertragen oder die Verbindung wird sogar ganz unterbrochen. Schlimmer noch ist die schlechte EMV mancher Kameras, z.B. von Player One, weswegen ich WLAN mit angeschlossener Kamera kaum nutzen konnte. Allein schon aus diesem Grunde empfiehlt sich unbedingt eine große externe WLAN-Antenne, idealerweise von Edimax, da die Treiber hier keine zusätzliche Installationsakrobatik erfordern und eine Kabelverbindung für kritische Daten.

Ein weiteres Ziel war von der 64bit Version von Raspios profitieren zu können.

Die nicht ganz aktuelle Version "Bullseye" wurde hier bevorzugt, da diese als zuverlässig und vielfach ausgetestet gilt. Sie wird von Debian für kritische Anwendungen empfohlen.

Zusatzinfo: Bullseye setzt noch standardmäßig auf den dhcpcd-Client für die Netzwerkkonfiguration, was für Bookworm geändert wurde.

Dies ist keine Anleitung für gänzliche Anfänger ohne Erfahrung mit Unix/Linux.
Ich setze die Grundlagen von Linux und die Verfahren zur Installation und Kompilation auf einen Linux-System voraus.
Für Mitteilung von Fehlern oder bessere Lösungen bin ich dankbar, jedoch leiste ich kein Hilfestellung, falls die Installation nicht wie vorgesehen klappt.
In dem Fall bitte ich selbst zu recherchieren und zu probieren. Ich habe dieses Rezept mehrfach getestet und es funktionierte tadellos.


----- EINRICHTUNG DER SD-KARTE ---------

Nach Einstecken der SD-Karte in einen Linux-Zweitrechner (OpenSuSE Tumbleweed) muss man zunächst den Namen der Karte ermitteln:
> sudo fdisk -l
Der letzte Eintrag in der ausgegebenen Liste sollte den Eintrag /dev/sdX enthalten. "X" ist hierbei ein Platzhalter für Kleinbuchstaben b,c,d,e,f,... Das ist das neue Device, also die gerade eingesteckte SD-Karte. Der exakte Buchstabe hängt von der individuellen Konfiguration des Zweitrechners ab.

Folgende Image-Datei muss aus dem Internet entweder mit Browser oder wget heruntergeladen werden:
2024-10-22-raspios-bullseye-arm64-lite.img
Bitte nichts von Drittanbietern herunterladen, sondern die Raspberry Pi Webseite nutzen. Sonst kann man nicht ausschließen, dass Spy-Software oder Backdors mit installiert werden. Dies ist kritisch, da hier der Raspberry permanent mit dem Internet verbunden sein kann und seine ganze Leistungsfähigkeit für die Erstellung und Verarbeitung der Astroaufnahmen benötigt wird. Es empfiehlt sich daher auch, die Checksumme zu prüfen.

-----------------------------------------------------------

Nun folgt das Schreiben des Images auf die SD-Karte im Zweitrechner:

> sudo dd if=2024-10-22-raspios-bullseye-arm64-lite.img of=/dev/sdX bs=4096 status=progress && sync
Nach Fertigstellung nach plus minus 10 Minuten bitte die Karte auswerfen:
> sudo eject /dev/sdX

Jetzt Karte herausziehen und erneut einstecken.
jetzt erscheinen 2 neue Partitionen in der Partitionsliste: bootfs und rootfs

Da der Standarduser "pi" nicht mehr automatisch eingerichtet ist, muss man das erst manuell erledigen:
> touch /run/media/cf/bootfs/ssh
> echo "pi:$(echo 'raspberrypi' | openssl passwd -6 -stdin)" > /run/media/cf/bootfs/userconf
> sync
> eject /dev/sdX

Dabei lautet das Passwort "raspberrypi" und sollte nach erfolgreicher Installation unbedingt ersetzt werden.


Jetzt müssen noch ein paar Dateien angepasst werden, damit sich der Raspi mit den Netzwerken verbinden kann:

> sudo nano /run/media/cf/rootfs/etc/network/interfaces

#--------------------------------------------#
# Setup the loopback network interface (lo0) #
#--------------------------------------------#
auto lo
iface lo inet loopback

#--------------------------------------------#
# Setup eth0 - verbunden mit privatem LAN #
#--------------------------------------------#
auto eth0 # fuer fest eingebaute Hardware

#--------------------------------------------#
# Setup wlan1 - verbunden mit dem Internet #
#--------------------------------------------#
allow-hotplug wlan1 # fuer mobile Hardware
iface wlan1 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf



> sudo nano /run/media/cf/bootfs/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={
ssid="Netzwerkname"
psk="Passwort"
scan_ssid=1
}


Anmerkung: Hier die entsprechenden Daten fürs WLAN zwischen den Anführungszeichen manuell einfügen.


> sudo nano /run/media/cf/rootfs/etc/dhcpcd.conf

interface eth0
static ip_address=10.50.10.30/24


> sudo nano /run/media/cf/rootfs/etc/resolv.conf

# Generated by resolvconf
domain fritz.box
nameserver 10.50.11.1


Anmerkung: Ich habe nicht ausprobiert, diese letzte Anpassung wegzulassen. Vielleicht gehts auch ohne.


Jetzt den Puffer leeren...
> sudo sync
...die Karte unmounten...
> sudo eject /dev/sdX
...und auswerfen oder besser gesagt: rausziehen.

Nun die SD-Karte in den Raspberry Pi einstecken und die Stromversorgung anschließen.
Nach ein paar Minuten sollte der Raspberry fertig gebootet haben und im WLAN-Netz und im lokalen Kabelnetz durch ping oder nmaps auffindbar sein.


Jetzt kann man sich über WLAN oder Kabel-LAN einloggen:
ssh pi@10.50.10.30
oder
ssh pi@raspberrypi.fritz.box
oder ähnlich, je nach den lokalen Gegebenheiten Deines Systems

Falls das nicht funktioniert, muss noch auf dem Zweitrechner die Liste der bekannten Hosts angepasst werden. Das geschieht durch Löschen der Zeilen mit den für den Raspberry vorgesehenen Adressen. Denn sind diese Adressen schon vorher benutzt worden, interpretiert ssh dies als Penetrationsversuch durch ein Fremdsystem und blockiert den Zugang.
> nano ~/.ssh/known_hosts


So, jetzt sind wir auf dem Raspberry Pi - endlich!

Zuerst, wie üblich, muss aktualisiert werden:

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt -y upgrade



----- INSTALLATION VON INDI ---------

Hierbei wird INDI komplett kompiliert, was den Vorteil hat, dass man selbst direkt und sofort Anpassungen in den Treibern vornehmen kann.

Wir benötigen hierzu in jedem Fall "git":
pi@raspberrypi:~ $ sudo apt install git

Für INDI werden noch folgende Bibliotheken und Befehle benötigt und nachinstalliert:
pi@raspberrypi:~ $ sudo apt -y install cmake libusb-1.0-0-dev libnova-dev libcfitsio-dev libcfitsio-bin octave-fits libccfits-dev libev-dev libcurl4-gnutls-dev libjpeg-dev libfftw3-dev build-essential libgsl-dev

Nun kreieren wir das Arbeitsverzeichnis und wechseln in dieses:
pi@raspberrypi:~ $ mkdir Projects
pi@raspberrypi:~ $ cd Projects


Nun wird der INDI-Sourcecode auf den Raspberry geklont,...
pi@raspberrypi:~ $ git clone GitHub - indilib/indi: INDI Core Library Repository

... kompiliert...
pi@raspberrypi:~ $ cd indi
pi@raspberrypi:~ $ mkdir build
pi@raspberrypi:~ $ cd build
pi@raspberrypi:~ $ cmake -DCMAKE_INSTALL_PREFIX=/usr ..

...und installiert:
pi@raspberrypi:~ $ make -j4

das wars.

Jetzt kommen noch die Treiber beigetragen von Dritten ("3rd party"):

Zuerst klonen wir den Sourcecode:
pi@raspberrypi:~ $ git clone GitHub - indilib/indi-3rdparty: INDI 3rd Party drivers repository

Installieren die erforderlichen Bibliotheken und Befehle nach:
pi@raspberrypi:~ $ sudo apt -y install libavcodec-dev libavdevice-dev libpthreadpool-dev libraw-dev libboost-all-dev libdrm-dev libcamera-dev
pi@raspberrypi:~ $ sudo apt-get -y install libindi-dev libcxxtools-dev


Diesmal kompilieren wir die Treiber selektiv und automatisiert angepasst an das spezifischen Setup.
Das erreichen wir durch ein kleines BASH-Script, weches in eine Datei z.B. mit Namen "script.sh" abgespreichert werden muss:

BASEDIR=${HOME}/Projects/indi-3rdparty/

cd $BASEDIR

mkdir build 2> /dev/null

mods=( libtoupcam
libnncam
libogmacam
libasi
libatik
libmicam
libplayerone
libqhy
libbressercam
libaltaircam
libmallincam
libmeadecam
libomegonprocam
libstarshootg
libtscam
libsvbonycam
indi-toupbase
indi-asi
indi-atik
indi-mi
indi-sx
indi-webcam
indi-qhy
)

for m in ${mods[*]}; do
echo
echo
echo " To be built: " $m
mkdir -p ${BASEDIR}/build/$m
cd ${BASEDIR}/build/$m
cmake -DCMAKE_INSTALL_PREFIX=/usr -S ../../$m -B .
make clean
make -j4
sudo make install | tee install.log
done


Bitte also das Script an Dein Teleskop-Aufbau anpassen, denn eine Übersetzung aller Treiber dauert sehr lange.

Dieses Script muss noch mit Ausführerlaubnis ausgestattet werden...

pi@raspberrypi:~ $ chmod u+x script.sh

und kann dann ausgeführt werden:
pi@raspberrypi:~ $ ./script.sh


Das dauert gut 20 Minuten, sollte aber ohne Fehler ablaufen.
Werden mehr Treiber benötigt, muss man evtl. noch Bibliotheken und die gewünschten Treiber hinzufügen. Manche Treiber - insbesondere die für Touptek - verwenden sehr viele Fremdbibliotheken: libbressercam, libaltaircam, libmallincam, libmeadecam, libomegonprocam, libstarshootg, libtscam, libsvbonycam...
Welche genau musste ich durch Ausprobieren herausfinden. Hierfür ist das Script sehr nützlich. so war jedenfalls einfacher, als den Quellcode zu durchsuchen.

Danach ist INDI einsatzbereit.

Viel Spaß beim Fotografieren und viele osterliche Astro-Grüße, Claus


------------------------------------------------------------------------------------------------
Bemerkung: Das ursprüngliche Script habe ich im Internet gefunden und angepasst. Leider kann ich die genaue Quelle nicht mehr finden, um den Autor fairerweise zu zitieren. Es ist jedoch sehr einfach, sehr leicht verständlich und wirklich kein Hexenwerk.
 
Zuletzt bearbeitet:
Schöne Anleitung!

Ein paar Bemerkungen dazu:
  1. Ich würde den PI Imager für die Basis-Installation nehmen. Dort kann man auch gleich das WLAN-Passwort konfigurieren und schafft es so, den Raspberry komplett ohne Bildschirm zu installieren. Ich würde auch empfehlen, gleich auf Bookworm zu gehen. Die Version läuft schon seit Monaten stabil, also keine Bange!
  2. Die Installationen von INDI und von INDI-3rdparty sind auch ganz gut auf deren Github-Seiten beschrieben.
  3. Bei INDI-3rdparty darauf achten, dass man zuerst die Libraries bauen und installieren muss und erst dann die jeweiligen INDI-Treiber.
VG Wolfgang
 
Hallo Claus,

Danke für die Anleitung.

Aus meiner Sicht müßte da noch mindestens PHD2 und gpsd drauf. Stellarium würde auch nicht schaden.

Viele Grüße,

Günther
 
Hallo zusammen,

danke für die Vorschläge,
Hier wurde bewusst die Methode zu Fuß mit Standardbefehlen des Betriebssystems gewählt, ohne Scripte, wie den PI-Imager.
Erfahrungsgemäß funktionieren Scripte meist nur für eine kurze Zeit, denn ständig werden Änderungen am System vorgenommen. Wenn das Script dann nicht vom Autor permanent aktualisiert wird, ist man meist aufgeschmissen.
Ein Rezept hingegen erlaubt ein Schritt-für-Schritt-Nachvollziehen. Dadurch dauert zwar die Installation länger und erfordert Aufmerksamkeit, eine Anpassung wird jedoch einfacher, da man schneller verstehen kann, was die einzelnen Schritte tun.

openfuture: libindi-dev ist tatsächlich redundant. Kann man vermutlich weglassen.

Sicher kann man den Bouquet durch weitere Programme, wie PHD2, kstars, etc. ergänzen, das ist aber nicht das Thema dieses Beitrages.
Von stellarium würde ich absehen, da es auf einem sparsamen headless SBC, wie dem RPi, sicher kein Spaß macht.

Den RPi verwende ich ausschließlich als Steuerserver draußen am Gerät und starte darauf keine graphische Software. Diese läuft dann auf einer stationären Maschine im warmen Arbeitszimmer mit quasi endlosem Speicherplatz und Rechenleistung. Das Server-Client Prinzip hat ja zum Ziel, die Aufgaben entsprechend auf mehrere Rechner zu verteilen.

KORREKTUR:

Nun wird der INDI-Sourcecode auf den Raspberry geklont,...
pi@raspberrypi:~ $ git clone GitHub - indilib/indi: INDI Core Library Repository
... kompiliert...
pi@raspberrypi:~ $ cd indi
pi@raspberrypi:~ $ mkdir build
pi@raspberrypi:~ $ cd build
pi@raspberrypi:~ $ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
...und installiert:
pi@raspberrypi:~ $ make -j4

das wars.

Das wars leider nicht, es fehlt noch die Installation selbst:
pi@raspberrypi:~ $ sudo make install

Beste Grüße, Claus
 
Zuletzt bearbeitet:
Guten Morgen zusammen,

Den RPi verwende ich ausschließlich als Steuerserver draußen am Gerät und starte darauf keine graphische Software. Diese läuft dann auf einer stationären Maschine im warmen Arbeitszimmer mit quasi endlosem Speicherplatz und Rechenleistung. Das Server-Client Prinzip hat ja zum Ziel, die Aufgaben entsprechend auf mehrere Rechner zu verteilen.
:y:
das ist ja auch Sinn und Zweck der Übung und das Teil heißt ja nicht umsonst INDI-Server.
Irgendeinen Rechenknecht draußen am Teleskop, an dem alles angestöpselt wird und mit dem ganzen Geraffel um Kamera, Montierung, etc. anzusteuern.
Der Zugriff erfolgt dann vom Arbeitstier in der warmen Stube.
Es braucht kein Stellarium, PHD2, etc. auf dem Teleskop-Rechenknecht.
Stellarium und alles was unter Linux in diesem Bereich vorhanden ist kann auf den INDI-Server zugreifen.
Sämtliche Daten landen auf dem Warme-Stuben-Rechenknecht. Bilder, log's, etc.
Dafür muss natürlich eine absolut sichere Datenverbindung vorhanden sein.
 
Ich habe Stellarium in der Vergangenheit auf dem Astroberry gehabt und um etwas zu suchen und zu finden war das vollkommen ok.

Viele Grüße,

Günther
 
Hallo Claus,

danke für die ausführliche Anleitung. Für den Aufwand wäre ich aber zu faul ;)

Nicht jeder braucht die absolut neuesten Treiber und damit die Installation aus dem Sourcecode. Aber mit Deiner Anleitung ist das schon etwas schmerzfreier :y:

Bei mir musste für die INDI-Installation folgendes reichen:
sudo apt-add-repository ppa:mutlaqja/ppa
sudo apt-get update && sudo apt-get install indi-full

PS: PI Imager wurde ja schon genannt.

Je nach Geschmack noch mit Kstars und PHD2 würzen …

CS & VG
Stefan
 
dito ;)

Es gibt Core Images für den RPi. Also ohne Desktop.
Das über den erwähnten PI Imager auf SSD oder Karte und dann Dein:
sudo apt-add-repository ppa:mutlaqja/ppa
sudo apt-get update && sudo apt-get install indi-full
und gut ist.

KStars oder Stellarium oder CCDciel oder Skychart (ehemals CdC) oder oder auf den Warme-Stube-Rechenknecht und dann mit dem INDI-Server (RPi oder anderen Rechenknecht) zugreifen.

Dennoch Respekt für die Erstellung und Anleitung, top! :y:.
 
dito ;)

Es gibt Core Images für den RPi. Also ohne Desktop.
Das über den erwähnten PI Imager auf SSD oder Karte und dann Dein:

und gut ist.

KStars oder Stellarium oder CCDciel oder Skychart (ehemals CdC) oder oder auf den Warme-Stube-Rechenknecht und dann mit dem INDI-Server (RPi oder anderen Rechenknecht) zugreifen.

Dennoch Respekt für die Erstellung und Anleitung, top! :y:.
Danke für das Kompliment :)

Den Befehl apt-add-repository kennt Debian nicht, daher funktioniert das nicht. Das ist wohl ein reiner Ubuntu-Befehl. Ich verwende nie Ubuntu, da die Entwickler eben immer ihr eigenes Süppchen kochen wollen und nicht auf Effizienz und Kompatibilität des Systems achten. Irgendwo habe ich auch ein anderes Repositorium gefunden mit "apt install indi-full" (wirklich faule Leute wie ich schreiben doch nicht "apt-get" aus ;-), was jedoch nicht für meine Touptek funktioniert hat. Dort gab es die toupbase Bibliothek wohl nur für 32bit, ich wollte aber 64 bit und habe diesen Ansatz verworfen. Schließlich habe ich mich entschlossen, alles zu Fuß zu probieren, was ja auch nicht schwierig ist, wenn alles aufeinander abgestimmt ist. Ich kann jetzt sogar jeden Treiber ändern oder den Debug-Modus aus- oder einschalten, etc. Generell ziehe ich es vor vom Sourcecode zu kompilieren, wenn ich die Zeit dazu habe, und mit INDI was es wirklich sehr einfach. Das macht dann auch viel Spaß. Schwieriger war die Netzwerkkonfiguration, da die Linux-Entwickler da ständig Änderungen vornehmen und diese schlecht bis gar nicht dokumentieren. Wenn man danach sucht, findet man massig ausführliche, jedoch veraltete Dokumente, die nicht mehr funktionieren, was ziemlich lästig ist und verwirrt. Daher mein Beitrag oben.

Grüße, Claus
 
Hallo Claus,

kein Thema. Was gut ist kann man auch mal kommentieren und loben.

Den Befehl apt-add-repository kennt Debian nicht,
jep, das ist so. Debian, die unkaputbar Distribution ;), vertritt halt eine andere Philosophie.
Somit muss, wie Du es ja gemacht hast, ein anderer Weg beschritten werden.

"apt install indi-full" (wirklich faule Leute wie ich schreiben doch nicht "apt-get" aus ;-),
apt reicht mittlerweile.

diese schlecht bis gar nicht dokumentieren.
:whistle:
kenne ich noch aus meiner aktiven Zeit als IT-ler :affemund:.
Dokumentation braucht kein Mensch, Blödsinn alles ;). Hat mein damaliger Chef anders gesehen und hat natürlich recht!. Lästig aber sinnvoll.

Aber ich bin, wie schon oben von Stefan / @stefanj9 erwähnt wurde, eine faule S**.
 
Dokumentation ist schon wichtig, gerade bei Konfigurationen und Prozessen. Sonst weiß man später nicht mehr, was man gemacht hat. Auch bei der Fehleranalyse kann das sehr helfen.

Ich mache das heute sehr simpel mit libreoffice. Ich kopiere dann jeden Befehl und ein Screenshot ist da auch schnell gemacht. Viel mehr braucht man meistens nicht.

Bei Linux Installationen mache ich auch gerne eine Sicherung von /etc. Hat auch schon hin und wieder das Leben deutlich erleichtert.

Viele Grüße,

Günther
 
Zurück
Oben