Dell XPS 13 (9310)

From ArchWiki
Jump to navigation Jump to search

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

Reason: Misses some sections, hardware table needs adjustments (Discuss in Talk:Dell XPS 13 (9310)#)
Device Status Modules
Video Working i915
Wireless (AX500) Unstable ath11k
Wireless (AX201) Working iwlwifi
Bluetooth Working btusb
Audio Working snd_hda_intel
Touchpad Working hid_multitouch
Webcam Working uvcvideo
Infrared Webcam Working uvcvideo
Infrared Camera Authentication Working ?
USB-C / Thunderbolt 4 Working intel_wmi_thunderbolt
Wireless switch ? intel_hid
Function/Multimedia Keys Working ?
Fingerprint sensor Working ?
Ambient light sensor Working iio

Dell XPS late 2020 edition.

Audio

Works correctly, requires sof-firmware.

Wifi

There are two possible devices the laptop may ship with, AX201 or AX500. AX201 support is already in the mainline kernel

AX500

Since Kernel version 5.10.9, users have reported some success with the Arch stock Kernel (a recent Dell firmware is also required: at least version 1.2.5). Please note, the driver is still experimental. While it's reported to working fine with a 2.4 GHz WPA Personal WiFi network, there might be problems after disconnecting the WiFi or with different setups (WPA3, 5 GHz WiFi). Your mileage may vary. However, recovery from suspend and hibernate appears to be broken, though it can usually be manually fixed by reloading the ath11k_pci module. For example:

$ sudo rmmod ath11k_pci
# wait a couple minutes (yes really) for the operation to complete
$ sudo modprobe ath11k_pci

This can be automated via sleep hooks - if the module is unloaded before hibernating or suspending it unloads immediately with no delay, and the resume kernel bug doesn't happen:

/etc/systemd/system/ath11k-suspend.service
[Unit]
Description=Suspend: rmmod ath11k_pci
Before=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/rmmod ath11k_pci

[Install]
WantedBy=sleep.target
/etc/systemd/system/ath11k-resume.service
[Unit]
Description=Resume: modprobe ath11k_pci
After=suspend.target

[Service]
Type=simple
ExecStart=/usr/bin/modprobe ath11k_pci

[Install]
WantedBy=suspend.target

You need to enable the hooks with systemctl enable /etc/systemd/system/ath11k-suspend.service and systemctl enable /etc/systemd/system/ath11k-resume.service.

There is also work in progress in the form of qca6390 (the SoC of Killer AX500) driver development in the kernel.org kvalo/ath repository. Patches based on the ath11k-qca6390-bringup branch have been working (with an "experimental" caveat) for a while.

mm/page_alloc error

You might see the following error in your dmesg log if your WiFi is not working:

mm/page_alloc: place pages to tail in __free_pages_core()

You can to reserve the memory starting from 20M to fix this error by adding the following parameter to your Linux kernel cmdline:

memmap=12M\$20M

Details about this problem can be found in the Linux kernel mailing list: https://lkml.org/lkml/2020/11/13/397

Kernel versions before 5.10.9

Here are the earlier notes on compiling that Kernel:

You can compile the kernel with the ath11k-qca6390-bringup branch. The latest change of this branch is based on Linux v5.10 release, it has a work around that disables MHI M2 state and makes QCA6390 usable on 9310.

Warning: the driver is still experimental and might cause instability to your system.

Before compiling, make sure to enable ath11k driver from kernel config:

make menuconfig
--> Select Device drivers
	--> Network device support
		--> Wireless LAN
			--> Enable as below
				<M> Qualcomm Technologies 11ax chipset support
				<M>       Atheros ath11k PCI support
				[*]       QCA ath11k debugging
				[*]       QCA ath11k debugfs support
				[*]       ath11k tracing support
				[*]     QCA ath11k spectral scan support


qca6390 also require ath11k firmware, which is available on linux-firmware.


Kernel 5.12.0

The suspend problem appears to be fixed in 5.12.0, as tested under Fedora rawhide as of 24 February 2021. Wireless comes up on booting and after resume from suspend out of the box.

Fingerprint sensor

The fingerprint sensor can be used by installing the proprietary Ubuntu driver released by Dell and Goodix. This requires a different fork of libfprint libfprint-tod-gitAUR - available on the AUR and built from source from the upstream repo. This is a newer version intended for use only with touch-based sensors such as the one on the XPS.

Warning: This driver is proprietary, closed source and only distributed in binary form

The proprietary driver can be obtained from the AUR: libfprint-2-tod1-xps9300-binAUR. Alternatively, it can also be manually installed from the Dell repository by extracting the Debian file and copying its contents.

The rest of the process is identical to that described on Fprint - just make sure not to install the version of libfprint on the main repo as it conflicts with libfprint-tod

Infrared camera

When the IR camera(/dev/video2) is on, it will not automatically turn on the IR emitter. You can follow the instructions from linux-enable-ir-emitter to enable the IR emitter.

Note: You can skip from step 2 to 9 as I have gathered the setup data from those steps, so you don't have to:
   Bus 003 Device 003: ID 0c45:672a Microdia Integrated_Webcam_HD
   Setup Data
   bmRequestType: 0x21
   bRequest: 1
   wValue: 0x0600
   wIndex: 1026 (0x0402)
   wLength: 9
   Data Fragment: 010302000000000000

You can continue to step 10 with the above data.

The infrared camera can be used as an authentication method with howdyAUR.

Warning: As mentioned in the Howdy documentation, "DO NOT USE HOWDY AS THE SOLE AUTHENTICATION METHOD FOR YOUR SYSTEM."[1]

The configuration file is located at /lib/security/howdy/config.ini. The device should be configured like this: device_path = /dev/video2 .


Note: After installing howdy, you should tweak the configuration file to find the settings that work best for you. I personally found much better results by increasing dark_threshold all the way to 80 or 90. Please read the config file carefully.

Ambient light sensor

Install iio-sensor-proxy to enable automatic brightness in Gnome.

Virtualization

Virtualbox EFI guests VM are currently not working on this hardware. See https://www.virtualbox.org/ticket/20090 and https://forums.virtualbox.org/viewtopic.php?f=7&t=100940.

Known Issues

Random Hangs on i915

Occasionally the laptop would hang when running the i915 linux driver. This would result in an occasional visual delay to keyboard inputs and would make the system appear to be crashing.

This issue is at least partly known in windows where the solution is to turn off panel self refresh. The equivalent in linux is to set panel self refresh to off in the kernel parameters: i915.enable_psr=0