Ich hoffe mal bei der Forensuche kein Thema übersehen zu haben, was dies bereits behandelt.
Modfiziertes BIOS (erweiterte Optionen und ausgeschaltete Intel Management Engine) am Beispiel eines T480 (gleiche Patch-Datei lässt sich auch auf X270, T470, xx70 bzw. xx80 anwenden).
Ich konzentriere mich in der Anleitung auf einen CH341a als Programmer für den Chip. Alternativ kann auch ein Raspberry Pi verwendet werden (Links dazu weiter unter).
optional vorher anschauen bzw. durchlesen
Beispiel Kommandozeilen-Befehle (mit einem CH341a):
Intel Management Engine abschalten
Links zu Raspberry Pi
BIOS auslesen:
Checksummen überprüfen:
me_cleaner anwenden:
mit me_cleaner den Status von ME auslesen:
BIOS zurückschreiben:
BIOS patchen für Advanced Menu:
Modfiziertes BIOS (erweiterte Optionen und ausgeschaltete Intel Management Engine) am Beispiel eines T480 (gleiche Patch-Datei lässt sich auch auf X270, T470, xx70 bzw. xx80 anwenden).
Ich konzentriere mich in der Anleitung auf einen CH341a als Programmer für den Chip. Alternativ kann auch ein Raspberry Pi verwendet werden (Links dazu weiter unter).
optional vorher anschauen bzw. durchlesen
- Der Artikel Removing the Wi-Fi whitelist on Haswell Thinkpads (T440p, W540, T540, etc.) (bzw. das dazugehörige Video) führen ganz gut in die Thematik ein, wenn ein CH341a genutzt wird. Wesentlicher Unterschied zu dem was hier folgt: statt thinkpad-uefi-sign zu nutzen werden HEX-Werte manuell bearbeitet.
- zweiter Rechner mit Linux für flashrom (geht auch unter Mac mit Homebrew; Windows wohl eher schwierig)
- CH341a (3,3 V-Version!) plus SOIC8-Clip und entsprechende Verkabelung / Adapter
- BIOS-Passwörter entfernen und BIOS auf Werkeinstellungen zurücksetzen
- BIOS mindestens zweimal auslesen und überprüfen, ob beide Dateien identisch sind (z. B. via Prüfsumme) und Sicherheitskope anfertigen
- Akku entfernen bzw. internen Akku im BIOS deaktivieren
- da das TPM betroffen sein kann: ggf. vorher das System entschlüsseln, wenn die Verschlüsselung auf TPM aufbaut
- den Clip immer nur stromlos auf den Chip aufsetzen bzw. loslösen
- viele CH341a liefern 5 V statt der geforderten 3,3 V (hier ein Fix oder auf die v1.6 ausweichen; Kauflinks weiter unten)
- auslesen hat ca. zweieinhalb Minuten gedauert, zurückschreiben ca. viereinhalb Minuten
- sollte irgendwas schiefgehen: Sicherheitskopie zurückflashen
- BIOS auslesen
- in der Patch-Datei die Patches, die nicht angewendet werden sollen, mit # auskommentieren
- UEFIPatch plus Patch-Datei (z. B. xx70_xx80_patches_v7.txt) auf das ausgelesene BIOS anwenden
- mit einem HEX-Editor den Wert 4C 4E 56 42 42 53 45 43 FB durch 4C 4E 56 42 42 53 45 43 FF ersetzen (z. B. Okteta)
- modifiziertes BIOS zurückschreiben
Beispiel Kommandozeilen-Befehle (mit einem CH341a):
Code:
sudo flashrom -p ch341a_spi -r bios1.bin # BIOS auslesen Nr. 1
sudo flashrom -p ch341a_spi -r bios2.bin # BIOS auslesen Nr. 2
sha512sum bios1.bin bios2.bin # sollte die gleiche Prüfsumme ergeben
diff bios1.bin bios2.bin # Alternative zu sha512sum: keine Ausgabe bedeutet "Dateien identisch"
nano xx70_xx80_patches_v7.txt # Patch-Datei bearbeiten bzw. Patches ggf. auskommentieren mit # (z. B. für X270)
./UEFIPatch bios1.bin xx70_xx80_patches_v7.txt -o bios_patched.bin # Patch anwenden
okteta bios_patched.bin # bios_patched.bin mit dem HEX-Editor bearbeiten
sudo flashrom -p ch341a_spi -w bios_patched.bin # BIOS zurückschreiben
Intel Management Engine abschalten
- BIOS auslesen
- me_cleaner auf das ausgelesene BIOS anwenden (Option: -s; Alternativ: -S oder ohne -s/-S)
- modifiziertes BIOS zurückschreiben
Code:
sudo flashrom -p ch341a_spi -r bios1.bin # BIOS auslesen Nr. 1
sudo flashrom -p ch341a_spi -r bios2.bin # BIOS auslesen Nr. 2
sha512sum bios1.bin bios2.bin # sollte die gleiche Prüfsumme ergeben
diff bios1.bin bios2.bin # Alternative zu sha512sum: keine Ausgabe bedeutet "Dateien identisch"
./me_cleaner.py -s -O bios_ohne_me.bin bios1.bin
sudo flashrom -p ch341a_spi -w bios_ohne_me.bin # BIOS zurückschreiben
Links zu Raspberry Pi
- Run_ don't walk from "THE BLOB" (Abschnitt 4)
- Replacing BIOS in a ThinkPad with GPL CoreBoot (former LinuxBios) (Video)
- Um "How to supply power to the flash chip" (3,3 V) geht es in diesem Beitrag, ebenso in jenem Beitrag und diesem Video (ab ca. 21:00)
- Read/write 25XX NOR flash via SPI protocol (Abschnitt zu Raspberry Pi verlinkt)
- ThinkPad UEFI firmware patches collection (Sammlung verschiedener Patches)
- Thinkpad T480 unlock BIOS hidden menu + modify whitelist + cfg lock (Advanced Menu mit CH341a)
- Apply me_cleaner with a CH341A USB programmer (Lenovo ThinkPad T480) (me_cleaner mit CH341a)
- x1c6-hackintosh/docs/BIOS/modding-the-BIOS.md (Vorgehensweise bei einem X1C6)
- 3.3 V fix for the black CH341A Mini Programmer without lifting a pin (CH341a fixen)
- Volt-modding the CH341a Mini Programmer - LFC#278 (CH341a fixen)
- Removing the Wi-Fi whitelist on Haswell Thinkpads (T440p, W540, T540, etc.) (Anleitung zu flashrom + CH341a)
- ME/TPM issues after bios reflash [question] #85 (Infos zu den HEX-Werten)
- CH341A-Pro (Schaubilder)
- CH341A Mini Programmer Schematic and Drivers (Treiber, Schaubilder, Hintergrundinfos zum CH341a)
BIOS auslesen:
Code:
$ sudo flashrom -p ch341a_spi -r bios1.bin
flashrom v1.2 on Linux 5.18.11-200.fc36.x86_64 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi.
Reading flash... done.
Checksummen überprüfen:
Code:
$ sha512sum *
ebc50f6fbf58d4ff9f67a81487f18c1f[...] bios1.bin
ebc50f6fbf58d4ff9f67a81487f18c1f[...] bios2.bin
me_cleaner anwenden:
Code:
$ ./me_cleaner.py -s -O bios_ohne_me.bin bios1.bin
Full image detected
Found FPT header at 0x3010
Found 13 partition(s)
Found FTPR header: FTPR partition spans from 0x1000 to 0x130000
Found FTPR manifest at 0x1478
ME/TXE firmware version 11.8.92.4222 (generation 3)
Public key match: Intel ME, firmware versions 11.x.x.x
The HAP bit is NOT SET
Checking the FTPR RSA signature... VALID
mit me_cleaner den Status von ME auslesen:
Code:
$ ./me_cleaner.py -c bios_ohne_me.bin
Full image detected
Found FPT header at 0x3010
Found 13 partition(s)
Found FTPR header: FTPR partition spans from 0x1000 to 0x130000
Found FTPR manifest at 0x1478
ME/TXE firmware version 11.8.92.4222 (generation 3)
Public key match: Intel ME, firmware versions 11.x.x.x
The HAP bit is SET
Checking the FTPR RSA signature... VALID
BIOS zurückschreiben:
Code:
$ sudo flashrom -p ch341a_spi -w bios_ohne_me.bin
flashrom v1.2 on Linux 5.18.11-200.fc36.x86_64 (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
BIOS patchen für Advanced Menu:
Code:
$ ./UEFIPatch bios1.bin xx70_xx80_patches_v7.txt -o bios_patched.bin
parseVolume: unknown file system FFF12B8D-7696-4C8B-A985-2747075B4F50
parseBios: one of volumes inside overlaps the end of data
parseFile: non-empty pad-file contents will be destroyed after volume modifications
patch: replaced 16 bytes at offset 3B60h 04320B483CC2E14ABB16A73FADDA475F -> 778B1D826D24964E8E103467D56AB1BA
patch: replaced 16 bytes at offset 118D0h 04320B483CC2E14ABB16A73FADDA475F -> 778B1D826D24964E8E103467D56AB1BA
patch: replaced 28 bytes at offset 6B80Ch 09072C1300000209072D1300000309072E1300000409072F13000005 -> 09072C1300001909072D1300001A09072E1300001B09072F1300001C
patch: replaced 58 bytes at offset 53B44h 00143100300030004D0068007A000000143100350030004D0068007A000000143200300030004D0068007A000000143200350030004D0068007A -> 00143100320035003000200020000000143100330030003000200020000000143100330035003000200020000000143100340030003000200020
patch: replaced 26 bytes at offset 69DDFh 0A821286A10B04001206A60B010016021206A60B020016022902 -> 0A821286A10B04001206A60B000016021206A60B000016022902
patch: replaced 11 bytes at offset 545h 0BC8394B040F8437020000 -> 0BC8394B04E93802000000
patch: replaced 5 bytes at offset 535h C8390B7516 -> C8390B7500
Image patched
Zuletzt bearbeitet: