install/w541_external: new guide
based off of t440p_external it tells how to flash libreboot on the w541 Signed-off-by: Leah Rowe <info@minifree.org>master
parent
47c02c29b7
commit
f1151c0f3e
|
@ -304,7 +304,7 @@ If you are re-flashing a GM45+ICH9M laptop (e.g. ThinkPad X200/X200S/X200T,
|
||||||
T400, T500, R400, W500 etc - but not R500), you should run the ich9gen utility
|
T400, T500, R400, W500 etc - but not R500), you should run the ich9gen utility
|
||||||
to preserve your mac address.
|
to preserve your mac address.
|
||||||
Please read the ich9utils documentation:
|
Please read the ich9utils documentation:
|
||||||
[/docs/install/ich9utils.html](/docs/install/ich9utils.html)
|
[ich9utils.md](ich9utils.md)
|
||||||
|
|
||||||
NOTE: `force_I_want_a_brick` is not scary. Do not be scared! This merely disables
|
NOTE: `force_I_want_a_brick` is not scary. Do not be scared! This merely disables
|
||||||
the safety checks in flashprog. Flashrom and coreboot change a lot, over the years,
|
the safety checks in flashprog. Flashrom and coreboot change a lot, over the years,
|
||||||
|
@ -390,7 +390,7 @@ reference this paragraph on this web page.
|
||||||
|
|
||||||
Ignore this section. Internal flashing *is* possible, but there are two chips
|
Ignore this section. Internal flashing *is* possible, but there are two chips
|
||||||
and you must flash both chips. Refer to the guide:\
|
and you must flash both chips. Refer to the guide:\
|
||||||
[Gigabyte GA-G41M-ES2L installation guide](ga-g41m-es2l.html)
|
[Gigabyte GA-G41M-ES2L installation guide](ga-g41m-es2l.md)
|
||||||
|
|
||||||
#### Macbook1,1 running original Apple EFI firmware
|
#### Macbook1,1 running original Apple EFI firmware
|
||||||
|
|
||||||
|
@ -865,7 +865,7 @@ Refer to the [ivybridge/haswell common guide.](ivy_has_common.md) for how to
|
||||||
make the rom image usable for external flashing (with a clip). **If using
|
make the rom image usable for external flashing (with a clip). **If using
|
||||||
release ROMs, you must insert the neutered ME. Look at the info on that page.**
|
release ROMs, you must insert the neutered ME. Look at the info on that page.**
|
||||||
|
|
||||||
Read [board documentation](/docs/install/x230_external.html) for disassembly.
|
Read [board documentation](x230_external.md) for disassembly.
|
||||||
|
|
||||||
TARGET: Thinkpad X230t
|
TARGET: Thinkpad X230t
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -876,7 +876,7 @@ LIBREBOOT](../../news/safety.md).**
|
||||||
Refer to the [ivybridge/haswell common guide.](ivy_has_common.md) for how to
|
Refer to the [ivybridge/haswell common guide.](ivy_has_common.md) for how to
|
||||||
make the rom image usable for external flashing.
|
make the rom image usable for external flashing.
|
||||||
|
|
||||||
Read [board documentation](/docs/install/x230_external.html) for disassembly.
|
Read [board documentation](x230_external.md) for disassembly.
|
||||||
(same instructions as X230, for this purpose of external flashing, but
|
(same instructions as X230, for this purpose of external flashing, but
|
||||||
full disassembly will differ slightly)
|
full disassembly will differ slightly)
|
||||||
|
|
||||||
|
@ -892,7 +892,9 @@ LIBREBOOT](../../news/safety.md).**
|
||||||
Refer to the [ivybridge/haswell common guide.](ivy_has_common.md) for how to
|
Refer to the [ivybridge/haswell common guide.](ivy_has_common.md) for how to
|
||||||
make the rom image usable for external flashing.
|
make the rom image usable for external flashing.
|
||||||
|
|
||||||
Read [board documentation](/docs/install/t440p_external.html) for disassembly.
|
T440p: Read [board documentation](t440p_external.md) for disassembly.
|
||||||
|
|
||||||
|
W541: Read [board documentation](w541_external.md)
|
||||||
|
|
||||||
**If using release ROMs, neutered ME must be inserted. Refer to the above
|
**If using release ROMs, neutered ME must be inserted. Refer to the above
|
||||||
guide.**
|
guide.**
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
---
|
||||||
|
title: ThinkPad W541/W540 external flashing
|
||||||
|
x-toc-enable: true
|
||||||
|
...
|
||||||
|
|
||||||
|
NOTE: The same image for W541 also works on W541, as it's the exact same
|
||||||
|
mainboard.
|
||||||
|
|
||||||
|
Buy Libreboot preinstalled
|
||||||
|
==========================
|
||||||
|
|
||||||
|
This laptop is available to buy with Libreboot pre-installed:
|
||||||
|
<https://minifree.org/product/libreboot-w541/>
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
NOTE: Libreboot standardises on [flashprog](https://flashprog.org/wiki/Flashprog)
|
||||||
|
now, as of 27 January 2024, which is a fork of flashrom.
|
||||||
|
|
||||||
|
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](../../news/safety.md),
|
||||||
|
OR YOU MIGHT BRICK YOUR MACHINE: [SAFETY PRECAUTIONS](../../news/safety.md)**
|
||||||
|
|
||||||
|
Read the [Ivybridge/Haswell common guide](/docs/install/ivy_has_common.html) if you want more information.
|
||||||
|
All of the following instructions assume that you've cloned lbmk and are operating from the
|
||||||
|
root of that project. To do so, run
|
||||||
|
|
||||||
|
git clone https://codeberg.org/libreboot/lbmk
|
||||||
|
cd lbmk
|
||||||
|
|
||||||
|
You can now follow the rest of the instructions.
|
||||||
|
|
||||||
|
Preparing a release Rom
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
You must patch the release rom with the necessary vendor files *and then* flash it to your board.
|
||||||
|
|
||||||
|
Lbmk includes a script that will automatically inject the necessary files into a rom file.
|
||||||
|
The script can determine the board automatically if you have not changed the name, but you can also manually set the board name with the `-b` flag.
|
||||||
|
|
||||||
|
In order to inject the necessary files into a rom image, run the script from the root of lbmk and point to the rom image.
|
||||||
|
|
||||||
|
If you only wish to flash a release rom then the process of injecting the necessary files is quite simple.
|
||||||
|
Run the injection script pointing to the release archive you downloaded:
|
||||||
|
|
||||||
|
./vendor inject /path/to/libreboot-RELEASE_targetname.tar.xz
|
||||||
|
|
||||||
|
The script can automatically detect the board as long as you do not change the file name.
|
||||||
|
You can then find flash-ready ROMs in `/bin/release/`
|
||||||
|
|
||||||
|
Alternatively, you may patch only a single rom file.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
./vendor inject -r w541_libreboot.rom -b w541_12mb
|
||||||
|
|
||||||
|
Optionally, you can use this script to modify the mac address of the rom with the `-m` flag.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
./vendor inject -r w541_libreboot.rom -b w541_12mb -m 00:f6:f0:40:71:fd
|
||||||
|
|
||||||
|
NOTE: this makes use of `nvmutil`, which you can read more about in
|
||||||
|
the [nvmutil documentation](nvmutil.md).
|
||||||
|
|
||||||
|
Splitting The Rom
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
You can use `dd` to easily split your rom into the two separate portions for
|
||||||
|
external flashing.
|
||||||
|
|
||||||
|
dd if=libreboot.rom of=top.rom bs=1M skip=8
|
||||||
|
dd if=libreboot.rom of=bottom.rom bs=1M count=8
|
||||||
|
|
||||||
|
Flash the top chip with top.rom, and tho bottom chip with bottom.rom.
|
||||||
|
Don't worry about knowing which chip is which on a standard setup; flashprog will let you know if the
|
||||||
|
image size is incorrect for the chip you're flashing.
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly
|
||||||
|
-----------
|
||||||
|
|
||||||
|
No disassembly pics yet. The W540/T540p hardware maintenance manual also
|
||||||
|
applies to W541:
|
||||||
|
|
||||||
|
<https://thinkpads.com/support/hmm/hmm_pdf/t540p_w540_hmm_en_sp40a26003_01.pdf>
|
||||||
|
|
||||||
|
This shows disassembly. When you disassemble, and get to flashing, please note:
|
||||||
|
|
||||||
|
MOSI/MISO lines are linked between the two flash ICs, at zero ohms. This is OK
|
||||||
|
for internal flashing and normal operation, because the PCH turns each chip on
|
||||||
|
or off as needed, by controlling each IC's own *chip select* pin, which is
|
||||||
|
pin 1.
|
||||||
|
|
||||||
|
When you wire the clip, to flash one of the ICs, the same voltage rail also
|
||||||
|
turns on the other IC and the other IC's own chip-select is in a *floating*
|
||||||
|
state, which in practise means *high logic state*; in other words, the other
|
||||||
|
flash will be active.
|
||||||
|
|
||||||
|
This means that external flashing would not ordinarily work, unless you use
|
||||||
|
the following trick:
|
||||||
|
|
||||||
|
Use a *test hook* wired to VCC (+3.3v), to pull the other flash's chip-select
|
||||||
|
high. So: when flashing one of the two ICs, the other chip must have pin 1
|
||||||
|
connected to VCC. You can do this with the same 3.3v power source that you use
|
||||||
|
on pin 8 of the chip that you're flashing. Ideally you should pull the other
|
||||||
|
chip select high via 47ohm resistor, which should be enough to prevent damage
|
||||||
|
in the case of accidentally shorting the wrong pin.
|
||||||
|
|
||||||
|
If you do it right, the chips should flash reliably. This same trick must be
|
||||||
|
used when flashing either of the chips.
|
||||||
|
|
||||||
|
You can now proceed to [flashing](/docs/install/spi.html) this machine.
|
||||||
|
|
||||||
|
Errata
|
||||||
|
======
|
||||||
|
|
||||||
|
NOTE: As of Libreboot releases from May 2024 onward, the Intel MRC is no longer
|
||||||
|
included for Haswell; MRC is a blob for raminit, but we now provide libre
|
||||||
|
raminit. The following targets no longer exist in the build system:
|
||||||
|
|
||||||
|
* `t440pmrc_12mb` (use `t440plibremrc_12mb` instead)
|
||||||
|
* `t440pbmrc_12mb` (use `t440plibremrc_12mb` instead)
|
||||||
|
* `w541mrc_12mb` (use `w541_12mb` instead)
|
||||||
|
* `w541bmrc_12mb` (use `w541_12mb` instead)
|
||||||
|
* `dell9020sff_12mb` (use `dell9020sff_nri_12mb` instead)
|
||||||
|
* `dell9020sffbmrc` (use `dell9020sff_nri_12mb` instead)
|
||||||
|
* `dell9020mt_12mb` (use `dell9020mt_nri_12mb` instead)
|
||||||
|
* `dell9020mtbmrc` (use `dell9020mt_nri_12mb` instead)
|
||||||
|
|
||||||
|
This is written as errata because some users may still be using older release
|
||||||
|
images but on the newer build system from May 2024 onward; you must use the
|
||||||
|
Libreboot 20240225 release if you want to inject MRC and so on, for these older
|
||||||
|
targets.
|
||||||
|
|
||||||
|
Libreboot's [binary blob reduction policy](../../news/policy.md) is very strict,
|
||||||
|
and states: if a blob can be avoided, it must be avoided. Therefore, the MRC
|
||||||
|
is removed on Haswell and Libreboot will only use the libre raminit (called
|
||||||
|
NRI, short for Native Ram Initialisation).
|
Loading…
Reference in New Issue