Lenovo ThinkPad E495

The Lenovo ThinkPad E495 (20NE) is a 9th generation ThinkPad E series laptop from Lenovo. It has been discontinued, and its support is scheduled to end on 2025-11-30.

The specific laptop that this page is about is a 20NE0001US, manufactured and purchased in 2020.

Hardware

The CPU is an AMD Ryzen 3700U, which is a 3rd generation Ryzen "APU" based on the Zen+ (Picasso) architecture. It has 4 cores, with 2 threads on each, and supports 2 channels of DDR4 RAM up to 2400 MHz. I haven't run into the AMD segfault bug, even when using kill-ryzen.sh to compile GCC 8.1 for about 5 hours on all 8 threads. (All the cores were at 3 GHz for the duration of the test, and the CPU temperature maxed out at 78°C with the fan at 4700 RPM.)

The motherboard has two 260-pin SO-DIMM slots, and allows for a total of 32 GB of RAM, but 3 GB are reserved for graphics. It has an M.2 slot that takes a 2280 NVMe drive (with a bracket to fit a 2242 one), and a SATA connector with room for a 7 mm 2.5" drive.

The screen is 1920x1080, which amounts to about 157 PPI.

Firmware

The laptop was sold with UEFI firmware version 1.15, but this version was already pulled from the Lenovo downloads page by the time I got it. Updating to 1.18 was straightforward using the geteltorito script.

The Ctrl and Fn keys can be swapped in the UEFI settings.

The firmware doesn't seem to support legacy (CSM) boot from a GPT disk.

Linux support

Headphones disable microphone

When headphones are plugged into the audio combo jack, the onboard microphone is automatically muted, and there appears to be no way to unmute it. Because this does not happen in Windows, it might be an issue with snd_hda_codec_conexant. (Most likely the quirks of this particular hardware configuration haven't been determined yet.)

Tearing in X

Very noticeable tearing occurs when quickly switching between white and black in X.Org. This can be solved by enabling the TearFree option for xf86-video-amdgpu.

All the beep, all the time

Blacklisting the pcspkr module stops the laptop from beeping.

Battery charge limit

The thinkpad_acpi module provides two files to control the battery charge limit:

Charging won't start until the battery is drained below the percentage in the former, and the battery won't be charged more than the percentage in the latter. The values are retained between boots, so they only need to be set once.

CPU vulnerability mitigations

From /sys/devices/system/cpu/vulnerabilities/:

Name State
itlb_multihit Not affected
l1tf Not affected
mds Not affected
meltdown Not affected
spec_store_bypass Mitigation: Speculative Store Bypass disabled via prctl and seccomp
spectre_v1 Mitigation: usercopy
spectre_v2 Mitigation: Full AMD retpoline, IBPB: conditional, STIBP: disabled, RSB filling
srbds Not affected
tsx_async_abort Not affected

Related laptops

Diagnostic output

lstopo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
┌────────────────────────────────────────────────────────────────────┐
│ Machine (29GB total)                                               │
│                                                                    │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ Package L#0                                                    │ │
│ │                                                                │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ NUMANode L#0 P#0 (29GB)                                    │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │                                                                │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ L3 (4096KB)                                                │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │                                                                │ │
│ │ ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────┐ │ │
│ │ │ L2 (512KB) │  │ L2 (512KB) │  │ L2 (512KB) │  │ L2 (512KB) │ │ │
│ │ └────────────┘  └────────────┘  └────────────┘  └────────────┘ │ │
│ │                                                                │ │
│ │ ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────┐ │ │
│ │ │ L1d (32KB) │  │ L1d (32KB) │  │ L1d (32KB) │  │ L1d (32KB) │ │ │
│ │ └────────────┘  └────────────┘  └────────────┘  └────────────┘ │ │
│ │                                                                │ │
│ │ ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────┐ │ │
│ │ │ L1i (64KB) │  │ L1i (64KB) │  │ L1i (64KB) │  │ L1i (64KB) │ │ │
│ │ └────────────┘  └────────────┘  └────────────┘  └────────────┘ │ │
│ │                                                                │ │
│ │ ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌────────────┐ │ │
│ │ │ Core L#0   │  │ Core L#1   │  │ Core L#2   │  │ Core L#3   │ │ │
│ │ │            │  │            │  │            │  │            │ │ │
│ │ │ ┌────────┐ │  │ ┌────────┐ │  │ ┌────────┐ │  │ ┌────────┐ │ │ │
│ │ │ │ PU L#0 │ │  │ │ PU L#2 │ │  │ │ PU L#4 │ │  │ │ PU L#6 │ │ │ │
│ │ │ │        │ │  │ │        │ │  │ │        │ │  │ │        │ │ │ │
│ │ │ │  P#0   │ │  │ │  P#2   │ │  │ │  P#4   │ │  │ │  P#6   │ │ │ │
│ │ │ └────────┘ │  │ └────────┘ │  │ └────────┘ │  │ └────────┘ │ │ │
│ │ │ ┌────────┐ │  │ ┌────────┐ │  │ ┌────────┐ │  │ ┌────────┐ │ │ │
│ │ │ │ PU L#1 │ │  │ │ PU L#3 │ │  │ │ PU L#5 │ │  │ │ PU L#7 │ │ │ │
│ │ │ │        │ │  │ │        │ │  │ │        │ │  │ │        │ │ │ │
│ │ │ │  P#1   │ │  │ │  P#3   │ │  │ │  P#5   │ │  │ │  P#7   │ │ │ │
│ │ │ └────────┘ │  │ └────────┘ │  │ └────────┘ │  │ └────────┘ │ │ │
│ │ └────────────┘  └────────────┘  └────────────┘  └────────────┘ │ │
│ └────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