HP Spectre x360 15-df1010na
Hardware | PCI/USB ID | Working? |
---|---|---|
Touchpad | Yes | |
Keyboard | Yes | |
GPU | 10de:1f91 |
Yes |
Webcam | 0408:5255 |
Yes |
Bluetooth |
|
Yes |
SD-card reader | 10ec:525a |
Untested |
Audio | 8086:a348 |
Yes |
GPU Audio | 10de:10fa |
Yes |
Wireless | 8086:2723 |
Yes |
Fingerprint reader | No | |
TPM | Yes | |
Thunderbolt | 8086:15ea |
Yes |
Installation
Secure Boot must be disabled in the BIOS.
The BIOS can be accessed by holding down Esc
while booting, then pressing F10
when the options screen is shown. F9
can be used to select the boot device.
Firmware
fwupd supports this device.
Biometrics
Fingerprint Scanner
Tested using Fprint, fprintd-enroll reports that the device cannot be found.
Windows Hello
Facial recognition works using Howdy.
Audio
If audio does not work initially, create the file /etc/modprobe.d/alsa-base.conf
with the following line.
options snd-hda-intel
The audio mute button works by default but with no led indicator to show its state.
Suggested fixes including adding model=hp-gpio-led
after snd-hda-intel
but this does not appear to work for this model.
Power management
For general battery improvements, thermald and auto-cpufreqAUR seem to help, although battery life is still poor.
Unfortunately HP do not support s3 sleep (see Power management/Suspend and hibernate) for this laptop, which leads to extreme battery drain when left in 'suspend' mode (s2idle).
This can be fixed by modifying the DSDT, but resuming from suspend with deep sleep is unreliable, rendering this method pointless. An alternative solution to saving power would be using hibernation and then focusing on improving the boot time to bring wakeup from hibernation closer to wakeup from suspend times.
ACPI override to support S3 sleep
Initially the only supported sleep on this model will be s2idle
:
$ cat /sys/power/mem_sleep [s2idle]
Extract and disassemble the DSDT tables:
# mkdir /tmp/acpi_patch && cd /tmp/acpi_patch # acpidump -b # extract current DSDT tables # iasl -d dsdt.dat # disassemble to dsdt.dsl
You now need to modify the file dsdt.dsl
using a text editor.
Find the section which begins with DefinitionBlock ("", "DSDT", 2, "HPQOEM", "863E ",
and increment the final number (remember to increment it as hex).
For example:
DefinitionBlock ("", "DSDT", 2, "HPQOEM", "863E ", 0x01072009)
Should be changed to
DefinitionBlock ("", "DSDT", 2, "HPQOEM", "863E ", 0x0107200a)
Then the definition for S3 System State
needs to be added between the sections for
// _S0_: S0 System State
and // _S4_: S4 System State
.
This should end up as follows:
Name (_S0, Package (0x04) // _S0_: S0 System State { Zero, Zero, Zero, Zero }) Name (_S3, Package(0x04) // _S3_: S3 System State { 0x03, 0x03, Zero, Zero }) Name (_S4, Package (0x04) // _S4_: S4 System State { 0x06, Zero, Zero, Zero })
You then need to recompile the DSDT tables and create a cpio override archive:
# iasl -tc dsdt.dsl # recompile # mkdir -p kernel/firmware/acpi # cp dsdt.aml kernel/firmware/acpi # find kernel | cpio -H newc --create > /boot/acpi_override
Then add the cpio override to the boot options.
For example, with systemd-boot you can add initrd /acpi_override
above the line with
initrd /initramfs-linux.img
in your entry config (e.g. /boot/loader/entries/arch.conf).
For more info see DSDT#Using modified code.
After a reboot you should see that deep sleep has been enabled:
$ cat /sys/power/mem_sleep [s2idle] deep
However, although deep sleep is available, it is not always used.
If the journal for the current boot includes kernel: PM: suspend entry (s2idle)
then you also need to add mem_sleep_default=deep
to your kernel parameters.
When it is working you should see PM: suspend entry (deep)
in the journal.