Dell XPS 13 (9310)
Device | Status | Modules |
---|---|---|
Video | Working | i915 |
Wireless (AX500) | Working | ath11k |
Bluetooth (AX500) | ? | ? |
Wireless (AX201) | Working | iwlwifi |
Bluetooth (AX201) | 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.
Installation
In some units, the NVMe drive is configured to operate in RAID mode by default. This may cause the bootloader to not find your boot disk. In order to fix this, press 2 to enter the Dell UEFI. Go to Storage, NVMe Operation, and make sure that "Select AHCI/NVMe" mode is selected. All other operating systems installed before changing this setting must be reinstalled after changing this setting.
Alternatively, the kernel can be configured to load the vmd
kernel module before looking for the boot disk. Add vmd
to the MODULES array in your mkinitcpio.conf and regenerate the initramfs.
Audio
This laptop requires firmware in order for the soundcard to work. See Advanced Linux Sound Architecture#ALSA 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.14 (apart from broken wifi in 5.14.5 and 5.14.6, regression bug) wifi works fine, no issues with 5GHz and WPA3. No additional systemd kernel module removal scripts are required anymore, the Kernel suspends and resumes correctly.
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 is 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 does not 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
Note that if you add this in /etc/defaults/grub
, you need to enter it as:
memmap=12M\\\$20M
Details about this problem can be found in the Linux kernel mailing list: https://lore.kernel.org/lkml/3e30ac52-6ad4-fa7b-8817-bca35a80d268@gmail.com/
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.
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.
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. This is a newer version intended for use only with touch-based sensors such as the one on the XPS.
The proprietary driver is available as 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 in the official repositories as it conflicts with libfprint-tod-git.
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. This is the IrConfig.yaml
file as detected by the quick command so you do not need to go through all the manual configuration steps:
/usr/lib/linux-enable-ir-emitter/IrConfig.yaml
!!python/object:IrConfiguration.IrConfiguration _data: - '0x1' - '0x3' - '0x2' - '0x0' - '0x0' - '0x0' - '0x0' - '0x0' - '0x0' _selector: '0x6' _unit: '0x4' _videoPath: /dev/video2
The infrared camera can be used as an authentication method with howdyAUR.
The configuration file is located at /lib/security/howdy/config.ini
. The device should be configured like this: device_path = /dev/video2
.
dark_threshold
all the way to 80 or 90. Please read the configuration 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 with kernel
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.
The bug report for this issue can be found here: https://gitlab.freedesktop.org/drm/intel/-/issues/3496
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
. For some users, i915.enable_fbc=1
has also been required to prevent system freeze.
Reportedly, the issue of tiny lags has been fixed with kernel 5.14 but not system hangs.