Surface Firmware unter Linux aktualisieren

Mi, 22. März 2023, Lioh Möller

Geräte der Surface-Reihe vom Hersteller Microsoft erfreuen sich auch bei vielen Linux-Nutzern einer grossen Beliebtheit, auch wenn diese nicht für ihre gute Reparierbarkeit bekannt sind.

Einige Modelle sind in der Vergangenheit allerdings durch schwerwiegende Fehler aufgefallen, wie beispielsweise Geräte der SurfaceBook Reihe, die unter Umständen die Prozessorgeschwindigkeit längerfristig auf 400 MHz gedrosselt haben.

Beheben lässt sich dies nur durch eine Firmware-Aktualisierung. Der beschriebene Fehler wurde bereits Ende 2019 von Microsoft durch ein entsprechendes Update behoben. Voraussetzung für eine Installation ist allerdings ein installiertes Windows Betriebssystem.

Da Microsoft sogenannte UEFI Capsules zur Bereitstellung der Firmware nutzt, können die Aktualisierungen auch mithilfe von fwupd unter Linux eingespielt werden. Allerdings müssen dazu die Metadaten angepasst werden.

Mithilfe von surface-uefi-firmware lassen sich aus den offiziellen Paketen, von fwupd nutzbare Updatepakete erstellen.

Zur Nutzung müssen vorab die Pakete msiextract, gcab und dos2unix installiert werden.

# Debian / Ubuntu
$ sudo apt install msitools gcab dos2unix

# Arch Linux, msitools ist in AUR vorhanden
$ yay -S gcab msitools dos2unix

# Fedora
$ sudo dnf install msitools gcab dos2unix

Die Firmware-Aktualisierungen für Geräte der Surface-Klasse lassen sich von der Microsoft-Webseite herunterladen.

Zur Nutzung von surface-uefi-firmware muss das Repository auf der gleichen Dateisystemebene wie das heruntergeladene Update-Paket gecloned werden:

git clone https://github.com/linux-surface/surface-uefi-firmware.git
cd surface-uefi-firmware/

Im Projektverzeichnis kann nun das repack.sh Script ausgeführt werden, welches die UEFI Firmware aus dem MSI-Paket entpackt und von fwupd interpretierbare Medataten erstellt:

./repack.sh -f ../SurfaceBook2_Win10_19041_22.080.2839.0.msi -o out

Im mit dem Parameter -o angegebenen Verzeichnis (in diesem Beispiel: out) finden sich nun die Aktualisierungen im .cab Format, welche wie folgt appliziert werden können:

fwupdmgr install --allow-older --allow-reinstall --force <Pfad zur .cab Datei>

Die Updates können schrittweise installiert werden und verlangen in der Regel jeweils einen Neustart des Systems.

Quelle: https://github.com/linux-surface/surface-uefi-firmware

Tags

Surface, Firmware, fwupd