Windows 10 IoT ausprobiert: Finales Windows auf dem Raspberry Pi 2

Obwohl die finale Version von Windows 10 IoT erst für den Herbst erwartet wurde, hat Microsoft sie nun schon im August auf recht unspektakuläre Art und Weise(öffnet im neuen Fenster) vorgestellt. Nachdem wir im Mai eine Vorabversion auf dem Raspberry Pi 2 ausprobiert haben , wollen wir nun wissen, was sich in der finalen Version geändert hat. Um es vorwegzunehmen: Groß sind die Unterschiede nicht, aber einige unserer Kritikpunkte an der Vorabversion sind verschwunden.

Am Konzept von Windows 10 IoT wurde nichts verändert. Es ist das geistige Kind von Windows CE und diverser Windows-Embedded-Varianten. Einen Vergleich mit klassischen Linux-Distributionen für das Raspberry Pi verliert es deshalb schon prinzipbedingt. Ein Desktop oder selbst ein ungeliebtes Kachelmenü fehlt, auch GUI-basierte Programme sind in der Installation nicht zu finden, ein Appstore nicht in Sicht. Deutlich wird der Fokus auf (Hobby-)Entwickler auch an der längeren Liste von Beispielprojekten, die Microsoft auf seiner zugehörigen Webseite präsentiert. Im Vordergrund steht die Ansteuerung von Elektronik mit Hilfe des Raspberry Pi und des ebenfalls unterstützten Minnow Board Max .







Immer noch anders: die Installation
Die Installation der Vorabversion wich deutlich von den bisherigen Konventionen ab, mit denen Nutzer ein Betriebssystem auf dem Raspberry Pi installieren. Die finale Version macht es dem Nutzer immer noch nicht einfacher(öffnet im neuen Fenster) : Zuerst gilt es, eine ISO-Datei herunterzuladen und zu mounten, um die darin enthaltene Installationsdatei auszuführen. Dabei werden zwei Programme und die eigentliche Imagedatei auf den eigenen Rechner installiert. Eines der Programme, mit dem länglichen Namen WindowsIoTImageHelper, muss der Nutzer nun starten. Damit wird die Imagedatei auf eine SD-Karte geschrieben. Das funktioniert entgegen der Aussage in der Dokumentation auch problemlos unter Windows 8.1.
Obwohl die Installation jetzt mehr Schritte erfordert als bei der Vorabversion, geht sie doch gefühlt etwas flüssiger von der Hand. Das liegt aber in erster Linie daran, dass kein länglicher Kommandozeilenaufruf notwendig ist, dessen Syntax Nicht-Windows-Administratoren vermutlich sofort wieder vergessen. Der Prozess ist aber immer noch umständlicher, als es eigentlich erforderlich wäre. Warum die reine Imagedatei und das SD-Karten-Werkzeug nicht einfach direkt und einzeln heruntergeladen werden können, bleibt unverständlich.
Mehr Übersicht nach dem Start
Nachdem die Micro-SD-Karte mit Windows präpariert wurde und eine USB-Maus sowie das Ethernetkabel eingesteckt wurden, starten wir das Raspberry Pi. Der Bootvorgang ist kürzer geworden – es dauert trotzdem noch gut eine Minute, bis der Übersichtsbildschirm mit der Geräteinfo erscheint. Zeigte der Bildschirm in der Vorabversion nur den Rechnernamen und die IP-Adresse, werden jetzt auch die angeschlossenen und erkannten USB-Geräte angezeigt.
Eine zweite auffällige Änderung ist die Menüleiste am oberen Rand. Auf der linken Seite befinden sich zwei Karteireiter: einer für die gerade dargestellte Geräteinfo-Seite selbst und einer für eine Seite mit – etwas übertrieben bezeichnet – Lernprogrammen. Rechts sitzen die Icons für die Gerätekonfiguration und der Knopf zum Neustart beziehungsweise zum Herunterfahren des Raspberry Pi.
Nur wenig zu konfigurieren
Die Seite zur Gerätekonfiguration hat sich in der finalen Version deutlich verändert, nicht unbedingt zum Positiven. Wo in der Vorabversion noch die Zeitzone ausgewählt werden konnte, können wir jetzt nur die Sprache der Oberfläche einstellen. Die Umstellung auf Deutsch führt tatsächlich zur durchgängigen Verwendung deutscher Texte in der Oberfläche. Allerdings müssen wir vorerst weiterhin mit einer falschen Zeitzone und damit falschen Zeitangabe leben. Weiterhin kann in der Gerätekonfiguration auch der WLAN-Zugriff konfiguriert werden. Da aber unser spontan eingesteckter USB-WLAN-Dongle nicht erkannt wird, bleiben uns die Einstellungen verwehrt.







