Dell XPS 13 (9310)

From ArchWiki

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 IDs (Discuss in Talk:Dell XPS 13 (9310))
Device CPI/USB ID Working?
Video Yes
Wireless (AX500) Yes
Bluetooth (AX500) Yes
Wireless (AX201) Yes
Bluetooth (AX201) Yes
Audio Yes
Touchpad Yes
Webcam Yes
Infrared Webcam Yes
Infrared Camera Authentication Yes
USB-C / Thunderbolt 4 Yes
Wireless switch Untested
Function/Multimedia Keys Yes
Fingerprint sensor Yes
Ambient light sensor Yes

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 F2 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.

To successfully boot the installation medium you will need to disable Secure Boot.

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.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), however there are are persistent problems, including firmware crashes and problems when resuming from hibernate/suspend. If your wifi is not working, first try to add 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 fix can be found in the Linux kernel mailing list: https://lore.kernel.org/lkml/[email protected]/. After adding this parameter there still may be problems with wifi functionality on resuming from suspend. Enabling `VT for Direct I/O` in the BIOS may help with recovering wifi functionality after a suspend. Please note that the ath11k 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:

# rmmod ath11k_pci

wait a couple minutes (yes really) for the operation to complete

# 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 ath11k-suspend.service and 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.

Bluetooth

AX500

As of 5.16.16, bluetooth is partially working, but must be activated manually after boot is complete. You must blacklist hci_uart by adding blacklist hci_uart to /etc/modprobe.d/blacklist.conf, then modprobe hci_uart after boot and start the bluetooth service with systemd. Functionality still appears broken after resuming from suspend. Note that when hci_uart is loaded during boot, or after suspending, the laptop may hard lock with errors similar to watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [swapper/2:0]. See the talk page for additional details.

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.

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

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.

Warning: Since fprintd was updated to version 1.92.0-1, libfprint-tod-git and libfprint-2-tod1-xps9300-bin no longer work as expected. This can prevent GDM from listing users during login. Downgrading fprintd to version 1.90.6-1 partially solves this problem.

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.

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 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 hangs when running the i915 Linux driver. This results in an occasional visual delay to keyboard inputs and makes the system appear to be crashing.

The bug report for this issue can be found here: https://gitlab.freedesktop.org/drm/intel/-/issues/3496

Set panel self refresh to off in the kernel parameters: i915.enable_psr=0 i915.enable_fbc=1.

See also