parent
e6e5b19fde
commit
1894f05981
|
@ -97,6 +97,7 @@ Desktops (AMD, Intel, x86)
|
||||||
Laptops (Intel, x86)
|
Laptops (Intel, x86)
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
- [Lenovo ThinkPad T480 and ThinkPad T480s](t480.md)
|
||||||
- **Lenovo ThinkPad T440p - Also [available
|
- **Lenovo ThinkPad T440p - Also [available
|
||||||
to buy with Libreboot preinstalled](https://minifree.org/product/libreboot-t440p/)**
|
to buy with Libreboot preinstalled](https://minifree.org/product/libreboot-t440p/)**
|
||||||
- **Lenovo ThinkPad W541 - Also [available to
|
- **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
|
The second flash can be done by simply following the general internal flashing
|
||||||
guide further down on this page.
|
guide further down on this page.
|
||||||
|
|
||||||
|
ThinkPad T480/T480S (vendor BIOS)
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
See:
|
||||||
|
|
||||||
|
* [ThinkPad T480/T480S](t480.md)
|
||||||
|
|
||||||
Thinkpad T440p/W541 (vendor BIOS)
|
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