File site/docs/install/t480.md changed (mode: 100644) (index b21e9f3..8eea63f) |
1 |
1 |
--- |
--- |
2 |
|
title: Lenovo ThinkPad T480/T480S information |
|
|
2 |
|
title: Lenovo ThinkPad T480/T480s information |
3 |
3 |
x-toc-enable: true |
x-toc-enable: true |
4 |
4 |
... |
... |
5 |
5 |
|
|
6 |
|
Libreboot supports both the T480 and T480S variants. It is available in |
|
|
6 |
|
Libreboot supports both the T480 and T480s variants. It is available in |
7 |
7 |
the *Libreboot 20241206* release or later. |
the *Libreboot 20241206* release or later. |
8 |
8 |
|
|
9 |
9 |
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](../../news/safety.md), |
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](../../news/safety.md), |
|
... |
... |
OR YOU MIGHT BRICK YOUR MACHINE: [SAFETY PRECAUTIONS](../../news/safety.md)** |
16 |
16 |
|
|
17 |
17 |
| ***Specifications*** | | |
| ***Specifications*** | | |
18 |
18 |
|----------------------------|------------------------------------------------| |
|----------------------------|------------------------------------------------| |
19 |
|
| **Manufacturer** | Lenovo | |
|
20 |
|
| **Name** | ThinkPad T480 | |
|
21 |
|
| **Variants** | ThinkPad T480, ThinkPad T480S | |
|
|
19 |
|
| **Manufacturer** | Lenovo | |
|
20 |
|
| **Name** | ThinkPad T480 | |
|
21 |
|
| **Variants** | ThinkPad T480, ThinkPad T480s | |
22 |
22 |
| **Released** | 2018 | |
| **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](deguard.md). Disabled using the deguard utility. | |
|
31 |
|
| **Flash chip** | SOIC-8 16MB/128Mbit system firmware | |
|
|
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](deguard.md). Disabled using the deguard utility.| |
|
31 |
|
| **Flash chip** | SOIC-8 16MB/128Mbit system firmware | |
32 |
32 |
|
|
33 |
33 |
|
|
34 |
34 |
``` |
``` |
|
... |
... |
P*: Partially works with blobs |
43 |
43 |
|
|
44 |
44 |
| ***Features*** | | |
| ***Features*** | | |
45 |
45 |
|---------------------------------------------------|----| |
|---------------------------------------------------|----| |
46 |
|
| **Internal flashing with original boot firmware** | N | |
|
|
46 |
|
| **Internal flashing with original boot firmware** | N | |
47 |
47 |
| **Display (if Intel GPU)** | W+ | |
| **Display (if Intel GPU)** | W+ | |
48 |
|
| **Display (discrete CPU, SeaBIOS payload only)** | N | |
|
|
48 |
|
| **Display (discrete CPU, SeaBIOS payload only)** | N | |
49 |
49 |
| **Audio** | W+ | |
| **Audio** | W+ | |
50 |
50 |
| **RAM Init** | W* | |
| **RAM Init** | W* | |
51 |
51 |
|
|
|
... |
... |
P*: Partially works with blobs |
56 |
56 |
| **SeaBIOS with GRUB** | Works | |
| **SeaBIOS with GRUB** | Works | |
57 |
57 |
</div> |
</div> |
58 |
58 |
|
|
59 |
|
Regarding memory: T480S (S model) has 8GB onboard RAM, and an available DIMM |
|
|
59 |
|
Regarding memory: T480s (S model) has 8GB onboard RAM, and an available DIMM |
60 |
60 |
slot on which an additional 32GB SODIMM can be installed. The regular T480 |
slot on which an additional 32GB SODIMM can be installed. The regular T480 |
61 |
61 |
has two DIMM slots, allowing 2x32GB DDR4 SODIMMs. |
has two DIMM slots, allowing 2x32GB DDR4 SODIMMs. |
62 |
62 |
|
|
|
... |
... |
source](../build/), or alternatively an image from Libreboot 20241206 or higher. |
74 |
74 |
Official information about the T480 can be found here:\ |
Official information about the T480 can be found here:\ |
75 |
75 |
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480/ThinkPad_T480_Spec.PDF> |
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480/ThinkPad_T480_Spec.PDF> |
76 |
76 |
|
|
77 |
|
...and information about the T480S can be found here:\ |
|
|
77 |
|
...and information about the T480s can be found here:\ |
78 |
78 |
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480s/ThinkPad_T480s_Spec.pdf> |
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480s/ThinkPad_T480s_Spec.pdf> |
79 |
79 |
|
|
80 |
|
This port is implemented in Libreboot by merging Mate Kukri's T480/T480S |
|
|
80 |
|
This port is implemented in Libreboot by merging Mate Kukri's T480/T480s |
81 |
81 |
patchset. See: <https://review.coreboot.org/c/coreboot/+/83274> - as of 5 |
patchset. See: <https://review.coreboot.org/c/coreboot/+/83274> - as of 5 |
82 |
82 |
December 2024, Libreboot's code matches that of patchset 22. |
December 2024, Libreboot's code matches that of patchset 22. |
83 |
83 |
|
|
|
... |
... |
you've inserted manually. |
118 |
118 |
If it says "Unplugged", try it anyway. The HDA Verb may be incorrect. This |
If it says "Unplugged", try it anyway. The HDA Verb may be incorrect. This |
119 |
119 |
will be investigated and a hotfix patch made to the Libreboot 20241206 images. |
will be investigated and a hotfix patch made to the Libreboot 20241206 images. |
120 |
120 |
|
|
|
121 |
|
`thinkpad_acpi` issues {#thinkpad-acpi} |
|
122 |
|
--------------------------------------- |
|
123 |
|
|
|
124 |
|
It has been reported that `thinkpad_acpi` does not load correctly on the T480. |
|
125 |
|
This should also be the case for the T480s. |
|
126 |
|
|
|
127 |
|
If you encounter this issue, check |
|
128 |
|
[this page](https://libreboot.org/faq#thinkpad-acpi) for details at so how |
|
129 |
|
to fix this. |
|
130 |
|
|
121 |
131 |
Build ROM image from source |
Build ROM image from source |
122 |
132 |
--------------------------- |
--------------------------- |
123 |
133 |
|
|
|
... |
... |
The build target, when building from source, is thus: |
126 |
136 |
./mk -b coreboot t480_fsp_16mb |
./mk -b coreboot t480_fsp_16mb |
127 |
137 |
./mk -b coreboot t480s_fsp_16mb |
./mk -b coreboot t480s_fsp_16mb |
128 |
138 |
|
|
129 |
|
**NOTE: The T480 and T480S may be similar, but they do have several critical |
|
|
139 |
|
**NOTE: The T480 and T480s may be similar, but they do have several critical |
130 |
140 |
differences in their wiring, so you MUST flash the correct image. Please |
differences in their wiring, so you MUST flash the correct image. Please |
131 |
141 |
choose one of the above build targets accordingly.** |
choose one of the above build targets accordingly.** |
132 |
142 |
|
|
|
... |
... |
Absolutely unsigned Intel ME! |
161 |
171 |
----------------------------- |
----------------------------- |
162 |
172 |
|
|
163 |
173 |
Libreboot already disables the Intel ME by default, using `me_cleaner`, but |
Libreboot already disables the Intel ME by default, using `me_cleaner`, but |
164 |
|
the T480/T480S specifically have an additional quirk: |
|
|
174 |
|
the T480/T480s specifically have an additional quirk: |
165 |
175 |
|
|
166 |
176 |
One of the benefits of [deguard](deguard.md) for Intel MEv11 is that it sets |
One of the benefits of [deguard](deguard.md) for Intel MEv11 is that it sets |
167 |
177 |
the ME in such a state where you can run unsigned code in there. This is how |
the ME in such a state where you can run unsigned code in there. This is how |
|
... |
... |
restrictions; more information about deguard is available on a dedicated page. |
170 |
180 |
|
|
171 |
181 |
The deguard utility could also be used to enable the red-unlock hack, which |
The deguard utility could also be used to enable the red-unlock hack, which |
172 |
182 |
would permit unsigned execution of new CPU microcode, though much more |
would permit unsigned execution of new CPU microcode, though much more |
173 |
|
research is needed. Because of these two facts, this makes the T480/T480S the |
|
|
183 |
|
research is needed. Because of these two facts, this makes the T480/T480s the |
174 |
184 |
most freedom-feasible of all relatively modern x86 laptops. |
most freedom-feasible of all relatively modern x86 laptops. |
175 |
185 |
|
|
176 |
186 |
With deguard, you have complete control of the flash. This is unprecedented on |
With deguard, you have complete control of the flash. This is unprecedented on |
|
... |
... |
which then allows you to see the inner mainboard: |
279 |
289 |
<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> |
<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> |
280 |
290 |
|
|
281 |
291 |
**WARNING: PLEASE MAKE SURE to remove the battery before flashing. The T480 |
**WARNING: PLEASE MAKE SURE to remove the battery before flashing. The T480 |
282 |
|
and T480S can both contain INTERNAL batteries, and the T480 has an additional |
|
|
292 |
|
and T480s can both contain INTERNAL batteries, and the T480 has an additional |
283 |
293 |
external battery. Remove the internal battery via the connector, like so (T480):** |
external battery. Remove the internal battery via the connector, like so (T480):** |
284 |
294 |
|
|
285 |
295 |
<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> |
<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> |
286 |
296 |
|
|
287 |
|
On the T480S (S model) the internal battery is much larger, and the connector |
|
|
297 |
|
On the T480s (S model) the internal battery is much larger, and the connector |
288 |
298 |
on it is built into the battery, so it is necessary to carefully remove the |
on it is built into the battery, so it is necessary to carefully remove the |
289 |
299 |
entire battery; on regular T480 (non-S model) the internal battery can be |
entire battery; on regular T480 (non-S model) the internal battery can be |
290 |
300 |
isolated via the connector as depicted above. |
isolated via the connector as depicted above. |
|
... |
... |
To be clear: the system flash (16MB) is what you put Libreboot on. The |
302 |
312 |
Thunderbolt firmware flash is much smaller, so you'll know because flashprog |
Thunderbolt firmware flash is much smaller, so you'll know because flashprog |
303 |
313 |
will complain about wrong flash size if you're trying to flash the wrong one. |
will complain about wrong flash size if you're trying to flash the wrong one. |
304 |
314 |
|
|
305 |
|
On the T480S (S model), the flashes are in slightly different places but in |
|
|
315 |
|
On the T480s (S model), the flashes are in slightly different places but in |
306 |
316 |
both machines, the system flash (for Libreboot) is toward the centre, near |
both machines, the system flash (for Libreboot) is toward the centre, near |
307 |
317 |
the memory. |
the memory. |
308 |
318 |
|
|
|
... |
... |
UART |
320 |
330 |
---- |
---- |
321 |
331 |
|
|
322 |
332 |
A serial console is possible via the line-out (headphone jack). Not yet tested |
A serial console is possible via the line-out (headphone jack). Not yet tested |
323 |
|
on the T480S (S model), nor implemented, but it is working on the regular |
|
|
333 |
|
on the T480s (S model), nor implemented, but it is working on the regular |
324 |
334 |
T480 (non-S model). |
T480 (non-S model). |
325 |
335 |
|
|
326 |
336 |
**TODO: show photo and wiring diagram here.** |
**TODO: show photo and wiring diagram here.** |
|
... |
... |
TX/RX lines as you wish, to a suitable UART adapter; any 3.3v-rated TTL |
343 |
353 |
adapter should work. The Raspberry Pi Pico can be used for this, which is handy |
adapter should work. The Raspberry Pi Pico can be used for this, which is handy |
344 |
354 |
because that can also be used as a serprog-based NOR flasher! |
because that can also be used as a serprog-based NOR flasher! |
345 |
355 |
|
|
346 |
|
The T480S (S model) schematics is a bit different and the signals are |
|
|
356 |
|
The T480s (S model) schematics is a bit different and the signals are |
347 |
357 |
properly muxed. Note that this is not to be confused with `spkmodem`, which |
properly muxed. Note that this is not to be confused with `spkmodem`, which |
348 |
358 |
has not been tested on these boards (but could theoretically be possible too). |
has not been tested on these boards (but could theoretically be possible too). |
349 |
359 |
|
|
|
... |
... |
possible, quite feasible to design/manufacture and already supported in the |
359 |
369 |
Libreboot firmware in principle, since than PCI-E lane is enabled in the devicetree) |
Libreboot firmware in principle, since than PCI-E lane is enabled in the devicetree) |
360 |
370 |
|
|
361 |
371 |
Mate Kukri came up with this idea. It's a great idea, so it's written here. |
Mate Kukri came up with this idea. It's a great idea, so it's written here. |
362 |
|
This mod is possible on both the T480 and T480S, though on T480S there would |
|
|
372 |
|
This mod is possible on both the T480 and T480s, though on T480s there would |
363 |
373 |
be less clearance; using a smaller internal battery and having a makeshift |
be less clearance; using a smaller internal battery and having a makeshift |
364 |
374 |
NVMe caddy in the remaining space would be how to go about it there. On the |
NVMe caddy in the remaining space would be how to go about it there. On the |
365 |
375 |
regular T480, the existing caddy area could easily fit two NVMe drives. |
regular T480, the existing caddy area could easily fit two NVMe drives. |
|
... |
... |
regular T480, the existing caddy area could easily fit two NVMe drives. |
367 |
377 |
Errata |
Errata |
368 |
378 |
====== |
====== |
369 |
379 |
|
|
370 |
|
On ThinkPad T480/T480S, headphone output works; the internal speaker is disabled |
|
|
380 |
|
On ThinkPad T480/T480s, headphone output works; the internal speaker is disabled |
371 |
381 |
but audio is not automatically redirected to the headphone jack. This switching |
but audio is not automatically redirected to the headphone jack. This switching |
372 |
382 |
can be done manually, for example in the `pavucontrol` utility: |
can be done manually, for example in the `pavucontrol` utility: |
373 |
383 |
|
|
File site/faq.md changed (mode: 100644) (index 2609e54..f3f4cd2) |
... |
... |
sure to re-enable them after you're finished. |
17 |
17 |
See: [Disabling /dev/mem protection](docs/install/devmem.md) |
See: [Disabling /dev/mem protection](docs/install/devmem.md) |
18 |
18 |
|
|
19 |
19 |
Buy Libreboot pre-installed |
Buy Libreboot pre-installed |
20 |
|
========== |
|
|
20 |
|
============================= |
21 |
21 |
|
|
22 |
22 |
If you want professional installation, Minifree Ltd sells [Libreboot |
If you want professional installation, Minifree Ltd sells [Libreboot |
23 |
23 |
pre-installed](https://minifree.org/) on select hardware, and it also provides |
pre-installed](https://minifree.org/) on select hardware, and it also provides |
|
... |
... |
Hardware compatibility |
169 |
169 |
====================== |
====================== |
170 |
170 |
|
|
171 |
171 |
What systems are compatible with libreboot? |
What systems are compatible with libreboot? |
172 |
|
----------------------------------------------------------------------------------- |
|
|
172 |
|
-------------------------------------------- |
173 |
173 |
|
|
174 |
174 |
Any system can easily be added, so *compatibility* merely refers to whatever |
Any system can easily be added, so *compatibility* merely refers to whatever |
175 |
175 |
boards are integrated in the `lbmk` build system, which libreboot uses. |
boards are integrated in the `lbmk` build system, which libreboot uses. |
|
... |
... |
This will change the default inside that ROM image, and then you can |
576 |
576 |
re-flash it. |
re-flash it. |
577 |
577 |
|
|
578 |
578 |
How do I pad a ROM before flashing? |
How do I pad a ROM before flashing? |
579 |
|
-------------------------------------- |
|
|
579 |
|
------------------------------------- |
580 |
580 |
|
|
581 |
581 |
It is advisable to simply use a larger ROM image. This section was written |
It is advisable to simply use a larger ROM image. This section was written |
582 |
582 |
mostly for ASUS KCMA-D8 and KGPE-D16 mainboards, where previously we only |
mostly for ASUS KCMA-D8 and KGPE-D16 mainboards, where previously we only |
|
... |
... |
padded 16MiB image do the following: |
616 |
616 |
With padding removed cbfstool will be able to operate on the image as usual. |
With padding removed cbfstool will be able to operate on the image as usual. |
617 |
617 |
|
|
618 |
618 |
Do I need to install a bootloader when installing a distribution? |
Do I need to install a bootloader when installing a distribution? |
619 |
|
--------------------------------------------------------------------------------------------------- |
|
|
619 |
|
----------------------------------------------------------------- |
620 |
620 |
|
|
621 |
621 |
Most libreboot setups integrate the GRUB bootloader already, as a |
Most libreboot setups integrate the GRUB bootloader already, as a |
622 |
622 |
*[payload](http://www.coreboot.org/Payloads)*. This means that the GRUB |
*[payload](http://www.coreboot.org/Payloads)*. This means that the GRUB |
|
... |
... |
then the normal MBR bootsector is used on your HDD or SSD, like you would |
635 |
635 |
expect. So the above paragraphs only apply to the GRUB payload. |
expect. So the above paragraphs only apply to the GRUB payload. |
636 |
636 |
|
|
637 |
637 |
Do I need to re-flash when I re-install a distribution? |
Do I need to re-flash when I re-install a distribution? |
638 |
|
------------------------------------------------------------------------------------------- |
|
|
638 |
|
------------------------------------------------------- |
639 |
639 |
|
|
640 |
640 |
Not anymore. Recent versions of libreboot (using the GRUB payload) will |
Not anymore. Recent versions of libreboot (using the GRUB payload) will |
641 |
641 |
automatically switch to a GRUB configuration on the HDD or SSD, if it |
automatically switch to a GRUB configuration on the HDD or SSD, if it |
|
... |
... |
What does a flash chip look like? |
653 |
653 |
You can find photos of various chip types on the following page:\ |
You can find photos of various chip types on the following page:\ |
654 |
654 |
[External 25xx NOR flashing guide](docs/install/spi.md) |
[External 25xx NOR flashing guide](docs/install/spi.md) |
655 |
655 |
|
|
656 |
|
Inability to modprobe thinkpad\_acpi on Haswell |
|
657 |
|
=============================================== |
|
|
656 |
|
Inability to load `thinkpad_acpi` on post-haswell systems {#thinkpad-acpi} |
|
657 |
|
========================================================================== |
658 |
658 |
|
|
659 |
|
This was reported by a user, running Debian 11 with |
|
660 |
|
kernel `5.19.0-0.deb11.2-amd64`. The `thinkpad_acpi` module was not loading, |
|
661 |
|
with the following message: |
|
|
659 |
|
Reported by a user on Debian 11 (on a ThinkPad T440p) and a user |
|
660 |
|
on Void Linux (ThinkPad T480), Linux may fail to load `thinkpad_acpi`. |
662 |
661 |
|
|
663 |
|
``` |
|
664 |
|
modprobe: ERROR: could not insert 'thinkpad_acpi': "No such device" |
|
665 |
|
``` |
|
|
662 |
|
It is suspected that at least these mainboards are affected: |
|
663 |
|
|
|
664 |
|
* [ThinkPad W541](https://libreboot.org/docs/install/w541_external.html) |
|
665 |
|
* [ThinkPad T440p](https://libreboot.org/docs/install/t440p_external.html) |
|
666 |
|
* [ThinkPad T480/T480s](https://libreboot.org/docs/install/t480.html) |
|
667 |
|
|
|
668 |
|
This may result the following effects, including or not limited to: |
666 |
669 |
|
|
667 |
|
Battery info in `/sys` was absent, because of this. The user reported that |
|
668 |
|
the following workaround was effective (in Debian). |
|
|
670 |
|
* Temperature reporting not working |
|
671 |
|
* Battery info not working. |
|
672 |
|
* Fan speed reporting not working |
|
673 |
|
* Fan control not working |
669 |
674 |
|
|
670 |
|
Add this line to `/etc/modprobe.d/thinkpad_acpi.conf`: |
|
|
675 |
|
For these systems, add the line |
671 |
676 |
|
|
672 |
677 |
``` |
``` |
673 |
678 |
options thinkpad_acpi force_load=1 |
options thinkpad_acpi force_load=1 |
674 |
679 |
``` |
``` |
675 |
680 |
|
|
|
681 |
|
to any file in `/etc/modprobe.d`. You can also add |
|
682 |
|
|
|
683 |
|
``` |
|
684 |
|
thinkpad_acpi.force_load=1 |
|
685 |
|
``` |
|
686 |
|
|
|
687 |
|
to your kernel parameters (in GRUB, or your preferred linux-capable bootloader). |
|
688 |
|
|
676 |
689 |
tlp |
tlp |
677 |
690 |
--- |
--- |
678 |
691 |
|
|