Sonntag, 25. Februar 2018

Mit einem Raspberry Pi, DVB-T-Stick und Flightradar 24 einen Hobby-ADS-B Empfänger aufbauen

Vor einigen Tagen wurde mein DVB-T-Empfänger und die ADS-B Antenne von jetvision.de geliefert.

Damit konnte ich einen alten, nicht mehr genutzten Raspberry Pi 1, Model B, zu einem Hobby-Empfänger für Flugzeugsignale (sog. ADS-B) umbauen.

Flightradar24 bietet dafür ein Raspberry Pi-Image an, mit welchem man den Radar in ein paar Minuten online hat — im Gegenzug erhält man als Dank kostenlos ein Business-Abonnement der Web-Site im Wert von mehreren hundert Dollar im Jahr.

Der Name meiner Antenne lautet T-LSZB123 (die Statistiken kann man sich nur ansehen, wenn man auf Flightradar24 registriert ist).

Aufstellen der Antenne

Flightradar24 hat eine Anleitung ins Internet gestellt, die den Hobby-Empfängern bildlich aufzeigt, wie man die Antenne installiert, um einen maximalen Empfang hinzukriegen.

Am Besten wäre die Installation auf dem Hausdach — als Mieter bleibt einem das selbstverständlich verwehrt. Auch muss man sich dann bezüglich Blitzeinschlag Gedanken machen und das Antennensignal mit einem Kabel irgendwo in die Wohnung verlegen.

In meinem Fall muss für die Platzierung der Antenne (leider) die äussere Fensterbank hinhalten — aber allemal besser, als den Empfänger mitsamt Antenne in der Wohnung zu platzieren. Die Alternative wäre gewesen, das gesamte Setup auf dem Balkon zu betreiben, was aber eine solar- und batteriebasierte Stromversorgung verlangt hätte. Das hätte aber grosse Kosten und noch einiges an Bastelaufwand verursacht.

Zum Glück realisierte ich bald einmal, dass man das Antennenkabel durch den Fensterrahmen legen und das Fenster schliessen kann, ohne das Kabel zu beschädigen (hoffe ich jedenfalls):

Reichweite der Antenne

Beim Betrieb des o.g. Sets aus DVB-T-Dongle mitsamt mickriger Antenne in der Wohnung (am grossen Fenster zum Balkon) konnte die Software Signale von Flugzeugen in der Distanz von 20 Nautischen Meilen empfangen.

Nachdem ich den Empfänger probehalber auf dem Balkontisch platziert hatte, stieg die Reichweite auf 40 Nautische Meilen an.

Nach der Festinstallation auf dem äusseren Fensterbank und 48 Stunden Dauerbetrieb konnte ich die Reichweite in einigen wenigen Fällen auf 56 Nautische Meilen erhöhen (103.71 Kilometer).

Bessere Antennen

Bei jetvision.de könnte man sich leistungsfähigere Antennen kaufen. Mein Favorit wäre die „A3 ADS-B“ Antenna (1090 MHz) für 77.95 EUR. Doch momentan zögere ich mich mit der Aufrüstung noch, da ich diese Antenne weiterhin auf dem äusseren Fensterbank montieren müsste.

Auf Amazon und AliExpress finden sich auch 1090 MHz-Antennen, teils deutlich günstiger, aber über deren Qualität kann ich nichts aussagen.

Web-Interfaces

Sobald der Raspberry Pi aufgesetzt und der Radar bei Flightradar24 registriert ist, kann man auf das lokale Web-Interface der Lösung zugreifen. Es ist unter folgender URL erreichbar:

http://%IP%:8754

Folgende zwei Unterseiten sind nützlich:

  • http://%IP%:8754/settings.html Hier kann man Einstellungen vornehmen. Bei mir scheinen diese aber nicht übernommen worden zu sein (ist evtl. ein Neustart des Servers nötig? Ein Neustart der Software über das Web-Interface hat keinen Effekt gezeigt)
  • http://%IP%:8754/tracked.html Die Liste der aktuell empfangenen Signale von Flugzeugen

Weiter gibt es noch ein, zwei technische Interfaces, die Messdaten in strukturierter Form ausgeben:

  • http://%IP%/dump1090/data/aircraft.json
  • http://%IP%/dump1090/data/stats.json
  • http://%IP%/dump1090/data/receiver.json

Via: Raspberry Pi: Dump1090 erzeugt auch JSON-Dateien die extern verwendet werden können

Diese JSON-Daten eignen sich vorzüglich, um mit Cacti schöne Graphen zu erstellen.

Die Aufschlüsselung der JSON-Werte finden sich in folgendem Artikel: JSON output formats

Sonstige Interfaces

Mit netstat findet man schnell heraus, auf welchen Port fr24 Netzwerkdienste anbietet (ssh, snmpd, dhclient und avahi-daemon sind Systemdienste, die mit fr24 nichts zu tun haben):

# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      417/lighttpd        
tcp        0      0 0.0.0.0:30002           0.0.0.0:*               LISTEN      326/fr24feed        
tcp        0      0 0.0.0.0:8754            0.0.0.0:*               LISTEN      326/fr24feed        
tcp        0      0 0.0.0.0:30003           0.0.0.0:*               LISTEN      326/fr24feed        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      366/sshd            
udp        0      0 0.0.0.0:161             0.0.0.0:*                           352/snmpd           
udp        0      0 0.0.0.0:51123           0.0.0.0:*                           326/fr24feed        
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           262/avahi-daemon: r 
udp        0      0 0.0.0.0:36590           0.0.0.0:*                           262/avahi-daemon: r 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           561/dhclient        
udp        0      0 0.0.0.0:59213           0.0.0.0:*                           326/fr24feed

Prozesse

Auf den Raspberry Pi kann man nach der Installation des Flightradar24-Images mit den gewohnten Zugangsdaten per SSH zugreifen.

Auf dem Gerät laufen folgende zwei Prozessbäume, die zum Empfang und für die Verarbeitung der Signale zuständig sind:

  • /usr/bin/fr24feed
  • /usr/bin/dump1090-mutability --raw --mlat --write-json /run/dump1090-mutability/

Als Services werden installiert:

  • dump1090-mutability.service
  • fr24feed.service
  • fr24gui.service

fr24feed startet und stoppt man folgendermassen:

# systemctl start fr24feed
# systemctl stop fr24feed

Log-Dateien

Nach der Installation fand sich bei mir unter /var/log/fr24feed/fr24feed.log eine Log-Datei, die in Echtzeit aktualisiert wurde.

Nach ca. zwei Tagen Betrieb stoppten die Log-Meldungen plötzlich und ich konnte noch nicht herausfinden, wieso die Anwendung nichts mehr in die Datei schreibt.

Die Einstellungen habe ich zwar angepasst (Logfile mode: Keep up to 72h, rotate every 24h und Log file location: /var/log/fr24feed/custom.log), bisher wurden diese aber nicht geschluckt.

Offizielle Statistiken

Loggt man sich auf Flightradar24 ein, kann man sich ausführliche Statistiken zu seinem Empfänger anzeigen lassen (die Zahlen sind aus der Sicht von Flightradar24, d.h. die Informationen, die vom Raspberry Pi an den Dienst gesendet und effektiv dort ankommen):

Die URL lautet www.flightradar24.com/account/data-sharing, wo man dann alle registrierten Empfänger angezeigt bekommt. Klickt man dort auf Show Statistics, erscheinen die ausführlichen Statistiken:

Tags: , , , ,
Labels: IT

4 Kommentare | neuen Kommentar verfassen

Sonntag, 25. Februar 2018

Eine RRD-Datei mit einer weiteren Data Source DS ergänzen

Heute musste ich in Cacti eine zusätzliche Data Source zu einer bestehenden Round Robin Database hinzufügen, welche bereits Daten enthielt, welche ich nicht verlieren wollte.

Cacti scheint ein solches Update des RRDs nicht selbständig machen zu können, weshalb etwas Handarbeit angesagt ist.

Glücklicherweise unterstützt rrdtool (mittlerweile) eine solche Aktualisierung von RRDs:

in the 1.5 series there is a much better solution for the whole ‚modify rrd‘ problem … create has the ability to pre-populate a new rrd file based on an existing one …

Quelle: since when rrdtool tune can add another DS?

Tatsächlich, schaut man sich die man-Page von rrdcreate an, findet man den Parameter --source, mit welchem man auf eine bestehende Datei zeigen kann, deren Messdaten dann nach allen Regeln der Kunst in die neue Datei importiert werden.

Da Cacti im Data Source Debug Mode einem auch den rrdcreate-Befehl anzeigt, konnte ich diesen kopieren und mit diesem Parameter ergänzen. Um keine Daten zu verlieren, kopierte ich vorher die ursprüngliche RRD-Datei nach /tmp/legacy.rrd und arbeitete nur mit dieser Datai als Quelle. Schlussendlich sah der Befehl dann so aus:

/usr/bin/rrdtool create \
/var/www/cacti/rra/fr24.rrd \
--step 60  \
--source /tmp/legacy.rrd \
DS:AIRCRAFTS:GAUGE:120:0:U \
DS:MESSAGES:COUNTER:120:0:U \
RRA:AVERAGE:0.5:1:500 \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MIN:0.5:1:500 \
RRA:MIN:0.5:1:600 \
RRA:MIN:0.5:6:700 \
RRA:MIN:0.5:24:775 \
RRA:MIN:0.5:288:797 \
RRA:MAX:0.5:1:500 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797 \
RRA:LAST:0.5:1:500 \
RRA:LAST:0.5:1:600 \
RRA:LAST:0.5:6:700 \
RRA:LAST:0.5:24:775 \
RRA:LAST:0.5:288:797 \

In der Legacy-Datei existierte bereits eine Zeitreihe für AIRCRAFTS, MESSAGES kamen heute dazu.

Fertig!

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 25. Februar 2018

Übrig bleiben: Schlaue Frauen und dumme Männer

So lustig es anfänglich klingen mag, so ganz realitätsfern ist Eckhart von Hirschhausens Theorie definitiv nicht:

Original: Kölner Treff: „Schlaue Frauen brauchen keinen Mann!“ (mit 1min52sec die längere Version, als diejenige auf YouTube piratisiert hochgeladene 54 Sekunden-Version)

Tags: , , , , ,
Labels: Funny

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 25. Februar 2018

Bayrisches Biervokabular für Anfänger: Noagerl

Diese Woche von einem Arbeitskollegen aus dem Freistaat (konkret: aus dem unrühmlich bekannten Ort mit dem KZ) gelernt:

Noagerl

Soll heissen: Ungefähr der letzte Zentimeter Bier, der in einem Masskrug bewusst zurückbleibt und nicht getrunken wird, da er schal, das heisst lauwarm und ohne Kohlensäure ist.

Dafür gibt es im inoffiziellen Bayrisch-Wörterbuch sogar einen Eintrag:

Wiesn-Lexikon: „N“ wie „Noagerl“

Der Kollege erwähnte diesen Begriff im Zusammenhang mit dem Oktoberfest und den Besuchern, die ihr ganzes Bargeldvermögen versoffen haben und sich deshalb vor Zeltschluss einen Masskrug mit flüssigen Resten aus Masskrügen anderer Besucher zusammenfüllen:

Noagerl-Mass

Tags: , , , , , , , ,
Labels: Funny

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 21. Februar 2018

SSH mit Benutzernamen und Passwort forcieren

Es gibt Momente, da möchte man nicht, dass der lokale ssh-agent alle vorhandenen Private Keys durchprobiert, um auf einen SSH-Server einzuloggen, sondern einem das Eingabefenster für das Passwort präsentiert.

Dies gelingt folgendermassen:

$ ssh -o PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no 10.11.12.13

Via: SSH use only my password, Ignore my ssh key, don’t prompt me for a passphrase

Tags: , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 20. Februar 2018

Reisedestination: Raja Ampat, Indonesien

Wieso das mittelfristig aber wohl nix mit einer Reise wird:

Die Anreise aus Hong Kong dauert mit dem Flugzeug via Jakarta und Makassar ungefähr 15 Stunden, je nach Verbindung.

Via: Kollege Wyss, Schweizer Expat in Hong Kong: RAJA AMPAT – MEIN TRAUM-REISEZIEL IN INDONESIEN

Ich will gar nicht wissen, wie lange es in dem Fall aus der Schweiz dauert mit der Anreise …

Tags: ,
Labels: Reisen

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 20. Februar 2018

Steve Jobs über Unternehmen, die auf Prozesse statt Inhalte schauen

You know what it is? People get confused. Companies get confused. When they start getting bigger they want to replicate their original success. And they start to think that somehow there is some magic in the process of how that success was created. So they start to institutionalise the process across the company. But before very long people get confused and think that the process is the content. And that was ultimately the downfall of IBM. IBM had the best process people in the world but they forgot about the content. And that’s what happened a little bit at Apple too. We had a lot of people who were great at management process and they didn’t have a clue as to the content. And in my career I found that the best people are the ones who understand the content. They are a pain in the butt to manage. You put up with it because they are so great in the content. And that’s what makes a great product. It is not process. It is content.

Via: Steve Jobs about Process and Content

Tags: , , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

PC von einem USB-Stick booten meldet „Missing Operating System“ (oder: Lenovo Thinkpad BIOS Updates ohne Windows)

Kürzlich habe ich dank der Funktion dmidecode nicht nur herausgefunden, wie ich aus der Ferne feststellen kann, um welchen Gerätetyp es sich bei einem Laptop-Server konkret handelt …

...
Handle 0x000E, DMI type 1, 27 bytes
System Information
	Manufacturer: LENOVO
	Product Name: 4236MBG
	Version: ThinkPad T420
	Serial Number: XXXXXXX
	UUID: 045E0181-510B-110B-BEFD-D0C20D7188AE
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: ThinkPad T420
...

… sondern auch, dass die BIOSse meiner Thinkpad-Flotte wohl mal aktualisiert werden sollten:

...
BIOS Information
	Vendor: LENOVO
	Version: 6QET69WW (1.39 )
	Release Date: 04/26/2012
...

Erstaunlicherweise unterhält Lenovo seine Support-Seiten vorzüglich und es fanden sich innert weniger Minuten alle Seiten mit BIOS-Updates für meine Thinkpads X200s, X201, T400 und T420.

Da auf den Dingern kein Windows läuft, kann man das Update über diesen Weg vergessen. Glücklicherweise bietet Lenovo auch noch CD-Images (sog. ISOs) an, mit welchem die ca. 40MB Updatedaten auf CDs gebrannt werden können. Der Laptop kann dann von dieser CD gestartet und die Updates installiert werden, d.h. die Anforderung Windows entfällt so.

Erstes Problem: Die Links auf die ISO-Images auf den Seiten mit dem „BIOS Update Utility for Windows“ funktionieren nicht. Hier hilft Google jeweils kurzerhand weiter: „X200s BIOS Update Bootable CD“ findet dann den korrekten Link der Seite.

Nachdem man sich von dort die ISOs heruntergeladen hat und sie bspw. (graphisch) mit Etcher (oder auf dem CLI mit dd) unter macOS auf einen USB-Stick schreiben will, ein weiterer Showstopper: Etcher meldet nach dem Transfer, dass der USB-Stick kein gültiges Dateisystem enthält.

Wie sich mit etwas googeln herausstellt verwendet Lenovo für seine Boot-CDs den El Torito-Standard. Deshalb muss man aus dem .iso mit dem Perl-Script geteltorito.pl das eigentliche Image extrahieren. geteltorito.pl findet sich unter Debian GNU/Linux im Paket genisoimage. Aus der Boot-CD des BIOS-Updates für ein Lenovo Thinkpad X201 extrahiert man das eigentliche ISO-Image folgendermassen:

#!/bin/bash

/Users/mario/Scripts/cd-dvd/geteltorito.pl -o 6quj19us.img 6quj19us.iso

exit 0

Auf der Kommandozeile liest man dann ungefähr Folgendes:

$ extract.sh 
Booting catalog starts at sector: 20 
Manufacturer of CD: NERO BURNING ROM
Image architecture: x86
Boot media type is: harddisk
El Torito image starts at sector 24 and has 65536 sector(s) of 512 Bytes

Image has been written to file "6quj19us.img".

Anschliessend schreibt man das .img folgendermassen auf einen USB-Stick, welcher als /dev/rdisk5 gemountet ist:

#!/bin/bash

dd if=6quj19us.img of=/dev/rdisk5 bs=512k

exit 0

Auf der Kommandozeile liest man dann ungefähr Folgendes:

# write.sh
32+0 records in
32+0 records out
33554432 bytes transferred in 6.970957 secs (4813461 bytes/sec)

Einige der folgenden Links waren für die Auskundschaftung dieser Alternative essentiell, andere (weiter unten) Sackgassen:

Die Grösse des USB-Sticks scheint eine Rolle zu spielen

Während einer Stunde habe ich mir dann die Zähne ausgebissen — sowohl mit Etcher als auch mit dd habe ich diverse Images auf einen uralten SanDisk Cruzer USB-Stick mit 512MB geschrieben. Doch jedes Mal, als ich mein Testgerät, ein Lenovo Thinkpad T400, damit booten wollte, erschien die Fehlermeldung „Missing Operating System“.

Erst als ich den USB-Stick auswechselt und einen LaCie itsaKey mit 4GB verwendete, klappte das booten und updaten der Thinkpads reibungslos.

Derzeit bin ich der Meinung, dass dies irgendwie damit zu tun hat, dass der erste USB-Stick mit 512MB kleiner als eine CD mit 640MB ist und dadurch Probleme mit dem Boot-Programm im MBR entstehen. Oder aber dass vom SanDisk-Stick schlicht und einfach nicht gebootet werden kann, weil die Hardware des USB-Sticks das aus mir unerfindlichen Gründen nicht unterstützt.

Zum Schluss noch ein Screenshot, wie die Partition im Disk Utility.app angezeigt wird — mich erstaunt, dass „Bootable“ als „No“ angegeben wird, wobei ich nicht weiss, ob damit gemeint ist, dass Macs gebootet werden können:

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

UniFi AC Mesh AP als Bridge nutzen

Die Web-Site und Online-Shops sind in dem Punkt nicht explizit respektive klar, doch ich kann bestätigen, dass man einen UniFi AC Mesh AP einerseits per WLAN mit einem bestehenden UniFi Access Point verbinden und so die Reichweite des originalen Access Points steigern kann, aber andererseits (gleichzeitig) auch ein Netzwerkkabel vom Mesh Access Point zu einem PC ziehen und diesen PC mit einem Netzwerkzugang ausstatten kann.

Aus Sicht des PCs befindet er sich im lokalen Ethernet-Netzwerk; die Pakete werden per WLAN vom Mesh Access Point zum originalen Access Point übertragen und gelangen von dort zu anderen Geräten im Intranet respektive ins Internet.

Ich gehe davon aus, dass man anstelle eines PCs auch einen Switch an den Ethernet-Eingang eines Mesh Access Points hängen und so mehrere Geräte respektive ein ganzes isoliertes LAN mit dem Original-LAN bridgen kann, versucht habe ich das im Gegensatz zum alleinstehenden PC nicht.

Tags: , , ,
Labels: IT

8 Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

UniFi Controller erkennt einen Repeater als Rogue Access Point

Im letzten Jahr hat ein Bekannter von mir in seinem Haus eine neue Wärmepumpe der Firma Waterkotte installiert, welche Wärme aus einer Quellwasserleitung extrahiert, die das Grundstück durchquert.

Die Wärmepumpe verfügt zeitgemäss auch über einen eingebauten Industrie-Computer (PCEngines APU2C2) mit Netzwerkanschluss, auf welchem ein Web-Server läuft. Darüber lassen sich nicht nur die Vitaldaten des Geräts abfragen, sondern dieses auch steuern.

Wie es aber in älteren Gebäuden so ist, hat im Boilerraum natürlich niemand einen Netzwerkanschluss installiert und auch keine Netzwerkkabel hingezogen. Wie bringt man das Gerät somit ins lokale Netzwerk?

Der lokale Lieferant hatte die Lösung: Der Industrie-PC ist mit einem Ethernet-Kabel an einen D-Link DIR-809 angeschlossen. Der Access Point wiederum ist per WLAN mit dem UniFi Access Point der Wohnung im oberen Stockwerk verbunden. Dies, indem der D-Link Access Point in den Repeater-Modus geschaltet wurde und die WLAN-Zugangsdaten statisch einprogrammiert wurden.

Der Bekannte klagte in der Folge aber über instabile Netzwerkverbindungen — mal war die Wärmepumpe erreichbar, aber oftmals nicht. Nach einigem Debugging dann die Erkenntnis: Der UniFi-Controller im LAN erkennt den Repeater nicht als „normalen“ Client, sondern als Rogue Access Point, d.h. als ein Access Point, der vorgibt, ein anderer Access Point zu sein.

Hat man bei einer ähnlichen Installation dieselbe Vermutung, überprüft man das in der Web-Oberfläche des UniFi-Controllers. Einerseits warnt einem der Controller sowohl in der Oberfläche (Nachrichten-Pop-Up) als auch per E-Mail über Rogue Access Points, die in der Empfangsreichweite von UniFi Access Points mit derselben SSID funken …

… andererseits werden solche Geräte in der Rubrik „Insights“ auch markant mit einem roten Punkt in der Spalte „Rogue“ dargestellt:

Das Problem ist in dem Fall, dass Rogue Access Points vom UniFi Controller automatisch geblockt werden. Dies führte zum Symptom mit den Verbindungsabbrüchen.

Ich habe dann die Funktion benutzt, Rogue Access Points als bekannt zu markieren und den D-Link whitegelistet. Die UniFi-Firmware besitzt diese Funktion offenbar seit Version 5.5.19.

Leider half das aber auch nur temporär; der D-Link Access Point wurde regelmässig wieder als Rogue Access Point klassifiziert und geblockt.

Schlussendlich entschied ich mich dazu, den D-Link Access Point dem Installateur zurückzugeben, (damals) 120 CHF zu investieren und einen UniFi AC Mesh AP im Boilerraum zu installieren.

Am Netzwerkanschluss des Mesh Access Points hängt neben dem PoE-Injektor der Industrie-PC und der Mesh Access Point verbindet sich nun seit Monaten reibungslos mit dem UniFi AP AC Pro.

Keine Unterbrüche, keine Sorgen — mitsamt dem Vorteil, dass im Untergeschoss nun besserer WLAN-Empfang herrscht.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen