Thinkpad x220

Thinkpad x220

305 × 206 × 20 mm, 1.3 kg

This laptop replaced my Thinkpad x120e in February 2013, mostly because the AMD E-350 processor was too slow.

Everything seems to work. I replaced the disk with a 64 GB SSD, and the stock battery with the smaller and lighter 4-cell battery. In 2015 I upgraded to a Samsung 250 GB SSD. At the end of 2018 I replaced the battery.

Summer 2019 I got a x230 that is now my main computer. I still have the x220 and use it when I'm out of the country. Most of the information here also applies to the x230.

i915

The i915 video driver became unreliable with kernel commit ea0000f0 "Roll out the helper nonblock tracking", which was first released in 4.8. This results in flip_done timeouts and tracebacks when doing mode switching. I run a 4.14 (or earlier) kernel with this commit reverted. In later kernels it's difficult to revert this. It also helps to remove the xf86-video-intel package and to add "video=SVIDEO-1:d" to the kernel boot options.
0001-drm-i915-Revert-ea0000f0-4.14.patch

This seems to be fixed as of the 5.15 kernel.
Bug 93782 - [i9xx TV][BISECT] vblank wait timeout on crtc
FS#51703 - [linux] kernel error in drm_kms_helper, flip_done timed out

As of 2023 xf86-video-intel is obsolete and you want to be running the Amber branch of Mesa.

For more mind-boggling mode setting nonsense, see The Linux Kernel Has Been Forcing Different Behavior For Processes Starting With "X" (Phoronix)

Thrashing through the page cache

Kernels after 4.10 become unusable under page cache pressure. I ran a 4.9 kernel for a while. I now run a recent kernel and increase vm.min_free_kbytes to at least 5% of physical memory, which seems to fix it. See Bug 196729 - System becomes unresponsive when swapping - Regression since 4.10.x.

WiFi

My x220 came with a Realtek wifi card, but I've never had much luck with Realtek so I replaced it with an Intel card. The x220 bios has a whitelist for wireless cards, in an attempt to make you buy expensive Lenovo branded cards. Previous Thinkpads could have the whitelist disabled by a simple program, but this one requires a new bios, which is hard to install without running MS Windows. I ended up finding a cheap Intel card that worked so I haven't tried the modified bios.

The iwlwifi driver stopped working with 802.11n as of the 2.6.38 kernel. I use it with 802.11b/g, which seems to work. See for example iwconfig shows high Tx excessive retries, Wireless Issues (TX Retries, Speed, Disconnections), Extremely slow network with Intel "Ultimate N WiFi Link 5300" (iwlagn) after upgrade from Fedora 14, iwlwifi driver for Centrino Wireless-N 1000 slow and unusable after upgrade to CentOS 6.3, and iwlwifi 802.11n usability resolved.

Also I would avoid the Intel Advanced-N 6200 series. The firmware is buggy, causing frequent driver crashes. To recover, unload and reload the iwldvm and iwlwifi kernel modules. See Bug 90751 - microcode errors with Intel Advanced-N 6235.

Enable VT-x in bios

If you run VirtualBox or similar, you'll want to enable VT-x in the bios. I think this is required for 64-bit guests. I'm told the option is sometimes hidden in the "Security" menu but I had no trouble finding it.

Linux/Arch quirks

The volume controls seems to be handled by software, not hardware as in previous Thinkpads. This may be handled by some desktop packages. I run xbindkeys:

% cat ~/.xbindkeysrc
"amixer -q -c 0 set Master 4- unmute"
 XF86AudioLowerVolume

"amixer -q -c 0 set Master 4+ unmute"
 XF86AudioRaiseVolume

"amixer -q -c 0 set Master toggle"
 XF86AudioMute

Jim Rees