Lenovo ThinkPad X395

From ArchWiki
Jump to navigation Jump to search

The Lenovo ThinkPad X395 is a 13,3 inch ultraportable based on the AMD Ryzen Pro family of processors. As of kernel Linux 5.6.11-arch1-1, all hardware components available for testing work out-of-the-box.

# dmidecode -t system
Manufacturer: LENOVO
Product Name: 20NLCTO1WW
Version: ThinkPad X395
...
SKU Number: LENOVO_MT_20NL_BU_Think_FM_ThinkPad X395
Family: ThinkPad X395
Component Functioning
Microcode Yes
AMDGPU Yes
Webcam Yes
Keyboard backlight Yes
Touchpad Yes
TrackPoint Yes
Wireless Yes
Ethernet Yes
Bluetooth Yes
Audio Yes
Fingerprint Reader Not tested
MicroSD Card Reader Not tested

BIOS

Warning: A failed BIOS firmware update can render your motherboard inoperable; proceed at your own risk

BIOS firmware updates are provided directly by Lenovo, available in the form of an OS-agnostic BIOS Update Bootable ISO image; to update you BIOS firmware, follow the instructions in the README file therein. In particular, notice that you do not need to follow any of the instructions at Flashing BIOS from Linux.

CPU and GPU

The Lenovo ThinkPad X395 contains an AMD Ryzen CPU and a dedicated AMD Radeon Vega Mobile GPU. You can retrieve the precise models as follows:

$ lscpu | awk -F ": *" '/Model name/{print $NF}'
AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
$ lspci | awk -F ": *" '/VGA compatible controller/{print $NF}'
Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev d2)

CPU

It is strongly recommended to enable proprietary microcode updates, see Ryzen and Microcode for details. Successful enabling of microcode updates can be verified as follows:

$ dmesg | grep microcode
[    1.189483] microcode: CPU0: patch_level=0x08108102
[    1.189491] microcode: CPU1: patch_level=0x08108102
[    1.189511] microcode: CPU2: patch_level=0x08108102
[    1.189518] microcode: CPU3: patch_level=0x08108102
[    1.189521] microcode: CPU4: patch_level=0x08108102
[    1.189528] microcode: CPU5: patch_level=0x08108102
[    1.189538] microcode: CPU6: patch_level=0x08108102
[    1.189545] microcode: CPU7: patch_level=0x08108102
[    1.189581] microcode: Microcode Update Driver: v2.2.

Example raw output of lscpu:

$ lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   43 bits physical, 48 bits virtual
CPU(s):                          8
On-line CPU(s) list:             0-7
Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       AuthenticAMD
CPU family:                      23
Model:                           24
Model name:                      AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
Stepping:                        1
Frequency boost:                 enabled
CPU MHz:                         1310.488
CPU max MHz:                     2100.0000
CPU min MHz:                     1400.0000
BogoMIPS:                        4193.61
Virtualization:                  AMD-V
L1d cache:                       128 KiB
L1i cache:                       256 KiB
L2 cache:                        2 MiB
L3 cache:                        4 MiB
NUMA node0 CPU(s):               0-7
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full AMD retpoline, IBPB conditional, STIBP disabled, RSB filling
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxs
                                 r_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fm
                                 a cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignss
                                 e 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ib
                                 pb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsa
                                 veerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vms
                                 ave_vmload vgif overflow_recov succor smca

GPU

Follow the instructions at AMDGPU#Installation and Hardware video acceleration#ATI/AMD. If you installed the package libva-utils, you can verify that hardware video acceleration is enabled as follows:

$ vainfo
vainfo: VA-API version: 1.7 (libva 2.7.1)
vainfo: Driver version: Mesa Gallium driver 20.0.6 for AMD RAVEN (DRM 3.36.0, 5.6.11-arch1-1, LLVM 10.0.0)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

Example raw output of glxinfo:

$ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: X.Org (0x1002)
    Device: AMD RAVEN (DRM 3.36.0, 5.6.11-arch1-1, LLVM 10.0.0) (0x15d8)
    Version: 20.0.6
    Accelerated: yes
    Video memory: 2048MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 1982 MB, largest block: 1982 MB
    VBO free aux. memory - total: 2890 MB, largest block: 2890 MB
    Texture free memory - total: 1982 MB, largest block: 1982 MB
    Texture free aux. memory - total: 2890 MB, largest block: 2890 MB
    Renderbuffer free memory - total: 1982 MB, largest block: 1982 MB
    Renderbuffer free aux. memory - total: 2890 MB, largest block: 2890 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 2048 MB
    Total available memory: 5120 MB
    Currently available dedicated video memory: 1982 MB
OpenGL vendor string: X.Org
OpenGL renderer string: AMD RAVEN (DRM 3.36.0, 5.6.11-arch1-1, LLVM 10.0.0)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.0.6
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.0.6
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Input devices

