piCore: Zwischen Einplatinencomputer und Microcontroller

Der RaspberryPi ist ein Einplatinencomputer, der über GPIO Pins mit angeschlossener Elektronik kommunizieren kann. Mikrocontroller (µC) können das auch. Dafür hat der Pi ein ausgewachsenes Betriebssystem (meist Raspbian), ein Dateisystem, ein Netzwerk etc. Andererseits benötigt der µC wenig Strom und man kann ihn ohne Bedenken ausschalten. Der Pi mag das Ausschalten nicht so gerne: er möchte sauber heruntergefahren werden. Und auch sonst muss man sich mehr um ihn „kümmern“ – Software aktuell halten, ggf. das Betriebssystem aktualisieren.

Besonders der Punkt des Herunterfahrens störte mich bei vielen Pi-Projekten, die irgendwann in den Dauerbetrieb gehen sollen. Wenn ich eine LED-Wand damit ansteuere, möchte ich sie ausschalten können, ohne mich zuvor per SSH anmelden zu müssen.

Diese Lücke zwischen ausgewachsenem OS und µC-Firmware adressiert die Distribution piCore – ein auf TinyCoreLinux aufbauendes Linux, das komplett im RAM läuft. Mittlerweile gibt es schon Version 9 und ein aktives Forum mit Nutzern und Entwicklern. Das Basisimage von PiCore ist weniger als 40 MB groß und lässt sich daher schnell installieren. Eine Testinstallation bootete flott in weniger als zehn Sekunden. Weil alle Programme direkt im RAM laufen und es keine langsamen Zugriffe auf die SD-Karte gibt, verhält sich das System äußerst responsiv und flott. Da das OS von SD-Karte bootet und diese anschließend nicht mehr benötigt, kann der Pi ohne schlechtes Gewissen ausgeschaltet werden – alle Daten liegen ja im RAM. Sollen Daten das Ausschalten überleben und auch beim nächsten Bootvorgang erhalten bleiben, gibt es hierfür das Programm filetool.sh, das die Userdaten auf die SD-Karte schreibt.

Fazit: Die Grenzen von piCore liegen klar bei Anwendungen, die viele Daten schreiben – insbesondere, wenn diese Daten nicht mehr in der RAM passen und auch beim nächsten Bootvorgang erhalten bleiben sollen. Wer jedoch die umfangreiche Hardwareausstattung des Pi nutzen möchte und keine Sorgen mit dem Blinden Trennen von der Stromversorgung haben möchte, sollten einen Blick auf piCore werfen.

Gar nicht so schlaue Tradfri-Lampen von IKEA

Die Problemstellung ist eigentlich ganz einfach: In unserer Wohnung gibt es einen Flur ohne Fenster – der demnach immer recht dunkel ist. Wenn man durch den Flur hindurchgehen möchte, macht man das Licht an, geht in den nächsten Raum und mach dann das Licht wieder aus. Wie schön wäre es, wenn man einen Bewegungsmelder hätte, der diese Lampen automatisch ein- und ausschalten würde. Von Ikea gibt es nun eine Reihe Lampen und Zubehör, die sich miteinander über das Protokoll ZigBee verbinden lassen – genannt Tradfri.

Also bin ich losgezogen und habe mir ein solches Lampenset gekauft. Die Installation verlief ohne Probleme: Lampen werden in die Fassung geschraubt, man hält einen kleinen Bewegungsmelder in sehr kurzem Abstand direkt daneben, drückt auf einen Knopf und die beiden Geräte sind miteinander verbunden. Am Bewegungsmelder lässt sich einstellen, wie schnell die Lampen bei einer erkannten Bewegung wieder ausgehen sollen (nach ein, fünf oder zehn Minuten). Zudem kann man einstellen, ob der Bewegungsmelder  bei Tag oder nur bei Dunkelheit arbeiten soll. Das klappt alles ganz gut und auch so, wie ich mir das vorgestellt habe. Bei einem Preis von 15 € pro Lampe (E14-Sockel) und 18 € für den Bewegungsmelder ist der Spaß im Bereich der Smart-Home-Lampen im akzeptablen bis günstigen Bereich.

