parent
e6e5b19fde
commit
1894f05981
|
@ -97,6 +97,7 @@ Desktops (AMD, Intel, x86)
|
|||
Laptops (Intel, x86)
|
||||
--------------------
|
||||
|
||||
- [Lenovo ThinkPad T480 and ThinkPad T480s](t480.md)
|
||||
- **Lenovo ThinkPad T440p - Also [available
|
||||
to buy with Libreboot preinstalled](https://minifree.org/product/libreboot-t440p/)**
|
||||
- **Lenovo ThinkPad W541 - Also [available to
|
||||
|
@ -565,6 +566,13 @@ bootblock, set bucts back to zero:
|
|||
The second flash can be done by simply following the general internal flashing
|
||||
guide further down on this page.
|
||||
|
||||
ThinkPad T480/T480S (vendor BIOS)
|
||||
----------------------
|
||||
|
||||
See:
|
||||
|
||||
* [ThinkPad T480/T480S](t480.md)
|
||||
|
||||
Thinkpad T440p/W541 (vendor BIOS)
|
||||
---------------------
|
||||
|
||||
|
|
|
@ -0,0 +1,290 @@
|
|||
---
|
||||
title: Lenovo ThinkPad T480/T480S information
|
||||
x-toc-enable: true
|
||||
...
|
||||
|
||||
Libreboot supports both the T480 and T480S variants. It is available in
|
||||
the [Libreboot 20241205](../../news/libreboot20240512.md) release or later.
|
||||
|
||||
**[PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING](../../news/safety.md),
|
||||
OR YOU MIGHT BRICK YOUR MACHINE: [SAFETY PRECAUTIONS](../../news/safety.md)**
|
||||
|
||||
<div class="specs">
|
||||
<center>
|
||||
<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>
|
||||
</center>
|
||||
|
||||
| ***Specifications*** | |
|
||||
|----------------------------|------------------------------------------------|
|
||||
| **Manufacturer** | Lenovo |
|
||||
| **Name** | ThinkPad T480 |
|
||||
| **Variants** | ThinkPad T480, ThinkPad T480S |
|
||||
| **Released** | 2018 |
|
||||
| **Chipset** | Intel Kaby Lake Refresh |
|
||||
| **CPU** | Intel Kaby Lake Refresh |
|
||||
| **Graphics** | Intel or Intel+Nvidia |
|
||||
| **Memory** | DDR4 DIMMs; max 40GB (T480S), 64GB(T480) |
|
||||
| **Architecture** | x86\_64 |
|
||||
| **Original boot firmware** | Lenovo UEFI firmware |
|
||||
| **Intel ME/AMD PSP** | Present. Can be disabled with me\_cleaner. |
|
||||
| **Intel Boot Guard** | Pwned. Disabled using the deguard utility. |
|
||||
| **Flash chip** | SOIC-8 16MB/128Mbit system firmware |
|
||||
|
||||
|
||||
```
|
||||
W+: Works without blobs;
|
||||
N: Doesn't work;
|
||||
W*: Works with blobs;
|
||||
U: Untested;
|
||||
P+: Partially works;
|
||||
P*: Partially works with blobs
|
||||
?: UNKNOWN AT THIS TIME
|
||||
```
|
||||
|
||||
| ***Features*** | |
|
||||
|---------------------------------------------------|----|
|
||||
| **Internal flashing with original boot firmware** | N |
|
||||
| **Display (if Intel GPU)** | W+ |
|
||||
| **Display (discrete CPU, SeaBIOS payload only)** | N |
|
||||
| **Audio** | W+ |
|
||||
| **RAM Init** | W* |
|
||||
|
||||
| ***Payloads supported*** | |
|
||||
|----------------------------|-----------|
|
||||
| **GRUB (libgfxinit only)** | Works |
|
||||
| **SeaBIOS** | Works |
|
||||
| **SeaBIOS with GRUB** | Works |
|
||||
</div>
|
||||
|
||||
Regarding memory: T480S (S model) has 8GB onboard RAM, and an available DIMM
|
||||
slot on which an additional 32GB SODIMM can be installed. The regular T480
|
||||
has two DIMM slots, allowing 2x32GB DDR4 SODIMMs.
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
**Unavailable in Libreboot 20241008 or earlier. You must [compile from
|
||||
source](../build/), or alternatively an image from Libreboot 20241205 or higher.
|
||||
|
||||
Official information about the T480 can be found here:\
|
||||
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480/ThinkPad_T480_Spec.PDF>
|
||||
|
||||
...and information about the T480S can be found here:\
|
||||
<https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T480s/ThinkPad_T480s_Spec.pdf>
|
||||
|
||||
Build ROM image from source
|
||||
---------------------------
|
||||
|
||||
The build target, when building from source, is thus:
|
||||
|
||||
./mk -b coreboot t480_fsp_16mb
|
||||
./mk -b coreboot t480s_fsp_16mb
|
||||
|
||||
**NOTE: The T480 and T480 may be similar, but they do have several critical
|
||||
differences in their wiring, so you MUST flash the correct image. Please
|
||||
choose one of the above build targets accordingly.**
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Insert binary files
|
||||
-------------------
|
||||
|
||||
If you're using a release ROM, please ensure that you've inserted extra firmware
|
||||
required refer to the [guide](../install/ivy_has_common.md) for that. **(failure
|
||||
to adhere to this advice will result in a BRICKED machine)**
|
||||
|
||||
Libreboot's build system automatically downloads and processes these files if
|
||||
you build Libreboot from source, but the same logic that it uses must be re-run
|
||||
if you're using a release image. This is to bypass certain restrictions on
|
||||
direct distribution, for files such as the Intel Management Engine firmware.
|
||||
|
||||
Absolutely unsigned Intel ME!
|
||||
-----------------------------
|
||||
|
||||
Libreboot already disables the Intel ME by default, using `me_cleaner`, but
|
||||
the T480/T480 specifically has an additional quirk:
|
||||
|
||||
One of the benefits of [deguard](deguard.md) for Intel MEv11 is that it sets
|
||||
the ME in such a state where you can run unsigned code in there. This is how
|
||||
the Intel Boot Guard was disabled, because it is the ME that enforces such
|
||||
restrictions; more information about deguard is available on a dedicated page.
|
||||
|
||||
The deguard utility could also be used to enable the red-unlock hack, which
|
||||
would permit unsigned execution of new CPU microcode, though much more
|
||||
research is needed. Because of these two facts, this makes the T480/T480S the
|
||||
most freedom-feasible of all relatively modern x86 laptops.
|
||||
|
||||
With deguard, you have complete control of the flash. This is unprecedented on
|
||||
recent Intel systems in Libreboot, so it's certainly a very interesting port!
|
||||
|
||||
Set MAC address
|
||||
---------------
|
||||
|
||||
This platform uses an Intel Flash Descriptor, and defines an Intel GbE NVM
|
||||
region. As such, release/build ROMs will contain the same MAC address. To
|
||||
change the MAC address, please read [nvmutil documentation](../install/nvmutil.md).
|
||||
|
||||
**NOTE: If changing the MAC address, please give `ifdtool` the following
|
||||
argument when using it: `--platform sklkbl`** - otherwise, ifdtool will
|
||||
handle the IFD incorrectly!
|
||||
|
||||
WARNING about GPU compatibility
|
||||
-------------------------------
|
||||
|
||||
The Nvidia GPUs were tested, on models that have them. It is completely
|
||||
dysfunctional and currently disabled in Libreboot. On models that have Nvidia,
|
||||
the Intel graphics is still available so Libreboot uses Intel graphics
|
||||
exclusively.
|
||||
|
||||
The Intel GPU is fully supported with native source code (libgfxinit) in
|
||||
coreboot, which Libreboot uses for initialisation.
|
||||
|
||||
Use of Intel graphics is recommended, because it has much better (and libre)
|
||||
driver support in Linux, and free initialisation code in coreboot, whereas
|
||||
Nvidia is mostly all binary blobs (unless perhaps you use the nouveau driver in
|
||||
Linux).
|
||||
|
||||
Thunderbolt issue (READ THIS BEFORE FLASHING)
|
||||
------------------
|
||||
|
||||
The thunderbolt firmware on launch units had a bug where certain debug
|
||||
info is written on certain events, such as plugging in a charger to the USB-C
|
||||
connector. This logging is stored in the Thunderbolt firmware's own SPI flash,
|
||||
which is separate from the main SPI flash containing the system firmware
|
||||
e.g. coreboot.
|
||||
|
||||
If that flash gets full, thunderbolt (on factory firmware) stops working and
|
||||
fast charging stops working. It can be prevented by updating the Thunderbolt
|
||||
firmware. You can do this from Lenovo's firmware, using these instructions:
|
||||
|
||||
<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>
|
||||
|
||||
If you're already affected by the bug, you can restore it to a working state
|
||||
by flashing the Thunderbolt firmware externally. For example this is where its
|
||||
NOR flash is on a T480:
|
||||
|
||||
<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>
|
||||
|
||||
This page shows how to do that:
|
||||
|
||||
<https://gitlab.com/MobileAZN/lenovo-t480-thunderbolt-firmware-fixes>
|
||||
|
||||
You unbrick the Thunderbolt controller by pulling the firmware from Lenovo's
|
||||
update, from Lenovo's update utility. Once extracted, you then pad it properly
|
||||
so that it can be flashed manually, using a normal SPI flasher (the same one
|
||||
that you would use to flash Libreboot).
|
||||
|
||||
Use the [25XX NOR flashing guide](spi.md) if you need to flash this chip. It's
|
||||
the same guide that you will use for the main system flash, which is a separate
|
||||
flash IC.
|
||||
|
||||
AGAIN: This is not the Libreboot flash IC. This is separate to the system flash.
|
||||
Read on to know how to reprogram the main system flash!
|
||||
|
||||
Flash a ROM image (software)
|
||||
-----------------
|
||||
|
||||
**MAKE SURE** to update the Lenovo UEFI firmware before installing Libreboot.
|
||||
You must also make a dump of the NOR flash, before updating Lenovo's firmware,
|
||||
and once again before flashing Libreboot, being sure you have good dumps.
|
||||
|
||||
If you're already running Libreboot, and you don't have flash protection
|
||||
turned on, [internal flashing](../install/) is possible.
|
||||
|
||||
Find videos online of how to disassemble this, and/or find Lenovo's own
|
||||
service manual online. Otherwise, observe:
|
||||
|
||||
<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>
|
||||
|
||||
Remove all screws, and you can gently pry off the lower chassis and remove,
|
||||
which then allows you to see the inner mainboard:
|
||||
|
||||
<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>
|
||||
|
||||
**WARNING: PLEASE MAKE SURE to remove the battery before flashing. The T480
|
||||
and T480S can both contain INTERNAL batteries, and the T480 has an additional
|
||||
external battery. Remove the internal battery via the connector, like so (T480):**
|
||||
|
||||
<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>
|
||||
|
||||
On the T480S (S model) the internal battery is much larger, and the connector
|
||||
on it is built into the battery, so it is necessary to carefully remove the
|
||||
entire battery; on regular T480 (non-S model) the internal battery can be
|
||||
isolated via the connector as depicted above.
|
||||
|
||||
This photo shows the flash:
|
||||
|
||||
<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>
|
||||
|
||||
There is another flash, for the Thunderbolt firmware, which you are to briefly
|
||||
ignore; we'll cover it later:
|
||||
|
||||
<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>
|
||||
|
||||
To be clear: the system flash (16MB) is what you put Libreboot on. The
|
||||
Thunderbolt firmware flash is much smaller, so you'll know because flashprog
|
||||
will complain about wrong flash size if you're trying to flash the wrong one.
|
||||
|
||||
On the T480S (S model), the flashes are in slightly different places but in
|
||||
both machines, the system flash (for Libreboot) is toward the centre, near
|
||||
the memory.
|
||||
|
||||
Backlight controls
|
||||
-------------------
|
||||
|
||||
The `xbacklight` (or equivalent in Wayland) can be used to manually control
|
||||
the backlight; the buttons on the keyboard do not currently work, at least as
|
||||
of 5 December 2024.
|
||||
|
||||
You could map the appropriate xbacklight command in Linux to a hotkey combo,
|
||||
depending on your window manager or desktop environment.
|
||||
|
||||
UART
|
||||
----
|
||||
|
||||
A serial console is possible via the line-out (headphone jack). Not yet tested
|
||||
on the T480S (S model), nor implemented, but it is working on the regular
|
||||
T480 (non-S model).
|
||||
|
||||
**TODO: show photo and wiring diagram here.**
|
||||
|
||||
Use baud rate 115200 in your favourite serial terminal client, e.g. GNU Screen.
|
||||
|
||||
Next to the headphone jack on the T480, you will find pads for two 0ohm jumpers,
|
||||
normally unpopulated, but you can bridge each jumper yourself using a 0ohm 0201
|
||||
jumper; alternatively, simply strip a bit a wire (30awg solid core) and carefully
|
||||
solder the wire across each of the pad jumpers, then carefully using a pair
|
||||
of side cutters to cut off the excess wire, being careful not to rip the pads!
|
||||
|
||||
If you do this, please make sure to have the latest EC firmware as of 5
|
||||
December 2024 (do not use older than what was latest on this day, and don't
|
||||
use newer versions), because the code for this in coreboot targets a specific
|
||||
area of code within the EC firmware.
|
||||
|
||||
You can then wire a 3.5mm stereo plug. On the other end you will wire your
|
||||
TX/RX lines as you wish, to a suitable UART adapter; any 3.3v-rated TTL
|
||||
adapter should work. The Raspberry Pi Pico can be used for this, which is handy
|
||||
because that can also be used as a serprog-based NOR flasher!
|
||||
|
||||
The T480S (S model) schematics is a bit different and the signals are
|
||||
properly muxed. Note that this is not to be confused with `spkmodem`, which
|
||||
has not been tested on these boards (but could theoretically be possible too).
|
||||
|
||||
Idea for 2nd NVMe mod
|
||||
----------------------
|
||||
|
||||
Interestingly, on boards without the Nvidia graphics, the solder pads for all
|
||||
the componentry (including the GPU) is still present, so you could theoretically
|
||||
design a QSB that solders to the right pads, and use it to wire a 2nd NVMe SSD;
|
||||
the port is still enabled in Libreboot even if nothing is plugged into it, so it
|
||||
should just work. (this doesn't actually exist yet, but it is electrically
|
||||
possible, quite feasible to design/manufacture and already supported in the
|
||||
Libreboot firmware in principle, since than PCI-E lane is enabled in the devicetree)
|
||||
|
||||
Mate Kukri came up with this idea. It's a great idea, so it's written here.
|
||||
This mod is possible on both the T480 and T480S, though on T480S there would
|
||||
be less clearance; using a smaller internal battery and having a makeshift
|
||||
NVMe caddy in the remaining space would be how to go about it there. On the
|
||||
regular T480, the existing caddy area could easily fit two NVMe drives.
|
||||
|
Loading…
Reference in New Issue