deskHPSDR unter Linux auf einem Raspberry Pi5

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²

WAVESHARE 7EP-CAPLCD 7″ 1280×800 HDMI mit Audio
Pi kann direkt auf der Rückseite montiert werden

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“

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.

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

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert