OpenBSD on the Lenovo ThinkPad X1 Carbon (7th Gen)
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, 16 GB of RAM, a 512 GB 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 24 MHz.
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. I sold this laptop so I will no longer be updating this page.
Component | Works? | Notes |
---|---|---|
Audio | Yes | Intel audio with Realtek ALC285 codec and supported by azalia . Microphone can be disabled in the BIOS although it then illuminates the F1 LED all the time. |
Battery status | Yes | 51Whr battery, status available through acpibat . |
Bluetooth | No | Attaches 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 00bd via USB, not yet supported by libfprint. 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 | Can be triggered by ZZZ . |
SSD | Yes | The SanDisk WD Black NVMe drive is supported by nvme . |
Suspend / resume | Yes | Works fine. Can be suspended by zzz or by closing the lid with machdep.lidaction=1 set (which is the default). |
Thunderbolt 3 | Kinda | If BIOS assistance is enabled in the BIOS, any devices attached at boot time will work in OpenBSD and properly detach when unplugged, but will not work again when plugged in again until reboot. OpenBSD would need a Thunderbolt NHI driver for that. |
Touchpad | Yes | Synaptics I2C, supported by ihidev . |
TrackPoint | Yes | Supported by pms . |
USB | Yes | The 2 USB-C and 2 USB-A ports work fine. I am using the Lenovo USB-C UltraDock which provides charging, USB ethernet (via ure ) and a connection for the dongle for my wireless mouse, all over a single USB-C cable. |
Video | Yes | inteldrm supports 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. Can be disabled in the BIOS. |
Wireless | Yes | The non-removable Intel 9560 802.11ac wireless chip is supported by iwm . |