Skip to content

Commit 0043c56

Browse files
committed
correct spelling mistakes and adopt the feadback from community members
Signed-off-by: notgivenby <notgivenby@gmail.com>
1 parent bce4125 commit 0043c56

File tree

1 file changed

+47
-27
lines changed

1 file changed

+47
-27
lines changed

Installing-and-Configuring/Flashing-Guides/T480-maximized.md

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,95 +12,112 @@ Lenovo T480 (Maximized)
1212

1313
[T480 Hardware Maintenance Manual](https://download.lenovo.com/pccbbs/mobiles_pdf/t480_hmm_en.pdf)
1414

15-
It has never been so easy to access and flash the BIOS chip on a T series machine. It is a straightforward process and takes approximately 10 minutes.
15+
Accessing and flashing the BIOS chip on a T-series machine has never been easier. The process is straightforward and takes approximately 10 minutes.
1616

17-
The ThinkPad T480 has two SPI flash chips important for the port. First chip holds the BIOS, ME, etc. Second holds the Thunderbolt firmware. To access these chips, you only need to remove the back panel. For whole procedure you will need: a screwdriver, an assembled raspberry pi pico or ch341a SPI programmer 3.3V (3.3V is important!) (e.g. [Modified ch341a SPI programmer](https://novacustom.com/product/modded-ch341a-bios-firmware-programmer-3v/) by Novacustom) and an other laptop/PC with Ubuntu installed. Other linux based OS (in this example Qubes OS, fedora-41-xfce) should be fine too.
18-
It is still debated which programmer should be used and which software (flashprog vs flashrom).
19-
Before you follow the guide make sure you read the [README.md](https://github.com/linuxboot/heads/tree/master/blobs/xx80/README.md) and following information. Some T480 on used marked are affected by an intel bug in the Thunderbolt firmware. In short, the flash chip gets full, so the Thunderbolt fast charging stops working, but slow charging still works. It can affect the usb-c port too. You may want to resolve the problem before flashing Heads using [Lenovo guide ](https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/solutions/ht508988-critical-intel-thunderbolt-software-and-firmware-updates-thinkpad) or [libreboot guide](https://libreboot.org/docs/install/t480.html#thunderbolt-issue-read-this-before-flashing).
20-
Please note, at the moment (Feb 2025) the Thunderbolt data transfer is not supported upstream by coreboot. However, the video output through the Thunderbolt and charging works. So, only the usb-c charging port can be used for the data transfer. Heads provides fixed and padded Thunderbolt firmware for your convenience that will only fix "charging problem" if the bug affected your laptop. The flashing steps are based on libreboot strategy and described in the second part of the guide. Board testers did not have the problem. It is unlikely that you get it if your laptop was in use longer than 12 months before. If you get "charging bug" it is possible to fix with external flashing. However, please note that this neither was tested after Heads installation nor the bug appeared after extensive Heads testing of the board.
17+
The ThinkPad T480 has two SPI flash chips important for the port. The first chip holds the BIOS, ME, etc., while the second holds the Thunderbolt firmware. To access these chips, you only need to remove the back panel, which is secured by six screws.
18+
19+
For whole procedure you will need:
20+
- A Phillips screwdriver +1 (PH1), which is standard for most laptop screws.
21+
- An assembled Raspberry Pi or CH341A SPI programmer. You should use a CH341A revision 1.6 or later (e.g., 1.6, 1.7, etc.) because these versions have a properly implemented and enforced voltage regulator, ensuring stable 3.3V operation (3.3V is important!) (e.g. [Modified CH341A SPI programmer](https://novacustom.com/product/modded-ch341a-bios-firmware-programmer-3v/) by Novacustom) or [open-source Tigard tool](https://github.com/tigard-tools/tigard). Using Raspberry Pi pico is described in the [Libreboot flash guide](https://libreboot.org/docs/install/spi.html).
22+
- Other laptop/PC with a Linux-based OS installed.
23+
- Optional: A plastic guitar pick or an old credit card to help detach the bottom case from the clips holding it in place. Otherwise, it can be difficult to remove, increasing the risk of breaking the tabs or the top part of the bottom case above the battery connector.
24+
25+
There is still debate over which programmer and software should be used (flashprog vs. flashrom). Before following this guide, make sure you read [README.md](https://github.com/linuxboot/heads/tree/master/blobs/xx80/README.md) and the related information.
26+
27+
Some ThinkPad T480 units on the used market are affected by an Intel bug in the Thunderbolt firmware. In short, the flash chip becomes full, causing Thunderbolt fast charging to stop working, though slow charging still functions. This issue can also affect the USB-C port. For convenience, Heads provides a fixed and padded Thunderbolt firmware that resolves the "charging problem" if your laptop is affected. Board testers did not encounter this issue, and it is unlikely to occur if your laptop was in use for more than 12 months before flashing. If you do experience the "charging bug," it is possible to fix it with external flashing. Also the update is possible prior flashing heads using [fwupd from a Linux distribution](https://www.reddit.com/r/thinkpad/comments/12tf6xv/psa_t480_thunderbolt_controller_v23_is_now_on/?rdt=44850)
28+
29+
Please note that as of March 2025, Thunderbolt data transfer is not supported upstream by [coreboot](https://review.coreboot.org/c/coreboot/+/83274). However, video output through Thunderbolt and charging still work. This means only the USB-C charging port can be used for data transfer.
2130

2231
## Flashing Heads
2332

24-
First remove the battery and the cable powering your device. Removing these screws will allow you to remove the back panel. Using a guitar pick or an old credit card may be helpful for removing the panel.
33+
First, remove the battery and disconnect the power cable from your device. Removing the screws will allow you to remove the back panel. A guitar pick or an old credit card can be helpful for detaching the panel.
2534

2635
![Back view]({{ site.baseurl }}/images/T480/1_screws.jpg)
2736

28-
The back panel and the battery are removed. Important, detach the internal battery and CMOS. Arrows point to the direction you should pull the connectors. Pull the plastic part and not the wires, since they are thin and can be damaged.
37+
The back panel and the battery are removed. Important, ensure that all batteries, including the CMOS battery, are disconnected. Arrows indicate the direction you should pull the connectors. Pull the plastic part, not the wires, as the wires are thin and can be damaged.
2938

3039
![Battery]({{ site.baseurl }}/images/T480/2_battery.jpg)
3140

32-
Top right chip corresponds to the Thunderbolt SPI flash chip (1 mb). Chip located in the middle of the board corresponds to the BIOS (16 mb) chip, respectively.
41+
The top-right chip corresponds to the Thunderbolt SPI flash chip (1 MB). The chip located in the middle of the board corresponds to the BIOS (16 MB) chip, respectively.
3342

3443
The chip located in the middle of the board contains the [Intel Management Engine (ME)](https://www.flashrom.org/ME) firmware.
3544

3645
![Chips]({{ site.baseurl }}/images/T480/3_chips.jpg)
3746

3847
First [download]({{ site.baseurl }}/Downloading) or build (please see [general building]({{ site.baseurl }}/{{ site.baseurl }}/x230-maximized-building/) / [building x230]({{ site.baseurl }}/x230-maximized-building/)) the board rom for this board and verify its hash value.
3948

40-
4149
Try to read the name of the SPI flash chip. The dot on the chip helps to identify the correct clip orientation.
4250

4351
![SPI BIOS flash chip closed view]({{ site.baseurl }}/images/T480/4_bios_chip_orientation.jpg)
4452

45-
First, connect the clip of the ch341a programmer to the chip. Next, connect the programmer to the usb port of your other Linux-based computer with flashrom installed. In my set up, the red wire should be where the dot is (dot indicates pin 1). Here, please see flashing guide for the t430. Using raspberry pi pico is nicely described in the libreboot guide [Libreboot flash ](https://libreboot.org/docs/install/spi.html).
53+
First, connect the clip of the CH341A programmer to the chip. Next, connect the programmer to the USB port of your other Linux-based computer with flashrom installed. In my setup, the red wire should be where the dot is (the dot indicates pin 1). Here, please also see the flashing guide for the T430.
4654

47-
Use flashrom to check the chip that you are connected to:
55+
Use flashrom to check the chip you are connected to:
4856

4957
```shell
5058
sudo flashrom -p ch341a_spi
5159
```
5260

53-
Here is my output.
61+
Here is my output.
5462

5563
![output bios chip]({{ site.baseurl }}/images/T480/5_chip_name.jpg)
5664

5765
Read from the chip twice (where the name of the flash chip is `YYY`):
5866

5967
```shell
60-
sudo flashrom -r ~/t480_original_bios.bin --programmer ch341a_spi - c YYY
68+
sudo flashrom -r ~/t480_original_bios.bin --programmer ch341a_spi -c YYY
6169
```
6270

6371
First output can be seen here.
6472
![1-st read]({{ site.baseurl }}/images/T480/6_lenovo_bios.jpg)
6573

6674
```shell
67-
sudo flashrom -r ~/t480_original_bios_1.bin --programmer ch341a_spi - c YYY
75+
sudo flashrom -r ~/t480_original_bios_1.bin --programmer ch341a_spi -c YYY
6876
```
6977
Second output can be seen here.
7078
![2-nd read]({{ site.baseurl }}/images/T480/7_lenovo_bios_1.jpg)
7179

80+
Make sure that the dump matches the chip content. If this is the case, the output of the following command will state `Verifying flash... VERIFIED`
81+
82+
```shell
83+
sudo flashrom -v ~/t480_original_bios.bin --programmer ch341a_spi -c YYY
84+
```
7285
Make sure that files do not differ.
7386

7487
```shell
7588
sha256sum t480_original_bios.bin
7689
sha256sum t480_original_bios_1.bin
7790
```
7891

79-
My dumps were same.
92+
My dumps were the same.
8093
![Comparison]({{ site.baseurl }}/images/T480/8_sha256.jpg)
8194

82-
If the files differ then try reconnecting your programmer to the SPI flash chip and make sure your flashrom software is up to date.
95+
Alternative compairson is bit-by-bit. If the files are the same, there should be no output of this command. Otherwise, you will see a bit-by-bit difference between the files.
8396

97+
```shell
98+
diff <(hexdump -C t480_original_bios.bin) <(hexdump -C t480_original_bios_1.bin)
99+
```
100+
101+
If the files differ or the chip content does not match the dump, try reconnecting your programmer to the SPI flash chip and make sure your flashrom/flashprog software is up to date.
84102

85-
If they are the same then write `T480-hotp-maximized.rom` to the SPI flash chip:
103+
104+
If they are the same, then write `T480-hotp-maximized.rom` to the SPI flash chip:
86105

87106
```shell
88107
sudo flashrom -p ch341a_spi -c YYY -w ~/heads/build/x86/T480-hotp-maximized/T480-hotp-maximized.rom
89108
```
90109

91-
Here is a successful attempt. Be patient, it can take a while.
110+
Here is a successful attempt. Be patient, it may take a while.
92111
![erase/write done]({{ site.baseurl }}/images/T480/9_flash.jpg)
93112

94-
If all goes well you can connect the battery, press the power button and you should see the keyboard LED flash, and after that Heads will boot in its GUI.
113+
If all goes, well you can connect the battery, press the power button and you should see the keyboard LED flash. After that, Heads will boot into its GUI.
95114

96-
Two reboots are sometimes needed after flash. Force power off by holding the power button for 10 seconds. Since the memory training data was wiped by the content of the full flashed ROM, this is normal.
115+
Two reboots are sometimes needed after flashing. Force a power off by holding the power button for 10 seconds. Since the memory training data was wiped by the content of the fully flashed ROM, this is normal.
97116

98117
You should then follow through with [configuring keys]({{ site.baseurl }}/Configuring-Keys/).
99118

100119
## Flash Thundebolt firmware
101-
This guide was adopted from libreboot. The original instructions were provided by [Adam McNutt](https://gitlab.com/MobileAZN/lenovo-t480-thunderbolt-firmware-fixes).
102-
Ensure that the batteries and CMOS are not connected.
103-
After connecting the clip to the Thunderbolt chip (the figure is shown above) read from the chip, making sure the connection is stable.
120+
Important, ensure that power supply and all batteries, including the CMOS battery, are disconnected. After connecting the clip to the Thunderbolt chip as shown in the figure above read from the chip, making sure the connection is stable. The procedure is similar to the flashing Heads on the SPI chip. Therefore, comments are skipped.
104121

105122
```shell
106123
sudo flashrom -r ~/t480_original_tb.bin --programmer ch341a_spi - c YYY
@@ -110,17 +127,20 @@ sudo flashrom -r ~/t480_original_tb.bin --programmer ch341a_spi - c YYY
110127
sudo flashrom -r ~/t480_original_tb_1.bin --programmer ch341a_spi - c YYY
111128
```
112129

113-
Make sure that files do not differ.
130+
```shell
131+
sudo flashrom -v ~/t480_original_tb.bin --programmer ch341a_spi - c YYY
132+
```
114133

115134
```shell
116135
sha256sum t480_original_tb.bin
117136
sha256sum t480_original_tb_1.bin
118137
```
119-
First erase the Thunderbolt chip.
138+
120139
```shell
121-
sudo flashrom -E --programmer ch341a_spi - c YYY
140+
diff <(hexdump -C t480_original_tb.bin) <(hexdump -C t480_original_tb_1.bin)
122141
```
123-
Flash the padded Thunderbolt firmware. The firwmare is located in the blobs folder after you build the Heads locally, or in the CircleCI artificats. Alternatively, it can be taken from libreboot.
142+
143+
Flash the padded Thunderbolt firmware. The firmware file tb.bin is located in the blobs folder after you build the Heads locally, or in the CircleCI artifacts.
124144

125145
```shell
126146
sudo flashrom -p ch341a_spi -c YYY -w ~/tb.bin

0 commit comments

Comments
 (0)