diff --git a/site/docs/install/index.md b/site/docs/install/index.md index 95784cb..6c141c3 100644 --- a/site/docs/install/index.md +++ b/site/docs/install/index.md @@ -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) --------------------- diff --git a/site/docs/install/t480.md b/site/docs/install/t480.md new file mode 100644 index 0000000..da33e57 --- /dev/null +++ b/site/docs/install/t480.md @@ -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)** + +
+
+ThinkPad T480 +
+ +| ***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 | +
+ +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:\ + + +...and information about the T480S can be found here:\ + + +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: + + + +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: + +ThinkPad T480 NOR flash (thunderbolt firmware) + +This page shows how to do that: + + + +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: + +ThinkPad T480 underside chassis + +Remove all screws, and you can gently pry off the lower chassis and remove, +which then allows you to see the inner mainboard: + +ThinkPad T480 PCB + +**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):** + +ThinkPad T480 internal battery + +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: + +ThinkPad T480 NOR flash (system firmware) + +There is another flash, for the Thunderbolt firmware, which you are to briefly +ignore; we'll cover it later: + +ThinkPad T480 NOR flash (thunderbolt firmware) + +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. +