Als weiteres Feature der Lampen habe ich von der Kompatibilität mit Philips Hue Bridges gehört. Also habe ich das auch einmal mit einer alten Hue Bridge der ersten Generation ausprobiert. Leider klappte das nicht wie gewünscht. Verschiedene Blog-Artikel weisen darauf hin, dass die Lampen erst ab einer gewissen Firmware Versionen mit den Bridges kommunizieren können. Um die Lampen auf eine neue Firmware zu aktualisieren oder gar auszulesen, benötigt man jedoch ein weiteres Gerät von Ikea: ein Tradfri-Gateway. Dieses Gateway ist, zumindest hier im Ruhrgebiet, derzeit überall ausverkauft und mit 30 € auch einigermaßen teuer. Die Verbindung der Lampen mit dem Gateway ist mir daher leider nicht gelungen.

Da die Lampen aber dennoch das tun, was sie sollen – auch ohne eine Kommunikation mit einem zentralen Gateway – werde ich sie behalten und weiter testen. Für die Integration über ein Gateway und damit auch als Schnittstelle mit anderen Geräten würde ich jedoch wieder auf Lampen zurückgreifen, die den Standard besser unterstützen.

CI/CD mit Gitlab

Gitlab ist neben github eine der großen Plattformen für Softwareentwickler, um Quelltext in Git-Repos zu verwalten. Mir hat immer gut gefallen, dass die Plattform keine Probleme mit privaten Repos hat – github stellt sich etwas an und möchte hier nur ein privates Repo pro Nutzer kostenlos zur Verfügung stellen. Auch die Terms of Service von github bereiten mir zunehmend Bauchschmerzen. Hinzu kommt, dass sich github nicht auf eigener Infrastruktur hosten lässt. Gitlab dagegen bietet eine mächtige Community-Edition an. Das Projekt edugit des Teckids e.V. ist ein Vorstoß in die Richtung, diesen Dienst datenschutzkonform auch im Bildungsbereich in Deutschland anbieten zu können.

Zurück zu den Vorzügen von Gitlab. Ein tolles mir neues Feature sind sogenannte Runner. Das sind virtuelle Maschinen, Rechner oder Docker-Container, die meinen Quelltext automatisch prüfen können. Dieses Feature heißt CI/CD (für Continuous Integration/Continuous Delivery) und wird durch die Datei .gitlab-ci.yml konfiguriert. Ein Beispiel, das einen Pythontest in einem Python-Container auf alpine-Basis ausführt, sieht so aus.

image: python:alpine  # Das Basisimage des Containers

before_script:  # Wird vor jedem Task ausgeführt
 - echo nothing to do

tests:    # Ein Task mit Namen 'tests'
 script:  # Das Script hat mehrere Befehle
 - find ex.py test.py
 - python3 test.py
 - python3 -m doctest ex.py

Sobald nun Quelltext in das Repo gepusht wird, läuft ein sogenannter Runner und führt die Tasks einzeln aus. Gitlab selbst stellt auf seiner Plattform verschiedene Runner zur Verfügung, die von Digital Ocean gesponsert werden und in ihrer Laufzeit auf generöse 2000 CPU-Minuten pro Monat und User beschränkt sind. Wem das nicht reicht, der kann auch selbst einen Runner bei sich installieren, laufen lassen und darin die Tests ausführen. Wem Gitlab nicht behagt, der kann auch einen Runner mit drone.io betreiben. Diese haben den Vorzug, nicht auf Gitlab beschränkt zu sein und integrieren sich auch in andere Plattformen wie etwa gitea oder gogs.

MiniGameJam #3 gebar die StarFeetAcademy

Am Samstag, dem 10.2. ging der Mini Game Jam Dortmund in die dritte Runde. Wieder mussten Spielentwickler (Profis, Amateure und Dilettanten) an einem Tag in 8 Stunden ein Spiel erdenken und umsetzen. Es war das zweite mal, dass ich daran teilgenommen habe. Die Organisation war wieder einmal klasse und ich danke Moritz, der diese Veranstaltung immer wieder möglich macht. Mit Sven, Reinhard, Janis und Dominik haben wir uns diesmal als Team super ergänzt. Herausgekommen ist ein Multiplayer Spiel, das mit vier Spielern auf einer Tanzmatte auf einer LED-Matrix gespielt wird. Ein kräftiger Soundtrack erfüllte das Spiel mit Leben, so dass auch mir die ein oder andere Runde durchaus Spaß gemacht hast. 🙂 Mittlerweile gibt es sogar eine Umsetzung für Android. Der nächste Termin steht auch schon fest: am 12. Mai geht es weiter.

