Lenovo ThinkPad T480

Lenovo ThinkPad T480 (+libreboot)

NOTE: All of this has been tested on a Vanilla QubesOS 4.2.3 (XFCE + latest updates) install with LibreBoot 20241209 being the firmware.

I tested most of this functionality on another distro before to rule out hardware damages or QubesOS-specific stuff. So when I’m saying “XYZ is not working” I do not mean “it’s not working on qubes/dom0/xen/…” but “It’s not working on ‘regular’ GNU/Linux, but it’s ALSO not working on QubesOS 4.2.3”

When I say that “libreboot is claiming this and that”, I’m referring to this.

Remarks:

Working:

  • closing the lid is detected
  • suspend seems to be working
  • Function keys (to my surprise, as they shouldn’t according to libreboot)
  • Wifi
  • internal keyboard + trackpad + trackpoint
  • USB-Ports
  • Ethernet
  • External speakers
  • Integrated webcam

Not working / unkown:

  • headphone jack – expected as stated in the patch notes.
  • xen-acpi-processor – the problem mentioned in this thread.
  • dGPU (I have a model with iGPU only)
  • Thunderbolt / USB-C
  • TPM /AEM → libreboot has the ME region cleaned
  • HDMI (not tested)

HCL Report:

---
layout:
  'hcl'
type:
  'Laptop'
hvm:
  'yes'
iommu:
  'yes'
slat:
  'yes'
tpm:
  'unknown'
remap:
  'yes'
brand: |
  LENOVO
model: |
  T480
bios: |
  20241206rev8
cpu: |
  Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
cpu-short: |
  # i5-8350U ?
  FIXME
chipset: |
  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5914] (rev 08)
chipset-short: |
  FIXME
gpu: |
  Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])
  
gpu-short: |
  # UHD 620 ?
  FIXME
network: |
  Intel Corporation Ethernet Connection (4) I219-LM [8086:15d7] (rev 21)
  
  Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)
memory: |
  24489
scsi: |

usb: |
  1
certified:
  'no'
versions:
  - works:
      'partial'
    qubes: |
      R4.2.3
    xen: |
      4.17.5
    kernel: |
      6.6.68-1
    remark: |
      T480+Libreboot
    credit: |
      @q4u
    link: |
      FIXLINK

Note

If there’s anything amiss, you’ve encountered mistakes I’ve made or you have some other improvements/ suggestions, PLS! let me know!
Should there be stuff that’s easy for me but vital for you to test (like the HDMI port), also let me know, I’ll try to make it possible if it’s elementary to you.

PS

I’m only a libreboot user by coincidence / lack of skill, as I tried Máté Kukris’ exploit by hand for some time and didn’t get it to boot so as a last resort I took the libreboot path.
I’ll stay on that firmware for a week or so but if there’s not much resonance I’ll be off building, flashing and running his patches from gerrit and do the coreboot thing myself.

1 Like
1 Like

thx. that’s insightful.

I just wondered about this one, bc before the libreboot-thingy/ w/ stock I once had a live distro running and it showed me 8 cores if I’m not utterly mistaking.

Since I tried another distro before, I thought this would be a libreboot problem/feature not a QubesOS specific sec thing.
But might be the other distro implementing things in the same way as QubesOS does.
It just stroke me as odd as usually on Lenovo XX30 T440p W54X it never happened to me before.

Qubes disables SMT (hyperthreading) in kernel by default but Libreboot also does this (as far as 8 revision is concerned). It can be changed when building libreboot rom from source by modifying config for the motherboard.

Lenovo ThinkPad T480 + Libreboot

Tested on 8th revision (latest as writing this post). Installed without problems but I didn’t hear FAN throughout entire installation :smiley: (CPU sensors are not detected).

Remarks:

Working:

  • suspend/resume works
  • closing lid is detected
  • trackpoint, trackpad, keyboard works
  • Wifi
  • Ethernet
  • USB ports
  • microSD port
  • internal speakers, microphone
  • function keys (keyboard backlight, setting brightness) works. It didn’t work in first release but it was fixed before 8th revision
  • Screen
  • FAN

Not tested

  • Headphone jack
  • HDMI
  • Bluetooth
  • Fingerprint reader
  • Smart card reader
  • external display
  • external speakers/microphone
  • TPM - it’s disabled by default due to some bugged SeaBIOS drivers AFAIK
  • Thunderbolt
  • dGPU

Not working

  • xen-acpi-processor is not being loaded automatically and didn’t figure out how to do it manually
  • CPU sensors are not detected so I can’t base some FAN speeds on that. (but they are detected on Debian)
  • Checking CPU frequency by xenpm doesn’t work and xenpm performance settings do nothing too, so I can’t manage some performance settings like modifying energy-perf setting to save some battery. So AFAIK, you can’t increase CPU performance in xen easily for now.

Working but a bit broken

  • trackpoint is a bit decalibrated (?) comparing to Qubes install without libreboot (I needed to use 4.0 sensitivity as I previously used 5.0 to match speed)
  • trackpad seems to have a bit less accurate movement detection (like it doesn’t always follow my finger correctly comparing to using it on this machine before librebooting)
  • CPU performance is a bit worse that before librebooting but still as fast for me to not worry about too much
  • I noticed some screen tearing when moving windows with high CPU usage in dom0, independent of what which display driver I currently use. I didn’t notice it before librebooting.
  • As said above, FAN is working but it looks rather on some temperature sensor on the motherboard than on CPU sensors which are not detected. I don’t think if correctly but I can guess that in some cases CPU might work on higher temperatures without FAN turning on (like while installing Qubes) so take it into consideration.

HCL Report:

---
layout:
  'hcl'
type:
  'Laptop'
hvm:
  'yes'
iommu:
  'yes'
slat:
  'yes'
tpm:
  'unknown'
remap:
  'yes'
brand: |
  LENOVO
model: |
  T480
bios: |
  20241206rev8
cpu: |
  Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
cpu-short: |
  FIXME
chipset: |
  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5914] (rev 08)
chipset-short: |
  FIXME
gpu: |
  Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])
  
gpu-short: |
  FIXME
network: |
  Intel Corporation Ethernet Connection (4) I219-LM (rev 21)
  
  Intel Corporation Wireless 8265 / 8275 (rev 78)
memory: |
  32524
scsi: |

usb: |
  1
certified:
  'no'
versions:
  - works:
      'FIXME:yes|no|partial'
    qubes: |
      R4.2.3
    xen: |
      4.17.5
    kernel: |
      6.12.9-1
    remark: |
      T480 but librebooted ;]
    credit: |
      @preeky72
    link: |
      FIXLINK
4 Likes
2 Likes
2 Likes
---
layout:
  'hcl'
type:
  'Laptop'
hvm:
  'yes'
iommu:
  'yes'
slat:
  'yes'
tpm:
  '2.0'
remap:
  'yes'
brand: |
  LENOVO
model: |
  t480-hotp-maximized
bios: |
  Heads-v0.2.0-2704-g300df21
cpu: |
  Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
cpu-short: |
  FIXME
chipset: |
  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5914] (rev 08)
chipset-short: |
  FIXME
gpu: |
  Intel Corporation UHD Graphics 620 [8086:5917] (rev 07) (prog-if 00 [VGA controller])
  
gpu-short: |
  FIXME
network: |
  Intel Corporation Ethernet Connection (4) I219-LM [8086:15d7] (rev 21)
  
  Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)
memory: |
  65449
scsi: |

usb: |
  1
certified:
  'no'
versions:
  - works:
      'FIXME:yes|no|partial'
    qubes: |
      R4.2.4
    xen: |
      4.17.5
    kernel: |
      6.12.11-1
    remark: |
      FIXME
    credit: |
      FIXAUTHOR
    link: |
      FIXLINK

Qubes-HCL-LENOVO-t480_hotp_maximized-20250311-191652.yml (943 Bytes)

Hot news from Heads! Please welcome the new board under the Heads master branch GitHub - linuxboot/heads: A minimal Linux that runs as a coreboot or LinuxBoot ROM payload to provide a secure, flexible boot environment for laptops, workstations and servers. T480. The Lenovo ThinkPad T480 is arguably the best last-generation ThinkPad.

Performance is smooth on Qubes, thermal control works well, and the board is quiet. I love it! Fn brightness keys work.

Here are the advantages:

  • In good condition, you can buy one for $200–$300, with refurbished options available on popular selling platforms. In many European countries, these come with a one-year warranty and a 14-day return policy, making it a low-risk investment.
  • Supports up to 64GB of DDR4 RAM, which is beneficial for Qubes users. Upgrading to 2×32GB SODIMM DDR4 costs around $100.
  • Low power consumption—draws only 15W and features both an internal and an external battery, last can be swapped while powered on.
  • USB-C Port: A great feature to have. The Thunderbolt 3 port is not yet supported, as work is still in progress under coreboot (https://review.coreboot.org/c/coreboot/+/83274)
  • Decent IPS display with 1920x1080 resolution, significant improvement over older models.
  • Accessing and flashing the BIOS chip on a T-series machine has never been easier—only six screws need to be removed Lenovo T480 Maximized | Heads - Wiki

Known issues:

  • The headphone jack needs tweacking as it does not automatically recognize the plugged in headphones. One need to go to the audio-mixer>output devices>select Headphones unplugged > configuration Pro Audio.

  • No Fan RPM Displayed: The fan speed is not shown. I haven’t troubleshot ACPI, since the system maintains stable operating temperatures of around 45–50°C under normal usage, as long as you’re not compiling anything heavy. The fan is barely noticeable.

  • dGPU is problematic and disabled in Heads on most platforms anyway

Disclaimer:

Acknowledgments:
coreboot port - Mate Kukri
Heads port was a community effort led by @tlaurion and @gaspar-ilom. Almost 200 commits and 400 messages. As you can imagine it was a lot of fun and learning. Huge thanks to everybody who participated on github: @akunterkontrolle, @notgivenby,@MattClifton76, @doritos4mlady, @mblanqui, @rafaelsgirao @JonathonHall-Purism

Heads is free as free beer.
In the spirit of open-source software, free knowledge, and communal goodwill, support the Heads and the open source development Insurgo Initiative - Open Collective and of course Qubes.
The supply of free beer cannot be infinite. If everyone takes without giving back, at some point, the keg runs dry, and so does the goodwill.
If you enjoy free beer, contribute in some form—whether by bringing code, docs, or financial support. The cycle must be maintained to keep the ecosystem alive. No one wants to be the last guest realizing the fridge is empty and no one restocked it. Together, it is possible to keep the free beer spirit alive—open, shared, and always refreshing. Cheers!

5 Likes
1 Like