Huawei MateBook 14s

From ArchWiki
Note: This page refers to the Huawei MateBook 14s i7 16GB/1TB with Thunderbolt 4.
Hardware PCI/USB ID Working?
Touchpad 27C6:01E0 Yes
Touchscreen 27C6:0114 Yes
Keyboard PS/2 Yes
Webcam 3408:c200 Yes
Bluetooth 8087:0026 Yes
Audio 8086:a0c8 Partial
Wireless 8086:a0f0 Yes
Fingerprint reader 27c6:5125 No

Installation

Secure Boot must be disabled in the BIOS to boot an Arch Linux install medium. Other than that, the installation can proceed normally.

Accessibility

The BIOS is text-based, OCR-friendly, and usable with the keyboard only.

Firmware

fwupd detects the SSD, serial bus controller, USB camera, USB4 host controller, system firmware, and UEFI device firmware.

Function keys

To make function keys trigger F1F12 by default and special functions with Fn, write 1 to /sys/devices/platform/huawei-wmi/fn_lock_state. This setting survives reboots, so writing once suffices.

Key Visible?1 Marked?2 Effect
Fn+F1 Yes Yes XF86MonBrightnessDown
Fn+F2 Yes Yes XF86MonBrightnessUp
Fn+F3 Yes3 Yes Cycle keyboard backlight (no/low/high)
Fn+F4 Yes Yes XF86AudioMute
Fn+F5 Yes Yes XF86AudioLowerVolume
Fn+F6 Yes Yes XF86AudioRaiseVolume
Dictation key (above 7) Yes3 Yes Does nothing by default
Fn+F7 Yes Yes XF86AudioMicMute
Fn+F8 No Yes Super+p
Fn+F9 Yes3 Yes Toggles wifi via rfkill
Fn+F10 Yes Yes XF86Tools
Fn+F11 Yes Yes PrintScreen
Fn+F12 Yes Yes Ins
Fn+r Yes3 No Nothing; supposed to toggle display refresh rate between 60 and 90Hz
Fn+p Yes3 No Nothing; supposed to toggle performance mode
Fn+Left Yes No Home
Fn+Right Yes No End
Fn+Up Yes No PageUp
Fn+Down Yes No PageDown
  1. The key is visible to xev and similar tools
  2. The physical key has a symbol on it, which describes its function
  3. Not visible to xev by default, but detected by the kernel (Unknown key pressed) and can be handled as described in map scancodes to keycodes.

Audio

ALSA firmware is required. The speakers and microphones work well but not perfectly out of the box; the audio jack has some issues which are being addressed[1].

Until the issue is fixed upstream, some workarounds can make the device usable.

Headphones

To use headphones plugged in the audio jack, until the fixes are incorporated upstream, you can use this workaround [2] (which uses hda-verb from alsa-tools):

Enable speaker and disable headphones

First, move the output to the speaker DAC:

# hda-verb /dev/snd/hwC0D0 0x16 0x701 0x0001

Then, enable the speaker:

# hda-verb /dev/snd/hwC0D0 0x17 0x70C 0x0002

Finally, disable the headphones:

# hda-verb /dev/snd/hwC0D0 0x1 0x715 0x2

Disable a speaker and enable headphones

First, move the output to the headphones DAC:

# hda-verb /dev/snd/hwC0D0 0x16 0x701 0x0000

Then, disable the speaker:

# hda-verb /dev/snd/hwC0D0 0x17 0x70C 0x0000

Afterwards, pin the output mode:

# hda-verb /dev/snd/hwC0D0 0x1 0x717 0x2

Then, enable the pin:

# hda-verb /dev/snd/hwC0D0 0x1 0x716 0x2

Finally, clear the pin value:

# hda-verb /dev/snd/hwC0D0 0x1 0x715 0x0

In both cases, if using ALSA ensure the outputs are unmuted using alsamixer or amixer; if using PulseAudio, ensure the correct output (speaker/headphone) is selected using pactl set-sink-port or pavucontrol.

ALSA

With plain ALSA you will have issues with simultaneous audio output from multiple sources that can be fixed with the following:

/etc/modprobe.d/audio.conf
options snd-intel-dspcfg dsp_driver=3

which unfortunately renders the microphones unusable.

PulseAudio

If using PulseAudio, both simultaneous audio output and the microphones will kind of work (only the two left microphones). However, to have audio output through the speakers you should run the hda-verb script from #Enable speaker and disable headphones after launching PulseAudio.

Battery protection

The huawei_wmi driver is available in the mainline kernel.

You can set the thresholds by writing directly to the file:

# echo '40 70' > /sys/devices/platform/huawei-wmi/charge_control_thresholds

or you can use tools such as TLP:

/etc/tlp.conf
START_CHARGE_THRESH_BAT0=40
STOP_CHARGE_THRESH_BAT0=70
Note: The battery is BAT1 in sysfs, but BAT0 in tlp.conf.

Display

The native resolution (2520x1680) is fully recognized, however the refresh rate is fixed at 90Hz and cannot be changed.