Dell XPS 13 (9300)

From ArchWiki

This article or section does not follow the Laptop page guidelines.

Reason: Hardware table needs some adjustments, needs a proper function key table (Discuss in Talk:Dell XPS 13 (9300))
Hardware PCI/USB ID Working?
Video Yes
Wireless Yes
Bluetooth Yes
Audio Yes
Touchpad Yes
Card Reader Yes
Webcam Yes
Infrared Camera Yes
Fingerprint sensor Yes

The Dell XPS 13 Early 2020 (9300) is the eigth-generation model of the XPS 13 line.

The installation process for Arch on the XPS 13 does not differ from any other PC. For installation help, please see the Installation guide and UEFI.

UEFI

Before installing it is necessary to modify some UEFI Settings. They can be accessed by pressing the F12 key repeatedly when booting.

  • Change the SATA Mode from the default "RAID" to "AHCI" (already the default on the developer edition). This will allow Linux to detect the NVMe SSD. If dual booting with an existing Windows installation, Windows will not boot after the change but this can be fixed without a re-installation.
  • Disable Secure Boot to allow Linux to boot (already the default on the developer edition).
  • For reliable resumption from sleep, set Early Logo Display to OFF in the Sign of Life options. Booting and installing from a micro SD card is possible, as long as SD Card and SD Card Boot are both enabled in the UEFI setup.
    • This is done via System Configuration under the heading Enable MediaCard, enable the option Secure Digital(SD) Card Boot.

Firmware

Dell provides firmware updates via Linux Vendor Firmware Service (LVFS). Refer to Flashing BIOS from Linux#fwupd for additional information. A package is readily available at fwupd. Current firmware version is 1.23.0.

Alternatively, for the BIOS update, you can simply copy the .exe file from the Dell Support page to any FAT32 drive (even the boot partition seems to work). Then boot into the "BIOS Flash Update" utility by hitting F12 at boot time.

Display

The video should work with the i915 driver of the current linux kernel. Consult Intel graphics for a detailed installation and configuration guide as well as for Intel graphics#Troubleshooting.

If you installed xf86-video-intel and experienced hanging/freezing when launching Xorg, or when launching applications with GPU Acceleration (such as kitty and alacritty), try uninstalling xf86-video-intel and let Xorg fallback to modesetting driver.

When using modesetting driver, Backlight#xbacklight may produce `No outputs have backlight property`. Replacing xorg-xbacklight with acpilight fixes the problem.

Power Management

See Power management/Suspend and hibernate#Changing suspend method, and disable Display Logo Sign of Life under POST Behavior in the UEFI setup.

Kernel panics have been reported with some XPS devices when S3 deep sleep is enabled together with secure boot. A workaround that was suggested for the Dell XPS 13 2-in-1 (7390) but seems to work for the XPS 13 9300 is adding intel_iommu=off to the Kernel parameters.

The touchscreen has been reported to stop working after waking up from S3 deep sleep mode.

For reducing drain while running on battery power, refer to Power management. TLP is a userspace tool that is popular and has been reported to work well.

Thermal Throttling

By default, or whatever was set on Windows by Dell Power Manager, a very conservative power profile is set somewhere in memory (seems to persist BIOS resets) and starts throttling the CPU very early (2.4GHz out of 3.9GHz max on i7-1065G7).

This can be resolved using throttled. Despite originally conceived to resolve the same issue with Lenovo laptops, it works with Dell computers.

Throttling with battery charge level

As measured by some users, the BIOS throttles system performance according to battery charge level, even on AC (improvements have been made in BIOS 1.4.1).

Fan Control

For more information view Fan speed control#Dell laptops

Installation

By default, the fan is controlled by the bios. In order to override this control with your own configuration, install i8kutilsAUR and dell-bios-fan-control-gitAUR.

Configuration

By default, i8kmon only monitors the CPU temperature and fan speed passively. To enable its fan speed control, put the following in /etc/i8kutils/i8kmon.conf:

set config(auto)       1

The temperature points at which the fan changes speed can be adjusted in the same configuration file. Only three fans speeds are supported (high, low, and off). Look for a section similar to the following in /etc/i8kutils/i8kmon.conf:

set config(0)   {{0 0}  -1  65  -1  65}
set config(1)   {{1 0}  60  70  60  70}
set config(2)   {{1 1}  65  75  65  75}
set config(3)   {{2 1}  70  80  70  80}
set config(4)   {{2 2}  75  85  75  85}

This example starts the fan at low speed when the CPU temperature reaches 65°C, and continues ramping up from there. The fan will slow down as the temperature drops and it will turn off completely at 60°C.

Installation as a service

Start/enable i8kmon.service and dell-bios-fan-control.service.

These services will persist on reboot. If you would like them to not persist, simply start them without enabling them.

Infrared camera

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

Warning: As said in howdy documentation, "DO NOT USE HOWDY AS THE SOLE AUTHENTICATION METHOD FOR YOUR SYSTEM."

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

Please refer to Howdy to find which /dev/videoX corresponds to your IR camera and for troubleshooting.

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.

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 as that described on Fprint - just make sure not to install the version of libfprint on the main repo as it conflicts with libfprint-tod

Thunderbolt

The following thunderbolt devices have been tested:

Device Working? Comments
Dell DA200 Yes
Dell DA300 Yes
Dell WD19TB Yes OK since kernel 5.10.16, BIOS 1.5.0, and Dock firmware 01.00.15.01. Use fwupd to update BIOS and Dock firmware.
CalDigit TS3 Plus Yes The monitor that is connected via usb type-c port might not work correctly due to a BIOS bug, this might also apply to other Thunderbolt docks but I have tested TS3 Plus only.
Dell TB16 Yes

Known Issues

Fingerprint Reader

The fingerprint reader only works with a proprietary closed source driver released by Goodix for Ubuntu. However, it can be made to work on Arch (see above).

UEFI

Since BIOS update 1.0.10, some USB-C to HDMI/DP adapters do not work anymore (even on Windows). The issue was partially fixed on BIOS 1.2.0; however, the USB-C to HDMI/DP adapter remains unusable if connected via some Thunderbolt 3 docking stations.

S3 sleep state does not seem to be compatible with secure boot, at least by default. See a possible workaround on section #Power Management

Firmware versions 1.0.6 through 1.0.11, have a bug causing a two second delay during boot. This is fixed since 1.1.0. Update to the newest firmware, or downgrade to the oldest to avoid this issue.

Random Hangs on i915

In certain setups, running the i915 linux graphics driver causes intermittent GPU freezes that last for about 30 seconds. Audio, pointer movement, CPU, and memory run normally, but the picture is frozen. In some cases, X seems to get confused and crash from this. One relatively predictable way to test for this bug is to trigger the freeze by calling xrandr with no arguments (or any RandR tool that queries for connected screens).

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