Zurück auf der Geräteinfo-Seite prüfen wir, ob andere USB-Geräte funktionieren. Diverse Mäuse inklusive vertikalem Scrollrad und Tastaturen von Logitech und Microsoft sind sofort funktionsfähig, mit Ausnahme von Spezialtasten. Ein No-Name-Bluetooth-Dongle wird ebenfalls erkannt. Das gilt auch für eine USB-Webcam von Microsoft mit integriertem Mikrofon.
Leider wird nirgends ausreichend dokumentiert, welche USB-Geräte beziehungsweise USB-Chips von Haus aus unterstützt werden. Bezüglich WLAN wird laut Anleitung(öffnet im neuen Fenster) für das Raspberry Pi 2 derzeit nur der offizielle WLAN-Dongle(öffnet im neuen Fenster) unterstützt. Die Angaben zu weiteren USB-Geräten in den Release Notes(öffnet im neuen Fenster) sind wenig nützlich, denn das Dokument scheint sich noch auf die letzte Vorabversion vom Juni 2015 zu beziehen. Die darin enthaltenen Links sind mittlerweile tot.
Scrollen ohne Ruckeln, dafür Warten an anderer Stelle
Schließlich schauen wir uns noch ein wenig in der Lernprogramm-Sektion um. Der Name verspricht mehr, als er hält. Es lassen sich lediglich einige Einführungstexte und ein Testprogramm aufrufen. Das Laden der einzelnen, vermutlich HTML-basierten Seiten dauert jedes Mal mehrere Sekunden, eigentlich zu lang für die relativ kurzen Texte, selbst wenn eine langsame Micro-SD-Karte im Raspberry Pi stecken würde oder der Abruf übers Netz erfolgt.
Genauso lahm starten auch Programme, wie wir später merken. Sobald die jeweilige Seite jedoch geladen wurde, lässt sie sich ohne Ruckeln scrollen, wenn der Inhalt über den Bildschirm hinausgeht. Auch die optische Reaktion auf Klicks auf Buttons erfolgt stets ohne Verzögerung.
Eine potenziell problematische Verzögerung finden wir beim Blink-Testprogramm. Es lässt in einem definierbaren Zeitintervall die grüne LED des Raspberry Pi aufleuchten und zeigt den An-/Aus-Zustand der LED grafisch auch in der Oberfläche an. Das Intervall kann per Schieberegel ausgewählt werden und liegt zwischen 10 und 1.000 Millisekunden. Während die Zeitabstände bei der blinkenden LED konstant bleiben und sich auch von Benutzerinteraktionen nicht beeindrucken lassen, erfolgt die Darstellung des LED-Zustands in der GUI mit einer erkennbaren Latenz.
Arbeiten ohne Desktop
Doch die Arbeit mit der GUI soll bei Windows 10 IoT gar nicht unbedingt im Vordergrund stehen. Deshalb bot bereits die Vorabversion den Zugriff auf das Raspberry Pi über die Powershell, FTP und über ein Web-Interface. In der finalen Version kommt noch SSH hinzu. Wobei wir uns beim ersten Zugriff gar nicht sicher waren, ob das tatsächlich stimmte. Es dauert selbst im lokalen Netz mehr als 20 Sekunden, bis wir nach den Login-Daten gefragt werden.
Sobald wir aber erst einmal eingeloggt waren, konnten wir die Kommandozeile ohne Probleme nutzen. So konfigurierten wir schließlich auch die Uhrzeit auf dem Raspberry Pi:
Mit diesen beiden Aufrufen wird die Zeitzone auf Deutschland eingestellt und die Uhrzeit gesetzt. Die Zeitzone wird gespeichert und bei Neustarts die korrekte Uhrzeit per NTP abgerufen.
Die Zugriffssicherheit ist ausbaufähig
So praktisch diese vielfältigen Wege sind, so offen ist damit auch das Raspberry Pi für einen Zugriff von außen. Erfordern der Zugriff auf die Powershell, SSH und das Web-Interface wenigstens noch das Administrator-Passwort, ist der FTP-Zugang weiterhin auch anonym möglich. Dienste wenigstens zu deaktivieren oder sogar Benutzerkonten mit Passwörtern zu verwalten, ist weder per Web-Interface noch per GUI auf dem Gerät selbst möglich. Das funktioniert nur per Powershell, leider verzichtet Microsoft aber in seinen Tutorials bislang darauf, auf die Thematik tiefer einzugehen. Nur die Änderung des Administrator-Passworts wird eher nebenbei angesprochen.
Auch ob und wie der direkte Zugriff auf das Gerät durch einen expliziten Login-Bildschirm unterbunden werden kann, dokumentiert Microsoft nirgends.
Ein bisschen nach Hause telefonieren
Es dauerte nur wenige Tage nach dem Erscheinen der Desktopversionen von Windows 10, bis die Kritik aufkam , es würde zu häufig "nach Hause telefonieren". Das war Anlass für uns, bei unseren Tests den Datenverkehr des Raspberry Pi mit Hilfe von Wireshark(öffnet im neuen Fenster) gelegentlich mitzuloggen und den Netzwerkverkehr ein wenig im Auge zu behalten.
Auffälligkeiten gab es bis auf eine Ausnahme nicht: Beim Start findet eine kurze Übertragung per SSL an den Server vortex-win.data.microsoft.com statt – deren SSL-Zertifikat von Firefox und Opera übrigens als unsicher eingestuft wird, denn das Root-Zertifikat von Microsoft selbst sei nicht vertrauenswürdig. Da die Übertragung verschlüsselt erfolgt, ist unklar, was übertragen wird. Laut Microsoft werden die Daten im Rahmen des Customer Experience Improvement Program übertragen. Da für Windows 10 IoT keine Registrierung oder ein Lizenzschlüssel notwendig ist, wird eine gewisse Anonymität gewahrt.
Nichtsdestotrotz, laut dem entsprechenden Supportdokument(öffnet im neuen Fenster) soll die Teilnahme freiwillig sein, eine Opt-Out-Funktion suchen wir aber in Windows 10 IoT vergeblich.
Programmieren mit Windows 10 IoT
Wie auch bei der Vorabversion erfolgt die Programmierung über einen Host-Rechner, der über das Netzwerk mit dem Raspberry Pi verbunden sein muss. Des Weiteren ist die aktuelle Version von Visual Studio 2015(öffnet im neuen Fenster) erforderlich, die Community-Edition reicht aus.
Laut Microsoft muss auf dem Host-Rechner Visual Studio 2015 unter Windows 10 laufen. Allerdings lassen sich eine Reihe einfacherer Beispielprojekte von Microsoft auch noch mit frühen RC-Versionen von VS 2015 unter Windows 8.1 kompilieren und auf dem Raspberry Pi ausführen.







Die bereits unkomplizierte Integration, inklusive Remote-Debugger, des Raspberry Pi in Visual Studio hat sich bis auf optische Kleinigkeiten nicht geändert. An der API für die GPIO-Verwaltung gab es ebenfalls keine inkompatiblen Änderungen.
Auffällig ist allerdings, dass sich die Beispielprojekte und die Entwickler-Webseite(öffnet im neuen Fenster) mittlerweile stark auf C# konzentrieren – auf die früher noch betonte Möglichkeit, Anwendungen auch mit Javascript/HTML zu programmieren, wird kaum noch hingewiesen.
Die von Microsoft präsentierten Beispielprojekte(öffnet im neuen Fenster) können durchaus beeindrucken. Neben dem Hello-World der Elektronik, einer blinkenden LED, gehören dazu auch eine Anwendung zur Aufnahme von Videos und sogar die GPIO-Steuerung per Sprachkommando(öffnet im neuen Fenster) . Bemerkenswerterweise können gerade die letzten beiden Funktionen allein mit den Mitteln der Windows-10-API bewältigt werden und erfordern nur wenig Code. Die Installation zusätzlicher Bibliotheken oder Werkzeuge Dritter ist dafür nicht erforderlich. Die Spracherkennung ist bei der im Beispiel gezeigten Form auch nicht von einem Internetdienst abhängig.
Einige Beispiele, inklusive des Beispiels für die Spracherkennung, sind leider noch mit der RC-Version von Visual Studio erstellt worden. Deren Projektdatei ist aber mit der finalen Version von VS nicht kompatibel. Das äußert sich in einer etwas missverständlichen Fehlermeldung. Microsoft selbst empfiehlt in diesem Fall, ein neues Projekt zu erstellen und die entsprechenden Inhalte der Programmdateien in dieses neue Projekt zu kopieren.
Die Anwendungen unter Windows 10 IoT sind sogenannte Universal Apps. Vorausgesetzt, die Anwendungen wurden auch für die ARM-Plattform kompiliert und erfordern keine speziellen APIs, sollen auch "normale" Windows-10-Apps auf dem Raspberry Pi lauffähig sein. Umgekehrt gilt das auch für selbst geschriebene Apps auf dem Raspberry Pi. Werden sie für die x86-Architektur kompiliert, sollen sie auch auf den Desktopversionen von Windows 10 laufen. Da klassische Desktop-PCs und Tablets aber selten eine dedizierte GPIO-Leiste besitzen, hält sich der Nutzen in Grenzen.
Programme starten mit Absicht langsam
Ebenfalls keine großen Veränderungen hat praktischerweise das Web-Interface erfahren. Es ist eine Mischung aus Gerätemanager, Debugging-Oberfläche und Programmverwaltung. Der Zugriff erfolgt am schnellsten über das zweite auf dem Host-Rechner installierte Programm namens WindowsIoTCoreWatcher. Es zeigt an, wenn der Raspberry Pi im Netz verfügbar ist und bietet per Kontextmenü auch den direkten Aufruf des Web-Interfaces für dessen Windows-10-IoT-Installation.
Da das Web-Interface eine Performance-Anzeige besitzt, konnten wir während unserer Experimente verfolgen, wie sich Prozessor- und RAM-Auslastung entwickeln – und waren dabei positiv überrascht.
In der Vorabversion zeigte die Prozessorauslastung viel zu oft Werte über 90 Prozent an, selbst wenn wir nur durch Listen scrollten. Das hat sich komplett geändert. Reines Scrollen und andere GUI-Benutzer-Aktionen beanspruchen den Prozessor kaum, auch Programmstarts treiben die Anzeige nicht über 50 Prozent. Laufen keine weiteren Programme, wird aber per SSH und Web-Interface auf das Raspberry Pi zugegriffen, bewegt sich die Auslastung zwischen 2 und 4 Prozent.
Anscheinend versucht Windows 10 IoT, die Nutzung der vorhandenen vier Kerne des Raspberry Pi gezielt zu begrenzen, um stets Leistungsreserven zu haben und reaktionsfähig zu bleiben. Auch wenn damit vermutlich bewusst Geschwindigkeitsverluste an anderen Stellen, wie das langsame Starten von Programmen, hingenommen werden.
Deutlich wird das beim bereits oben angesprochenen Blink-Programm. Bei langen Intervallen von 1.000 Millisekunden liegt die Prozessorauslastung um die 18 Prozent, verkürzen wir die Intervalle auf bis zu 400 Millisekunden, steigt die Auslastung linear an, bis sie 25 Prozent erreicht. Bei weiterer Verkürzung der Intervalle auf bis 10 Millisekunden bleibt die Auslastung weiterhin bei 25 Prozent – entspricht also recht genau einem einzelnen der vier Prozessorkerne des Raspberry Pi.







