Lenovo ThinkPad P15 Gen 1

This article or section does not follow the
Laptop page guidelines
.
Reason:
No function keys section (Discuss in
Talk:Lenovo ThinkPad P15 Gen 1
)
Hardware
PCI/USB ID
Working?
Touchpad
Yes
Trackpoint
Yes
Keyboard
Yes
GPU (NVIDIA)
10de:1fb9
Yes
GPU (Intel)
8086:9bc4
Yes
Webcam
04f2:b6be
13d3:56ff
Yes
Ethernet
8086:06f0
Yes
Bluetooth
8087:0026
Yes
SD-card reader
10ec:525a
Yes
Audio
8086:06c8
Yes
Wi-Fi
8086:06f0
Yes
Fingerprint reader
06cb:00bd
Yes
Discrete GPU
This model uses
PRIME
for combining the integrated and the dedicated GPU. As the external graphic ports are wired to the discrete GPU, drivers for the discrete GPU need to be present in order to use them. However, no special X.org configuration should be necessary, as
xrandr
should detect the ports automatically. If not, follow the instructions in
PRIME#Reverse PRIME
.
Note
Disabling the built-in screen can lead to severely degraded graphics performance on external screens (around 2 FPS). This is probably caused by the NVIDIA GPU shutting down, though not further investigated. A workaround that produces the desired result is to set the screen brightness to 0%, or if increased power usage is not a concern, disabling hybrid graphics in the BIOS.
Disabling discrete GPU
The built in GPU can be disabled and re-enabled on the fly. This can significantly reduce power consumption and increase battery life up to a factor of 5.
Using bbswitch
Note that with this method, nouveau module must be completely unloaded to use bbswitch to disable the GPU. So it does not really allow for on the fly enable/disable when using a GUI.
First, in the UEFI settings, ensure the iGPU is enabled, in case you have disabled it earlier.
Then, boot Linux. Uninstall the nvidia and nvidia-open drivers. Reboot into nouveau. Next, if you have setup kms hook in mkinitcpio, remove that so that nouveau module isn't loaded early. Then, blacklist nouveau, and reboot the laptop. Then use
bbswitch
to disable the dGPU.
Using acpi_call
This method is not recommended since it results in a hard freeze of the system which needs to be forcefully powered off using the power button. Use bbswitch method instead which does work reliably.
See
Hybrid graphics#Using acpi_call
, the specific ACPI call for this device is
\_SB.PCI0.PEG0.PEGP._OFF
.
GPU power consumption
With the nvidia proprietary drivers, the laptop's idle power consumption is pretty high at 16-17W.
With the nouveau drivers, the laptop idle power consumption drops all the way to 5W, or even less, resulting in significantly better battery life.
If you don't need to use the NVIDIA dGPU, using nouveau may be the better option.
Note that the HDMI port and Thunderbolt port display output will only work through the NVIDIA dGPU.
Fan control
The default operation of fans is noisy, as they are basically at medium power all the time. The
thinkfan
AUR
program can be used to create a quieter operation, while retaining reasonable temperatures.
Here is an example
/etc/thinkfan.conf
configuration:
/etc/thinkfan.conf
sensors:
  # NVIDIA GPU
  - nvml: 01:00.0

  # acpitz
  # crit = 128°C
  - hwmon: /sys/class/hwmon
    name: acpitz
    indices: [1]
    correction: [0]

  # pch_cometlake
  - hwmon: /sys/devices/virtual/thermal/thermal_zone7
    name: pch_cometlake
    indices: [1]
    correction: [0]

  # nvme
  # high = 85°C
  - hwmon: /sys/devices/pci0000:00/0000:00:1b.0/0000:02:00.0/hwmon
    name: nvme
    indices: [2, 3]
    correction: [0, 0]

  # nvme
  # high = 85°C
  - hwmon: /sys/devices/pci0000:00/0000:00:1d.0/0000:55:00.0/hwmon
    name: nvme
    indices: [2, 3]
    correction: [0, 0]

  # coretemp
  # high = 100°C, crit = 100°C.
  - hwmon: /sys/devices/platform/coretemp.0/hwmon
    name: coretemp
    indices: [1, 2, 3, 4, 5, 6, 7, 8, 9]
    correction: [0, 0, 0, 0, 0, 0, 0, 0, 0]

  # thinkpad
  - hwmon: /sys/devices/platform/thinkpad_hwmon/hwmon
    name: thinkpad
    indices: [1, 2, 3, 4, 5, 6]
    correction: [0, 0, 0, 0, 0, 0]

  # thinkpad
  - hwmon: /sys/devices/platform/thinkpad_hwmon/hwmon
    name: thinkpad
    indices: [7]
    correction: [0]

  # thinkpad
  - hwmon: /sys/devices/platform/thinkpad_hwmon/hwmon
    name: thinkpad
    optional: true
    indices: [8]
    correction: [0]

  # iwlwifi_1
  - hwmon: /sys/class/hwmon
    name: iwlwifi_1
    optional: true
    indices: [1]
    correction: [0]

fans:
  - tpacpi: /proc/acpi/ibm/fan

levels:
  - [0, 0, 60]
  - [2, 60, 65]
  - [3, 65, 70]
  - [5, 70, 75]
  - [6, 75, 80]
  - [7, 80, 85]
  - ["level disengaged", 85, 255]
Enabling Turbo boost
By default, the CPU power governor does not allow CPU frequencies to reach turbo boost speeds. This can be fixed via, for instance,
cpupower-gui
AUR
.
This can be changed by modifying the file
/etc/cpupower_gui.conf
:
/etc/cpupower_gui.conf
[Profile]
#This setting was: profile = Balanced
profile = Performance
Then
start/enable
cpupower-gui.service
.
Firmware
This Device has
fwupd
support.
Problems with s2idle/S0ix sleep mode
While s2idle/S0ix is supported by the hardware, it seems to assume that the laptop is only suspended by closing the lid. If you suspend using "systemctl suspend" or through a GUI menu, the laptop can't be woken up again using the keyboard, power button etc. and only closing and opening the lid wakes it up.
It is unclear if this is a Linux kernel/userspace bug, or a bug in the laptop firmware. Either way, it is buggy behaviour. It's recommended to use S3 suspend for now for more predictable behaviour.