HP Spectre x360 (2020)

From ArchWiki

Tango-edit-clear.pngThis article or section does not follow the Laptop page guidelines.Tango-edit-clear.png

Reason: Missing accessibility section and a function key table. (Discuss in Talk:HP Spectre x360 (2020))
Hardware PCI/USB ID Working?
GPU 8086:9a49 Yes
Wireless 8086:a0f0 Yes
Bluetooth 8087:0026 Yes
Audio 8086:a0c8 Yes
Touchpad 04F3:315B Yes
Touchscreen 04F3:2BF1 Yes
Webcam 0408:5442 Yes
Fingerprint sensor 04f3:0c4c Experimental

This article covers hardware specific configuration of this laptop, some minor issues remain after customization. These can be performed after an installation of Arch Linux has been finished and the machine rebooted into it.

For a general overview of laptop-related articles and recommendations, see Laptop.

Hardware info

Hardware options

This wiki covers the HP Spectre x360 released in 2020 containing TigerLake CPUs. The SKUs covered by this article include, but might not be limited to:

  • 13-aw2777ng
  • 14t-ea000
  • 14-ea0x

Installation

Installation should be uneventful except that the vmd (Intel Volume Management Device) module needs to be added to /etc/mkinitcpio.conf in order for the freshly installed OS to boot properly. If you are using archinstall this should happen automatically.

Tweaks

Brightness / backlight (OLED Screens)

See Backlight for more information on how to configure backlight control. Some OLED displays require additional software to be able to adjust the backlight as there is not really a backlight. See also Backlight#Unable to control eDP Panel brightness (Intel i915 only) in this case.

icc-brightness-gnome-gitAUR can be installed which may enable brightness control under GNOME (and possibly other environments).

Rotation

For GNOME and Plasma and possibly others install iio-sensor-proxy.

Audio

This laptop requires firmware in order for the soundcard to work. See Advanced Linux Sound Architecture#ALSA firmware.

Ensure that PulseAudio is configured and running. Ensure that PulseAudio can detect the sound card via pactl list cards like so:

$ pactl list cards
Card #0
	Name: alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic
	Driver: module-alsa-card.c
	Owner Module: 6
	Properties:
		alsa.card = "0"
		alsa.card_name = "sof-hda-dsp"
		alsa.long_card_name = "HP-HPSpectrex360Convertible14t_ea000--87F7"
		alsa.driver_name = "snd_soc_skl_hda_dsp"
		device.bus_path = "pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
		sysfs.path = "/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "a0c8"
		device.product.name = "Tiger Lake-LP Smart Sound Technology Audio Controller"
		device.string = "0"
		device.description = "Tiger Lake-LP Smart Sound Technology Audio Controller"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Profiles:
		HiFi: Play HiFi quality Music (sinks: 4, sources: 2, priority: 8000, available: yes)
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
	Active Profile: HiFi
	Ports:
		[Out] HDMI3: HDMI3 Output (type: HDMI, priority: 700, latency offset: 0 usec, not available)
			Part of profile(s): HiFi
		[Out] HDMI2: HDMI2 Output (type: HDMI, priority: 600, latency offset: 0 usec, not available)
			Part of profile(s): HiFi
		[Out] HDMI1: HDMI1 Output (type: HDMI, priority: 500, latency offset: 0 usec, not available)
			Part of profile(s): HiFi
		[Out] Speaker: Speaker (type: Speaker, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi
		[Out] Headphones: Headphones (type: Headphones, priority: 200, latency offset: 0 usec, not available)
			Part of profile(s): HiFi
		[In] Mic2: Headphones Stereo Microphone (type: Mic, priority: 200, latency offset: 0 usec, not available)
			Part of profile(s): HiFi
		[In] Mic1: Digital Microphone (type: Mic, priority: 100, latency offset: 0 usec, availability unknown)
			Part of profile(s): HiFi

No additional configuration should be required to get PulseAudio to detect the card.

Kernels prior to 5.14.2

The information below pertains to kernels before 5.14.2 and is kept in case of new models which require additional kernel patches.

Once the card is detected, you need to run the following:

# hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01
# hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01
# hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01
# hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00

Then restart PulseAudio. You might need to apply the above changes twice to get them to take effect. The above will need to be run on every boot until upstream makes the required changes. This is because "The audio chip has an amplifier pin that needs to be set. It is pin 1..."

https://askubuntu.com/questions/1263178/20-04-no-speaker-audio-on-hp-spectre-x360-2020-15t-eb000

The kernel may be patched by updating the quirk list at sound/pci/hda/patch_realtek.c with the appropriate subdevice ID.

Power Management

Keyboard

After boot or resume the keyboard may fail to respond for up to 30 seconds. This is due to a bug in the i8042 emulation provided by the firmware. This can be worked around with a modified i8042 module using DKMS. Follow the instructions here to install the module.

Function Keys

All function keys work as expected except the keys mentioned below.

Mute Button Light (F5)

Microphone Mute (F8)

The OS does not recognize the key press, but it does detect it and can be manually configured.

[ 2834.402270] atkbd serio0: Unknown key pressed (translated set 2, code 0x82 on isa0060/serio0).
[ 2834.402274] atkbd serio0: Use 'setkeycodes e002 <keycode>' to make it known.
[ 2834.487944] hp_wmi: Unknown key code - 0x270
[ 2834.494508] atkbd serio0: Unknown key released (translated set 2, code 0x82 on isa0060/serio0).
[ 2834.494514] atkbd serio0: Use 'setkeycodes e002 <keycode>' to make it known.

Create the following file

/etc/udev/hwdb.d/90-internal-keyboard.hwdb
evdev:input:b0011v0001p0001eAB83*
 KEYBOARD_KEY_82=f20

Then run

# systemd-hwdb update

and reboot for good measure.

Kill Camera

The Disable Camera button physically disconnects the Webcam device from the host. The OS does not recognize the keypress, but it is detected.

Disconnected:

[ 2449.374540] hp_wmi: Unknown event_id - 26 - 0xff
[ 2449.480281] usb 3-5: USB disconnect, device number 5

Re-connected:

[ 2451.701121] hp_wmi: Unknown event_id - 26 - 0xfe
[ 2451.930245] usb 3-5: new high-speed USB device number 6 using xhci_hcd
[ 2452.072569] usb 3-5: New USB device found, idVendor=0408, idProduct=5442, bcdDevice= 0.11
[ 2452.072574] usb 3-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 2452.072576] usb 3-5: Product: HP True Vision HD Camera
...

Fingerprint Reader

The fingerprint reader is not supported out of the box by libfprint. An experimental driver has been developed by Davide Depau and at the time of writing there is an open Merge Request to libfprint to add this driver: [1].

Until this driver has been merged the package libfprint-elanmoc2-gitAUR may be used which builds directly from Davide's repository. This driver has limitations, in particular it requires that all existing prints to be cleared before it will work, see the MR for more details.

If you have removed Windows and wish to clear all prints then this is possible from the BIOS menu.

For more information on libfprint see Fprint.