Cooling down ThinkPad P1 gen 5

P1 heats up considerably, even when running on battery. This makes it unpleasant to hold on your lap, puts stress on NVME drives, and even causes the keyboard keys to get hot.

Power off discrete GPU

It’s impossible to turn off Nvidia GPU through BIOS. Energy consumption of discrete GPU can be monitored with:

BASH
nvidia-smi

In reality the above value (4W on battery, 5W on AC in desktop environment) seems to be underestimation. Powering off the dGPU using steps below changes energy consumption reported by powertop from 24W before to 16W after on battery.

  1. Make sure kernel driver for Intel GPU is compiled (DRM_I915).
  1. Remove /etc/modprobe.d/nvidia.conf if present.
  1. Blacklist nvidia kernel modules and configure i915 appropriately.
FILE:/etc/modprobe.d/intel.conf
blacklist nouveau
blacklist ttm
install nvidia /bin/false
install nvidia-modeset /bin/false
install nvidia-peermem /bin/false
install nvidia-drm /bin/false
install nvidia-uvm /bin/false

# Stops display from "blinking" or "flashing"
# during boot when using the intel driver.
options i915 enable_fbc=1
options i915 fastboot=1
  1. Configure xorg to use Intel device with modesetting driver (xf86-video-intel is outdated and does not suppot hardware acceleration on newer GPU models). Use lspci to find bus ID of Intel GPU.
FILE:/etc/X11/xorg.conf.d/20intel.conf
Section "Device"
  Identifier "Intel Graphics"
  Driver "modesetting"
  BusID "PCI:0:2:0"
  #Option "AccelMethod" "glamor" # default
  #Option "TearFree" "true"
EndSection
  1. Power off Nvidia PCI device on every boot using udev rules.
FILE:/etc/udev/rules.d/00-nvidia-remove.rules
# Remove NVIDIA USB xHCI Host Controller devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1"

# Remove NVIDIA USB Type-C UCSI devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1"

# Remove NVIDIA Audio devices, if present
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1"

# Remove NVIDIA VGA/3D controller devices
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1"
  1. Regenerate initramfs and reboot.
BASH
genkernel initramfs
reboot

Limit CPU/platform/integrated GPU energy usage with tlp

Active seetings can be verified using: