n4ru / 1vyrain

LiveUSB Bootable exploit chain to unlock all features of xx30 ThinkPad machines. WiFi Whitelist, Advanced Menu, Overclocking.
1.02k stars 65 forks source link

L430 Compatibility #87

Open FouzR opened 2 years ago

FouzR commented 2 years ago

I tried the BIOS USB, it showed that it's compatible but unsupported With the below info Machine:L430 BIOS:G3ETB6WW(2.76) Version: Flashsize:

Would I be able to use the whitelist scripts from here: https://github.com/n4ru/1vyrain/issues/27

digmorepaka commented 2 years ago

Currently we don't have patches for L430/L530. Testing is needed.

FouzR commented 2 years ago

I see I do have one question, my L430 has 2 miniPCIe slots, so would the whitelist be active on the secondary slot?

valpackett commented 2 years ago

I currently have an L430 and a chip clip, I can test things.

So far I've tried me_cleaner -S, now it doesn't fully boot (hangs on _ when entering setup or continuing boot after the RTC error) :D maybe this is that ME delay everyone's talking about and I wasn't patient enough. UPD yeah stock fw doesn't like the disable flag set by me_cleaner, a normal clean without the flag works fine.

Also maybe flashrom doesn't seem to handle the IFD well on this? At least dumping --ifd -i bios or --ifd -i me or whatever also results in an 8MiB file (!) despite the expected "Using region" message. (Or is that the expected padding thing?? That the 1vyrain script handles on the write side)

