Another year, another ThinkPad X1 Carbon, this time with a Dolby Atmos sound system and a smaller battery.

Hardware

The seventh generation X1 Carbon isn’t much different than the fifth and sixth generations. I opted for the non-vPro Core i5-8265U, 16Gb of RAM, a 512Gb NVMe SSD, and a matte non-touch WQHD display at ~300 nits. A brighter 500-nit 4k display is available, though early reports indicated it severely impacts battery life.

Gone are the microSD card slot on the back and 1mm of overall thickness (from 15.95mm to 14.95mm), but also 6Whr of battery (down to 51Whr) and a little bit of travel in the keyboard and TrackPoint buttons. I still very much like the feel of both of them, so kudos to Lenovo for not going too far down the Apple route of sacrificing performance and usability just for a thinner profile.

On my fifth generation X1 Carbon, I used a vinyl plotter to cut out stickers to cover the webcam, “X1 Carbon” branding from the bottom of the display, the power button LED, and the “ThinkPad” branding from the lower part of the keyboard deck.

The webcam now has a physical ThinkShutter to cover up the lens, the “X1 Carbon” branding on the display and the “ThinkPad” branding on the keyboard deck are now a glossy black against the matte black of the casing, and taking a design cue from the X1 Yoga, the X1 Carbon and has moved the power button from the top lid above the keyboard to an inset button on the right side next to the USB-A port. Maybe someone at Lenovo reads my tweets.

On the left side of the laptop are two Thunderbolt 3-enabled USB-C ports, a port for the ethernet dongle (which annoyingly blocks the second USB-C port when it’s plugged in), a USB-A port, a full-size HDMI port, and a headphone jack which has moved from the right side. On the right side are another USB-A port, a fan exhaust grille, and the new power button.

New to the seventh generation is a Dolby Atmos four-speaker sound system, which thankfully does not need any awful hacks to get working, and produces a very full, loud sound. There are now two speaker grilles on the top of the keyboard deck in addition to the two on the underside of the laptop. The new sound system is pretty much the only reason I decided to get another X1 Carbon, as the speakers on my Matebook X are also Dolby Atmos powered and it’s hard to use any other laptop that doesn’t sound as good.

Addressing another complaint I had about the fifth generation, the four rubber feet on the underside seem more rubbery now and prevent the laptop from sliding around my desk too easily. The screen hinge is rather tight but it is just barely able to be opened one-handed. The screen does not wobble at all when typing.

Wireless connectivity is provided by a non-socketed Intel 9560 802.11a/b/g/n/ac WiFi and Bluetooth 5 chip. An Intel I219-V chip provides ethernet connectivity and requires a proprietary dongle for the physical cable connection.

The fan is silent at idle and during most operation. During long compilation or watching videos in Firefox, the fan does come on but its noise is reasonable and more of a low white-noise than a whine. The palm rest remains cool during high CPU utilization, though the keyboard deck between the J, K, and I keys can get hot, maybe due to the location of the SSD. There is no coil whine that can be heard at any distance.

The full-sized keyboard now has slightly less travel than previous generations, but aside from some squeakiness, it is still great to type on. The keyboard is backlit and offers two levels of adjustment with Fn+Space or through wsconsctl keyboard.backlight on OpenBSD.

The Synaptics touchpad surface remains soft and easy to glide fingers across, and its integrated button has a solid but quiet click which I still appreciate. There is no play in the touchpad button mechanism. The three TrackPoint buttons between the keyboard and touchpad have a shallow click. While the TrackPoint still operates over a legacy PS/2 attachment, the touchpad has been upgraded to a Windows Precision Touchpad connected over I2C. A square USB-attached fingerprint sensor sits next to the touchpad.

Firmware

The seventh generation X1 Carbon now defaults to a graphical BIOS upon pressing F1 , which can be switched back into a simple text mode. F12 can be used to temporarily select a different boot device. Pro-tip: press Fn+F1 to mute the speakers before pressing either of these options to prevent a loud, annoying beep.

Installing a different boot logo is still possible through Windows.

Secure Boot must be disabled in the BIOS menu to boot OpenBSD, though the “CSM Support” option is no longer needed. The “Modern Standby” option must be switched to “Legacy S3 standby mode”.

The option for BIOS-assisted Thunderbolt support can be enabled to make Thunderbolt devices work in OpenBSD, but only if they are plugged in before booting. I tested with Apple’s Thunderbolt 2 ethernet adapter plugged into the Apple Thunderbolt 2 to 3 adapter, and it worked fine in OpenBSD.

OpenBSD Support Log

2019-07-26: First boot of the OpenBSD installer panicked fairly early with an AML error “Not Integer”. Booting a non-ramdisk kernel with ACPI_DEBUG enabled showed this was due to a problem with the touchpad’s _INI method. I eventually tracked this down to a problem with OpenBSD’s implementation of ToHexString , a fix for which has been been committed.

2019-07-29: Now that the system boots, I noticed that key repeating on the console was broken, and that date; sleep 1; date showed it taking 3 or 4 seconds. In the past this has been due to an unsynchronized TSC, but even with acpihpet0 being the new default kern.timecounter.hardware , it still showed this problem. Some further debugging pointed to cpu0: apic clock running at 100MHz when it should be 24Mhz. By default, the X1 Carbon ships with its BIOS option “8254 Timer Clock Gating” enabled, and OpenBSD uses the 8254 for APIC clock calibration. This was fixed by fetching the CPU frequency directly from the CPU instead of timing it, in order to avoid relying on the 8254.

Despite fixing the ihidev polling issue, the X1C7’s touchpad uses GPIO interrupts and requires a new Cannon Lake GPIO driver. I’ll need to work on this.

2019-08-07: I realized that the sound from the speakers was lacking bass on OpenBSD but sounded fine on Linux. A tweak with mixerctl will properly hook up the speaker2 outputs to the proper DAC, enabling proper sound on OpenBSD.

echo outputs.spkr2_source=dac-0:1 >> /etc/mixerctl.conf

2019-08-13: I committed a quirk to the azalia driver to do the speaker routing by default without having to use mixerctl .

2019-08-19: A fix for a slowly-drawing console after S3 resume has been identified and committed.

2019-10-13: A quirk has been added to the azalia driver to fix a popping/clicking sound heard when listening to headphones.

2019-11-18: Support for the Intel 9560 Wi-Fi chip has been added to -current.

Current OpenBSD Support Summary

Status is relative to OpenBSD-current as of 2019-11-18.