Lenovo ThinkPad P43s

From ArchWiki
Jump to navigation Jump to search


Device Status
Integrated Graphics Modify
Discrete Nvidia Graphics Modify
Wireless Yes¹
ALSA Yes
TrackPoint Yes
Touchpad Yes
Webcam Yes
Bluetooth Yes
Mobile internet not tested
Fingerprint Sensor No
MicroSD Reader Yes
  1. Working, but the iwlwifi driver shows errors in the kernel log. This is already fixed.

Hardware

Using kernel 5.5.10-arch1-1-ARCH and lte-kernal 5.4.26-arch1-1

Version: ThinkPad P43s
Product Name: 20RH001CGE

additional hardware information from lsusb and lspci can be found bellow:

lsusb
00:00.0 Host bridge: Intel Corporation Coffee Lake HOST and DRAM Controller (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (Whiskey Lake) (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Cannon Point-LP Thermal Controller (rev 30)
00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI Controller (rev 30)
00:14.2 RAM memory: Intel Corporation Cannon Point-LP Shared SRAM (rev 30)
00:14.3 Network controller: Intel Corporation Cannon Point-LP CNVi [Wireless-AC] (rev 30)
00:15.0 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP Serial IO I2C Controller #0 (rev 30)
00:16.0 Communication controller: Intel Corporation Cannon Point-LP MEI Controller #1 (rev 30)
00:16.3 Serial controller: Intel Corporation Cannon Point-LP Keyboard and Text (KT) Redirection (rev 30)
00:1c.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #1 (rev f0)
00:1c.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #5 (rev f0)
00:1d.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #9 (rev f0)
00:1d.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root Port #13 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 30)
00:1f.3 Audio device: Intel Corporation Cannon Point-LP High Definition Audio Controller (rev 30)
00:1f.4 SMBus: Intel Corporation Cannon Point-LP SMBus Controller (rev 30)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP SPI Controller (rev 30)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-LM (rev 30)
01:00.0 SD Host controller: Genesys Logic, Inc GL9750 SD Host Controller (rev 01)
02:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
03:00.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
03:01.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
03:02.0 PCI bridge: Intel Corporation JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] (rev 01)
04:00.0 System peripheral: Intel Corporation JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] (rev 01)
05:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:03.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:04.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
07:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)
09:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)
0b:00.0 USB controller: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] (rev 02)
3a:00.0 USB controller: Intel Corporation JHL6240 Thunderbolt 3 USB 3.1 Controller (Low Power) [Alpine Ridge LP 2016] (rev 01)
3c:00.0 3D controller: NVIDIA Corporation GP108GLM [Quadro P520] (rev a1)
3d:00.0 Non-Volatile memory controller: Intel Corporation SSD Pro 7600p/760p/E 6100p Series (rev 03)
lspci
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 010 Device 002: ID 059f:108c LaCie, Ltd Rugged USB-C
Bus 010 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 002: ID 17ef:3069 Lenovo ThinkPad TBT3 LAN
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 003: ID 046a:0092 Cherry GmbH Smart Card Reader USB
Bus 007 Device 005: ID 17ef:6047 Lenovo 
Bus 007 Device 004: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 007 Device 002: ID 03f0:2514 HP, Inc 4-port hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 002: ID 2109:0812 VIA Labs, Inc. VL812 Hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 004: ID 17ef:3066 Lenovo ThinkPad Thunderbolt 3 Dock MCU
Bus 005 Device 006: ID 24f0:0140 Lenovo ThinkPad Thunderbolt 3 Dock MCU
Bus 005 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 005 Device 003: ID 2109:2812 VIA Labs, Inc. VL812 Hub
Bus 005 Device 002: ID 17ef:306a Lenovo ThinkPad Thunderbolt 3 Dock USB Audio
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 06cb:00bd Synaptics, Inc. 
Bus 001 Device 003: ID 04f2:b681 Chicony Electronics Co., Ltd Integrated Camera
Bus 001 Device 006: ID 047f:02f7 Plantronics, Inc. Plantronics BT600
Bus 001 Device 002: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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 won't 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'll 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.

FN Keys

Most FN keys should work out of the box, but if it doesn't, bind mentioned keys to below commands:

  • F1 button: amixer set Master toggle.
  • F2 button: amixer set Master 5%-.
  • F3 button: amixer set Master 5%+.
  • F4 button: amixer set Capture toggle.

Touchpad

Touchpad is problematic. By default, if you hold the thumb over the button area, the pointer will not move. Once the system is installed, the problem disappears when using KDE, while GNOME still exhibits the issue. In GNOME, use the following to fix the problem:

$ xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Click Method Enabled' 1 0

Even after doing this, the mouse pointer still jumps around when clicking the button sometimes.

Fingerprint Sensor

The fingerprint sensor works with some recent firmware and software updates (2019-12-15). Driver development info: [1].

  1. Use fwupd to install the latest firmware for "Synaptics Prometheus Fingerprint Reader". The update might have to be done manually as the released firmware is in testing; or you could enable the testing remote in fwupd to allow automated upgrade. The relevant firmwares are Prometheus Fingerprint Reader and Prometheus Fingerprint Reader Configuration.
  2. Latest fprintd and libfprint are required. fprintd-libfprint2AUR and libfprint-gitAUR can be useful here.
  3. fprint has more details on how to setup the fingerprint for PAM authentication for example.

Known Issues

CPU throttling issue

With the BIOS Version 1.52 (this problem is known to occur on 1.52, it might still happen on other versions too), the CPU tends to throttle down to 400 MHz earlier than it should. In particular, this can be seen when using Bumblebee.

After installing BIOS Version 1.54, this problem is fixed.

Speaker noise issue

The speaker on the Lenovo Thinkpad T490 may have a high static hissing noise, which doesn't change if you lower the volume, but stops if you mute the speaker or use the headphone jack. This problem can't be fixed completely as of now. Updating to the most current BIOS version will make the speaker silent while it's not playing anything without you having to mute it all the time. But as soon as the user is playing sound, the noise will be back, clearly audible in the background.

Check the Lenovo Support Website for the newest BIOS Version.

MicroSD card reader issue

The MicroSD card reader works with the arch kernel 5.3.11-arch1-1. There have been issues with previous kernel versions.

Bluetooth

Works well with wireless headphones: no issues pairing or connecting with Blueman and PulseAudio.

Slow wakeup after suspend

After suspend the laptop takes a few second until it becomes responsive. Disallowing the access to the WWAN device in the BIOS solves this issue.

ACPI

The default /etc/acpi/handler.sh script has a check for the device that looks like this:

/etc/acpi/handler.sh
ac_adapter)
        case "$2" in
            AC|ACAD|ADP0)

This will not work, since the T490 device is called ACPI0003 which is not matched by the above check. The instructions in Acpid does mention a pattern that does work and it is recommended to use this instead.

See Also