ifdtool -d of the dumped stock rom ``` File l430.stock.rom is 8388608 bytes ICH Revision: 6 series Cougar Point FLMAP0: 0x02040003 NR: 2 FRBA: 0x40 NC: 1 FCBA: 0x30 FLMAP1: 0x12100206 ISL: 0x12 FPSBA: 0x100 NM: 2 FMBA: 0x60 FLMAP2: 0x00210120 PSL: 0x2101 FMSBA: 0x200 FLUMAP1: 0x00000cdf Intel ME VSCC Table Length (VTL): 12 Intel ME VSCC Table Base Address (VTBA): 0x000df0 ME VSCC table: JID0: 0x001740ef SPI Component Vendor ID: 0xef SPI Component Device ID 0: 0x40 SPI Component Device ID 1: 0x17 VSCC0: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB JID1: 0x0017ba20 SPI Component Vendor ID: 0x20 SPI Component Device ID 0: 0xba SPI Component Device ID 1: 0x17 VSCC1: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB JID2: 0x001720c2 SPI Component Vendor ID: 0xc2 SPI Component Device ID 0: 0x20 SPI Component Device ID 1: 0x17 VSCC2: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB JID3: 0x0017701c SPI Component Vendor ID: 0x1c SPI Component Device ID 0: 0x70 SPI Component Device ID 1: 0x17 VSCC3: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB JID4: 0x001740ef SPI Component Vendor ID: 0xef SPI Component Device ID 0: 0x40 SPI Component Device ID 1: 0x17 VSCC4: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB JID5: 0x0018ba20 SPI Component Vendor ID: 0x20 SPI Component Device ID 0: 0xba SPI Component Device ID 1: 0x18 VSCC5: 0x20052005 Lower Erase Opcode: 0x20 Lower Write Enable on Write Status: 0x50 Lower Write Status Required: No Lower Write Granularity: 64 bytes Lower Block / Sector Erase Size: 4KB Upper Erase Opcode: 0x20 Upper Write Enable on Write Status: 0x50 Upper Write Status Required: No Upper Write Granularity: 64 bytes Upper Block / Sector Erase Size: 4KB OEM Section: 00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Found Region Section FLREG0: 0x00000000 Flash Region 0 (Flash Descriptor): 00000000 - 00000fff FLREG1: 0x07ff0400 Flash Region 1 (BIOS): 00400000 - 007fffff FLREG2: 0x03ff0001 Flash Region 2 (Intel ME): 00001000 - 003fffff FLREG3: 0x00001fff Flash Region 3 (GbE): 00fff000 - 00000fff (unused) FLREG4: 0x00001fff Flash Region 4 (Platform Data): 00fff000 - 00000fff (unused) Found Component Section FLCOMP 0x09300024 Dual Output Fast Read Support: not supported Read ID/Read Status Clock Frequency: 33MHz Write/Erase Clock Frequency: 33MHz Fast Read Clock Frequency: 33MHz Fast Read Support: supported Read Clock Frequency: 20MHz Component 2 Density: 8MB Component 1 Density: 8MB FLILL 0x00000000 Invalid Instruction 3: 0x00 Invalid Instruction 2: 0x00 Invalid Instruction 1: 0x00 Invalid Instruction 0: 0x00 FLPB 0x00000000 Flash Partition Boundary Address: 0x000000 Found PCH Strap Section PCHSTRP0 : 0x0820d682 PCHSTRP1 : 0x0000010f PCHSTRP2 : 0x00560000 PCHSTRP3 : 0x00000000 PCHSTRP4 : 0x00c8e000 PCHSTRP5 : 0x00000000 PCHSTRP6 : 0x00000000 PCHSTRP7 : 0x00000000 PCHSTRP8 : 0x00000000 PCHSTRP9 : 0x30000580 PCHSTRP10 : 0x00410044 PCHSTRP11 : 0x95000097 PCHSTRP12 : 0x00000000 PCHSTRP13 : 0x00000000 PCHSTRP14 : 0x00000000 PCHSTRP15 : 0x0000033e PCHSTRP16 : 0x00000000 PCHSTRP17 : 0x00000002 PCHSTRP18 : 0xffffffff PCHSTRP19 : 0xffffffff PCHSTRP20 : 0xffffffff PCHSTRP21 : 0xffffffff PCHSTRP22 : 0xffffffff PCHSTRP23 : 0xffffffff PCHSTRP24 : 0xffffffff PCHSTRP25 : 0xffffffff PCHSTRP26 : 0xffffffff PCHSTRP27 : 0xffffffff PCHSTRP28 : 0xffffffff PCHSTRP29 : 0xffffffff PCHSTRP30 : 0xffffffff PCHSTRP31 : 0xffffffff PCHSTRP32 : 0xffffffff PCHSTRP33 : 0xffffffff PCHSTRP34 : 0xffffffff PCHSTRP35 : 0xffffffff PCHSTRP36 : 0xffffffff PCHSTRP37 : 0xffffffff PCHSTRP38 : 0xffffffff PCHSTRP39 : 0xffffffff PCHSTRP40 : 0xffffffff PCHSTRP41 : 0xffffffff PCHSTRP42 : 0xffffffff PCHSTRP43 : 0xffffffff PCHSTRP44 : 0xffffffff PCHSTRP45 : 0xffffffff PCHSTRP46 : 0xffffffff PCHSTRP47 : 0xffffffff PCHSTRP48 : 0xffffffff PCHSTRP49 : 0xffffffff PCHSTRP50 : 0xffffffff PCHSTRP51 : 0xffffffff PCHSTRP52 : 0xffffffff PCHSTRP53 : 0xffffffff PCHSTRP54 : 0xffffffff PCHSTRP55 : 0xffffffff PCHSTRP56 : 0xffffffff PCHSTRP57 : 0xffffffff PCHSTRP58 : 0xffffffff PCHSTRP59 : 0xffffffff PCHSTRP60 : 0xffffffff PCHSTRP61 : 0xffffffff PCHSTRP62 : 0xffffffff PCHSTRP63 : 0xffffffff PCHSTRP64 : 0x00000000 PCHSTRP65 : 0xffffffff PCHSTRP66 : 0xffffffff PCHSTRP67 : 0xffffffff PCHSTRP68 : 0xffffffff PCHSTRP69 : 0xffffffff PCHSTRP70 : 0xffffffff PCHSTRP71 : 0xffffffff AltMeDisable bit is not set Found Master Section FLMSTR1: 0x0a0b0000 (Host CPU/BIOS) Platform Data Region Write Access: disabled GbE Region Write Access: enabled Intel ME Region Write Access: disabled Host CPU/BIOS Region Write Access: enabled Flash Descriptor Write Access: disabled Platform Data Region Read Access: disabled GbE Region Read Access: enabled Intel ME Region Read Access: disabled Host CPU/BIOS Region Read Access: enabled Flash Descriptor Read Access: enabled Requester ID: 0x0000 FLMSTR2: 0x0c0d0000 (Intel ME) Platform Data Region Write Access: disabled GbE Region Write Access: enabled Intel ME Region Write Access: enabled Host CPU/BIOS Region Write Access: disabled Flash Descriptor Write Access: disabled Platform Data Region Read Access: disabled GbE Region Read Access: enabled Intel ME Region Read Access: enabled Host CPU/BIOS Region Read Access: disabled Flash Descriptor Read Access: enabled Requester ID: 0x0000 FLMSTR3: 0x08080118 (GbE) Platform Data Region Write Access: disabled GbE Region Write Access: enabled Intel ME Region Write Access: disabled Host CPU/BIOS Region Write Access: disabled Flash Descriptor Write Access: disabled Platform Data Region Read Access: disabled GbE Region Read Access: enabled Intel ME Region Read Access: disabled Host CPU/BIOS Region Read Access: disabled Flash Descriptor Read Access: disabled Requester ID: 0x0118 Found Processor Strap Section ????: 0x00000000 ????: 0xffffffff ????: 0xffffffff ????: 0xffffffff ????: 0xffffffff ????: 0xffffffff ????: 0xffffffff ????: 0xffffffff ```

What should I test first? Putting https://github.com/n4ru/patched-bioses/blob/master/L430.rom into the bios partition and flashing externally?

valpackett commented 2 years ago

So, more testing!

Injecting that rom with ifdtool results in not booting at all.

Applied patches to the stock bios region as extracted with ifdtool (firmware G3ET65WW(2.04) from 2012-09-25):

UPD same result with G3UJ33US(2.76) firmware. I'm looking into making a working patch.

valpackett commented 2 years ago

So one condition was missed in those patches, the full working patch set is:

79E0EDD7-9D1D-4F41-AE1A-F896169E5216 10 P:C8390E0F84:C8390E90E9 
79E0EDD7-9D1D-4F41-AE1A-F896169E5216 10 P:C8390E75620F:C8390E75000F 
79E0EDD7-9D1D-4F41-AE1A-F896169E5216 10 P:C8394E04754E83:C8394E04750083
79E0EDD7-9D1D-4F41-AE1A-F896169E5216 10 P:0983FA0474:0983FA04EB

Now that boots with a ralink Wi-Fi card \o/

digmorepaka commented 2 years ago

Could you submit a PR in https://github.com/digmorepaka/thinkpad-firmware-patches/ with all the details? Afterwards it will be added to 1vyrain and will need one final test before release.

valpackett commented 2 years ago

Yeah, just found that repo while reading the other threads :)

will need one final test before release

Especially considering how the .rom from the patched-bioses repo didn't boot at all for me. I'll have to revert to stock and try flashing from the live USB, right? To test the full "end user" experience.

digmorepaka commented 2 years ago

