RockPI-X

Endlich ist mal wieder ein Stück Hardware bei mir eingetrudelt. Und zwar der RockPI-X, ein Intel Atom System-on-Chip Modul in der Dimension eines RaspberryPI Modell B.

Während auf den Raspberry PI Modellen Windows 10 in der ARM Version nicht wirklich gut lauffähig war (die IOT Core Version mal ausgenommen), habe ich mit dem RockPI erstmals die Möglichkeit ein vollständiges X86 64-bit Windows System auf einem Chipkarten großen PC zu installieren.


Der Rock-PI X

Um die 100 Euro kostet ein RockPI-X Modul bei unseren Freunden in Fernost, je nachdem wie viel RAM und eMMC Speicher verbaut ist, schwankt der Preis um +/- 20 Euro.
Ich habe mir die 4 GB RAM und 32 GB eMMC Variante gegönnt.

RockPI-X Box

Die Box kam mit dem SOC Modul und einer WLAN Antenne. Nicht dabei war ein USB-C Stromadapter und dieser ist leider kein 0815 Modell. Wir brauchen nämlich einen USB-C 9 oder 12 Volt Adapter.
Reguläre Adapter arbeiten nur mit 5 Volt und mit dieser zu geringen Spannung soll es zu Instabilitäten im Betrieb kommen können.
Zum Glück hatte ich bereits einen Adapter, der entsprechend mehr Spannung liefert, und konnte das Modul damit betreiben.

RockPI-X

HDMI, Audio, USB 2 und 3, wie auch Ethernet, WLAN und Bluetooth soll der “Mikro-PC” anbieten können. Ein 4-Kern Intel Atom Z8350 mit 1.4 GHz treibt das Cherry Trail System an.

Nicht zu vergessen ist dann noch seine PIN Leiste.
Eigentlich wollte ich das Teil nur deshalb haben, weil mich interessiert, ob wir über Windows irgendwie mit den GPIO PINs sprechen können. Jede reguläre Linux-Installation sollte keine Probleme haben, die GPIO Pins per sysfs einzubinden und auch Android wäre eine kompatible Plattform für dieses Gerät.

Vor allem aber wollte ich mal einen “PC” haben, den ich nicht immer mit sperrigen Gehäuse herumstellen muss, wenn ich mal schnell was testen möchte.

RockPI-X Backside

Windows 10 Installation

Hier gibt es eigentlich nichts zu sagen, außer: Alles PC Standard.

Man erstellt einen USB Boot-Stick aus einer Windows-Setup-ISO Datei, startet den Rock-PI-X, drückt DEL um ins BIOS zu gelangen und aktiviert dort den Boot from USB Stick. Der Boot im UEFI Modus ist dabei stets vorzuziehen.

Dann startet die Windows Installation, die den eMMC Speicher automatisch erkennt und Windows darauf installiert.

Sobald das Setup durchgelaufen ist, landet man in einer regulären Windows 10 Installation, die die Hardware mit Standardtreibern nutzt. Es werden dabei jedoch noch einige Einträge im Gerätemanager angezeigt, für die kein Treiber existiert.

Treiber Update

Fehlende INF Dateien findet man dann auf wiki.radxa.com/RockpiX/downloads.

Einen Treiber bekam ich allerdings nicht zum Laufen, und das war der WLAN-Chip. Das kann theoretisch auch am von mir eingesetzten Windows 10 IOT Enterprise liegen, welches ich im RockPI-X installiert hatte.

Man findet aber bei den Treiber Downloads auch eine fertige WIM Datei und ich vermute mal, dass dort drinnen alle Treiber integriert sind.

Ich habe mein WLAN-Problem vorläufig ignoriert und einen 0815-USB-WLAN-Dongle per USB genutzt und der wurde unmittelbar erkannt und war einsatzbereit.

Thema GPIO

Die Dokumentation zur GPIO Pinleiste ist zwar online abrufbar, richtet sich primär an Linux. Dort kann man GPIOs in der Regel per /sys/class/gpio exportieren (also nutzbar machen) und dann über das Dateisystem steuern. Es werden 5 GPIO-Geräte beschrieben, die die eigentlichen GPIO-Pins über eine interne Nummer ansteuerbar machen.

Meine erste Anlaufstelle war das Tool WinObj, welches brav alle Treiber und Geräte im Windows Objektbaum anzeigen kann. Und tatsächlich findet man dort GPIO_1 bis 6 aufgelistet.

WinObj GPIO

Es gibt aber keine Links aus dem globalen Namensraum heraus, womit schon mal die Nutzung aus dem User-Mode nicht vorgesehen ist.

Beim Nachlesen auf der MSDN fand ich dann die Erklärung, dass man unter Windows GPIOs grundsätzlich nur durch eigene Treiber für andere Geräte zugänglich macht.
Das macht eigentlich auch Sinn, denn im produktiven Betrieb lädt man einen Treiber für z.B. einen Button am Gerät oder einen Sensor und definiert für diesen ein Interface.
Dass im Hintergrund dann Bits von und an GPIOs herumgeschickt werden ist ein Implementierungsdetail.

Man kann also nicht so einfach GPIO Pins ein und ausschalten, wie das unter Linux möglich wäre. Da müsste man sich einen eigenen GPIO-Playground-Treiber schreiben, dem man dann per CreateFile() und DeviceIoControl() Kommandos schickt, welche dieser dann an die nativen GPIOs weitergibt.

Fazit

Nun, da muss ich wohl noch ein bisschen warten, bis ich für einen GPIO Treiber Zeit habe. Aber ein gutes Gerät für diese Tests habe ich ja zumindest schon.

Der RockPI-X verhält sich etwa so wie Tablets mit diesem Prozessor. Er lässt sich auch gut mit dem Raspberry-PI 4 vergleichen. Man kann einigermaßen damit im Web browsen und typische Office-Aufgaben damit erledigen. Er ist sicher keine Rennsau, aber auch keine lahme Ente.

Rechenaufgaben kombiniert mit viel eMMC drücken aber negativ auf die Performance. Das merkt man beim Update-installieren, denn das kann Stunden dauern. Ein einzelner Kern rechnet alleine und die Dateien finden nur langsam ihr Ziel. Das ist gegenüber einem “richtigen” Desktop-Rechner eher ein Witz.

However, ich haben einen vollständigen X86 PC auf Chipkarten-Größe, also halb so groß wie mein Smartphone.
Hätte mir das mal einer vor 20 Jahren gesagt, dass so etwas mal möglich werden wird …
Echt krass, was es heute alles gibt!