RPI-Control – A simple webinterface for monitoring and maintenance of a Raspbbery Pi


I while ago I was working with Manfred, DK1MC on an APRS project. Manfred is responsible for DB0HHH and was looking for a solution to do simple maintenance and monitoring operations on the Raspberry Pi he is using to control the repeater. So far he was using a terminal solution which he developed, but this requires SSH access and is nothing that can be used easily on the road and without at least some basic Linux knowledge. The idea of a simple web interface was born…

Here are some items from our first list of ideas:

  • Should be used with a browser, also on a Smartphone or tablet
  • Simple and flexible configuration
  • Simple monitoring and maintenance of systemd services
  • Buttons for any kind of commands
  • User management
  • Simple installation, minimal dependencies

A few weeks later the first version was ready for testing.

The configuration is done through a json file. The most important parts are “systemd” where you can add a list of systemd-services. The second section is “Buttons” with the possibility to define a list of buttons and the command that should be executed once the button is pressed.

Here is an example of the config file:

{
    "webserver": {
        "port" : 8080,
        "title": DK3ML-10 APRS RX-Igate",
        "headline": "DK3ML-10"
    },
    "systemd": [
        {"name": "cron", "description": "Cron"},
        {"name": "direwolf", "description": "Direwolf"},
    ],
    "buttons": [
        {"headline": "System-Info", "buttons": [
            {"name": "Date + time", "command": "date"},
            {"name": "Uptime", "command": "uptime"},
            {"name": "df -h", "command": "df -h"},
            {"name": "ifconfig", "command": "ifconfig"}
            ]}
    ],
    ...
}

The app offers a simple web interface. Once a button is pressed, the command that is defined in the config file will be executed on the Raspberry Pi. Other commands than defined in the config file are not possible, so the admin still has full control about whatever he wants to offer to his users. The output of any command is shown on a log window.

The possibility of defining any command makes this app a very powerful and flexible tool. The configuration requires solid Linux knowledge as the app will execute any command you define. So with the wrong commands you can destroy your system with just one click. But once it’s set up and configured it offers a very simple way to monitor and maintain the system even without Linux knowlege.

Of course the software can also be used in other areas than amateur radio repeaters.

Some technical details:

The app was developed in “Go” (also called Golang). Software written in Go can be compiled for many systems and achitectures. All dependencies and libraries are part of the compiled binary. To install the app, all that needs to be done is to copy the binary (and some template and asset folders) to the Raspberry Pi. Any installation of additional packages or dependencies is not needed. As even the webserver is built in, you also don’t need to install and configure a complex webserver like Apache or nginx.

SSL is not supported yet, but it’s on the TODO-List.

The software is alrady running on several repeaters, for example: DB0HHH.

I already had the question if there is any plan to publish the code under an open source license. In general I am happy to do that, but it requires some careful code review and cleanup first. At the moment it’s hard to say when I will find time for it.

So for now I can only offer to send a test version. As mentioned above the installation and configuration requires solid Linux knowledge and you have to agree that you will run the software at your own risk.

RPI-Control – eine einfaches Webinterface für die Fernwartung eines Raspberry Pi

Vor einiger Zeit kam ich im Rahmen eines APRS-Projektes mit Manfred, DK1MC ins Gespräch. Manfred ist Relaisbetreiber von DB0HHH und war auf der Suche nach einer einfachen Lösung, um ein paar Wartungs- und Überwachungsaufgaben auf dem Raspberry PI durchzuführen, der für die Relaissteuerung eingesetzt wird. Bisher war das nur über SSH oder über Teamviewer möglich. Zwar hat Manfred bereits eine Terminal-Lösung entwickelt, die auch bereits produktiv im Einsatz ist, aber auch die erforderte einen SSH Zugang und war damit nichts, was man mal eben schnell von unterwegs und ohne viel Fachkenntnis nutzen kann. Die Idee einer webbasierten Steuerung war geboren.

Hier ein Auszug unserer ersten Ideen-Liste:

  • Bedienung über den Browser, auch über Smartphone
  • Frei konfigurierbar durch den Admin
  • Einfache Überwachung von Systemd-Diensten
  • Buttons, die mit beliebigen Aufgaben hinterlegt werden können
  • Login für mehrere User
  • Einfache Konfiguration
  • Einfache Installation, minimale Abhängigkeiten

Ein paar Wochen später war die erste Version fertig und konnte getestet werden.

Die Konfiguration erfolgt über eine json-Datei. Die wesentlichen Blöcke sind “systemd”, wo eine beliebige Anzahl an Systemd-Diensten definiert werden kann, sowie der Bereich “buttons”, wo eine beliebige Anzahl an Buttons eingetragen und der jeweilige Befehl hinterlegt werden kann.

Hier ein Beispiel:

{
    "webserver": {
        "port" : 8080,
        "title": DK3ML-10 APRS RX-Igate",
        "headline": "DK3ML-10"
    },
    "systemd": [
        {"name": "cron", "description": "Cron"},
        {"name": "direwolf", "description": "Direwolf"},
    ],
    "buttons": [
        {"headline": "System-Info", "buttons": [
            {"name": "Date + time", "command": "date"},
            {"name": "Uptime", "command": "uptime"},
            {"name": "df -h", "command": "df -h"},
            {"name": "ifconfig", "command": "ifconfig"}
            ]}
    ],
    ...
}

Angezeigt wird das ganze über eine einfache Weboberfläche. Wird ein Knopf gedrückt, so wird auf dem Raspberry PI der in der config hinterlegte Befehl ausgeführt. Andere Befehle, als in der config hinterlegt sind, können nicht ausgeführt werden. So hat der Admin immernoch die volle Kontrolle, welche Befehle er den anderen Relais-Betreibern zur Verfügung stellen möchte. Außerdem wird die Ausgabe des Befehls in einem Log-Fenster angezeigt.

