Archlinux on a Lenovo X1C3

So I bought the X1 Carbon Generation 3 !

It arrived 2015-02-17 after ordering it on the 2015-02-09. It feels like bloody Christmas !!

I love how quiet this machine is.


The model number on the order is 20BTCTO1WW. Lenovo's Safety and Setup Guide refer to this as Machine Types: 20BS and 20BT. Serial number is R90F6C3B which is confirmed by /sys/devices/virtual/dmi/id/product_serial.

# for i in /sys/devices/virtual/dmi/id/*; do echo $i: $(cat $i); done
/sys/devices/virtual/dmi/id/bios_date: 12/01/2014
/sys/devices/virtual/dmi/id/bios_vendor: LENOVO
/sys/devices/virtual/dmi/id/bios_version: N14ET25W (1.03 )
/sys/devices/virtual/dmi/id/board_asset_tag: Not Available
/sys/devices/virtual/dmi/id/board_name: 20BTCTO1WW
/sys/devices/virtual/dmi/id/board_serial: W1KS52410G3
/sys/devices/virtual/dmi/id/board_vendor: LENOVO
/sys/devices/virtual/dmi/id/board_version: SDK0E50510 WIN
/sys/devices/virtual/dmi/id/chassis_asset_tag: No Asset Information
/sys/devices/virtual/dmi/id/chassis_serial: R90F6C3B
/sys/devices/virtual/dmi/id/chassis_type: 10
/sys/devices/virtual/dmi/id/chassis_vendor: LENOVO
/sys/devices/virtual/dmi/id/chassis_version: None
/sys/devices/virtual/dmi/id/product_name: 20BTCTO1WW
/sys/devices/virtual/dmi/id/product_serial: R90F6C3B
/sys/devices/virtual/dmi/id/product_uuid: 01DA4854-B754-CB11-BF15-8F9604DEA04D
/sys/devices/virtual/dmi/id/product_version: ThinkPad X1 Carbon 3rd

X1C3:~$ hostnamectl
   Static hostname: X1C3
		 Icon name: computer-laptop
		   Chassis: laptop
		Machine ID: 2e68738c559147e2a181d4fb70f030c5
		   Boot ID: a6f72f88e4e443e1898be5a4f615c16a
  Operating System: Arch Linux
			Kernel: Linux 3.18.6-1-ARCH
	  Architecture: x86-64


The purchase and delivery UX was frankly terrible. Really not looking forward to communicating with Lenovo, in the case there is some issue that requires customer service. :/


Usual bunch of stupid pieces of paper and ugly fingerprints!

It's well packed though. The X1C3 feels like it might not survive a drop as well as my X220. It also worryingly doesn't have spillage holes.

I am wondering about a sleeve to put it in, in order to prevent scratches and the sort whilst it travels in my pannier.

The rectangular yellow power supply connection is a bit of a disappointment. Feels stiff, fallible and why is it so similar to have USB connector? Brain dead. I also miss the loud BEEP when I gain or lose mains power. :/

Installing Archlinux

Sadly I found the Archlinux dual boot documentation a bit lacking. I was going to attempt dual boot, but I couldn't understand how to resize the Windows NTFS partitions. So I just gave up.

Also I was put confused by the UEFI BIOS stuff. Oh well.

I was hoping that Lenovo would include some sort of recovery USB stick, instead of their weird partitioning they ship with. Bye bye Windows and shitty preloaded Lenovo software ! Confirmed by HN

I went for the "modern" GPT method of partitioning and admittedly I have no clue what GPT means. I now have just one big partition formatted with ext4:

/dev/sda1   2048 500118158 500116111 238.5G Linux filesystem

Syslinux install was also a little confusing. Do I run it in the arch-chroot or not? syslinux-install_update -i -a -m worked from within the chroot, but the default grep root /boot/syslinux/syslinux.cfg was APPEND root=/dev/sda3 rw and not /dev/sda1.

Startup finished in 1.547s (kernel) + 519ms (userspace) = 2.066s