Sammelsurium Dezember 2017 – Januar 2018

cc: Freepik

Wieder sind zwei Monate vergangen. Ein Rückblick auf die letzten Twitterfeeds ist auch immer wieder ein Blick auf Dinge, die man schon längst vergessen hat.

Tweets aus 2017-12

  • Aluhut günstig abzugeben. Kaum getragen. Nichtraucherhaushalt. #34c3  [Quelle]
  • Danke für die Arbeit. Danke für den wichtigen Satz. [Quelle]
  • Mythen der digitalen Bildung: – PDF statt Arbeitsblatt – Gerätebedienkompetenz – abgefilmter Frontalunterricht #34c3 #Lehrerstammtisch
  • Registrierung als Engel, check. SIM-Karte, check. Flora-Mate getrunken, check. Spaß in der Schlange zur Kasse gehabt, check. #34c3
  • Viele Muggel am Leipziger Hbf unterwegs. Ich glaube, die Kongressteilnehmer dennoch an den mit Konsolen gepflasterten Laptopbilschirmen in den Cafés zu erkennen. #34C3
  • Bahnfahrt nach Leipzig genutzt und für edukative sowie selbsterbauliche Zwecke eine Hashtabelle als Datenstruktur in #python programmiert. #34c3 #tuwat [Quelle]
  • Angeblich hält mein ICE gerade in Bielefeld. Immer diese Nerdwitze zum #34c3
  • ☑Im Engelsystem registriert #34c3
  • Kniffliger Adventskalender mit schönen Rätseln vom Adventuretreff-Forum. [Quelle]
  • Es gibt eine App für die Indoor-Navigation auf dem 34c3. [Quelle]
  • Meine Mini-Packliste für den #34c3 [Quelle]
  • Python vielleicht demnächst in Excel. [Quelle]
  • Früher stieg die Aufregung direkt vor Weihnachten, nun steigt sie direkt danach. #34C3 #tuwat
  • Wir sind endlich in der Zukunft angekommen. Vergesst die fliegenden Autos. Laptops in Klassenzimmern sind das eindeutige Zeichen. #ironie  [Quelle]
  • Ein schönes Tutorial für die Shaderprogrammierung auf Grafikkarten. #GPU [Quelle]
  • Enigmail ist derzeit kaputt.  [Quelle]
  • Wenn man mal SyntaxHighlighting in Libre-Office-Dokumenten benötigt:  [Quelle]
  • Eine gute Aluhut-Grundbildung für jeden IT’ler. [Quelle]
  • Werde dieses Jahr auch mein Tel. mitbringen und hoffe auf das Matometer.  [Quelle]
  • Eine Hasente.  [Quelle]
  • Glossar: Charset – Encoding – Font  [Quelle]
  • WTF = WhatsApp Twitter Facebook
  • Ein flammendes Plädoyer für Textmails ohne HTML-Schnickschnack. +1  [Quelle]
  • Wir hatten damals schon Escape Rooms.  [Quelle]
  • Schellmische Kritik eines Mathelehrers auf immer albernere Aufgaben aus der Analysis?!  [Quelle]
  • Es hat begonnen: KIs programmieren sich selbst besser als Menschen. [Quelle]
  • „Das ist fraktal falsch. Je näher du rangehst, desto mehr ist falsch daran.“ – fefe
  • Username und Passwort ist noch keine 2-Faktor-Auth.
  • Was passiert, wenn man etwas in den Browser eingibt? Hier steht es – sehr(!) detailliert. [Quelle]
  • So einfach kann ein Python-Skript als systemd service gestartet werden.  [Quelle]

