OpenBSD on the Huawei MateBook X (2020)

posted on aug 20th, 2021 with tags hardware, laptops, and openbsd, and last updated on aug 24th, 2021
part of OpenBSD on Laptops series

My old 2017 Huawei MateBook X has been my most reliable laptop and has continued to be my daily-use workstation despite trying half a dozen others (and a desktop or two) in the past four years. Every time I’d try a new laptop, certain components wouldn’t work properly, or the keyboard would feel strange, or the screen would look bad, or the fan or some coil-whine noise would drive me nuts. And every time, I’d return to my MateBook X and everything would just work silently.

I finally have a newer model of the MateBook X and I’m happy to say it lives up to its predecessor and will replace my 2017 model.

huawei matebooks x

Table of Contents

  1. Hardware
  2. Comparison Chart
  3. Disassembly
  4. Power and Heat
  5. OpenBSD Support Log
  6. Current OpenBSD Support Summary

Hardware

Huawei updated the MateBook X last year, but due to a US ban in 2019, Huawei stopped serving the US market. I acquired this new 2020 model from overseas, though I’m still not sure if I should have been allowed to.

I opted again for an i5 version of the fanless Intel Core processor, now quad-core in its 10th generation. The old model was available with an i5 processor in a purpleish “space gray” color, and with an i7 in a gold color which I wasn’t too fond of. The new i5 model is offered in a boring silver color or this “forest green” which I think looks quite unique, and the i7 model is available in silver and dark blue.

RAM now comes 16GB standard, up from 8GB previously, and is still soldered on. The removable SSD is now 512GB instead of 256GB, and in a more standard m.2 2280 form factor instead of m.2 2242 which severely limited upgrade options in the previous model.

The 3:2 screen is the same size, though the resolution has increased from 2160x1440 to 3000x2000 and is now a touchscreen. The large resolution allows applications like Firefox to be used in full 2x HiDPI mode rather than 1.5x. The hinge seems a bit stiffer, presumably to accommodate having to be poked, which makes the laptop no longer able to be opened fully with just one hand. Perhaps this will loosen up slightly over time.

The webcam has moved from the top of the screen bezel to a clever pop-up mechanism that hides under a key between F6 and F7. Moving the webcam makes the new model slightly shorter but thicker. Most reviews have criticized the webcam placement since it now provides a much more upward view of the user (or their nose) rather than front-facing when at the top of the screen. I never use the webcam and my old MateBook X always had a vinyl decal over the camera anyway. The ambient light sensor which was next to the camera in the top of the screen bezel is now located in the bottom of the bezel about 1/4 from the left.

The chassis is now a “magnesium aluminum alloy” and feels a bit different than the old model. It has a slightly rougher texture, though it still feels high quality and solid with zero flex. The rubber feet on the bottom of the case have been replaced with harder, plastic feet which make it easier to move around on one’s desk without being too slippery.

The branding on the laptop is the same as before; Huawei logotype at the bottom of the screen bezel and at the center of the back of the screen.

The touchpad on the old model was my biggest complaint. The pad surface had a bit of vertical play in it before the button would click, which I eliminated with some electrical tape between the two. I found the button required too much physical force to press which made me never want to use it, preferring to use a wireless mouse at my desk.

The touchpad on the 2020 model is Huawei’s “Free Touch” mechanism which poorly emulates the Force Touch trackpad on the Apple MacBook by eliminating the vertical movement and instead relying on a force sensor to register a click to the computer and simulating it to the user with haptic feedback. The haptic click sounds somewhat cheap and hollow compared to Apple’s very solid feeling, deep-sounding thunk. The level of pressure needed to register a click, and the amount of haptic feedback given are configurable from within a Windows app and these settings persist across power cycling. The sunken touchpad surface also extends all the way to the edge of the laptop which I really like, especially since I had to press so hard on the old model and the raised lip of the keyboard deck would hurt the side of my thumb after extended use.

The MateBook X still has just two USB-C ports, one on each side, and a headphone jack and white charging LED on the left side. While the old model only supported charging through the USB-C port on the left, the new model can be charged from either port which is a very welcome change. The USB-C MateDock that was included with the old model is no longer included.

Wireless connectivity is provided by an Intel AX201 802.11a/b/g/n/ac/ax WiFi and Bluetooth 5 chip which is not removable.

The keyboard feels largely the same as the previous version and is very good with a roomy layout and a precise, clicky tactile that is perhaps very slightly softer and quieter than the old model. It is backlit with two levels of adjustment (plus off) which automatically turns on when typing and off again after 15 seconds. The webcam button between F6 and F7 is not backlit, presumably because of space constraints, which makes the key look a tad out of place.

As with the previous model, the indicator lights on the Caps Lock and Fn keys light up when the screen is powered off (via DPMS) which is handy for knowing when the laptop is powered on since there is no other power indicator on the laptop. The fingerprint reader remains under the power button.

The speaker grille is no longer located above the keyboard since the speakers are now firing downward on both sides of the laptop. The sound is a bit muffled compared to the previous model, but still sounds great.

The MateBook X’s UEFI/BIOS firmware menu can be accessed by holding down F2 at boot. Most of the peripherals like the Webcam, audio, WiFi, etc. can be disabled from this menu and the boot order of devices can be adjusted. A temporary boot device can be selected by pressing F12 at boot.

Comparison Chart

  2020 MateBook X 2017 MateBook X
Processor Fanless Intel Core i5-10210U Fanless Intel Core i5-7200U
RAM 16GB 8GB
Screen 13” 3000x2000 Touchscreen, 400 nits 13” 2160x1440, 350 nits
Footprint 284mm x 206mm x 13.6mm, 2lbs 286mm x 211mm x 12.5mm, 2lbs
Battery 42 Wh 41 Wh
Graphics Intel UHD (Comet Lake) Intel HD 620 (Kaby Lake)
Audio Realtek ALC256 Realtek ALC298
SSD 512GB YMTC PC005 NVMe (m.2 2280) 256GB Lite-On NVMe (m.2 2242)
WiFi Intel AX201 802.11ax Intel 8265 802.11ac

Disassembly

Removal of the bottom cover can be done by removing three visible Torx screws, then removing the four Phillips-head screws under each of the plastic feet. These feet can be hard to remove the first time but are just held on with adhesive.

Once unfastened, the bottom case removes quite easily without tools, unlike the previous model which had many clips and required a suction cup.

The entire motherboard and components are covered by a large heat spreader and there is now a heat pad on top of the m.2 2280 SSD. No other components are upgradeable.

Power and Heat

The 2020 MateBook X has a 42 Watt-hour battery and idles at about 7 watts with the screen at 40% brightness and connected to WiFi. It seems to dissipate heat much better than the 2017 model, especially in the palm area where the 2017 model would often stay slightly warm just at idle.

OpenBSD Support Log

2021-08-20: The only component that didn’t seem to work well out of the box was the touchpad. Once X11 started, I saw numerous dwiic timeouts logged, indicating it was timing out trying to fetch HID packet data. The touchscreen worked fine, however.

After some hours of debugging and tracing driver information in Linux, it appears to be an issue with ihidev and possibly my mis-reading of the specification when initially creating the driver. By forcing a read size of a particular length that is not what the device advertises, it eliminates the timeouts though the touchpad response is still rather jerky and laggy. By forcing the driver to use polling, it works very smoothly, which seems counterintuitive. I’m not sure if this is sluggishness is in the dwiic or the GPIO interrupt driver pchgpio. The touchpad also doesn’t work after a suspend and resume with interrupts enabled but does when polling, which also happens on the Framework laptop. I’ll need to keep working on it.

2021-08-22: After a weekend of debugging, I figured out the problem with the touchpad. The pchgpio driver that the touchpad uses to register for interrupts was mapping the requested GPIO to the wrong pin, which somehow still worked but was not triggering on every touchpad input. This was fixed in the pchgpio driver. I also corrected the issue with ihidev requesting too much data which was causing dwiic timeouts.

2021-09-21: A fix to the pchgpio driver has been committed to restore interrupts to the touchpad after S3 resume.

Current OpenBSD Support Summary

Status is relative to OpenBSD-current as of 2021-09-21.

Component Works? Notes
Ambient Light Sensor Yes Supported by acpials.
Audio Yes Intel audio with Realtek ALC256 codec supported by azalia. Microphone input (near the touchpad) works with the kern.audio.record sysctl enabled.
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 firmware menu.
Fingerprint sensor No Goodix SPI-connected sensor embedded in the power button. No OpenBSD (or Linux) compatibility, can be disabled in the firmware menu.
Keyboard backlight Yes Supported natively by the EC, including auto-dimming. Can be toggled with Fn+F3.
Hibernation Yes Works with ZZZ.
NVMe SSD Yes YMTC PC005 512GB M.2 2280 SSD supported by nvme.
Suspend / resume Yes Works as expected in response to lid closing or zzz.
Touchscreen Yes I2C, supported by the imt driver.
Touchpad Yes I2C, supported by the imt driver.
USB Yes The USB-C ports work fine.
Video Yes Comet Lake video supported via inteldrm for accelerated video, DPMS, gamma control, integrated backlight control, and proper S3 resume.
Webcam Yes Supported by the uvideo driver, can be disabled in the firmware menu.
Wireless Yes The Intel AX201 802.11n wireless card is supported by the iwx driver. It works on 2.4Ghz and 5Ghz channels.


Questions or comments? E-mail me or tweet your reply @jcs.