@unrelentingtech Alright this is a binary of the latest UEFI with the patchset. You will need to pad it by 4M and flash it with the --ifd -i bios parameter manually with flashrom(https://github.com/n4ru/1vyrain/issues/64#issuecomment-761773042)

It should work, but I want to verify before packing a full 1vyrain image

http://0x0.st/-7IC.fixed e900453fa85235eab78c40e629b35134

valpackett commented 2 years ago

It works \o/

(I've also tried to test the TPM… it's in MFG mode, clearing from Windows does nothing, and I couldn't get tpm-tools on Arch because github is having issues lol)

digmorepaka commented 2 years ago

MFG mode means completely off, try this, it should either do 5 beeps and still not work or work perfectly fine

http://0x0.st/-7U-.fixed

1d3cead051fd59f5fb377c25f76e3472 md5

valpackett commented 2 years ago

Works great, what was changed, just self-signing?

digmorepaka commented 2 years ago

For some reason the MFG mode was turned on by thinkpad-uefi-sign(it shouldn't do that).

This is a full image, so this should autodetect your model. https://xorg-broke-aga.in/1vyrain.iso md5 50b763065b73443e68e34eff24c36695

valpackett commented 2 years ago

Looks like you've added the rom file but didn't uncomment the start.sh lines.

digmorepaka commented 2 years ago

It appears that i have uploaded the wrong file. Fixed, same link md5sum 43c896ecf7b2b368020be7ac263af301

valpackett commented 2 years ago

The same link still returns 50b763065b73443e68e34eff24c36695

digmorepaka commented 2 years ago

ergh cloudflare cache probably not updated yet,I did check the file on the server and it is correct. I issued a cache purge so it should be the right file

valpackett commented 2 years ago

line 49: [: : integer expression expected

hmm seems like the version extraction command fails. Running it manually, the awk invocation extracts nothing from $3 — really it's all in $2 which is G3ET65WW(2.04). Do newer firmwares / other models always have whitespace before the opening (?

digmorepaka commented 2 years ago

Looking over some other reports, it does look like other models use a different format and we have trouble detecting L430. I do have an idea for a bandaid fix as the latest(which is extremely likely final) UEFI still have the vulnerability. I will work on it tomorrow

valpackett commented 2 years ago

Well, one possibility is using a regexp for the parentheses on the whole line without using whitespace "fields"…

FouzR commented 2 years ago

So, by the looks of things, you'll update the iso by tomorrow with L430 support?

digmorepaka commented 2 years ago

@FouzR you can already flash the rom manually, but for full automatic support that is the plan. https://github.com/n4ru/1vyrain/issues/87#issuecomment-980782028

FouzR commented 2 years ago

I'll wait for the full automatic support just to be safe :)

digmorepaka commented 2 years ago

@unrelentingtech same link, 588896ad851ec9d5fffb914e205840c6 bypassed version check as it's not needed

valpackett commented 2 years ago

Now everything works perfectly! \o/

FouzR commented 2 years ago

On which BIOS version did you try it?

FouzR commented 2 years ago

4F11B425-AB2D-4DDD-98EB-233829437BFE It's showing this when I tried to do on mine

digmorepaka commented 2 years ago

PITA I know what this is, lucky that we caught it before releasing.

FouzR commented 2 years ago

Was that due to the band-aid fix you implemented?

digmorepaka commented 2 years ago

Nah, this stems from Macronix chips not being autodetectable by software like flashrom. Good thing our model only ships with one of those(and in the case that someone replaced it there are failsafes). It will be fixed like it was fixed on T430s, not at my PC at the moment so you gotta wait.

FouzR commented 2 years ago

Cool, I'm happy you guys are doing this, so, take your time I guess :)

valpackett commented 2 years ago

Interesting, my unit came with a Winbond chip

digmorepaka commented 2 years ago

@FouzR md5: 4be31f563abd41cc74749ba03b21e713 https://xorg-broke-aga.in/1vyrain.iso it should work now.

Just for future reference i also added L530 support, UEFI is shared between L530 and L430 so I hope the autodetection works

FouzR commented 2 years ago

IMG_0632 Uhhhh

digmorepaka commented 2 years ago

@unrelentingtech you were able to reflash from the latest version yeah? Could you check the latest iso I posted on your board with a winbond and latest UEFI?

valpackett commented 2 years ago

No, I reverted to stock every time, flashrom failed to write (but seemingly didn't corrupt anything) when already modded. (That was tested before auto detection worked)

FouzR commented 2 years ago

@unrelentingtech did you try the iso at the latest BIOS(2.76)?

valpackett commented 2 years ago

No, not at stock latest bios, will test soon

leecher1337 commented 2 years ago

Mod edited, de-cluttered.

Sorry for hijacking this thread, but it seems that there are persons who have the capability to reflash a damaged BIOS ROM in the event that something goes wrong. As I do not have this facility, but successfully created and tested a patch for a 7-row keyboard for the L430, I'm a bit hesitant to flash the BIOS, as I do not want to brick the machine.

I would like to ask for help with testing this, in the related thread https://github.com/hamishcoleman/thinkpad-ec/issues/203

digmorepaka commented 2 years ago

@leecher1337 This is unrelated to this issue, please do not clutter up the thread. Message the people directly, and or bring them to the ec repo issue. https://github.com/hamishcoleman/thinkpad-ec/issues/203#issuecomment-991820190

valpackett commented 2 years ago

So it just fails to flash on 2.76, unsurprisingly doesn't matter whether modded or not.

Looks like if [ "255" -gt "$version" ]; was the correct check — flashing does work on 2.54. So don't delete the version check, just make it work whether there's whitespace before the ( or not.

valpackett commented 2 years ago

@digmorepaka so what was the fix for

MFG mode was turned on by thinkpad-uefi-sign

? I'd like to sign my own builds in a way that makes the TPM work…

digmorepaka commented 2 years ago

? I'd like to sign my own builds in a way that makes the TPM work…

It seems that running thinkpad-uefi-sign and then manually changing 4C 4E 56 42 42 53 45 43 FF to 4C 4E 56 42 42 53 45 43 FB did the trick.

snakeeater4526 commented 2 years ago

Hi there, i just read this thread and i have a L530 , does that mean that 1vyrain support L530 now?

digmorepaka commented 2 years ago

UEFI itself is identical, not yet supported in 1vyrain due to different model string, but UEFI patch is working.

devbrones commented 1 year ago

Hey! I have a L430 and soon a chip clip, can maybe do some testing if time allows it. Is 1vyrain stable on L430 and if so how can i install it?

my bios version is G3ET65WW(2.04) and i have a Winbond W25Q64.V rom

devbrones commented 1 year ago

Hey! I have a L430 and soon a chip clip, can maybe do some testing if time allows it. Is 1vyrain stable on L430 and if so how can i install it?

my bios version is G3ET65WW(2.04) and i have a Winbond W25Q64.V rom

update btw, worked flawlessly on the standard iso from 1vyra.in

BoredOperator commented 1 month ago

Hello i tried to run the 1vyrain.iso on my Thinkpad L430 (with the bios versions 2.76, 2.54 and 2.04) and each time i get the message that my machine is compatible but unsupported. (I dont have a hardware flasher nor do i have any flashing experience) Is there a way to enable support?

Machine: L430 BIOS: G3ET94WW(2.54) Version: Flashsize: 8192

digmorepaka commented 3 weeks ago

Hello i tried to run the 1vyrain.iso on my Thinkpad L430 (with the bios versions 2.76, 2.54 and 2.04) and each time i get the message that my machine is compatible but unsupported. (I dont have a hardware flasher nor do i have any flashing experience) Is there a way to enable support?

Machine: L430 BIOS: G3ET94WW(2.54) Version: Flashsize: 8192

Yeah it's currently in a state where it is supported but not really. You can flash internally, rom is made, but the version string decoding hasn't been done yet because it requires quite a rework to support a total of two laptops that a minority of people have.

To flash your machine(internet connection required)

  1. go through the compatibility check, after it wakes up again and says flashing is possible, exit the script with Ctrl+C
  2. wget https://github.com/n4ru/patched-bioses/raw/refs/heads/master/L430.rom
  3. dd if=/dev/zero of=pad.bin bs=1M count=4
  4. cat pad.bin L430.rom > UEFI.rom
  5. /root/flashrom/flashrom -p internal:laptop=force_I_want_a_brick -w UEFI.rom --ifd -i bios -N after that is done, you can reboot
BoredOperator commented 3 weeks ago

Hello again, thanks for your the fast reply :). The flash was a succes after figuring out that i needed the --no-check-certificate flag for wget and that bios version 2.76 (until probably 2.69) does not work and gives out the following error. PXL_20240926_212741997

When i downgraded the bios to version 2.54 everything went smoothly so thank you very much for your help @digmorepaka :)