UEFI BIOS Update with a Raspberry Pi deutsch: Unterschied zwischen den Versionen
Zeile 65: | Zeile 65: | ||
Bei Zweifeln nach dem Schaltplan des Gerätes im Web suchen oder im Forum nachfragen. | Bei Zweifeln nach dem Schaltplan des Gerätes im Web suchen oder im Forum nachfragen. | ||
== Den | == Den Raspberry Pi ans SPI Flash anschliessen == | ||
Das Datenblatt des SPI Flash hilft bei der Bestimmung der Pins. Beim S430 ist es ein Winbond W25Q32BV. Man muss die Signale CS# (Pin 1 beim W25Q32BV, | Das Datenblatt des SPI Flash hilft bei der Bestimmung der Pins. Beim S430 ist es ein Winbond W25Q32BV. Man muss die Signale CS# (Pin 1 beim W25Q32BV, | ||
an CS0# beim | an CS0# beim Raspberry Pi), SO (Pin 2, MISO), GND (Pin 4), SI (Pin5, MOSI), SCLK (Pin6) und Vcc (Pin 8, an 3,3V beim Raspberry Pi) verbinden. Der Raspberry Pi und das Systemboard sind dabei stromlos. | ||
Die Verbindungen noch einmal überprüfen. | Die Verbindungen noch einmal überprüfen. | ||
[[File:RaspberryPi_Flash_SPI_Flash.jpg |Wiring | [[File:RaspberryPi_Flash_SPI_Flash.jpg |Wiring Raspberry Pi with the SPI flash|300px]] | ||
[[File:RaspberryPi_Flash_SPI_Flash2.jpg |Wiring | [[File:RaspberryPi_Flash_SPI_Flash2.jpg |Wiring Raspberry Pi with the SPI flash - second picture|300px]] | ||
Den | Den Raspberry Pi einschalten und vom LinuxPC sich darauf einloggen. | ||
Ich versuchte zuerst, Vcc des Flash '''nach''' dem Einschalten des | Ich versuchte zuerst, Vcc des Flash '''nach''' dem Einschalten des Rapsberry Pi zu verbinden. Das führte zum Verbindungsabbruch via WLAN, vermutlich war der Einschaltstromstross (Aufladen der Kondensatoren) zu stark. Der Raspberry Pi kann nur ca. 100-150mA an 3,3V liefern. | ||
Wenn sich der | Wenn sich der Raspberry Pi mit dem anschlossenen SPI Flash nicht einschalten lässt, sollte man den Strom messen, der bei 3,3V an den Pins des SPI Flash vom Board aufgenommen wird. Ist dieser höher als 100-150mA, kann alternativ eine externe Stromquelle genutzt werden. | ||
== Flash Zugriff == | == Flash Zugriff == |
Version vom 1. Januar 2017, 10:53 Uhr
You find the English version of this page here.
Dieser Artikel beschreibt, wie man ein Thinkpad mit UEFI BIOS nach einem missglückten BIOS Update wiederbeleben kann. Ausprobiert habe ich das mit einem Edge S430, das nach dem Einschalten nur noch den Lüfter kurz einschaltete. Der Bildschirm blieb aber aus.
Beim T420 ist das .FL1 File kein UEFI capsule, so dass wir zur Zeit nicht wissen, wie der BIOS-Anteil extrahiert werden kann und an welchen Offset er im SPI Flash geschrieben werden muss. Damit gilt diese Anleitung erst einmal nur fuer das Edge S430.
Hardware Voraussetzungen
- Raspberry Pi mit einer Linux Distribution, z.B. Raspbian
- Pomona Test Clip, der der Bauform des SPI Flash entspricht - meist ist das SO-IC8. Die billigeren, schwarzen NoName-Adapter sind oft von schlechter Qualität.
- einige Jumper Wire (Verbindungskabel mit Steckverbindern), um die Pins des Testclip mit dem RaspberryPi zu verbinden. Die Länge der Kabel hängt von der Lage des SPI Flash auf dem Mainboard ab. Der Raspberry Pi sollte neben dem Systemboard liegen, ohne dass die Kabel am Clip ziehen.
- ein Linux PC. Wahrscheinlich kann auch ein Windows PC genutzt werden, ich weiss aber nicht, wie.
Software Voraussetzungen
- Flashrom auf dem Raspberry Pi
- UEFITool auf dem Linux PC
- Wine auf dem Linux PC
- das BIOS Update Utility für Windows von Lenovo für das Zielnotebook
Flashrom auf dem Raspberry Pi installieren
Eventuell ist es notwendig, die Pakete libpci-dev und libusb-dev zuerst zu installieren.
- svn checkout svn://flashrom.org/flashrom/tags/0.9.8
- cd 0.9.8
- make
- sudo make install
Das wird flashrom in /usr/local/bin installieren.
Extraktion des BIOS Binärimage aus dem BIOS Update Utility
- Auspacken des Windows BIOS Update Utility auf dem Linux PC, z.B. indem es unter wine ausgeführt wird:
wine gauj19us.exe
Nicht den Haken bei "Jetzt ausführen" setzen - das schlägt sowieso fehl.
- Die ausgepackten Komponenten liegen unter .wine/drive_c/DRIVERS/FLASH/...
Dort gibt es ein File mit der Endung .FL1. Das ist die UEFI Kapsel. Es muss nach .BIN umbenannt werden, z.B. in UEFI.BIN.
- UEFITool aufrufen und das File UEFI.BIN öffnen. Es sollte dort als UEFI capsule erkannt werden.
- Nach einer Komponente mit der UUID F33E... suchen und deren Body in einem anderen File speichern (Ctrl+Shift+E), z.B. in UEFI_F33E.BIN
- Das File UEFI_F33E.BIN in UEFITool öffnen. Das sollte als Intel Flash Image erkannt werden.
- Den BIOS Teil öffnen und seine Grösse notieren, die auf der rechten Seite angezeigt wird.
- Den BIOS Teil in ein anderes File speichern, z.B. in BIOS.BIN ("Extract as it is", Ctrl-E)
- Die Länge von BIOS.BIN prüfen. Ist es länger als die Grösse, die oben notiert wurde, müssen die letzten Bytes abgeschnitten werden, z.B. mit dd.
SPI Flash IC auf dem Systemboard finden
Das Thinkpad muss bis zum Systemboard zerlegt werden, dabei am besten der Anleitung im Hardware Maintenance Manual (HMM) folgen. Das SPI Flash befindet sich oft in SO-IC8 oder SO-IC16 Gehäusen, selten auch in WSON Bauformen (da müssen dann Drähte angelötet werden). Mein S430 hatte zwei SPI-Flashs: ein 8MByte grosses und eines mit 4MByte. Das BIOS befindet sich im 4MByte Flash.
Bei Zweifeln nach dem Schaltplan des Gerätes im Web suchen oder im Forum nachfragen.
Den Raspberry Pi ans SPI Flash anschliessen
Das Datenblatt des SPI Flash hilft bei der Bestimmung der Pins. Beim S430 ist es ein Winbond W25Q32BV. Man muss die Signale CS# (Pin 1 beim W25Q32BV, an CS0# beim Raspberry Pi), SO (Pin 2, MISO), GND (Pin 4), SI (Pin5, MOSI), SCLK (Pin6) und Vcc (Pin 8, an 3,3V beim Raspberry Pi) verbinden. Der Raspberry Pi und das Systemboard sind dabei stromlos.
Die Verbindungen noch einmal überprüfen.
Den Raspberry Pi einschalten und vom LinuxPC sich darauf einloggen.
Ich versuchte zuerst, Vcc des Flash nach dem Einschalten des Rapsberry Pi zu verbinden. Das führte zum Verbindungsabbruch via WLAN, vermutlich war der Einschaltstromstross (Aufladen der Kondensatoren) zu stark. Der Raspberry Pi kann nur ca. 100-150mA an 3,3V liefern.
Wenn sich der Raspberry Pi mit dem anschlossenen SPI Flash nicht einschalten lässt, sollte man den Strom messen, der bei 3,3V an den Pins des SPI Flash vom Board aufgenommen wird. Ist dieser höher als 100-150mA, kann alternativ eine externe Stromquelle genutzt werden.
Flash Zugriff
Das BIOS.BIN auf den RaspberryPi kopieren, z.B. mit scp.
Alle folgenden Kommandos werden auf dem RaspberryPi ausgeführt (nach Login mit z.B. ssh).
- Erkennt flashrom den SPI Flash?
flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom sollte hier mindestens einen gefundenen SPI flash melden. Wenn nicht, noch einmal den Sitz des Pomona Clips und die Verdrahtung überprüfen. Den RaspberryPi aus- und wieder einschalten.
- Backup des alten Inhaltes - kann einige Minuten dauern:
flashrom -p linux_spi:dev=/dev/spidev0.0 -r old_bios.bin
- Eventuell ist es notwendig, flashrom den Typ des SPI Flash mit "-c" mitzuteilen:
flashrom -p linux_spi:dev=/dev/spidev0.0 -c MX25L6405 -r t420_bios.bin
- Das Backup mit einem anderen Filenamen wiederholen und beide Files vergleichen. Sind sie verschieden, ein drittes Mal das Backup durchführen.
flashrom -p linux_spi:dev=/dev/spidev0.0 -r old_biosB.bin md5sum old_bios*.bin
- Den neuen Inhalt schreiben (das beinhaltet ein Verifikation):
flashrom -p linux_spi:dev=/dev/spidev0.0 -w BIOS.BIN