Windows, Timer, Rasperry, Echtzeit und das Problem mit der Genauigkeit

Die ersten Gehversuche mit Visual Studio 2015, zusammen mit dem Rapsberry Pi 2 und Windows 10 IoT Core haben Spaß gemacht. Doch offensichtlich bin ich jetzt an die erste Grenze gestoßen – den Timer.

Windows ist eben kein Echzeitbetriebssystem. Aktuell versuche ich herauszufinden, wie ich 40 Mikrosekunden unter Windows mit .net möglichst genau timen soll – und das möglichst genau.

Das benötige ich für die Initialisierung meines Temperatursensors DHT22.

 

 

Windows 10 IoT Core auf dem Raspberry Pi installieren

Seit ein paar Tagen ist Windows 10 IoT Core für den Raspberry verfügbar. Wir zeigen Ihnen wie man es installiert – ein erstes kleines Tutorial.

Eine kleine Warnung vorab: Wer einen vollwertigen Rechner mit Desktop, Startmenü und Co. erwartet, braucht nicht weiterlesen 🙂 Das Windows 10 für den Raspberry lässt sich nur per Web, FTP oder Powershell administrieren. Ein direktes Arbeiten ist auf dem System nicht vorgesehen, er soll vielmehr nur ein embedded Ausführungsystem sein.

IMG_5087

Von außen sieht man ihm gar nicht an, dass da ein Windows rödelt.

Was benötige ich?

Installation

Zunächst benötigt man das Windows_IoT_Core_RPI2_BUILD.zip File. Darin enthalten ist das Windows Image, ein Readme, eine Lizenzdatei und ein Entwicklertool (später mehr).

zip

Für die Installation benötigen wir zunächst nur die Datei Flash.ffu – doch wie bekommt man die auf den Raspberry bzw. auf die SD-Karte. Mit dem Win32DiskImager wie mir Linux (siehe Grundinstallation mit Linux) klappt es nicht.

Vielmehr wird das Tool dism.exe benötigt.

Nun hat man zwei Optionen:

  • Entweder man verwendet Windows 10, weil Windows 10 schon mit SD-Karten umgehen kann (gibt es nur als Preview-Version)
  • Oder man verwendet einen Windows 8.1. Rechner und installiert das Windows Assessment and Deployment Kit (ADK).

Wir haben uns für die Windows 8.1. Variante entschieden. Es reicht folgende Option zu installieren:

sdk

Das entsprechende Tool findet sich dann im Programmverzeichnis unter Windows\Kits\10\Assessment and Deployment Kit\Deployment Tools\x86\Dism\

dism muss wie folgt aufgerufen werden: dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\\.\PhysicalDriveN /SkipPlatformCheck

Es muss also zunächst ermittelt werden, wie das Laufwerk heißt: PhysicalDrive{Nr}.

Dies kann in der Admin-Kommandozeile mit diskpart erledigt werden:

diskpart
list disk
exit

disk

In unserem Fall ist es der Datenträger 2 also PhysicalDrive3. Hier sollte man in jedem Fall gut aufpassen. Danach kann man dism.exe ausführen und das Image wird auf die SD-Karte geschrieben.

Der erste Bootvorgang

Wir stecken die SD-Karte in den Raspberry, schließen einen HDMI-Monitor und das Netzwerkkabel an und nach einer kurzen Einrichtung und einem Reboot (wir sehen öfters das Windows Logo) begrüßt uns eine Statusoberfläche:

IMG_5086

Dort erfahren wir zumindest die IP, die der Raspberry vom Router bekommen hat.

Das war’s auch schon, kein Startmenü – nichts. Man kann zwar mit der Maus arbeiten, aber mehr als Geräteeinstellungen ansehen, Herunterfahren und Zeitzone einstllen ist erstmal nicht.

Verwaltung über HTTP, FTP oder Powershell

Der Raspberry ist über folgende Wege administrierbar (wenn auch noch alles ohne Sicherheitsschutz, das kommt aber sicher noch):

  • Eine sehr mächtige Weboberfläche über HTTP
  • Über FTP kann man auf das Dateisystem zugreifen
  • Über Powershell kann man Remote Verwaltungsaufgaben vornehmen

Die Weboberfläche

Öffnet man die Raspberry IP Adresse im Browser erwartet uns eine relativ mächtige Weboberfläche. Beispielhaft hier ein paar davon:

Im Networking bereich kann man sich die IP anzeigen. Leider kann der Raspberry mit Win10 aktuell noch nicht mit WLAN-Adaptern umgehen (auch wenn es schon sichtbar ist, daher ist der Raspi ersteinmal an das Kabel gebunden)

web1

Ein Performance-Monitor zeigt die aktuelle Auslastung:

web2

Interessant ist der Apps-Bereich. Hier kann man eigene Universal Apps hochladen und starten.

web3

Ein Remote-Start von Anwendungen sozusagen.

 

Das war einmal der erste Einblick. Als nächstes werden wir uns natürlich mit der Entwicklung beschäftigen.

Vorabversion von Windows 10 für den Raspberry Pi verfügbar

Auf der Entwicklerkonferenz Build wurde die erste Vorabversion von Windows 10 für den Raspberry Pi 2 veröffentlicht. Nach einer Anmeldung kann Windows 10 auf dem Raspberry getestet werden: http://ms-iot.github.io/content/GetStarted.htm

Windows 10 IoT Core wird sehr schlank sein, davon gehen wir aus. Die finale Version wird noch diesen Sommer erwartet.

Nicht zuletzt für meinen Vortrag auf der #dwx15 wird es in Kürze einen ausführlichen Test geben.

Kleiner Home Mailserver mit AXIGEN und Raspberry (Proof of Concept)

Da wir auch das Mailserverprodukt AXIGEN vertreiben und weiterentwickeln, bietet sich eine Kombination mit dem Raspberry an. Ziel soll es sein, einen kleinen Mailserver für zu Hause unter Linux einzurichten.

Diese Anleitung / Beitrag ist für erfahrene Benutzer gedacht.

AXIGEN Mailserver + Raspberry PI = Raspigen

RASPIGEN2

Sie können Ihren RASPIGEN auch bei uns erwerben, wenn sie ihn nicht selbst installieren möchten. Kontaktieren Sie uns: info@huestel-gmbh.de

Dieser soll von unserem Provider (im Beispiel gmx.de) die Mails über POP3 abholen und auf unserem Mailserver abglegen. Es wird keine öffentliche IP oder Portfreigabe benötigt.

Da es aktuell keine ARM-Version von AXIGEN gibt, muss ein Umweg gegangen werden. Von daher ist es erstmal als proof of concept zu verstehen und nicht unbedingt für den Produktiveinsatz geeignet. Aber wir wollen auf unseren AXIGEN ja nicht verzichten.

Da AXIGEN auch sehr ressourcenschonend ist und wir nur eine handvoll Mailboxen hosten möchten, ist das kein Problem. Performancetechnisch sollten wir uns jedoch keine Höchstleistungen erwarten. Sie können diese Anleitung (bis auf ExaGear) auch für jeden anderen Linux-Server verwenden, zum Beispiel für Ihren vServer.

Voraussetzungen:

Installation des AXIGEN Mailservers:

  • Verbinden Sie sich über SSH auf den Raspberry
  • Zunächst muss das Eltechs ExaGear Desktop Paket heruntergeladen werden (dieses erhalten Sie nach Ihrem Kauf vom Hersteller)
    • Danach muss der Lizenzschlüssel in’s Installationsverzeichnis kopiert werden
    • Installation mittels sudo ./install-exagear.sh starten
    • Das aktuelle Installationspaket hat scheinbar ein Verzeichnis nicht angelegt:
      • Daher muss noch ein sudo mkdir /etc/resolvconf aufgerufen werden
      • Mit dem Befehl sudo exagear wechseln wir in die x86 32 Bit shell
      • shell
      • Dies erkennt man am neuen Shell-Bezeichner: root@raspberrypi@x86
  • Im ersten Schritt müssen wir das AXIGEN-Installationspaket für Debian herunterladen:
    • wget https://www.axigen.com/usr/files/axigen-8.2.0/axigen-8.2.0.i386.deb.run
      • wget
  • Danach starten wir die Installation:
    •  axigen
  • Nach der Bestätigung der Lizenz startet die Installation, es wird das emulierte Ubuntu 12.04 erkannt:
    • axigen3
  • Die Installation wird mit der Option 1 gestartet
    • axigeninstall
  • Wenn die Installation fertig ist starten wir wie angegeben den Einrichtungswizard: /opt/axigen/bin/axigen-cfg-wizard
  • Zunächst vergeben wir das Admin-Passwort:
    • axigenadmin
  • Als primäre Domain geben wir die Domain unseres Freemail-Anbieters an, in unserem Fall gmx.de
    • domain
  • Die Alias Konfiguration übernehmen wir
    • alias
  • Den Webadmin belassen wir auf Port 9000
    • webadmin
  • Den SMTP-Dienst belassen wir ebenfalls auf Port 25
    • smtp
  • Wir möchten die Dienste POP3, IMAP und Webmail nutzen
    • services
  • POP3 belassen wir auf Port 110
    • pop3
  • IMAP auf Port 143
    • imap
  • Das Webmail auf Port 80 (ggf. auf Port 8000) ändern, wenn schon ein Webserver wie z.B. der Apache auf Port 80 läuft:
    • wm
  • Das Relaying über localhost / 127.0.0.1 erlauben wir:
    • relaying
  • Der Sendmail-Wrapper sollte auch installiert werden:
    • sendmail
  • AXIGEN wird nun eingerichtet:
    • install
  • Sobald der Wizard beendet ist, können wir AXIGEN starten: /etc/init.d/axigen start
    • START

Konfiguration des AXIGEN – Mailservers:

  • Über den Browser können wir nun uns auf die Webadmin-Oberfläche von AXIGEN verbinden. Die Adresse lautet http://<Ihre Raspi IP>:9000 z.B. http://192.168.178.74:9000
    • wa
  • Zunächst müssen wir für unsere Domain das Feature RPOP aktivieren:
  • Domains & Accounts => Domain => Edit
  • Dort im General Tab die Option RPOP aktivieren
    • domainrpop
  • Danach legen wir unseren Freemail-Account an:
  • Domains & Accounts => Domain => Add Account
    • addaccount
  • Das Account-Passwort kann vom Provider-Passwort abweichen
  • In den Account Einstellungen => Account => Edit aktivieren wir RPOP. RPOP dient dazu die Mails über POP3 vom Provider abzuholen.
    • rpop
  • Darüber hinaus müssen wir noch den RPOP-Dienst aktivieren (Services => Service Management):
    • rpop2
  • Danach loggen wir uns im Webmail ein, z.B. http://192.168.178.74/
  • Wechseln Sie zunächst auf das Standard Webinterface:
    • standard
    • Später können Sie zum Arbeiten auch wieder auf das moderne Ajax-Webmail wechseln
  • Für den Login verwenden Sie Ihre vollständige Mailadresse <Adresse>@gmx.de und ihr vorher gesetztes Passwort:
    • login
  • Danach richten wir die Abholung beim Provider ein
  • Klicken Sie rechts oben auf “Settings”
    • settings
  • Und dann auf RPOP-Connections:
    • rpopcon
  • Dort können Sie nun die Zugangsdaten Ihres Providers für POP3 hinterlegen:
    • rpop4
  • Je nach eingestelltem Intervall sollten nun nach einigen Minuten die E-Mails im Posteingang auftauchen.
  • images
  • Im nächsten Schritt müssen wir noch den Versand über den Provider als Smarthost festlegen
  • Hierzu wechseln wir noch einmal zum Webadmin
  • Danach auf Security & Filtering => Acceptance & Routing => Routing Basic Settings
  • Dort hinterlegen wir die SMTP-Daten des Providers und speichern mit “Save Configuration”
    • smarthost
  • Da uns ja die gmx.de Domain nicht gehört, muss man noch eine zusätzliche Regel anlegen
    • Diese Regel stellt sicher, dass alle @gmx.de Adressen die nicht lokal vorhanden sind zum Provider gesendet werden
    • Somit können wir auch mit anderen gmx-Teilnehmern kommunzieren
    • Haben Sie z.B. den Account Ihrer Frau auf dem AXIGEN so wird die Mail ohne Umweg über das Internet zugestellt
    • Hierzu wechseln wir in den Bereich “Advanced Settings” und fügen eine neue Regel hinzu “Add Acceptance /  Routing Rule”
      • advanced
    • Diese Regel wie folgt einrichten
      • gmx
    • Und mit Save Configuration speichern

Damit holt unser Raspigen Mails vom Provider ab und versendet diese ebenfalls über den Provider nach außen. Fertig ist unser kleiner lokaler Mailserver.

raspigen

In AXIGEN gibt es natürlich noch viele weitere Optionen (von Active Sync über Virenscanner bis hin zu Backup-Optionen), sehen Sie sich doch auf unserer AXIGEN Seite um: http://www.axigen.info – das Forum bietet Ihnen auch viele Hilfestellungen.

Natürlich können Sie AXIGEN auf Ihre Bedürfnisse weiter einrichten, die Webmail Sprache umstellen, usw.

Vergessen Sie abschließend nicht Ihre AXIGEN-Lizenz noch einzuspielen.

P.S.: Kommerzielle Lizenzen erhalten selbstverständlich Support!

Und so sieht er aus:

raspigen copy