Tweets aus 2018-01

  • „Vom Mythos der Digital Natives und der Net Generation“ (von 2012!) – „Die Mediennutzung gilt nur der Freizeit, ein Transfer auf Lernen findet nicht statt. Sie dient in erster Linie der Kommunikation mit den Peers[…].“  [Quelle]
  • Früher hießen Gewinnspiel und Umfrage noch schlicht Werbung.
  • Planen, Testen, Nachdenken helfen. Wird leider häufig vernachlässigt, weil es Kosten verursacht.  [Quelle]
  • Das Vorurteil, dass Lehrer zu wenig arbeiten, stimmt also nicht.  [Quelle]
  • RFC 1855 beschreibt die Netiquette-Regeln.  [Quelle]
  • Digitalpoeten von heute.  [Quelle]
  • Wenn Binärdarstellungen von Primzahlen wie Giraffen aussehen. [Quelle]
  • Wenn Twitter auf Videotext/Teletext trifft. [Quelle]
  • #MagpPi: Immer wieder einen Blick wert.  [Quelle]
  • Wenn Ende-zu-Ende kaputt ist, nennt man es halt Ende-zu-Mitte. Muss ich mir merken.  [Quelle]
  • Wieder ein Beleg dafür, dass Android keine vertrauenswürdiges OS ist.  [Quelle]
  • Buchtipp: Kryptographie mit Python umsetzen und brechen. [Quelle]
  • Schule in Arnsberg gründet Hackerspace.  [Quelle]
  • #poesie  [Quelle]
  • An der Uni in Oxford bekommen Frauen bei Mathe- und Informatik-Tests 15 Minuten mehr Zeit, weil … ähhh … warum eigentlich? [Quelle]
  • #PyCharm kann jetzt auch MicroPython.  [Quelle]
  • Viele Basisinformationen der Elektrotechnik in einem Artikel zusammengefasst und schön bebildert. [Quelle]
  • Chaos Darmstadt berichtet über das besondere elektronische Anwaltspostfach und zeigt, wie man ein Projekt auf vielen verschiedenen Ebenen gegen die Wand fahren kann. [Quelle]
  • Gelesen, Twitter geschlossen und drüber nachgedacht. [Quelle]
  • Immer, wenn wir „sozial schwach“ hören oder sagen, lasst uns überlegen, ob „ökonomisch schwach“ nicht die bessere Formulierung wäre.
  • Mädchen können Teamwork besser als Jungs. Und Deutschland ist diesmal deutlich über dem OECD-Schnitt. Da gibt es noch Potenzial, das wir nicht nutzen, gerade in Bereich IT/Informatik.  [Quelle]
  • Ist schon wichtig, so eine schnelle und verlässliche Informations-Infrastruktur in Krisensituationen. [Quelle]
  • traefik ist ein HTTP Reverse Proxy und Load Balancer für z.B. docker. [Quelle]
  • PicoCluster verkauft Cluster für #RaspberryPi s. [Quelle]
  • Für mehr Datenkonfusion.  [Quelle]
  • Wow, Geolocation geht auch mit einer Knopfzelle und einer Laufzeit von ca. 30 Jahren. Aus der Berechnung des Verhältnis von Helligkeitsdauer und Dunklheitsdauer über den Tag. [Quelle]
  • Wenn man mal eben einen reverse proxy unter seinen #docker containern benötigt.
  • Erstaunlich, was man mit einer Knopfzelle alles machen kann. [Quelle]
  • Auch heute noch kann man einen Laptop selbst bauen – z.B. aus einem #RaspberryPi. #34c3 [Quelle]
  • Easterhegg in Dortmund. Das wäre toll. [Quelle]
  • Fremden Quelltext lesen … oder den eigenen Quelltext aus einer fernen Vergangenheit. [Quelle]
  • Gute Unterhaltung mit „Nougatbytes“, „Hacker Jeopardy“ und dem „Zentrum für politische Schönheit“. #34c3 [Quelle]
  • Immer schön aufpassen mit den Abhängigkeiten. [Quelle]
  • @hanno erklärt, warum die empirische Wissenschaft kaputt ist. #34c3 [Quelle]
  • Dateien einfach aber sicher über Tor teilen. [Quelle]
  • Sehr ausführliche aber noch verständliche Erklärung von Spectre/Meltdown und warum der #RaspberryPi nicht betroffen ist. Inklusive kurzer Geschichte von CPU-Architekturen. [Quelle]
  • Mit PiServer kann man #RaspberryPi s über das Netzwerk mit einem OS versorgen – ohne SD-Karte. [Quelle]
  • Reisepass/Perso nicht auf ein Induktionskochfeld legen. Die gespeicherten biometrischen Daten würden sonst Schaden nehmen. IIRC bleibt der Ausweis dennoch gültig. #Servicetweet
  • Solange wir nur eine amtsführende Regierung haben, kann das Grundgesetz einmal durchatmen.
  • Das müsste mal soziologisch untersucht werden.  [Quelle]
  • „Smells Like Teen Spirit“ mit Auto-Tune. Ja, bei gruselig klingt das.  [Quelle]
  • Eine schöne Broschüre zum Thema digitale Selbstverteidigung mit einem leichten Fokus auf Schweizer Verhältnisse. Dennoch einen Blick wert.  [Quelle]
  • So lassen sich USB-Sticks und SD-Karten validieren. [Quelle]
  • PC-Wahl bietet 8-Bit-Voll“verschlüsselung“ und liefert den Schlüssel gleich mit aus, obwohl man ihn auch raten kann. #34c3 #encraption (S.22)  [Quelle]
  • Das Kerhoff’sche Prinzip: Die Sicherheit eines Verschlüsselungsverfahren muss basieren auf der Geheimhaltung des Schlüssels, nicht des Verfahrens. Bereits 1883 veröffentlicht. [Quelle]
  • Eine einfache Python-Implementierung einer Block-Chain – sogar mit einem einfachen Proof-Of-Work. [Quelle]
  • Gruselige Vorstellungen von Lehrerkollegen. SuS = Schülerinnen und Schüler  [Quelle]
  • Wow, ein Infrastrukturprojekt im Zeitplan.  [Quelle]
  • „Patterns und Anitpatterns“ – ein schöner und unterhaltsamer Vortrag von fefe. [Quelle]
  • Daten sind das Schlangenöl des 21. Jahrhunderts. #fnord
  • Universalkommunikator #34C3 #blinkenrocket  [Quelle]
  • Noch gibt es günstige Hotels.  [Quelle]
  • Eindrücke vom #34c3  [Quelle]
  • Termine zu #34c3 ähnlichen Veranstaltungen. [Quelle]
  • „Computer sind Spiel-, Werk- und Denkzeug.“ #34c3
  • Mailboxen, das Fidonetz und Netzwerke der 90er Jahre #34c3  [Quelle]
  • CTF – Kreuzworträtsel für Nerds #34c3  [Quelle]
  • Blinken-Rocket: ein schönes Bastelprojekt vom #34c3 [Quelle]
  • Firmware für einen ESP8266 basierten Router. Inklusive Meshing. [Quelle]
  • Alte Weisheiten  [Quelle]

 

Docker auf dem RaspberryPi

Mit HyprioOS gibt es seit einiger Zeit ein Image für den RaspberryPi, das docker container auf den Pi holt. Man muss beachten, dass die docker images für ARM-Architekturen gebaut sind. Davon gibt es aber immer mehr – hypriot selbst stellt bereits einige zur Verfügung. Man kann z.B. mit einem schlanken alpine-Basisimage starten und sich darauf aufbauend mit Hilfe eines Dockerfile den Container für den eigenen Bedarf stricken.

$ docker build -t containername .

Mehrere Container können schließlich zu einem Service zusammengebaut werden. Das macht docker-compose und ein docker-compose-yml-File.

$ docker-compose up

Mehrere Services lassen sich schließlich zu einem Swam zusammenfügen und auf mehrere Pis verteilen. HypriotOS bringt alle wichtigen Tools mit und läuft zuverlässig.

Laptop selbstgebaut

Eigentlich ist es gar nicht so einfach, einen Laptop selbst zusammen zu stellen, da die Einzelkomponenten hochgradig integriert sind. Auf dem 34C3 ist mir jedoch ein Koffer begegnet, der genau diesen Versuch mit einem Rasperry Pi unternommen hat. Neben dem Pi, sind unter dem Plexiglas zwei Powerbanks verbaut, die das Display und den Pi mit Strom versorgen – und das über 16 Stunden lang. Daneben ist noch Platz für ein Steckbrett und kleinere Bauteile. Als mobile Hacking-Stations ist das Gerät also durchaus interessant.

Inspiriert wurde das Projekt von SpyPi, welches den Kofferansatz weitertreibt, mit zusätzlichen Auf- und Anbauten ausstattet ist und Teil einer 2017 fertig gestellten Abschlussarbeit ist. Die Hardware wird unter spypi.ch beschrieben.

34C3: Gute Unterhaltung

CC BY-SA Jackytar

Neben rein technischen Vorträgen gab es beim letzten 34C3 auch solche mit größeren Unterhaltungswert. Nougatbytes ist ein Ratespiel mit Bildern. Sehr liebevoll und aufwändig gestaltet mit dem notwendigen Gefühl für die Fähigkeit um die Ecke denken zu können.

Das im letzten Jahr pausierende und in diesem Jahr wieder veranstaltete Hacker Jeopardy zeigt in verschiedenen Kategorien, wie wenig man bisweilen weiß. Besonders gut hat mir die Kategorie „\LaTeX“ gefallen, in der man LatTeX-Formeln ausrechnen musste.

Schließlich berichtete das Zentrum für politische Schönheit im Vortrag Tiger, Drucker und Mahnmale über die Aktivitäten im letzten Jahr. Hier bleibt so manches Lachen im Halse stecken und ich wünsche mir mehr von diesen Aktionen. Neben rein unterhaltsamen Elementen, habe ich dort etwa verfahren, dass selbst anspruchsberechtigte Flüchtlinge nicht mit dem Flugzeug einreisen dürfen, da dies gesetzlich mit Geldstrafen gegenüber Fluglinien sanktioniert wird.

Trotzdem: Gute Unterhaltung!

 

Update: Die Chaoswest-Bühne hat nun im März auch ihre Videos veröffentlicht. Hier hat mir das Video Operation Mindfuck gut gefallen, das unterschiedliche nerdige Themen kurz vorgestellt. Vieles war mir schon bekannt, einiges hatte ich vergessen, anderes war mir neu.

Die empirische Wissenschaft ist kaputt

Hanno Böck hat sich als Grundlage für seine Behauptung Science is broken eine Theorie erdacht (Steine auf dem Monitor helfen gegen Malware) und diese „emprisch“ nachgewiesen. Der statistische Wert  p-Value, der die Signifikanz einer statistischen Größe beschreibt, ist manchen Fällen nämlich einfach zufällig gut genug für eine Veröffentlichung.

A p-value is the probability that you get a false positive result in idealized conditions if there is no real effect.

In many fields of science p<0.05 is considered significant.

Leider werden wissenschaftliche Studien häufig nur dann publiziert, wenn sie ein positives Ergebnis hervorbringen, nicht jedoch bei negativen Resultaten. Und deshalb ist nicht erkennbar, wann ein Resultat nicht nur aus reiner Zufälligkeit relevant geworden ist. Mit dieser Meinung steht er nicht alleine da: Wissenschaftler, die Meta-Studien erstellen, pflichten selbstverständlich bei. Mich dagegen hat dieser Umstand erschreckt.

Hanno postuliert schließlich zwei Arten von Wissenschaft: „TED-talk science“ (positive und überraschende Resultate, große Effekte, viele Zitierungen, meist nicht korrekt) und „boring science“ (viele negative Ergebnisse, geringe Effekte, näher an der Wahrheit). Vielleicht sollten wir uns mehr den langweiligen Ergebnissen zuwenden?!

 

USB-Sticks und SD-Karten validieren

Nicht immer funktionieren USB-Sticks und SD-Karten so wie sie sollen. Bei meiner letzten Bestellung aus China hatte ich den Verdacht, dass einige SD-Karten defekt waren – sie funktionierten für einen kurzen Zeitraum und gaben dann den Geist auf. Aus der c’t kannte ich das Programm H2testw, mit dem Flashspeicher geprüft werden kann. Dazu wird das Speichermedium mit Testdaten vollständig beschrieben und die Daten anschließend wieder gelesen. Wenn alles korrekt läuft, stimmen die gelesenen Daten mit den ursprünglich geschriebenen Daten überein. Das kann je nach Größe des Speichermediums durchaus eine Weile dauern.

Für Linux gibt es hierfür das Paket f3, das mit den Programmen f3write und f3read das gleiche tut. Für einen korrekten USB-Stick läuft das Programm wie folgt ab:

$ f3write /media/STICK/
Free space: 196.84 MB
Creating file 1.h2w ... OK! 
Free space: 0.00 Byte
Average writing speed: 6.76 MB/s

Anschließend werden die geschriebenen Daten wieder gelesen.

$ f3read /media/STICK/
                  SECTORS     ok/corrupted/changed/overwritten
Validating file 1.h2w ... 403128/        0/      0/      0

  Data OK: 196.84 MB (403128 sectors)
Data LOST: 0.00 Byte (0 sectors)
          Corrupted: 0.00 Byte (0 sectors)
   Slightly changed: 0.00 Byte (0 sectors)
        Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 7.75 MB/s