Twist S230u: EFI Capsule File extern flashen

jal2

Active member
Themenstarter
Registriert
7 Sep. 2010
Beiträge
3.746
Hallo,

ich will den Inhalt der beiden SPI Flash eines defekten Twist S230u überprüfen und ggf. mit einem Hardware-Programmer (Raspberry PI) neu schreiben.
Ich hatte das vor einer Weile schon mal mit einem X200s gemacht, bei dem die Intel ME Sektion defekt war.
Das .FL1 File aus dem Windows-BIOS-Update scheint nicht komprimiert zu sein, es ist ca 13MB gross und enthält viele Strings.
Die Signatur der Flash-Descriptor Tabelle steht auf Offset 0x1e0, nur scheinen die Werte dahinter nicht korrekt zu sein, speziell die Density der beiden IC mit nur 512KByte:

Code:
joerg@x201s:~/.wine/drive_c/DRIVERS/FLASH/gduj23us/GDETB1WW$ ~/src/thinkpad_bios/tp_bios.py s230u_bios.fl1 
signature 0x0ff0a55a at offset 0x1e0
FLMAPs: 0x02040103 0x12100206 0x00210120
FRBA 0x40 FCBA 0x30 FMBA 0x60 FMSBA 0x200
number of components: 2
number of masters: 2
frequencies: read 20 Mhz write/erase 20 Mhz fast read 20 Mhz
density: component_1 512 KB  component_2 512 KB
#ERR BIOS length 0xd00050 != sum(densities) 0x100000
OEM string (@0xf00): 
 region 0 ( descriptor): 0x000000 - 0x000fff
 region %u (%11s): unused
 region %u (%11s): unused
 region %u (%11s): unused
 region %u (%11s): unused

Auf Offset 0xb70140 gibt es die Signatur noch einmal, aber das ist IMHO zu weit hinten.
Weiss jemand, wie man das .FL1 File in die einzelnen Bestandteile (BIOS, Intel ME, GbE) zerlegt?

EDIT: Das UEFITool konnte das .FL1 File ohne Probleme öffnen - also enthält es doch keine Deskriptortabelle oder Intel ME bzw. GbE, sondern nur das UEFI BIOS. Ich muss mir die SPI Chips auf dem Mainboard noch mal genau ansehen, dachte bisher, es sind 4+8 MByte. Wenn aber das BIOS schon 13MByte umfasst, sind es wohl eher 8+8.

EDIT4: Es sind je ein Winbond 25Q32BV und ein Winbond 25064FV verbaut. Also insgesamt 12 MByte SPI Flash. Tja, was lässt man dann weg vom BIOS-File?

EDIT2:
Update meines Problems: Wie kann ich ein UEFI Capsule File flashen? Kommt es 1:1 in die BIOS-Region, deren Start ich vorher aus der Deskriptor-Tabelle im SPI Flash auslesen muss oder muss da noch ein Header weg o.ä.? Dieser Beitrag spricht davon, dass die ersten 0x800 Bytes entfernt werden müssen.

EDIT3:
Hier wird davon gesprochen, dass man einfach den Body der UEFI Capsule abspeichern und flashen soll. Diese Anleitung funktioniert aber nur, wenn dieser die Flash Descriptoren enthält, was beim S230u BIOS Update nicht der Fall ist.

EDIT5:
Hab's gefunden: Wenn man den Body von F33E367F-41D2-4201-9CB7-AFA63DCCEEC9 abspeichert und erneut mit dem UEFITool öffnet, sieht man eine saubere Deskriptortabelle:
s230u_bios_extract.png

und auch die anderen Sektionen, Intel ME und BIOS. Gesamtlänge 0xc00000, BIOS ab 0x800000 - das passt alles. GbE und Platform Data scheint es beim S230u nicht zu geben.
Und das bei 0x1e0 war schon der richtige Anfang, nur hat mein Tool (tp_bios.py) noch einen Bug, wenn es die Signatur auf einem Offset != 0x10 findet ...


Gruss,
jal2
 
Zuletzt bearbeitet:
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben