Lenovo ThinkPad P52 - ArchWiki

Jump to content

# Lenovo ThinkPad P52

From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: The hardware table needs IDs added and a function keys table is missing (Discuss in Talk:Lenovo ThinkPad P52)

Hardware | PCI/USB ID | Working?
--- | --- | ---
GPU (Intel) |  | Yes
GPU (Nvidia) |  | Yes
Wireless |  | Yes
Bluetooth | `8087:0aaa` | Yes
Audio | `10de:0fb9` | Yes
Touchpad |  | Yes
Webcam | `5986:2113` | Yes
Card reader | `10ec:525a` | Yes
Fingerprint reader | `06cb:009a` | No

The Lenovo P52 is a quad or hex core Intel 8th generation Laptop.

## Pre-Installation

Arch on a Lenovo P52 is an amazing combination.

Before you begin: There are some possible "BIOS BRICKING" settings. The settings are not directly related to installing Arch, but most Arch users will make configuration changes in the same areas where these settings can be modified. So I'm offering this warning here.

Make sure to update your BIOS to V1.17 or later current is v1.24 as of March 2019. Earlier versions of the BIOS may become inoperable if you select certain settings:

1) Hybrid vs discrete graphics - https://forums.lenovo.com/t5/ThinkPad-P-and-W-Series-Mobile/P52-won-t-start-after-change-to-only-discrete-graphic-card/m-p/4265065

2) Thunderbolt 3 Support - https://forums.lenovo.com/t5/ThinkPad-P-and-W-Series-Mobile/Lenovo-P52-bricked-by-selecting-BIOS-thunderbolt-support-for/td-p/4207538?page=12

Note: You can update the BIOS using the bootable (CD) update option from Lenovo, or just update the BIOS using the pre-packaged Windows installation and software and then continue with Arch installation once the BIOS is updated.

## Graphics

This laptop has its external display ports directly wired to the NVIDIA chip. In loose terms this means that the dedicated GPU must be enabled in order for external displays to be used. Luckily, it is possible to do dynamic switching between the integrated and dedicated graphics, but this is only possible by using the Intel DDX driver xf86-video-intel as opposed to modesetting.

The laptop can be used in one of two modes: Hybrid Graphics, or Dedicated Graphics only.

In order to use the integrated Intel UHD 630 GPU (as part of Hybrid Graphics) you need to add the `i915` module to your `initramfs` by adding it as a module in your mkinitcpio. This is done by setting the following on `/etc/mkinitcpio.conf`:

    /etc/mkinitcpio.conf

    ...
    MODULES=(i915)

Failure to add the above will leave you stuck when trying to load the `initramfs` and your system will not be able to boot.

It might be possible to make do without the module above by using the `Dedicated Graphics` only (this can be done by changing the setting in UEFI).

### Proprietary driver with bumblebee

With this setup the integrated GPU is used by default but some applications can be rendered on the discrete GPU with the `optirun` or `primusrun` launchers. See Bumblebee for detailed instructions. The lack of proper v-sync support means that with this method applications rendered on the discrete GPU exhibit tearing. There is also some overhead introduced as a result of moving data inefficiently between the discrete and integrated GPUs, but the Nvidia GPU performs much better than it does with Nouveau.

To get this working you will need `bumblebee`, `bbswitch`, `nvidia` and `xf86-video-intel`.

Then set the following configuration files.

    /etc/X11/xorg.conf.d/intel.conf

    Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "intel"
        Inactive       "nvidia"
    EndSection

    Section "Monitor"
        Identifier     "Monitor0"
        Option         "DPMS"
    EndSection

    Section "Device"
        Identifier     "nvidia"
        Driver         "dummy"
        BusID          "PCI:1:0:0"
    EndSection

    Section "Screen"
        Identifier     "nvidia"
        Device         "nvidia"
    EndSection

    Section "Screen"
        Identifier     "intel"
        Device         "intel"
        Monitor        "Monitor0"
    EndSection

    Section "Device"
        Identifier  "intel"
        Driver      "intel"
        Option      "TearFree" "true"
        Option      "DRI" "3"
        BusId       "PCI:0:2:0"
    EndSection

(you probably already have one of these so adjust/add as needed - the dummy device at the end is essential!!):

    /etc/bumblebee/xorg.conf.nvidia

    Section "ServerLayout"
        Identifier  "Layout0"
        Option      "AutoAddDevices" "false"
        Option      "AutoAddGPU" "false"

        # Inventions
        Screen      0 "nvidia"
        Inactive    "intel"
    EndSection

    Section "Device"
        Identifier  "DiscreteNvidia"
        Driver      "nvidia"
        VendorName  "NVIDIA Corporation"
        BusID "PCI:1:0:0"
        Option "ProbeAllGpus" "false"

        Option "NoLogo" "true"
        Option "UseEDID" "true"
        Option "AllowEmptyInitialConfiguration"
    EndSection

    Section "Device"
        Identifier "intel"
        Driver "dummy"
        BusID "PCI:0:2:0"
    EndSection

    Section "Screen"
        Identifier "nvidia"
        Device "nvidia"
    EndSection

At this stage, restart your machine. Then you should be able to run applications on the GPU as you normally would with `optirun`, e.g., `optirun glxgears`. If you want to use the external displays you need to keep your GPU on by running an app on `optirun` and then running `intel-virtual-output -f` (this will stay running and binds the external display ports to virtual outputs that you can use). At this stage you should be able to see and use the external ports.

## Touchpad

Every once in a while Linux kernel upgrades will cause issues where the Touchpad and Trackpoint stop working. Booting with kernel parameter `psmouse.elantech_smbus=0` seems to fix it. FS#59714#comment174924

Category:

- Lenovo

Hidden category:

- Pages or sections flagged with Template:Laptop style