X1C3 mouse buttons not working

Both the Trackpoint & TrackPad now work with xf86-input-libinput and kernel 4.3!

Make sure you purge any old stuff in /etc/modprobe.d/psmouse.conf!

Annoying network interface names

X1C3:~$ networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     configured
  2 wlp4s0           wlan               routable    configured
  3 enp0s25          ether              no-carrier  configuring

3 links listed.

Somewhat annoyingly my wifi0 is called wlp4s0 and my eth0 is called enp0s25. Got to thank systemd for that.

Both interfaces "just work" and perform great!

Hint if /var/run/systemd/resolve/resolv.conf is missing, you need sudo systemctl status systemd-resolved and then enable it.

Tethering from my iPhone6 works once usbmuxd is is installed, the interface name is enp0s20u1c4i2.

I've experienced a wireless issue, but I think it's more a TP-LINK AP issue. Update: Frequently get thrown off the wireless network, so I'm relying on the ThinkPad Ethernet Expansion Cable heavily.


Key popped out from my new X1C3 2015 :(

Different spacing to the X220. I don't like the grease marks my sweat leaves behind. Thankfully this machine runs cool, like 42C atm, so already that's way way more comfortable than my old X220 Thinkpad.

I'm now also using a US keyboard layout setxkbmap -model thinkpad -layout us -option ctrl:nocaps from setxkbmap -layout gb -option ctrl:nocaps. Need to report back how it goes...

I've discovered I need function lock on, enabled by Esc+Fn with a green light coming on on the Fn, in order to use the function keys.

Thanks to I think this tip, when Function is not enabled the:

I have figured out how to bind the volume and brightness controls in my dwm configuration.

X220 to X1C3 keyboard remapping

I've overrided mapping the Thinkpad keys as above using Xmodmap to help me find the Home/End keys better.


I'm enjoying the 1920x1080 (aka 1080p aka FHD) screen so far, especially since I more room to tile two windows side by side in dwm. Didn't have to do anything special so far to resize anything. google-chrome-unstable and st's static char font[] = "Terminus:pixelsize=18"; is serving me well!

This is how much bigger my irssi/tmux session is now compared to my X220!

Here you can maybe see the colour reproduction difference with a side by side comparison against the X220. Tbh, I'm not that happy with the way the X1C3 reproduces yellow. It's way too close to white.

When I slouch, I notice the viewing angles are not good.


Can't get sound to output on HDMI.

When I attach my iPhone headphones, the voice recordings are awful. I've even tried my Rode SmartLav+. There is just no sweet spot on pavucontrol to get noise/levels properly adjusted for a clear recording. I suspected windows employs some high pass filtering and that's why no one complains about the microphone under Windows. :/

Update: I've bought a condenser microphone to compensate for the poor onboard microphone. See Screencasting from Archlinux gotchas for details

GL performance

ioquake-git works better than quake3 from AUR.

seta r_mode "-1"
seta r_customwidth "1920"
seta r_customheight "1080"

At least I can go full screen now. Just that my mouse doesn't work. It seems to be locked to 60fps and I haven't worked out how to turn off vsync.

USB 3 performance

I needed to backup a nearly broken exfat 1TB USB3 drive to a newer USB3 2TB drive formatted in glorious ext4. Using sudo rsync -Part --exclude=".*" --exclude ".*/" . /mnt/2tb/recovery/ I'm getting 90Mb/sec across the USB3 bus.

Actually it seemed to speed up since it copied the 400+GB in 2 hrs, not the calculated 11. Any ideas how to better calculate this?

Other issues

I ran into this Archlinux slow DNS resolving bug. Since disabled ipv6.

Other resources:


If you like this, you might like the stateless Web kiosk software I develop. Webconverger typically replaces Windows on PCs and is deployed in public and business environments for ease of deployment and privacy. Once installed it auto-updates making it painless to maintain. Try it where you exclusively use the only viable open platform... the Web!