Wie man mein überarbeitetes deskHPSDR, welches ja urspünglich auf piHPSDR basierte, auch unter Linux zum Einsatz bringt, werde ich in diesem Beitrag ausführlich beschreiben.
Da ich jedoch nach wie vor kein Desktop-Linux-System einsetze und das auch weiterhin nicht plane, wird dieser Beitrag in erster Linie für den Einsatz auf einem Raspberry Pi 5, also dem derzeit leistungsfähigsten Pi, Bezug nehmen. Grundsätzlich sollte sich das alles aber auch auf einem Desktop-Linux 1:1 umsetzen lassen, da sehe ich wenig bis gar kein „Konfliktpotential“.
Mein Background rund um Linux
Kurz zu meinem (beruflichen) Background. Ich bin von Berufswegen IT-Dienstleister im Bereich Business-IT, speziell Server, Datacenter, Netzwerke und was da alles dazugehört. Meine IT-Ausbildung fand in den 90er Jahren auf den damaligen UNIX-Derivaten IBM AIX, SunOS/Solaris, Dec Ultrix etc. statt. Linux kam etwas später – aber alle haben eines gemeinsam: sie sind UNIX-basierte Betriebssysteme. UNIX entstand Anfang der 70er Jahre und ist damit eines der ältesten Betriebssysteme, die es gibt. Inzwischen dominiert Linux klar dieses Segment, da auch die „Großen“ wie IBM ihre eigenen, meist speziell auf Serverhardware abgestimmten UNIX-Systeme zugunsten Linux eingestampft haben. Da ist im Nachhinein auch sehr viel professionelles Know-How ins Linux geflossen. Kurzum, was für viele WINDOWS darstellt, ist für mich UNIX, meist in der heutigen Form als Linux, aber auch als macOS, was ebenfalls ein UNIX-basiertes System als Basis hat. Das begleitet mich also schon mein ganzes Berufsleben und da verfüge ich inzwischen ein immenses Fachwissen. Das macht es mir allerdings immer etwas schwer, nicht ganz so fitten Anwendern Dinge rund um Linux zu erklären. Ich hoffe, mit diesem Beitrag tauche ich nicht zu tief ins Fachwissen und es bleibt einigermassen verständlich und nachvollziehbar.
Die Auswahl des „richtigen“ Raspberry Pi für den Einsatz mit deskHPSDR
Um es gleich vorweg zu nehmen, meine Empfehlung geht nach allen Tests klar in Richtung Pi5. Ich habe es ebenfalls auf einem Raspberry Pi 3B+ erfolgreich getestet, jedoch zeigten sich hier bereits gewisse Leistungsgrenzen, unter anderem habe ich mit der Darstellung des Panadapter-Spektrums grade so 10 Frames/s erreichen können (mit einem Pi5 allerdings locker > 50fps), darüber zeigte der Pi3B+ bereits Grenzen hinsichtlich seiner CPU-Rechenleistung. Einen Raspberry 4, den ich mal besaß, hatte ich bereits vor längerer Zeit wieder verkauft, zu groß waren nicht lösbare Probleme speziell mit Geräten am USB-Port des Pi4, die vermutlich mit seinem erstmalig zum Einsatz kommenden USB3-Controller bzw der ganzen USB-Lane zusammenhingen. Diese damaligen Probleme konnte ich an einem jetzt aktuellen Pi5 zum Glück nicht mehr feststellen.
Raspberry Pi 5
– als 2GB, 4GB und 8GB Modell verfügbar
– 2x USB 2.0, 2x USB 3.0
– 2x HDMI bis 4Kp60, 2x DSI
– PCI-Express Anschluß (z.B. NVMe-SSD)
– Wireless LAN 802.11ac
– Bluetooth 5.0/BLE
– Ethernet 1Gbps
– 5V USB-C
– POE-fähig
– 2.4GHz Quad-Core 64-bit Arm Cortex-A76 CPU
– 40 GPIO-Pin-Header
Zum Einsatz kommt also hier also ein Raspberry Pi 5 mit 4GB RAM, ausgestattet mit einem NVMe-HAT und einer 256GB-SSD am erstmalig auf einem Pi zur Verfügung stehenden PCI-Express-Bus. Damit erreicht man Lese- und Schreibgeschwindigeiten um die 800MB/s und ist endlich das leidige SD-Karten-Problem los, wobei ich nie wirklich Probleme damit hatte, da ich schon immer ausschließlich qualitativ hochwertige SD-Cards eingesetzt hatte und noch nie einen wirklichen Ausfall einer solchen zu verzeichnen hatte. Aber das ist beim Pi5 eh Geschichte, wir setzen hier jetzt klar auf SSD-Betrieb. Als Betriebssystem kommt PiOS 64bit „Bookworm“ zum Einsatz, welches also direkt von der SSD gebootet wird. Der SSD-Boot erfordert Anpassungen am Bootloader bzw. dessen genutzen EEPROM auf dem Pi5, das wird aber nicht Bestandteil dieses Beitrags sein. Ich gehe also davon aus, das Euer Linux bereits auf dem Pi5 voll funktionsfähig läuft. Einen Grundkurs Linux gebe ich hier also definitiv nicht.
Mit dem Raspberry Pi5 haben wir jetzt einen äußerst leistungsstarken SoC, wo ich zum ersten Mal sage, sowas taugt durchaus auch als Desktop-Rechner aufgrund seines PCI Express Busses und damit der Option, eine NVMe-SSD anstatt einer SD-Card zu verwenden. Alles, was vor dem Pi5 in der Raspberry-Serie kam, halte ich nach wie vor für nicht oder besser nur mit starken Einschränkungen als dafür geeignet.
Das „richtige“ Display am Pi
Wie ich bereits in früheren Beiträgen dargestellt habe, ist mein deskHPSDR für höhere Auflösungen angepasst worden. Das bedeutet, wir benötigen mindestens eine Auflösung von 1280×720, aber nicht geringer. Andernfalls können meine Anpassungen im Programmfenster des deskHPSDR nicht vollständig dargestellt werden. Das ist kein „Versehen“ oder Fehler, sondern beabsichtigt. Im Jahre 2024 sind nun mal Auflösungen wie 800×400 oder 1024×600 nicht mehr auf der Höhe der Zeit und ich werde diese bei deskHPSDR auch nicht mehr berücksichtigen. Wem das nicht gefällt, der verwendet bitte weiterhin piHPSDR von DL1YCF, da werden auch die geringer auflösenden Displays nach wie vor berücksichtigt. Ich werde über diese Anpassung im deskHPSDR keinerlei Diskussionen führen, sie ist final. Mindestvoraussetzung ist und bleibt 1280×720 oder höher bei deskHPSDR, so oder so.
Eine Option wäre entweder ein entsprechender normaler Monitor an einem der zwei HDMI-Anschlüsse oder ein Display wie das offizielle Pi Display 2 (NICHT das ältere Pi Display, denn das konnte nur 1024×600 !), welches an einem der zwei verfügbaren DSI-Anschlüsse angeschlossen wird.
Ich habe mich für das WAVESHARE 7EP-CAPLCD entschieden, einem 7″ Display mit Touchfunktion (per USB) mit einer Auflösung von 1280×800, welches per HDMI am Pi5 angeschlossen wird und damit auch seine ebenfalls zur Ausstattung dieses Displays gehörenden Lautsprecher nutzbar werden, die per HDMI-Audio angesteuert werden können.
WAVESHARE 7EP-CAPLCD
1280 x 800 (HDMI), 7″
kapazitives 10-Punkt-Touch-Display (via USB)
2x Audio via HDMI
IPS Panel mit 178° Blickwinkel
350cd/m²
Als ich das WAVESHARE 7EP-CAPLCD geliefert bekam, hatte ich zuerst Probleme mit diesem Display und war der Meinung, es ist vermutlich defekt. Nach einigen Rechnerchen stellte sich das etwas später jedoch als Irrtum heraus. Welche „Fallstricke“ es gab, werde ich hier kurz darstellen:
Änderungen für die Ansteuerung von Displays unter PiOS „Bookworm“
Sollte Euer Monitor bzw. Euer Display bereits korrekt funktionieren oder automatisch korrekt erkannt worden sein, kann der folgende Abschnitt ignoriert bzw. übersprungen werden !
Bisher, so auch die Anleitung vom Hersteller WAVESHARE für dieses Display, musste man Anpassungen in der config.txt
machen, die sich inzwischen bei „Bookworm“ unter /boot/firmware
finden lässt. Die bei älteren Systemen unter /boot
zu findende config.txt
und cmdline.txt
wird bei „Bookworm“ nicht mehr verwendet, nur noch die unter /boot/firmware
abgelegten. Beachtet das bitte.
Ebenfalls entfallen bei „Bookworm“ frühere Angaben in der config.txt
wie
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1280 800 60 6 0 0 0
hdmi_drive=1
Diese sind lt. offizieller Dokumentation des Raspberry Pi mit „Bookworm“ inzwischen abgekündigt (engl. „deprecated“) und werden unter „Bookworm“ nicht (!) mehr berücksichtigt bzw. ausgewertet !
Stattdessen muss man dafür in der /boot/firmware/cmdline.txt
den Videotreiber anders parametrisieren. Fügt also am Beginn oder am Ende der /boot/firmware/cmdline.txt
folgendes hinzu:
video=HDMI-A-1:1280x800M@60
Was bedeutet diese Angabe ?
HDMI-A-1: bedeutet erster HDMI-Port, denn der Pi5 hat ja zwei davon
1280x800M: gewünschte Auflösung, hier 1280×800, das M bedeutet Display-Timing nach VESA-Norm
@60: 60Hz Bildwiederholfrequenz
Alternativ kann man auch video=HDMI-A-1:1280x800M@60D
angeben, das D bedeutet, das der HDMI-Port immer ein Signal ausgibt, auch wenn kein Display am HDMI-Port zum Startzeitpunkt angeschlossen sein sollte.
Ebenfalls wichtig: In der /boot/firmware/config.txt
muss folgendes geändert bzw. angepasst werden:
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
ist zu ändern in
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
# disable_fw_kms_setup=1
andernfalls wird der Eintrag video=HDMI-A-1:1280x800M@60
in der /boot/firmware/cmdline.txt
nicht(!) berücksichtigt.
Das alles kann man auch in der offiziellen Dokumentation des Raspberry Pi nachlesen, wer da weiterführende Informationen benötigt, liest da bitte nach. Bei Einsatz von DSI-Displays anstatt von HDMI-Displays muss daüber hinaus noch ein entsprechender Videotreiber in der /boot/firmware/config.txt
hinzugefügt bzw. angepasst werden. Welcher das genau sein soll und was zu tun wäre, muss der Hersteller des jeweiligen Displays in der zugehörigen Dokumentation darstellen.
Compilierung deskHPSDR unter Linux (Pi und Desktop)
So, nun zum eigentlichen Teil dieses Beitrags. Ich gehe also von einem bei Euch bereits korrekt funktionierenden Linux-System aus. Wir werden alles auf User-Ebene umsetzen, notwendige administrative Dinge werden entsprechend mit sudo
umgesetzt.
Folgende Schritte setzen ein auf Debian-basiertes System voraus (u.a. Debian, PiOS „Bookworm“, Ubuntu etc.). Für andere Linux-Environments müsst Ihr Anpassungen in Eigenregie vornehmen, das wird nicht Teil dieser Anleitung sein.
Los gehts, zuerst sorgen wir mal für ein aktuelles System (alles erfolgt in einer Shell bzw. einem Terminal-Fenster):
heiko@AfuPi5:~ $ sudo apt-get update
heiko@AfuPi5:~ $ sudo apt-get upgrade
Um uns die Sourcen des deskHPSDR von github.com laden zu können, schaffen wir erstmal die Vorausssetzungen:
heiko@AfuPi5:~ $ sudo apt-get --yes install build-essential
heiko@AfuPi5:~ $ sudo apt-get --yes install git
Dann besorgen wir uns deskHPSDR von github.com:
heiko@AfuPi5:~ $ cd
heiko@AfuPi5:~ $ mkdir -p src
heiko@AfuPi5:~ $ cd src
heiko@AfuPi5:~/src $ git clone https://github.com/dl1bz/deskhpsdr.git
heiko@AfuPi5:~/src $ cd deskhpsdr
heiko@AfuPi5:~/src/deskhpsdr $
Nun bereiten wir unser Linux vor, indem wir alle notwendigen Bibliotheken und Softwaremodule installieren:
heiko@AfuPi5:~/src/deskhpsdr $ ./LINUX/prep_linux.sh
Das installiert alles, was zur Compilierung des deskHPSDR benötigt wird – dauert aber eine Weile.
Als Letztes wird SoapySDR core installiert, jedoch nicht die evtl. benötigten Soapy-Module. Die müsst Ihr selbst installieren, je nachdem welche benötigt werden. Da ich einen Hermes-Lite 2 verwende, ist Soapy für mich zumindest irrelevant, da ich es nicht verwende und damit nicht benötige.
Jetzt passen wir uns die make.config.deskhpsdr
nach unseren Wünschen an und speichern sie wieder.
Bitte keine Änderungen direkt im Makefile
vornehmen, sondern ausschließlich nur im make.config.deskhpsdr
!
Bitte lasst auch die Option DESKTOP=ON unverändert, denn sie implementiert erst die vielen Änderungen und Anpassungen des deskHPSDR.
Die Optionen ATU=OFF, COPYMODE=OFF, DEVEL=OFF bitte ebenfalls vorerst so lassen, dahinter stecken neue Funktionen, die noch nicht ausreichend getestet und damit noch nicht freigegeben sind. Wenn diese weitgehend fehlerfrei sind und verwendet werden können, informiere ich gesondert daüber.
Wenn das alles erfolgt ist, können wir jetzt deskHPSDR compilieren:
heiko@AfuPi5:~/src/deskhpsdr $ make
Das sollte eigentlich alles problemlos durchlaufen.
Wir benötigen allerdings noch einige Schriftarten, die nicht im Schritt „Voraussetzungen“ installiert werden. Das hat Gründe, warum ich das da weggelassen habe, da sich ggf. die X11-Umgebungen unterscheiden könnten. Im Grunde müssen wir die entsprechenden Schriftarten in die notwendigen X11-Font-Ordner kopieren. Diese mitgelieferten Schriftarten sind frei nutzbar und stehen unter der GPLv3 Lizenz, werden aber leider nicht bei der Linux-Erstinstallation mitgeliefert.
Unter PiOS „Bookworm“ kopieren wir also die Schriften nach /usr/share/fonts/opentype
:
heiko@AfuPi5:~/src/deskhpsdr $ sudo mkdir -p /usr/share/fonts/opentype/GNU
heiko@AfuPi5:~/src/deskhpsdr $ sudo cp ./X11fonts/*.otf /usr/share/fonts/opentype/GNU
Ohne diese zusätzlichen Schriften ist die Bildschirmdarstellung nicht optimal, bitte also nicht vergessen, diese zu kopieren.
Zuletzt installieren wir das deskHPSDR:
heiko@AfuPi5:~/src/deskhpsdr $ make x11install
Das kopiert deskHPSDR nach /usr/local/bin
, erzeugt unter X11 im Programmenü unter „Sonstiges“ einen Eintrag deskHPSDR und kopiert noch einige Dinge an die richtigen Stellen.
Damit wären wir startklar – nun kann deskHPSDR gestartet werden und eingerichtet werden.
Update deskHPSDR
Um deskHPSDR von Zeit zu Zeit auf aktuellem Stand zu bringen, ist folgendes zu tun:
heiko@AfuPi5:~ $ cd
heiko@AfuPi5:~ $ cd src
heiko@AfuPi5:~/src $ cd deskhpsdr
heiko@AfuPi5:~/src/deskhpsdr $ git pull
heiko@AfuPi5:~/src/deskhpsdr $ make clean
heiko@AfuPi5:~/src/deskhpsdr $ make
heiko@AfuPi5:~/src/deskhpsdr $ make x11install
Wichtig: Nicht am mitgelieferten Makefile
rumfummeln, andernfalls würde git pull
fehlschlagen.
Bitte nur das make.config.deskhpsdr
anpassen, denn dafür ist es auch da.
So, damit sind wir durch. Hier noch einige Angaben, wo deskHPSDR seine Daten speichert:
$HOME
steht für das Home-Verzeichnis des Benutzers, z.B. /home/heiko/
$HOME/.config/deskhpsdr
– ist das Arbeitsverzeichnis von deskHPSDR$HOME/.local/share/applications/deskHPSDR.desktop
– Menüeintrag deskHPSDR im Programmenü unter „Sonstiges“/usr/local/share/deskhpsdr
– Ablage Programm-Icons und Bitmaps/usr/share/fonts/opentype/GNU
– Ablage der *.otf-Schriftdateien aus dem Quellen von deskHPSDR
Bitte beachtet beim ersten Programmstart vom deskHPSDR, das dieser etwas Zeit in Anspruch nimmt. Die Applikation muss einmalig eine Datei wdspWisdom00
erzeugen, die Tabellenwerte für gewisse DSP-Funktionen beinhaltet. Sinn ist die Beschleunigung einiger mathematischer Berechnungen. Das wird allerdings nur einmalig gemacht oder erneut, wenn diese Datei bzw. Tabelle nicht mehr gefunden werden kann oder beschädigt sein sollte.
Mögliche „Stolpersteine“
Wie schon geschrieben, auf meinem Pi5 kommt PiOS „Bookworm“ zum Einsatz. Das ist letztlich ein Linux, welches auf Debian 12 basiert. Dabei kann es, auch aufgrund der Pflege und Updates dieses PiOS, zu gewissen Problemen aufgrund fehlender Kenntnisse über und rund um das neue PiOS kommen.
Problem 1: Standard-X11 oder Wayland bzw. LWC ?
Der Trend geht zu Wayfire samt Labwc, einem moderneren X11-Environment. Auf genaue Details gehe ich jetzt hier nicht ein.
Nur soviel, das klassische X11 hat mittlerweile fast 40 Jahre „auf dem Buckel“, ist voll ausgereift, aber hat einige Limitierungen, die wir heute gerne loswerden würden.
Allerdings sehe ich die Alternative Wayland inklusive Labwc unter PiOS derzeit alles andere als ausgereift. Ich empfehle daher, wieder auf die klassische X11-Umgebung zurück zu wechseln. Ein Problem mit Wayland war unter anderem, das mein Tastaturlayout auf einmal Englisch war, also QWRTY, während es unter dem klassischen X11 problemlos mit QWRTZ funktionierte. Es gibt also aktuell Probleme mit der Localisation, also der länderspezifischen Sprachanpassung. Das war aber nur ein Problemchen neben vielen anderen mit Wayland/Labwc, die viel Bastelei erfordert hätten, wozu ich weder Lust noch Zeit hatte.
Ändern lässt sich die X11-Basis wieder auf die klassische, bewährte Umgebung so:
heiko@AfuPi5LCD:~ $ sudo raspi-config
dann 6 Advanced Options wählen, danach A6 Wayland und dann W1 X11 Openbox window manager with X11 backend auswählen.
Problem 2: deskHPSDR zeigt keine Audio-Geräte an
Compiliert wird deskHPSDR mit PULSEAUDIO. Inzwischen steht mit Pipewire ein weiterer Audioserver zur Verfügung. PiOS kann zwischen beiden wählen. Wir brauchen PULSEAUDIO. Wählen lässt sich das wieder mit
heiko@AfuPi5LCD:~ $ sudo raspi-config
dann 6 Advanced Options wählen, danach A7 Audio Config und dann 1 PulseAudio auswählen. Sollte KEIN Pulseaudio zur Auswahl stehen, ist es nicht (mehr) installiert. Das korrigieren wir mit
heiko@AfuPi5LCD:~ $ sudo apt-get --yes install pulseaudio
Danach am besten 1x reboot und erneut sudo raspi-config
aufrufen wie eben beschrieben und dann sollte unter A7 Audio Config die Auswahl zwischen PULSEAUDIO und PIPEWIRE möglich sein. Da also PULSEAUDIO wählen. Danach deskHPSDR unter X11 starten und die Auswahl der Audiogeräte sollte jetzt korrekt funktionieren.
Die Audioausgabe funktioniert – hier von mir getestet – auch super mit einem Bluetooth-Lautsprecher. Dazu muss natürlich Blutooth aktiviert sein und man sollte am besten gleich noch den Bluetooth-Manager für X11 (nach-)installieren:
heiko@AfuPi5LCD:~ $ sudo apt-get --yes install blueman
Der funktioniert auch unter den verschiedenen Desktop-Umgebungen unter Linux. Den BT-Lautsprecher muss man natürlich zuerst koppeln („pairen“), sonst geht es natürlich nicht.
Problem 3: Mein X11 hat auf einmal eine Sprachausgabe (ungewollt)
Ja, sowas ist als Bedienhilfe für Menschen mit Beeinträchtigungen gedacht. Es kommt vor, das sich das automatisch aktiviert hat. Abstellen lässt sich das wie folgt:
Öffnet unter der grafischen Benutzeroberfläche ein Terminal und gebt dann folgendes ein:
heiko@AfuPi5LCD:~ $ orca -s
Wählt den Reiter „Sprachausgabe“ und deaktiviert den Punkt „Sprache“. Dann ist Ruhe, hi.
Tipp 4: Aus einem PiOS lite eine komplette grafische Desktop-Umgebung machen
Diesmal kein Problem, sondern ein Tipp von mir. Manche haben nur die lite Version des PiOS, also die kleine, meist für headless Betrieb gedachte Version installiert. Um daraus quasi eine „große“ zu machen, muss man das PiOS nicht neu installieren. Wir installieren einfach nach, was benötigt wird. Am einfachsten geht das so:
heiko@AfuPi5LCD:~ $ sudo tasksel
Das startet eine Art speziellen Paketmanager, wo sich die gewünschte Desktopumgebung auswählen und installieren lässt. Ich bevorzuge das relativ resourcenschonende, schlanke LXDE. Also die gewünschte Option anklicken, installieren und danach mit
heiko@AfuPi5LCD:~ $ sudo raspi-config
1 System Options, dann S5 Boot / Auto Login und zuletzt entweder B3 Desktop oder B4 Desktop Autologin auswählen, danach reboot Pi und dann habt Ihr schon eine grafische X11-Umgebung.
Mehr als diese Probleme in Zusammenhang mit deskHPSDR, Pi5 und PiOS konnte ich erstmal keine feststellen.
Für „erfahrende“ Anwender der Raspberry Pi: Das neue, auf Debian 12 „Bookworm“ basierende PiOS, hat eine ganze Menge Änderungen „unter der Haube“ im Vergleich zu älteren Versionen, was jetzt teilweise andere Vorgehensweisen erfordert als auf älteren, bisher von Euch benutzen Systeme auf dem Raspberry Pi. Lest Euch entsprechend ein und vergesst die Haltung „Ich weiß das alles, weil es es schon immer so war oder ging“.
Linux kennen oder Linux können sind zwei paar Schuhe und Welten voneinander entfernt !
Nein, manchmal sind die Änderungen umfangreicher und man muss sich gänzlich neu orientieren. Das geht selbst mir als professioneller IT-Dienstleister, der seit Beginn der 90er Jahre mit UNIX und natürlich auch Linux umgeht bzw. von Berufswegen umgehen muss, nicht viel anders. Man muss immer wieder neu Fahrt aufnehmen und viel Neues dazu lernen.