Dadurch, dass quasi beliebige Befehle hinterlegt werden können, ist das ganze ein sehr flexibles und mächtiges Instrument bei dessen Konfiguration man allerdings wissen muss, was man tut. Einmal konfiguriert, bietet es dann aber auch Relais-Betreibern ohne Linux-Kentnisse die Möglichkeit, einfache Wartungs- und Überwachungstätigkeiten auszuführen.

Selbstverständlich lässt sich die Software nicht nur für Amateurfunk-Relais einsetzen. Durch die flexible Konfiguration sind die Möglichkeiten nahezu unbegrenzt.

Noch ein paar Worte zur Technik:

Entwickelt wurde das Tool in der Programmiersprache “Go” oder auch “Golang” genannt. Programme, die in Go geschrieben sind, lassen sich für viele Zielsysteme und -architekturen kompillieren. Das kompillierte Programm enthält dann alle Abhängigkeiten und Bibliotheken, die für die Programmausführung benötigt werden. Zur Installation muss dann nur das kompillierte Programm auf den Raspberry Pi kopiert werden. Eine Installtion von weiteren Paketen ist nicht nötig. Selbst der Webserver ist integriert, so dass eine aufwändige Installation und Konfiguration von Servern wie Apache oder nginx entfällt.

SSL wird zur Zeit noch nicht unterstützt, steht aber auf der ToDo Liste.

Das Programm ist bereits auf mehreren Repeatern im Einsatz, unter anderem auf DB0HHH.

Auch habe ich bereits die Frage bekommen, ob ich plane, das ganze als Opensource zu veröffentlichen. Das kann ich mir durchaus vorstellen, allerdings müsste ich vorher noch einmal den Code überarbeiten und Aufräumen und im Idealfall auch noch einmal durch einen weiteren Entwickler mit Go-Erfahrung überprüfen lassen. Ob und bis wann ich dazu komme, kann ich im Moment noch nicht sagen.

Bis auf weiteres kann ich deshalb nur anbieten, bei Interesse eine Testversion zur Verfügung zu stellen. Auch wenn die Benutzung des Programms hinterher sehr einfach ist, erfordert die Installation und Konfiguration solide Linux Kenntnisse. Die Benutzung erfolgt dann außerdem auf eigenes Risiko, insbesondere wenn das ganze später direkt über das Internet erreichbar und nicht z.B. durch ein VPN geschützt ist.

How to work the APRS digipeater on the International Space Station ISS

Working the APRS digipeater on the ISS is not hard, but it requires some planning and knowledge. It took me a lot of reading, trial and error until I made my first successful contact some years ago. Maybe I can save somebody’s time a bit with this article. Would be great to get some feedback, if it was helpful or if there are any further questions.

Continue reading

SSTV von der ISS empfangen und dekodieren

Am Wochenende vom 8. bis zum 10.02.2019 fand wieder ein “Slow Scan Television (SSTV) Event” von Bord der Internationalen Raumstation ISS statt. In der Zeit gab es insgesamt 12 verschiedene Bilder zu empfangen. In diesem Artikel möchte ich beschreiben, wie man die Signale empfangen und auswerten kann. Ich beschränke mich dabei auf die Arbeit unter Linux, aber für Windows gibt es ähnliche Software, so dass das Betriebssystem eigentlich keine Rolle spielen sollte.
Continue reading

Find out the next ISS pass with APRS

Recently I found a twitter post from WA1GOV about a new service he offers (). If you send an APRS message with the content “ISS” to the callsign WA1GOV-10, you will receive the next ISS pass at your location as a message.

The only condition is that you are in the range of a TX-igate and that this TX-igate is aware of your position, so that it sends the message from the APRS-IS back to HF. I had some trouble with this. At the beginning I did not receive the ISS data, but I saw it at aprs.fi, so I sent a couple of more beacons and now I sucessfully received a message back. Beside the ISS there are also the following satellites available: AO-85,AO-91,AO-92,SO-50

Running SDRPlay with gqrx on Ubuntu 18.10

Since a long time, I was trying to get my SDRPlay running with gqrx on Ubuntu. A while ago, I successfully compiled everything I needed, but this lesson took hours and after the next Ubuntu update, it did not work anymore. Now I found a solution that is much easier. I did a lot of other changes on my system in parallel, so I am not 100% sure that the following steps are enough to get it running, but it works now for me.

Continue reading

Antennen messen mit dem miniVNA pro unter Ubuntu Linux

Seit mehreren Jahren leistet mir nun ein miniVNA pro treue Dienste beim Messen von Antennen und bei der Fehlersuche. Wer das Gerät nicht kennt, es handelt sich dabei um einen Vector Network Analyzator. Damit lässt sich (unter vielem anderen) das SWR einer Antenne messen. Der Frequenzbereich geht dabei bis 200 MHz, so dass auch Messungen an Antennen im 2m Band kein Problem sind. Für höhere Bänder gab es noch einen Extender, der ist allerdings leider nicht mehr verfügbar. Wer noch einen hat und loswerden möchte: Ich freue mich über eine Nachricht. Das schöne an dem Gerät ist, dass es sich über Bluetooth mit dem Smartphone verbinden lässt. So ist eine Messung direkt an der Antenne möglich, ohne ein langes Antennenkabel dazwischen. Auch kann die Antenne so an ihrem echten Standort gemessen werden. Lange Rede, kurzer Sinn, in diesem Artikel möchte ich zeigen, wie man den miniVNA pro unter Ubuntu Linux nutzt, um das SWR einer Antenne zu messen.
Continue reading