now | writings | rss | github | twitter | contact

OpenBSD on the Lenovo Thinkpad X1 Carbon (5th Gen)

posted to writings on sep 1st, 2017 with tags laptops, nerd, openbsd, and thinkpad, last updated on sep 4th, 2017

ThinkPads have sort of a cult following among OpenBSD developers and users because the hardware is basic and well supported, and the keyboards are great to type on. While no stranger to ThinkPads myself, most of my OpenBSD laptops in recent years have been from various vendors with brand new hardware components that OpenBSD does not yet support. As satisfying as it is to write new kernel drivers or extend existing ones to make that hardware work, it usually leaves me with a laptop that doesn't work very well for a period of months.

After exhausting efforts trying to debug the I2C touchpad interrupts on the Huawei MateBook X (and other 100-Series Intel chipset laptops), I decided to take a break and use something with better OpenBSD support out of the box: the fifth generation Lenovo ThinkPad X1 Carbon.

This is actually my second fifth-generation X1, as I bought one back in February when they were initially available but it arrived with a broken touchpad. I sent it back to Lenovo for repair, waited a month for replacement parts, but gave up waiting and got a refund. It was probably for the best since those early models only came with a FHD display but a WQHD display is now available.

Hardware

Like most ThinkPads, the X1 Carbon is available in a myriad of different internal configurations. I went with the non-vPro Core i7-7500U (it was the same price as the Core i5 that I normally opt for), 16Gb of RAM, a 256Gb NVMe SSD, and a WQHD display. (Note to US buyers: search the interweb for "Lenovo Perks login" before ever buying a ThinkPad, you'll save nearly 30%.)

This generation of X1 Carbon finally brings a thinner screen bezel, allowing the entire footprint of the laptop to be smaller which is welcome on something with a 14" screen. The X1 now measures 12.7" wide, 8.5" deep, and 0.6" thick, and weighs just 2.6 pounds. While not available at initial launch, Lenovo is now offering a WQHD IPS screen option giving a resolution of 2560x1440. Perhaps more importantly, this display also has much better brightness than the FHD version, something ThinkPads have always struggled with.

On the left side of the laptop are two USB-C ports, a USB-A port, a full-size HDMI port, and a port for the ethernet dongle which, despite some reviews stating otherwise, is not included with the laptop. On the right side is another USB-A port and a headphone jack, along with a fan exhaust grille. On the back is a tray for the micro-SIM card for the optional WWAN device, which also covers the Realtek microSD card reader. The tray requires a paperclip to eject which makes it inconvenient to remove, so I think this microSD card slot is designed to house a card semi-permanently as a backup disk or something.

On the bottom are the two speakers towards the front and an exhaust grille near the center. The four rubber feet are rather plastic feeling, which allows the laptop to slide around on a desk a bit too much for my liking. I wish they were a bit softer and stickier.

Charging can be done via either of the two USB-C ports on the left, though I wish more vendors would do as Google did on the Chromebook Pixel and provide a port on both sides. Doing so makes it much more convenient to charge when not at one's desk, rather than having to route a cable around to one specific side. The X1 Carbon includes a 65W USB-C charger with a fixed USB-C cable and removable country-specific power cable, which is not very convenient due to its large footprint. I am using an Apple 61W USB-C charger and an Anker cable which charge the X1 fine (unlike HP laptops which only work with HP USB-C chargers).

Wireless connectivity is provided by a removable Intel 8265 802.11a/b/g/n/ac WiFi and Bluetooth 4.1 card. An Intel I219-V chip provides ethernet connectivity and requires an external dongle for the physical cable connection.

The screen hinge is rather tight, making it difficult to open with one hand. The tradeoff is that the screen does not wobble in the least bit when typing.

The fan is silent at idle, and during a make -j4 build, the fan noise remains reasonable and medium-pitched, rather than a high-pitched whine like on some laptops. The palm rest and keyboard area remain cool during high CPU utilization. Unfortunately there is some minor coil whine from the top middle of the keyboard area that only seems to be present at idle and can only be heard in a completely silent room. Any constant CPU usage will make the noise go away, though disk activity makes it louder.

The full-sized keyboard is backlit and offers two levels of adjustment. The keys have a soft surface and a somewhat clicky feel, providing quiet typing except for certain keys like Enter, Backspace, and Escape. The keyboard has a reported key travel of 1.5mm and there are dedicated Page Up and Page Down keys above the Left and Right arrow keys. Dedicated Home, End, Insert, and Delete keys are along the top row. The Fn key is placed to the left of Control, which some people hate (although Lenovo does provide a BIOS option to swap it), but it's in the same position on Apple keyboards so I'm used to it. However, since there are dedicated Page Up, Page Down, Home, and End keys, I don't really have a use for the Fn key anyway.

There is a dedicated power button above the Fn row and its green LED remains illuminated while powered on, which is slightly annoying.

The Synaptics touchpad surface is soft, but its integrated button has a solid, firm, and quiet click which I like very much. There is no play in the touchpad button like on some cheaper laptops. The three TrackPoint buttons between the keyboard and touchpad have a shallow click. Both pointer interfaces have a legacy PS/2 attachment. A square USB-attached fingerprint sensor sits next to the touchpad.

There is "Lenovo" and "X1 Carbon" branding on the bottom of the screen bezel, along with a ThinkPad logo on the bottom right of the palm rest. A ThinkPad logo in the upper left corner of the rear of the screen has a red LED which is illuminated when the laptop is on. I've covered the screen branding and power button LED with black tape, because I find them distracting.

Firmware

The X1 Carbon has a very detailed BIOS/firmware menu which can be entered with the F1 key at boot. F12 can be used to temporarily select a different boot device.

A neat feature of the Lenovo BIOS is that it supports showing a custom boot logo instead of the big red Lenovo logo. From Windows, download the latest BIOS Update Utility for the X1 Carbon (my model was 20HR). Run it and it'll extract everything to C:\drivers\flash\(some random string)\. Drop a logo.gif file in that directory and run winuptp.exe. If a logo file is present, it'll ask whether to use it and then write the new BIOS to its staging area, then reboot to actually flash it.

If you are flashing the same BIOS version, you'll first have to disable the "Secure Rollback Prevention" security mechanism in the BIOS.

With the "Option key Display" setting disabled in the BIOS and a small boot image, the boot screen is much cleaner:

OpenBSD Support

Secure Boot has to be disabled in the BIOS menu, and the "CSM Support" option must be enabled, even when "UEFI/Legacy Boot" is left on "UEFI Only". Otherwise the screen will just go black after the OpenBSD kernel loads into memory.

Status is relative to OpenBSD-current as of 2017-12-14 when I sold this laptop, so this table will no longer be updated.

Component Works? Notes
Audio Yes Intel audio supported by azalia. Microphone can be disabled in the BIOS.
Battery status Yes Shows up through acpibat.
Bluetooth No Shows up as a ugen device, but OpenBSD does not support Bluetooth. Can be disabled in the BIOS.
Ethernet Yes Supported by em.
Fingerprint sensor No Synaptics via USB, not supported. Can be disabled in the BIOS.
Keyboard backlight Yes Supported natively by the EC. Can be toggled with Fn+Space and with wsconsctl keyboard.backlight values of 0, 50, and 100.
Hibernation Yes Takes about 30 seconds to go from ZZZ to powered off.
Suspend/resume Yes Works fine.
MicroSD slot Yes Realtek RTS525A, supported by rtsx.
Touchpad Yes Synaptics, supported by pms.
TrackPoint Yes Supported by pms.
USB Yes The USB-C ports work fine.
Video Yes inteldrm has preliminary Kaby Lake support adding accelerated video, DPMS, gamma control, integrated backlight control, and proper S3 resume. HDMI output through the onboard HDMI port works.
Webcam Yes Supported by the uvideo driver, but can be disabled in the BIOS.
Wireless Yes The removable Intel 8265 802.11n wireless card is supported by the iwm driver.
Comments? Contact me via Twitter or e-mail.