Apcsilmic ARM64 Qualcomm Windows Drivers
« | 16 Oct 2022 | »Wenn ich ein frisches Windows 11 IOT ARM64 oder Windows 10 IOT ARM64 auf meinem Apcsilmic Dot 1 Mini-PC installieren möchte, scheitert das Ganze schon vor der Installation, weil Maus, Tastatur und USB generell nicht funktionieren.
Es fehlen also die notwendigen Treiber … und ich finde diese auch nicht
als Download im Internet.
Also … was tun?
Windows on ARM neu installieren
Die mitgelieferte Windows Lizenz auf meinem kleinen ARM-PC ist vermutlich der größte Kritikpunkt. Denn im Netz findet man einige Berichte, dass die Herstellerfirma entweder kein aktiviertes Windows vorinstalliert hatte, oder die Lizenz “irgendwie fehlerhaft” sei.
Für mich ist das kein Problem, da mir mein (teures) MSDN Abo ausreichend Windows-Lizenzen beschert. Doch interessanterweise habe ich genau das auf dem PC eingesetzte “Windows 11 Pro” nicht für ARM64 verfügbar.
Nur “Windows 11 Enterprise” und “Windows 11 IOT Enterprise” habe ich im Angebot und gleiches gilt auch für Windows 10. Alle anderen Downloads betreffen nur x86 und x64.
Problem: Keine Qualcomm Treiber im Windows Image
Wenn man ein ARM64 ISO Image dann auf einen
UEFI
FAT32 USB-Stick kopiert, boot der kleine PC auch brav in dessen Setup, kann
aber dann die USB Ports nicht neu laden und man landet auf dem Setup
Startbildschirm, kann aber in keinster Weise “Weiter” klicken.
Unter den Hardware-IDs im vorinstallierten Windows fand ich im Netz genau
gar nichts und weder auf der Herstellerseite, noch bei
Qualcomm fand ich einen Treiber
für Geräte wie:
- Qualcomm(R) XHCI Filter Device
- Qualcomm(R) USB Type-C Device
- Qualcomm(R) Adreno(TM) 618 GPU
- Qualcomm(R) Aqstic(TM) Audio Device
Lösung: Treiber extrahieren
Wie gut, dass das Tool dism
inzwischen gelernt hat, aller Treiber aus
einem bestehend Windows Image zu extrahieren.
Ich startete das originale Windows 11 im Reparaturmodus, wechselte zur
Konsole und führte folgendes Kommando aus:
Das hätte man auch im laufenden Windows mit
dism.exe /Online /Export-Driver /Destination:C:\drivers
hinbekommen, aber
ich wollte ohnehin die gesamte Windows-Installation in eine Backup-WIM-Datei
sichern.
So kamen 96 Unterverzeichnisse mit jeder Menge Qualcomm Treiber heraus, die ich wieder in ein anderes Windows Image integrieren kann.
Treiber in Boot und Installations-Image integrieren.
In meinen Windows 10 und 11 IOT Images beinhalteten sowohl
sources/boot.wim
, wie auch sources/install.wim
je zwei Images (einmal
IOT und einmal nur Enterprise) und so integrierte ich die zuvor
exportierten Treiber allesamt viermal.
Würde ich dafür ein Script schreiben, sähe das etwa so aus:
1@ECHO OFF 2SET PATH_TO_SETUP_FILES=c:\path\to\extracted_win_iso 3SET PATH_TO_DRIVERS=C:\path\to\drivers 4 5cd %PATH_TO_SETUP_FILES% 6cd sources 7mkdir mount 8 9ECHO Adding drivers to boot image 1 10dism /Mount-Wim /WimFile:boot.wim /index:1 /MountDir:mount 11dism /Image:mount /Add-Driver /Driver:%PATH_TO_DRIVERS% /recurse 12dism /UnMount-Wim /MountDir:mount /commit 13 14ECHO Adding drivers to boot image 2 15dism /Mount-Wim /WimFile:boot.wim /index:2 /MountDir:mount 16dism /Image:mount /Add-Driver /Driver:%PATH_TO_DRIVERS% /recurse 17dism /UnMount-Wim /MountDir:mount /commit 18 19ECHO Adding drivers to windows image 1 20dism /Mount-Wim /WimFile:install.wim /index:1 /MountDir:mount 21dism /Image:mount /Add-Driver /Driver:%PATH_TO_DRIVERS% /recurse 22dism /UnMount-Wim /MountDir:mount /commit 23 24ECHO Adding drivers to windows image 2 25dism /Mount-Wim /WimFile:install.wim /index:2 /MountDir:mount 26dism /Image:mount /Add-Driver /Driver:%PATH_TO_DRIVERS% /recurse 27dism /UnMount-Wim /MountDir:mount /commit 28 29rmdir mount 30ECHO Splitting install.wim into SWM files 31dism /Split-Image /ImageFile:install.wim /SWMFile:install.swm /FileSize:3500 32 33ECHO Deleting original install.wim 34del install.wim
Die originalen install.wim
Dateien waren knapp unter 4 GB und wuchsen
durch die Treiber Patches auf über 4 GB an, daher mussten die wim
Dateien
in swm
Dateien aufgesplittet werden, damit sie auf einen FAT32 USB-Stick
passen.
Installation von Windows 11 und Windows 10
Und siehe da, das aktualisierte Windows Setup konnte die USB Ports und somit Maus und Tastatur erkennen, womit die restliche Installation auf ARM64 genau so verlief wie auch unter x86/x64.
Etwas ins Schwitzen geriet ich beim ersten Start nach dem Setup, denn da verharrte der Bildschirm 10 Minuten lang mit dem Hinweis:
Getting ready
Doch nachdem die Treiber auch in install.wim
wirkten, wurden sie alle
korrekt im System registriert … es dauerte nur eben recht lange ohne
weitere Hinweise.
(Und da dem dot 1 Mini-PC LEDs für Festplattenzugriffe fehlen, weiß man eben nicht, ob er eingefroren ist, oder im Hintergrund weiterarbeitet).
Nach einer erfolgreichen Installation von Windows 11 IOT wiederholte ich die Treiber-Integration in Windows 10 IOT und stellte fest, dass auch diese Installation perfekt ohne Probleme ablief.
Mission erfolgreich durchgeführt!
Fazit
Tatsächlich kommt es mir so vor, als wäre Windows 10 flüssiger im Betrieb auf dem Kleinrechner, als das originale Windows 11 oder mein Windows 11 IOT.
Allerdings funktioniert auf Windows 10 ARM64 das neue Visual Studio mit nativem ARM Support nicht. Daher ist am Ende Windows 11 vielleicht doch die bessere Wahl.
Ich bin jedenfalls glücklich, denn das Experiment hätte ja auch schief gehen können und “Software-Support” ist für diese Hardware vermutlich nicht zubekommen.
Es liegt also nur an der Verfügbarkeit von Treibern und an ein paar dism
Zeilen, dass man sich eine Windows on ARM Installation selbst
zusammenstellen kann.
Dass die Qualcomm Treiber im Windows-11 Standard-Setup fehlten verstört mich
etwas, schließlich hat Microsoft exklusive Verträge mit der Chip-Schmiede.
Doch mit dem Wissen, wie ich die Treiber “konservieren” und “reintegrieren” konnte, kann ich nun weiter für mehr Einsatz von ARM Systemen werben. Besonders im Unternehmensbereich ist es wichtig, dass auch diese (heute noch exotische) Hardware genau so verwaltet werden kann, wie es mit x86 getan wird.
Nachtrag
Die Visual Studio 2022 Build-Tools (also Compiler ohne IDE) lassen sich auch unter Windows 10 ARM64 installieren, es handelt sich dabei jedoch um x86 Binaries für Cross-Compiling, und außerdem unterstützt Windows 10 nur x86, aber keine x64 Emulation.
Und noch etwas konnte ich bestätigen: Minecraft läuft einigermaßen
vernünftig, auf dem 7-Watt-PC, wenn man optische Verschönerungen wie Wolken
und durchsichtige Baumblätterblöcke deaktiviert.
Nur manchmal gehen ein paar Frames verloren. Zum Bauen reicht das, an
Weltmeisterschaften würde ich aber so nicht teilnehmen ;)