Follow the instructions at libinput#Installation. The list of available input devices can be retrieved as follows:

# libinput list-devices | awk '/Device/{$1=""; print $0}'
Power Button
Video Bus
Power Button
Lid Switch
Sleep Button
HD-Audio Generic HDMI/DP,pcm=3
HD-Audio Generic HDMI/DP,pcm=7
HD-Audio Generic HDMI/DP,pcm=8
Integrated Camera: Integrated C
HD-Audio Generic Mic
HD-Audio Generic Headphone
AT Translated Set 2 keyboard
ETPS/2 Elantech Touchpad
ETPS/2 Elantech TrackPoint
ThinkPad Extra Buttons

Power button

Works out-of-the-box.

Lid switch and resume from suspension

Works out-of-the-box.

Integrated webcam

The Webcam works out-of-the-box.

$ lsusb
...
Bus 004 Device 004: ID 04f2:b6d9 Chicony Electronics Co., Ltd
...

Keyboard

Keyboard backlight works out-of-the-box and so do the media keys (with the exception of the XF86Keyboard key which does not seem to send any event at all).

ETPS/2 Elantech Touchpad

The touchpad works out-of-the-box and can be configured with xorg-xinput, see libinput for details. For example, the following commands enable tapping, natural scrolling, and middle button emulation (three-finger tap), respectively:

$ xinput set-prop 'ETPS/2 Elantech Touchpad' 'libinput Tapping Enabled' 1
$ xinput set-prop 'ETPS/2 Elantech Touchpad' 'libinput Natural Scrolling Enabled' 1
$ xinput set-prop 'ETPS/2 Elantech Touchpad' 'libinput Middle Emulation Enabled' 1

ETPS/2 Elantech TrackPoint

The signature ThinkPad TrackPoint; works out-of-the-box, see TrackPoint for details.

ThinkPad Extra Buttons

These are the three physical buttons above the touchpad, designed to be used in conjunction with the TrackPoint; they work out-of-the-box.

Network and connectivity

Wireless controller

The wireless controller works out-of-the-box, see Network configuration/Wireless for details.

$ lspci | awk -F ": *" '/Network controller/{print $NF}'
Intel Corporation Wireless-AC 9260

Ethernet controller

Works out-of-the-box.

$ lspci | awk -F ": *" '/Ethernet controller/{print $NF}'
Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

Bluetooth controller

Works out-of-the-box, see Bluetooth for details.

$ lsusb
...
Bus 004 Device 002: ID 8087:0025 Intel Corp. 
...

Audio

Works out-of-the-box, see Sound system for details.

$ lspci | grep Audio | awk -F ": *" '{$1=$2="";print $0}'
Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller
Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor
Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller

Storage

$ lspci | awk -F ": *" '/Non-Volatile memory controller/{$1=$2="";print $0}'
Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

Battery and power management

No battery issues have been experienced, see Power management and TLP for further information.

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               SMP
  model:                5B10W139
  serial:               1404
  power supply:         yes
  updated:              Sat 09 May 2020 16:13:59 CEST (37 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              49 Wh
    energy-empty:        0 Wh
    energy-full:         49 Wh
    energy-full-design:  48.01 Wh
    energy-rate:         2.512 W
    voltage:             13.02 V
    percentage:          100%
    capacity:            100%
    technology:          lithium-polymer
    icon-name:          'battery-full-charging-symbolic'
  History (charge):
    1589033638	100.000	charging
  History (rate):
    1589033638	2.512	charging
    1589033581	2.630	charging

TLP prevents plugged in USB devides from working when running on battery. This can be fixed by blacklisting power management of PCI device 05:00.3

$ echo 'RUNTIME_PM_BLACKLIST="05:00.3"' | sudo tee /etc/tlp.d/01-usb.conf
RUNTIME_PM_BLACKLIST="05:00.3"

Raw list(s) of hardware components

See Ubuntu on Lenovo ThinkPad X395 for a complementary list of hardware components.

$ lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:01.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:01.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:01.7 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 7
01:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29)
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0e)
03:00.1 Serial controller: Realtek Semiconductor Co., Ltd. Device 816a (rev 0e)
03:00.2 Serial controller: Realtek Semiconductor Co., Ltd. Device 816b (rev 0e)
03:00.3 IPMI Interface: Realtek Semiconductor Co., Ltd. Device 816c (rev 0e)
03:00.4 USB controller: Realtek Semiconductor Co., Ltd. Device 816d (rev 0e)
04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader (rev 01)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev d2)
05:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller
05:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
05:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1
05:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1
05:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor
05:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller
$ lsusb
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 004: ID 04f2:b6d9 Chicony Electronics Co., Ltd 
Bus 004 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 004 Device 002: ID 8087:0025 Intel Corp. 
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub