UPDATE | Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (quick & dirty)
Are you willing to resist
The people you’ve never met?
The devil’s wheel revolves
But it needs to be reset
Never never try to gauge temperature
When you tend to travel at such speed
It’s our velocity!
Our Velocity, Maxïmo Park
Unser Erster Beitrag zur Internet-Geschwindigkeitsmessung ist auf sehr viel Zuspruch gestoßen – die dort beschriebene Vorgehensweise ist nun etwas in die Jahre gekommen. Zeit für ein schnelles und dreckiges (dennoch nicht ohne einen gewissen Qualitätsanspruch) Update zu diesem Thema.
1. Messen
Zur Messung benötigen wir einen lauffähigen Raspberry Pi (oder sonstigen Kleinstrechner) inkl. einem (am Besten) Debian-basierten Betriebssystem wie z.B. dem weit-verbreiteten und beliebten Raspbian. Dabei mit Putty eine SSH-Verbindung zum Pi aufbauen und schon gehts los!
Die Messergebnisse werden final in ein einfaches CSV-File geschrieben. Dieses lässt sich anschließend auf alle erdenklichen Art und Weisen auswerten.
Notwendiges installieren:
sudo apt-get install gnupg1 apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
export DEB_DISTRO=$(lsb_release -sc)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | sudo tee /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
sudo apt-get remove speedtest-cli
sudo apt-get install speedtest
Test-Messung durchführen (Beim ersten Aufruf die Lizenz mit “YES” bestätigen):
speedtest
2. Automatisieren
Skriptausgabe in ein csv-File vorbereiten:
cd ~
mkdir speedtest
cd speedtest
nano speedtest.zsh
Folgenden Code im Editor erfassen:
#!/bin/sh# echo "\"$(date +%F" "%T)\",$(speedtest --format=csv)"
Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.
File ausführbar machen:
chmod +x speedtest.zsh
Cronjob zur zeitgesteuerten, automatischen Ausführung einrichten (Ausführung jede Stunde):
crontab -e
0 * * * * bash ~/speedtest/speedtest.zsh 2>>~/speedtest/error.log >> ~/speedtest/speedtest.csv
Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.
3. Auswerten
Nach einigen Stunden kann man bereits die Ergebnisse auswerten. Dazu am Besten mit einem FTP-Client wie FileZilla am Raspberry Pi anmelden und die speedtest.csv herunterladen.
Mit der Tabellenkalkulation der Wahl kann man die CSV-Datei grafisch aufbereiten:
4. Chillen
Nach getaner Arbeit ein Bier öffnen und genießen. 🙂
[…] Dieser Beitrag ist veraltet und wird nicht mehr gepflegt. Es steht eine aktuellere Version der Anleitung zur Verfügung. Letzter Stand: […]
Vielen Dank für die Anleitung! Hat prima funktioniert. Dennoch zwei Fragen:
1. In welcher Reihenfolge werden welche Werte in die CSV geschrieben? Tu mich schwer, die einzelnen Zahlen zuzuordnen/zu interpretieren.
2. Ich bekomme mehrfach die Fehlermeldung “Configuration – Couldn’t resolve host name (HostNotFoundException)”. Kann man den angefragten Server festlegen oder woher kommt der Fehler?
Markus, die Werte werden in der Reihenfolge der Ausführung in die CSV geschrieben. Den Server kann man, glaube ich, über den Parameter
Wie mache ich denn auch den CSV Zahlen lesbare Werte bzw. was finde ich denn in welcher Spalte?
(wie muss man das alles umrechnen damit man eben auf DOWNLOAD Mbps 67.62 usw. kommt?)
Gerd, mit dem Parameter
kannst du dir zusätzlich die Spaltenbezeichner anzeigen lassen. Die csv-Datei in Excel aufbereiten, ist auch keine Magie (“Text in Spalten”)… 🙂 Viel Erfolg!
Ich bin in dem leider noch nicht so fit. Wie muss ich –output-header an
echo “\”$(date +%F” “%T)\”,$(speedtest –format=csv)”
anhängen?
Meine Ergebnisse variieren zwischen gar keinem Header und Header ohne Datum, was die ganze csv zerschiesst. Dankeschön
Der speedtest funktioniert wunderbr. Nur leider wird keine csv Datei mit dem Script erstellt.
Also die Werte in der CSV Datei sind mir etwas ein Rätsel.
Ich erhalte ab der Spalte C Zahlen:
C: 30587
D: 23655
E: 848
F: N/A
G: 6687150
H: 6258696
I: 45410976
J: 33081008
Wenn ich den Link zur Messung aufrufe, der auch in der Zeile steht, dann ergab diese folgende Werte:
Ping: 24ms
Download: 53.50 Mbps
Upload: 50.07 Mbps
Die Spalte D könnte ja was mit dem Ping zu tun haben, abber alles andere kann ich so nicht nachvollziehen.
@Marcel
Ich habe die Zeile in der Crontab so angepasst, das die kompletten Verweise für das Verzeichnis da sind. Dann ging es bei mir mit der CSV:
/home/pi/speedtest/speedtest.zsh usw ….
Ich habe das gleiche Problem, wie Uwe. Ich habe in den Spalten C-J Werte, die ich nicht zurodnen kann. Ansatzweise könnte man es sich vorstellen, was mit jenem Wert gemeint sein könnte, aber sicher bin ich mir leider auch nicht. Ich finde die Anleitung für den Test sehr gut und, vor allem, er läuft.
Erklärung der Spalten nach der “Text zu Daten” funktion von Excel:
C: Server ID
D: Ping in ms
E: Jitter in ms ( Vom Ping )
F: Denke packet loss? Bei mir steht durchgehend eine 0 drin.
G: Download in kiloByte (kB). Druch 125 teilen für Megabit (Mb). Pro Sekunde.
H: Upload, berechnen wie bei G
I + J, braucht man nicht. Sind wahrscheinlich die Größen welche Heruntergeladen/Hochgeladen wurden (data used).
Super, endlich mal eine Anleitung, die auf Anhieb funktioniert. Hat schon einmal jemand eine Visualisierung der Daten hinten drangehängt? Das würde ich auch noch gern autpomatisieren, anstatt jedesmal mit Excel herumzufuhrwerken.
Danke für diese super Anleitung, hat auf anhieb funktioniert.
vielen lieben Dank für die Anleitung – das hat sogar für mich als Neuling sofort geklappt. genau die Funktion , die ich gesucht habe.
jedoch hänge ich auch noch (wie die anderen) an der Interpretation bzw. Umwandlung der Daten. also .csv ist erfolgreich erstellt. Die Einträge ab Spalte C- J wäre interessant zu wissen, um was es sich genau handelt. die oben angesprochene Umrechnung (Division durch 125) erschliesst sich mir nicht… oder ich stehe da komplett auf dem Schlauch 😉
Naja Division durch 125 kenne ich eigentlich auch nicht. Ich nehme dafür eigentlich 1024.
Habe gerade mal versucht den Umrechnungsfaktor anhand von ein paar Daten nachzurechnen und bin auf 125010 gekommen. In einem anderen Script habe ich die Formel: result=(float(data)/1024/1024)*1.048576*8 gefunden was einem Umrechnungsfaktor von 125000 entspricht. Der genaue Sinn erschließt sich mir aber auch nicht.
Macht genau was es soll.
Ich verstehe aber einfach nicht, warum es keine Benutzerfreundliche Version gibt.
Das Auswerten finde ich einfach viel zu aufwendig. Früher gab es das mal mit googlecloud, wo es das direkt selber gemacht wird.
Gibt es kein fertiges Tool, was über einen gewissen Zeitraum die Werte vernünftig darstellt und ich das analysieren kann? Ähnlich wie samknows das mit ihrem eigenen Router macht?
Macht genau was es soll, passt super. Der Teiler 125.000 kommt natürlich durch die Umrechnung kiloByte/s auf MegaBit/s.
Aber eine Frage noch – kann man bestimmte Server ausschließen. Bei mir wählt er Server in Düsseldorft, also bei mir vor Ort. Aber ein Server (ID 30060) liefert immer schlechte Werte. Liegt wohl nicht an meiner Verbindung sondern am Server. Den würde ich gerne ausschließen.
ja, die Anleitung hat funktioniert, es wird von speedtest was ausgegeben und wenn man will auch eine CSV-Datei erstellt. Allerdings kann man mit den Daten in der CSV-Datei absolut nichts anfangen. Auch das einblenden einer Überschrift mit –output-header bringt einen da nicht weiter. Schade, eine Auswertung per csv-file mit vernünftigen Werten wäre insbesondere für einen längern Betrachtungszeitraum schon hilfreich gewesen.
…zudem hab ich noch nie gehört, daß man Kilobyte mit Teilen durch 125000 in Megabyte umrechnen kann. 1 MB sind für mich immer noch 1024 KB
Speicherplatz und Daten werden meist in Byte (B) angegeben, Datenübertragungsraten (wohl aus Marketinggründen) in Bit. 1 Byte = 8 Bit, daher ist 1 Bit = 1/8 Byte = 0.125 Byte.
1 Megabit/s = 1 000 000 Bit/s, dividiert durch 8 ist 125 000 Byte/s.
Die Angabe im CSV ist also in Byte/s, wenn man durch 125 000 teilt kommt man auf MBit/s, die Einheit in der Internetanschlüsse beworben werden.
Daher kommt es auch, wenn man z.B. 10 MBit/s Downloadrate hat, dass man dann etwa 1.25 MB/s runterlädt.
Immer diese marketingtechnische Korrektur. Alle lernen in der Schule im Dezimalsystem zu rechnen und deshalb meinen die Marketingleute, sie müssen die Zahlen für die “dumme” Allgemeinheit verfälschen. Wir sind immer noch im Dualsystem und 2^10 ist immer noch 1024. Damit ist ein Megabit = 1 048 576 Bit. Okay, jetzt können wir noch anfangen darüber zu philosophieren, ob wir von der Brutto oder Netto Kapazität reden und evtl. eine Korrektur für Handshaking berücksichtigen müssen. Da bei den Messwerten das Handshaking, welches in einer tieferen Schicht automatisch passiert, nicht mit messen kann, brauchen wir hierfür keine Korrektur.
Jetzt noch etwas anderes: Ich habe, wie hier auch schon Michael geschrieben, Probleme mit Servern, welche grundsätzlich schlechte Werte liefern. Mach ich dann eine Kontrollmessung gegen einen “guten” Server, sind die Messwerte i.O. Mich würde also auch eine Möglichkeit zum Ausschließen von Servern interessieren.
Die CSV aus dem speedtest ist bei mir im amerikanischen Format. Habe auch keinen Parameter gefunden, um die Ausgabe auf das lokale oder deutsche Format umzustellen. Ich habe jetzt ein Python-Script darüber gelegt, welches die Ausgabe im Json anfordert und eine CSV im lokalen Format erstellt.
Hi Matthias, das war aufschlussreich und hat mir sehr geholfen. Danke
Moin!
Was genau wird denn beim “Notwendigen” installiert?
Nur das gute Zeug Bruder, nur das Gute…
Hi,
wenn ich folgenden Befehl ausführe, erhalte ich:
sudo apt-get update
Get:1 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]
Get:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
Hit:3 https://repo.zabbix.com/zabbix/5.4/raspbian buster InRelease
Get:4 http://archive.raspberrypi.org/debian buster/main armhf Packages [378 kB]
Err:5 https://ookla.bintray.com/debian buster InRelease
403 Forbidden [IP: 34.208.28.248 443]
Reading package lists… Done
E: Failed to fetch https://ookla.bintray.com/debian/dists/buster/InRelease 403 Forbidden [IP: 34.208.28.248 443]
E: The repository ‘https://ookla.bintray.com/debian buster InRelease’ is not signed.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
was bedeutet diese Fehlermeldung exakt.
Hatte ebenfalls das Problem. Bei Facebook bekam ich Hilfe in einer Ubuntu Gruppe.
Die Dateien liegen mitlerweile in einem anderen Pfad.
Einfach hier https://www.speedtest.net/apps/cli lesen und den Speedtest installieren
Hi,
im erstellten speedtest.csv Datei (Root: home/pi/speedtest) befindet sich im File nur das Datum und Uhrzeit wie folgt:
“2021-08-04 11:00:01”
“2021-08-04 12:00:01”
“2021-08-04 13:00:01”
und keine weitere Info über den throughput und ping. Im Pfad befinden sich noch 2 weitere Dateien:
– speedtest.zsh
mit folgendem Inhalt: #!/bin/sh#
echo “\”$(date +%F” “%T)\”,$(speedtest –format=csv)”
– error.log
mit folgendem Inhalt: speedtest: error: unrecognized arguments: –format=csv
hoffe du kannst mir helfen.
Grüße, Ahmet
hier ebenso.. nur Datum und Uhrzeit in der CSV
Hallo SmartHomer,
wir wollen an einer VF-Station dauerhaft, zu zufälligen Zeitpunkten Speed messen (Kabel-TV). 250 Mbit/s-Vertrag, 80 …100 Mbit/s liegen nur vor (Shared-Medium-Problem).
Dazu soll Rasberry PI per LAN (2. LAN-Anschluß) an der Station angeschlossen werden und messen, testen.
Hat jemand Lust uns so einen Kleinstrechner mit fertiger Messlösung zu basteln? Geht das? Selbstverständlich gegen Bares …?
Gruß S
“https://ookla.bintray.com/debian”
Antwort: “Error 403: Forbidden”
Gibts es einen alternativen Link?
Speedtest Install funktioniert nicht mehr. Sehr schade.
Über eine andere Anleitung habe ich Speedtest installieren können.
Eine CSV Datei wird auch ausgegeben, aber ich habe alles in der einer Zelle (in der Excel).
Ich habe somit keine verschiedenen Spalten.
Wo ist den hier nun wieder der Fehler?
Würdest Du uns verraten, über welche “andere Anleitung” Du Speedtest auf dem RaspberryPi installiert hast?
Hallo,
von hier: https://pimylifeup.com/raspberry-pi-internet-speed-monitor/
Kannst du einmal meinen Versuch analysieren? Ich habe sprichwörtlich nur 1:1 kopiert.
https://pastebin.com/J62KeT3a
Ich wurde ab dem Install Key – also INSTALL_KEY= und der folgenden Paketquellenintegration etwas misstrauisch. Erklär mir das bitte mal.
Schick mir am besten ne Mail…
Ich habe es nach der Anleitung gemacht: https://github.com/arevindh/pihole-speedtest/wiki/Installing-Speedtest-Mod
”
sudo su
wget https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-armhf-linux.tgz (replace with your version)
tar -xvzf ookla-speedtest-1.0.0-armhf-linux.tgz
mv speedtest /usr/bin/speedtest
speedtest –version
”
Diese Beschreibung habe ich auf dieser Seite gefunden:
https://github.com/arevindh/pihole-speedtest/issues/88
Da war folgender Kommentar sehr wertvoll:
“@town3r
Raspberry Pi can only have armhf / aarch64 . You can choose armhf if you are running Raspbian / Raspberry Pi OS.
uname -a will show your exact version .”
War mir so vorher nicht bewusst, ich hatte immer das falsche gewählt.
Für den Output mit Header ist zu empfehlen auf tsv statt csv umzustellen:
speedtest script:
#!/bin/sh#
echo “\”$(date +%F” “%T)\”,$(speedtest –format=tsv –output-header)”
Der Cron Output zur Sicherheit ebenfalls in eine tsv schreiben lassen.
cron job:
*/1 * * * * bash ~/speedtest/speedtest.sh 2>>~/speedtest/error.log >> ~/speedtest/speedtest.tsv
Achtung, der cron ist auf einen minütlichen Lauf eingestellt.