Surface Firmware unter Linux aktualisieren

  Lioh Möller   Lesezeit: 3 Minuten  🗪 6 Kommentare

Dank des Projektes surface-uefi-firmware und fwupd lassen sich auch unter Linux Firmware-Aktualisierungen für Surface Geräte installieren.

surface firmware unter linux aktualisieren

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

GehTehKah
Geschrieben von GehTehKah am 24. März 2023 um 06:37

Hey danke für den Tipp ,

werd ich mal die Tage für mein Surface Go und Pro ausprobieren .

Lioh
Geschrieben von Lioh am 24. März 2023 um 06:38

Gerne, viel Erfolg!

Florian
Geschrieben von Florian am 20. April 2023 um 23:06

Danke für die Anleitung. Ich bekomme im letzten Schritt leider den Fehler, dass die Firmware Signatur fehle...

RrubbelDECatc
Geschrieben von RrubbelDECatc am 29. Januar 2024 um 19:57

Du musst unter /etc/fwupd/fwupd.conf einfach treiber ohne Signatur erlauben.

OnlyTrusted=false

RrubbelDECatc
Geschrieben von RrubbelDECatc am 29. Januar 2024 um 19:54

Hab leider Battery Drain Probleme mit meinem Surface GO unter Linux und wollte es mit einem Firmware Update probieren. Zumindest das Update hat super geklappt. Danke dafür!

Ax
Geschrieben von Ax am 9. Februar 2024 um 15:34

Hi. Ich hab auch Battery Drain im ausgeschalteten Zustand mit meinem Go3. Hat das Firmware Update denn bei dir was geholfen?