File site/docs/install/t480.md added (mode: 100644) (index 0000000..da33e57) |
|
1 |
|
--- |
|
2 |
|
title: Lenovo ThinkPad T480/T480S information |
|
3 |
|
x-toc-enable: true |
|
4 |
|
... |
|
5 |
|
|
|
6 |
|
Libreboot supports both the T480 and T480S variants. It is available in |
|
7 |
|
the [Libreboot 20241205](../../news/libreboot20240512.md) release or later. |
|
8 |
|
|
|
9 |
|
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](../../news/safety.md), |
|
10 |
|
OR YOU MIGHT BRICK YOUR MACHINE: [SAFETY PRECAUTIONS](../../news/safety.md)** |
|
11 |
|
|
|
12 |
|
<div class="specs"> |
|
13 |
|
<center> |
|
14 |
|
<img tabindex=1 alt="ThinkPad T480" class="p" src="https://av.libreboot.org/t480/t480.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480.jpg" /></span> |
|
15 |
|
</center> |
|
16 |
|
|
|
17 |
|
| ***Specifications*** | | |
|
18 |
|
|----------------------------|------------------------------------------------| |
|
19 |
|
| **Manufacturer** | Lenovo | |
|
20 |
|
| **Name** | ThinkPad T480 | |
|
21 |
|
| **Variants** | ThinkPad T480, ThinkPad T480S | |
|
22 |
|
| **Released** | 2018 | |
|
23 |
|
| **Chipset** | Intel Kaby Lake Refresh | |
|
24 |
|
| **CPU** | Intel Kaby Lake Refresh | |
|
25 |
|
| **Graphics** | Intel or Intel+Nvidia | |
|
26 |
|
| **Memory** | DDR4 DIMMs; max 40GB (T480S), 64GB(T480) | |
|
27 |
|
| **Architecture** | x86\_64 | |
|
28 |
|
| **Original boot firmware** | Lenovo UEFI firmware | |
|
29 |
|
| **Intel ME/AMD PSP** | Present. Can be disabled with me\_cleaner. | |
|
30 |
|
| **Intel Boot Guard** | Pwned. Disabled using the deguard utility. | |
|
31 |
|
| **Flash chip** | SOIC-8 16MB/128Mbit system firmware | |
|
32 |
|
|
|
33 |
|
|
|
34 |
|
``` |
|
35 |
|
W+: Works without blobs; |
|
36 |
|
N: Doesn't work; |
|
37 |
|
W*: Works with blobs; |
|
38 |
|
U: Untested; |
|
39 |
|
P+: Partially works; |
|
40 |
|
P*: Partially works with blobs |
|
41 |
|
?: UNKNOWN AT THIS TIME |
|
42 |
|
``` |
|
43 |
|
|
|
44 |
|
| ***Features*** | | |
|
45 |
|
|---------------------------------------------------|----| |
|
46 |
|
| **Internal flashing with original boot firmware** | N | |
|
47 |
|
| **Display (if Intel GPU)** | W+ | |
|
48 |
|
| **Display (discrete CPU, SeaBIOS payload only)** | N | |
|
49 |
|
| **Audio** | W+ | |
|
50 |
|
| **RAM Init** | W* | |
|
51 |
|
|
|
52 |
|
| ***Payloads supported*** | | |
|
53 |
|
|----------------------------|-----------| |
|
54 |
|
| **GRUB (libgfxinit only)** | Works | |
|
55 |
|
| **SeaBIOS** | Works | |
|
56 |
|
| **SeaBIOS with GRUB** | Works | |
|
57 |
|
</div> |
|
58 |
|
|
|
59 |
|
Regarding memory: T480S (S model) has 8GB onboard RAM, and an available DIMM |
|
60 |
|
slot on which an additional 32GB SODIMM can be installed. The regular T480 |
|
61 |
|
has two DIMM slots, allowing 2x32GB DDR4 SODIMMs. |
|
62 |
|
|
|
63 |
|
Introduction |
|
64 |
|
============ |
|
65 |
|
|
|
66 |
|
**Unavailable in Libreboot 20241008 or earlier. You must [compile from |
|
67 |
|
source](../build/), or alternatively an image from Libreboot 20241205 or higher. |
|
68 |
|
|
|
69 |
|
Official information about the T480 can be found here:\ |
|
70 |
|
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480/ThinkPad_T480_Spec.PDF> |
|
71 |
|
|
|
72 |
|
...and information about the T480S can be found here:\ |
|
73 |
|
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480s/ThinkPad_T480s_Spec.pdf> |
|
74 |
|
|
|
75 |
|
Build ROM image from source |
|
76 |
|
--------------------------- |
|
77 |
|
|
|
78 |
|
The build target, when building from source, is thus: |
|
79 |
|
|
|
80 |
|
./mk -b coreboot t480_fsp_16mb |
|
81 |
|
./mk -b coreboot t480s_fsp_16mb |
|
82 |
|
|
|
83 |
|
**NOTE: The T480 and T480 may be similar, but they do have several critical |
|
84 |
|
differences in their wiring, so you MUST flash the correct image. Please |
|
85 |
|
choose one of the above build targets accordingly.** |
|
86 |
|
|
|
87 |
|
Installation |
|
88 |
|
============ |
|
89 |
|
|
|
90 |
|
Insert binary files |
|
91 |
|
------------------- |
|
92 |
|
|
|
93 |
|
If you're using a release ROM, please ensure that you've inserted extra firmware |
|
94 |
|
required refer to the [guide](../install/ivy_has_common.md) for that. **(failure |
|
95 |
|
to adhere to this advice will result in a BRICKED machine)** |
|
96 |
|
|
|
97 |
|
Libreboot's build system automatically downloads and processes these files if |
|
98 |
|
you build Libreboot from source, but the same logic that it uses must be re-run |
|
99 |
|
if you're using a release image. This is to bypass certain restrictions on |
|
100 |
|
direct distribution, for files such as the Intel Management Engine firmware. |
|
101 |
|
|
|
102 |
|
Absolutely unsigned Intel ME! |
|
103 |
|
----------------------------- |
|
104 |
|
|
|
105 |
|
Libreboot already disables the Intel ME by default, using `me_cleaner`, but |
|
106 |
|
the T480/T480 specifically has an additional quirk: |
|
107 |
|
|
|
108 |
|
One of the benefits of [deguard](deguard.md) for Intel MEv11 is that it sets |
|
109 |
|
the ME in such a state where you can run unsigned code in there. This is how |
|
110 |
|
the Intel Boot Guard was disabled, because it is the ME that enforces such |
|
111 |
|
restrictions; more information about deguard is available on a dedicated page. |
|
112 |
|
|
|
113 |
|
The deguard utility could also be used to enable the red-unlock hack, which |
|
114 |
|
would permit unsigned execution of new CPU microcode, though much more |
|
115 |
|
research is needed. Because of these two facts, this makes the T480/T480S the |
|
116 |
|
most freedom-feasible of all relatively modern x86 laptops. |
|
117 |
|
|
|
118 |
|
With deguard, you have complete control of the flash. This is unprecedented on |
|
119 |
|
recent Intel systems in Libreboot, so it's certainly a very interesting port! |
|
120 |
|
|
|
121 |
|
Set MAC address |
|
122 |
|
--------------- |
|
123 |
|
|
|
124 |
|
This platform uses an Intel Flash Descriptor, and defines an Intel GbE NVM |
|
125 |
|
region. As such, release/build ROMs will contain the same MAC address. To |
|
126 |
|
change the MAC address, please read [nvmutil documentation](../install/nvmutil.md). |
|
127 |
|
|
|
128 |
|
**NOTE: If changing the MAC address, please give `ifdtool` the following |
|
129 |
|
argument when using it: `--platform sklkbl`** - otherwise, ifdtool will |
|
130 |
|
handle the IFD incorrectly! |
|
131 |
|
|
|
132 |
|
WARNING about GPU compatibility |
|
133 |
|
------------------------------- |
|
134 |
|
|
|
135 |
|
The Nvidia GPUs were tested, on models that have them. It is completely |
|
136 |
|
dysfunctional and currently disabled in Libreboot. On models that have Nvidia, |
|
137 |
|
the Intel graphics is still available so Libreboot uses Intel graphics |
|
138 |
|
exclusively. |
|
139 |
|
|
|
140 |
|
The Intel GPU is fully supported with native source code (libgfxinit) in |
|
141 |
|
coreboot, which Libreboot uses for initialisation. |
|
142 |
|
|
|
143 |
|
Use of Intel graphics is recommended, because it has much better (and libre) |
|
144 |
|
driver support in Linux, and free initialisation code in coreboot, whereas |
|
145 |
|
Nvidia is mostly all binary blobs (unless perhaps you use the nouveau driver in |
|
146 |
|
Linux). |
|
147 |
|
|
|
148 |
|
Thunderbolt issue (READ THIS BEFORE FLASHING) |
|
149 |
|
------------------ |
|
150 |
|
|
|
151 |
|
The thunderbolt firmware on launch units had a bug where certain debug |
|
152 |
|
info is written on certain events, such as plugging in a charger to the USB-C |
|
153 |
|
connector. This logging is stored in the Thunderbolt firmware's own SPI flash, |
|
154 |
|
which is separate from the main SPI flash containing the system firmware |
|
155 |
|
e.g. coreboot. |
|
156 |
|
|
|
157 |
|
If that flash gets full, thunderbolt (on factory firmware) stops working and |
|
158 |
|
fast charging stops working. It can be prevented by updating the Thunderbolt |
|
159 |
|
firmware. You can do this from Lenovo's firmware, using these instructions: |
|
160 |
|
|
|
161 |
|
<https://pcsupport.lenovo.com/gb/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480s-type-20l7-20l8/solutions/ht508988-critical-intel-thunderbolt-software-and-firmware-updates-thinkpad> |
|
162 |
|
|
|
163 |
|
If you're already affected by the bug, you can restore it to a working state |
|
164 |
|
by flashing the Thunderbolt firmware externally. For example this is where its |
|
165 |
|
NOR flash is on a T480: |
|
166 |
|
|
|
167 |
|
<img tabindex=1 alt="ThinkPad T480 NOR flash (thunderbolt firmware)" class="p" src="https://av.libreboot.org/t480/t480tbspi.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480tbspi.jpg" /></span> |
|
168 |
|
|
|
169 |
|
This page shows how to do that: |
|
170 |
|
|
|
171 |
|
<https://gitlab.com/MobileAZN/lenovo-t480-thunderbolt-firmware-fixes> |
|
172 |
|
|
|
173 |
|
You unbrick the Thunderbolt controller by pulling the firmware from Lenovo's |
|
174 |
|
update, from Lenovo's update utility. Once extracted, you then pad it properly |
|
175 |
|
so that it can be flashed manually, using a normal SPI flasher (the same one |
|
176 |
|
that you would use to flash Libreboot). |
|
177 |
|
|
|
178 |
|
Use the [25XX NOR flashing guide](spi.md) if you need to flash this chip. It's |
|
179 |
|
the same guide that you will use for the main system flash, which is a separate |
|
180 |
|
flash IC. |
|
181 |
|
|
|
182 |
|
AGAIN: This is not the Libreboot flash IC. This is separate to the system flash. |
|
183 |
|
Read on to know how to reprogram the main system flash! |
|
184 |
|
|
|
185 |
|
Flash a ROM image (software) |
|
186 |
|
----------------- |
|
187 |
|
|
|
188 |
|
**MAKE SURE** to update the Lenovo UEFI firmware before installing Libreboot. |
|
189 |
|
You must also make a dump of the NOR flash, before updating Lenovo's firmware, |
|
190 |
|
and once again before flashing Libreboot, being sure you have good dumps. |
|
191 |
|
|
|
192 |
|
If you're already running Libreboot, and you don't have flash protection |
|
193 |
|
turned on, [internal flashing](../install/) is possible. |
|
194 |
|
|
|
195 |
|
Find videos online of how to disassemble this, and/or find Lenovo's own |
|
196 |
|
service manual online. Otherwise, observe: |
|
197 |
|
|
|
198 |
|
<img tabindex=1 alt="ThinkPad T480 underside chassis" class="p" src="https://av.libreboot.org/t480/t480bottom.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480bottom.jpg" /></span> |
|
199 |
|
|
|
200 |
|
Remove all screws, and you can gently pry off the lower chassis and remove, |
|
201 |
|
which then allows you to see the inner mainboard: |
|
202 |
|
|
|
203 |
|
<img tabindex=1 alt="ThinkPad T480 PCB" class="p" src="https://av.libreboot.org/t480/t480pcb.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480pcb.jpg" /></span> |
|
204 |
|
|
|
205 |
|
**WARNING: PLEASE MAKE SURE to remove the battery before flashing. The T480 |
|
206 |
|
and T480S can both contain INTERNAL batteries, and the T480 has an additional |
|
207 |
|
external battery. Remove the internal battery via the connector, like so (T480):** |
|
208 |
|
|
|
209 |
|
<img tabindex=1 alt="ThinkPad T480 internal battery" class="p" src="https://av.libreboot.org/t480/t480battery.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480battery.jpg" /></span> |
|
210 |
|
|
|
211 |
|
On the T480S (S model) the internal battery is much larger, and the connector |
|
212 |
|
on it is built into the battery, so it is necessary to carefully remove the |
|
213 |
|
entire battery; on regular T480 (non-S model) the internal battery can be |
|
214 |
|
isolated via the connector as depicted above. |
|
215 |
|
|
|
216 |
|
This photo shows the flash: |
|
217 |
|
|
|
218 |
|
<img tabindex=1 alt="ThinkPad T480 NOR flash (system firmware)" class="p" src="https://av.libreboot.org/t480/t480spi.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480spi.jpg" /></span> |
|
219 |
|
|
|
220 |
|
There is another flash, for the Thunderbolt firmware, which you are to briefly |
|
221 |
|
ignore; we'll cover it later: |
|
222 |
|
|
|
223 |
|
<img tabindex=1 alt="ThinkPad T480 NOR flash (thunderbolt firmware)" class="p" src="https://av.libreboot.org/t480/t480tbspi.jpg" /><span class="f"><img src="https://av.libreboot.org/t480/t480tbspi.jpg" /></span> |
|
224 |
|
|
|
225 |
|
To be clear: the system flash (16MB) is what you put Libreboot on. The |
|
226 |
|
Thunderbolt firmware flash is much smaller, so you'll know because flashprog |
|
227 |
|
will complain about wrong flash size if you're trying to flash the wrong one. |
|
228 |
|
|
|
229 |
|
On the T480S (S model), the flashes are in slightly different places but in |
|
230 |
|
both machines, the system flash (for Libreboot) is toward the centre, near |
|
231 |
|
the memory. |
|
232 |
|
|
|
233 |
|
Backlight controls |
|
234 |
|
------------------- |
|
235 |
|
|
|
236 |
|
The `xbacklight` (or equivalent in Wayland) can be used to manually control |
|
237 |
|
the backlight; the buttons on the keyboard do not currently work, at least as |
|
238 |
|
of 5 December 2024. |
|
239 |
|
|
|
240 |
|
You could map the appropriate xbacklight command in Linux to a hotkey combo, |
|
241 |
|
depending on your window manager or desktop environment. |
|
242 |
|
|
|
243 |
|
UART |
|
244 |
|
---- |
|
245 |
|
|
|
246 |
|
A serial console is possible via the line-out (headphone jack). Not yet tested |
|
247 |
|
on the T480S (S model), nor implemented, but it is working on the regular |
|
248 |
|
T480 (non-S model). |
|
249 |
|
|
|
250 |
|
**TODO: show photo and wiring diagram here.** |
|
251 |
|
|
|
252 |
|
Use baud rate 115200 in your favourite serial terminal client, e.g. GNU Screen. |
|
253 |
|
|
|
254 |
|
Next to the headphone jack on the T480, you will find pads for two 0ohm jumpers, |
|
255 |
|
normally unpopulated, but you can bridge each jumper yourself using a 0ohm 0201 |
|
256 |
|
jumper; alternatively, simply strip a bit a wire (30awg solid core) and carefully |
|
257 |
|
solder the wire across each of the pad jumpers, then carefully using a pair |
|
258 |
|
of side cutters to cut off the excess wire, being careful not to rip the pads! |
|
259 |
|
|
|
260 |
|
If you do this, please make sure to have the latest EC firmware as of 5 |
|
261 |
|
December 2024 (do not use older than what was latest on this day, and don't |
|
262 |
|
use newer versions), because the code for this in coreboot targets a specific |
|
263 |
|
area of code within the EC firmware. |
|
264 |
|
|
|
265 |
|
You can then wire a 3.5mm stereo plug. On the other end you will wire your |
|
266 |
|
TX/RX lines as you wish, to a suitable UART adapter; any 3.3v-rated TTL |
|
267 |
|
adapter should work. The Raspberry Pi Pico can be used for this, which is handy |
|
268 |
|
because that can also be used as a serprog-based NOR flasher! |
|
269 |
|
|
|
270 |
|
The T480S (S model) schematics is a bit different and the signals are |
|
271 |
|
properly muxed. Note that this is not to be confused with `spkmodem`, which |
|
272 |
|
has not been tested on these boards (but could theoretically be possible too). |
|
273 |
|
|
|
274 |
|
Idea for 2nd NVMe mod |
|
275 |
|
---------------------- |
|
276 |
|
|
|
277 |
|
Interestingly, on boards without the Nvidia graphics, the solder pads for all |
|
278 |
|
the componentry (including the GPU) is still present, so you could theoretically |
|
279 |
|
design a QSB that solders to the right pads, and use it to wire a 2nd NVMe SSD; |
|
280 |
|
the port is still enabled in Libreboot even if nothing is plugged into it, so it |
|
281 |
|
should just work. (this doesn't actually exist yet, but it is electrically |
|
282 |
|
possible, quite feasible to design/manufacture and already supported in the |
|
283 |
|
Libreboot firmware in principle, since than PCI-E lane is enabled in the devicetree) |
|
284 |
|
|
|
285 |
|
Mate Kukri came up with this idea. It's a great idea, so it's written here. |
|
286 |
|
This mod is possible on both the T480 and T480S, though on T480S there would |
|
287 |
|
be less clearance; using a smaller internal battery and having a makeshift |
|
288 |
|
NVMe caddy in the remaining space would be how to go about it there. On the |
|
289 |
|
regular T480, the existing caddy area could easily fit two NVMe drives. |
|
290 |
|
|