Eine annähernd 100-prozentige Auslastung erreichten wir nur, als wir über die angeschlossene USB-Webcam ein Video (H264-Format, WMV-Container, 320x320px) auf dem Raspberry Pi aufzeichneten, dabei betrug die Framerate gerade mal 9,3 fps. Beim Abspielen hingegen schwankte die Auslastung nur zwischen 35 und 65 Prozent. Reine Audioaufzeichnungen über das Mikrofon der Webcam benötigen nicht ganz so viel Leistung. Die Aufnahme (MP3, Stereoformat, 44,1 kHz) fordert um die 60 Prozent maximale Leistung, beim Abspielen werden 50 Prozent Prozessorauslastung nicht überschritten, Aussetzer in der Aufnahme hörten wir nicht heraus.
Positives gibt es auch beim RAM zu vermelden. Obwohl das Raspberry Pi während des Testes bis zu zwölf Stunden ohne Neustart durchstehen und diverse Programmierexperimente über sich ergehen lassen musste, wurde nie mehr als 300 MByte des 1 GByte großen Speichers verwendet.
Fazit und Verfügbarkeit
Wir können es nur wiederholen: Windows 10 IoT auf dem Raspberry Pi will das klassische Linux nicht ersetzen. Es ist klar auf den typischen Embedded-Einsatz ausgerichtet. Microsoft will Windows 10 IoT für das Raspberry Pi weder als Mediencenter noch als Retrokonsole etablieren. Es richtet sich an Entwickler, für die ein Betriebssystem vor allem ein Werkzeug und die Basis für eigene Programme ist.
Unter diesem Gesichtspunkt ist Windows 10 IoT und dessen API durchaus für Hobbybastler interessant. Wer bereit ist, die Hürden C# und Visual Studio zu meistern oder schon beherrscht, erhält eine interessante Experimentierplattform.
Sollte aus dem Experiment aber eine dauerhafte Installation werden, dann sind tiefere Kenntnisse in der Windows-Administration unabdingbar, um den Rechner abzudichten. Zwar existiert eine umfangreiche Admin-Dokumentation zu Windows und der Powershell allgemein in den Tiefen der Microsoft-Webseite, doch in der aktuellen Form dürfte sie Bastler kaum erreichen. Hier muss Microsoft unbedingt nachbessern.
Windows 10 IoT für das Raspberry Pi(öffnet im neuen Fenster) und das Minnow Board Max(öffnet im neuen Fenster) sowie Visual Studio 2015 Community Edition(öffnet im neuen Fenster) können kostenlos heruntergeladen werden.



