Jump to content

Dell XPS 13 (9350) 2024

From ArchWiki
Hardware PCI/USB ID Working?
Touchpad Yes
Keyboard Yes
GPU 8086:64a0 Yes
Webcam 8086:645d Yes
Bluetooth 8086:a876 Yes
Audio 8086:a828 Yes
Wi-Fi 8086:a840 Yes
Fingerprint reader 27c6:633c Yes
TPM Yes

Installation

Disable Secure Boot in the UEFI in order to boot the installation media. Secure Boot can be re-enabled.

Accessibility

The appearance of the UEFI is pretty simple and not very colorful, so it might work well with OCR software. However, it requires the user to use a mouse/touchpad or touchscreen.

Note Blind users should request the help of a sighted person to change UEFI settings

Firmware

Note This device does not have a PC speaker and uses the built-in speakers instead. Beeps can be louder than expected.

fwupd does support this device for "BIOS updates".

Dell occasionally publishes updates on their product support site for "LGD Touch Panel Firmware Update Utility", "Dell Touchpad Firmware Update Utility", Various NVME SSD firmware updates, and possibly others. You may need to search for your Service Tag to access these updates. Many of these updates require that you temporarily boot into Windows to install them.

Secure Boot

This article or section needs expansion.

Reason: The UEFI supposedly accepts .auth files and supports custom keys well: this needs testing. (Discuss in Talk:Dell XPS 13 (9350) 2024)

You can alternatively enable "Audit Mode" under the UEFI Boot Configuration menu and enroll your keys from the OS using a tool such as sbctl. "Audit Mode" is equivalent to Setup Mode.

After enrolling your keys, your computer will automatically reset to "Deployed Mode" and will trust your keys.

Firmware data path

The UEFI stores logs and recovery images in esp/EFI/dell.

Recovery images are stored in esp/EFI/dell/bios/recovery and are 14 MB in size. It appears that there will only be two images at the same time, BIOS_CUR.rcv and BIOS_PRE.rcv. Those files will be created when the UEFI is updated.

Logs

esp/EFI/dell/logs contains XML files which contain diagnostics data (SupportAssist). It appears that there will only be two logs at the same time, diags_previous.xml and diags_current.xml. Those files will be created when an error happened.

Display

The OLED display supports HDR, but common DEs do not recognize it as HDR-Capable. The KDE tool kscreen-doctor -o will show "HDR: incapable" and the toggle to enable HDR (in KDE and Gnome) will not appear in settings.

To enable HDR in KDE, you can add KWIN_FORCE_ASSUME_HDR_SUPPORT=1 to your environment variables and enable HDR in settings.

To enable HDR in Gnome, you can use gdctl(1) § MONITOR_OPTIONS to set the display's color-mode to "bt2100" for HDR or "default" for SDR.

Fingerprint reader

See Fprint - the device works out-of-the-box using standard installation. While registering, you may not see feedback that your fingerprint was read - simply retouch the sensor repeatedly until registration completes.

Haptic Touchpad

The device uses an Elan haptic touchpad connected via a Designware I2C controller, with configurable force requirements and haptic feedback.

Sensitivity and Haptic intensity

The haptic intensity can be set using hid-tools. Configuration options can be listed as follows after installing the package:

# hid-feature list /dev/hidraw1

To set maximum haptics:

 # hid-feature set /dev/hidraw1 -f 90000 100


Audio

Prerequisites

This laptop uses Intel's Sound Open Firmware (SOF) for audio. Install the required package: without sof-firmware, the audio hardware will not be detected by the system despite the kernel modules loading successfully.

After installing, reboot for the changes to take effect.

Mixer configuration

If audio is not working after installation, you may need to unmute channels or adjust mixer settings using alsamixer (from alsa-utils):

  1. Run alsamixer
  2. Press F6 and select the "sof..." sound card
  3. Press F3 for playback controls
  4. Use arrow keys to navigate and m to unmute channels
  5. For rt1318 controls, set to L,R
  6. For rt714 AD, set to DMIC1

Microphone

If the microphone is not working:

  1. Run alsamixer
  2. Press F6 and select the "sof..." sound card
  3. Press F4 for capture controls
  4. Use m to unmute and Space to enable capture on relevant channels

Camera

The camera is an IPU7 MIPI with a ov02c10 sensor. It can be made to work with Libcamera (since v 0.6.0) and by extension as a PipeWire camera in supported applications. This guide should get a working image, but good camera quality settings are a work in progress.

As of kernel 6.18, the necessary IPU7, ov02c10, and USBIO drivers are included in the kernel, but we are still missing Intel Vision Drivers. The IPU7 (binary) firmware is provided by linux-firmware-intel. This RedHat Bug Report tracks the status of the missing component and lists this model in a child bug report.

On a fresh install, installing libcamera-tools and running cam -l or qcam will show No sensor found for /dev/media0 in the output.

Install Intel Vision Drivers

First, install DKMS and your kernel's headers (e.g. linux-headers for the default kernel). The headers are required for DKMS to compile the vision driver module.

The prerequisite LJCA modules (usb_ljca and gpio_ljca) are built into kernel 6.18+ and should load automatically. Verify they are loaded:

$ lsmod | grep ljca
gpio_ljca              16384  0
usb_ljca               24576  1 gpio_ljca
Note In older kernels these modules were named ljca and gpio_ljca. As of kernel 6.18, they are usb_ljca and gpio_ljca.

Then install intel-vision-drivers-dkms-gitAUR from the AUR. The DKMS module should build automatically when kernel headers are present.

To ensure the intel_cvs module loads at boot before the sensor is probed, create the following file:

/etc/modules-load.d/intel_cvs.conf
intel_cvs

After rebooting cam -l should show 1: Internal front camera (\_SB_.LNK1) after warnings. qcam should start a raw camera stream - raw video will have a greenish tint with this camera.

Note The Intel Vision Driver module must already be loaded when the ov02c10 sensor is probed. If you cannot see your camera, run rmmod ov02c10 && modprobe ov02c10 as root and try again.

To enable gstreamer support, install gst-plugin-libcamera. Test the camera stream with :

gst-launch-1.0 libcamerasrc ! video/x-raw,format=RGBA,width=1920,height=1080,framerate=30/1 ! videoconvert ! ximagesink

To enable PipeWire camera support, install pipewire-libcamera. You may need to reboot after installing. If PipeWire was already started when the sensor was probed, you may need to restart pipewire.service user unit.

GNOME Camera is known to crash on startup using Vulkan (which is default), so you can run it with the environment variable GSK_RENDERER=gl.

For Firefox, open about:config (See Firefox#Configuration) and set media.webrtc.camera.allow-pipewire to "True".

For Chromium, enable the flag enable-webrtc-pipewire-camera in chrome://flags/ or set it in your configuration file.

Power management

The Lunar Lake CPU supports Energy Aware Scheduling which can provide great power efficiency without sacrificing (much) performance. To use EAS, you must use the schedutil CPUFreq governor which requires intel_pstate to operate in passive mode.

See CPU frequency scaling#Scaling drivers for guidance on how to set this. Setting intel_pstate=passive as a kernel parameter should be adequate, as schedutil is the default governor in this mode. To verify EAS is active, cat /proc/sys/kernel/sched_energy_aware will output "1" while enabled.

Alternatively, the Intel Low Power Mode Daemon can provide similar functionality by disabling P cores while utilization is low and can work while intel_pstate is in Active Mode With HWP and with any governor. Results can vary, but are generally good. Install intel-lpmdAUR and start/enable the intel_lpmd.service.

With either solution, you can set the Intel Performance and Energy Bias Hint as directed to tune performance/efficiency while running.

You can also set the Platform Profile on the fly. The options cool quiet balanced and performance match what Dell provides in UEFI. This setting persists across reboots. To set the Platform Profile to "Balanced" until manually changed again, either in the same fashion, or from the UEFI:

# echo balanced | tee /sys/firmware/acpi/platform_profile

Enabling PCI and USB Autosuspend does not seem to have any issues on any built-in hardware and can improve power efficiency.

See PCI Runtime Power Management.

/etc/udev/rules.d/pci_pm.rules
SUBSYSTEM=="pci", ATTR{power/control}="auto"

See USB autosuspend.

/etc/udev/rules.d/50-usb_power_save.rules
ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"

The device only supports the s2idle suspend method. Sleep/Wake appears to be reliable without undue sleep power consumption. Due to a bug on older kernels, the CPU can lock at 400MHZ and not scale properly after waking from sleep. Setting the platform profile to performance and back temporarily resolves the issue. As of v6.18 the bug appears to be resolved.

Charging can be managed with dell-command-configureAUR.

Power buttons

This device has one detected power buttons and one sleep button.

$  loginctl seat-status{{|}}grep Button
│ input:input1 "Power Button"
│ input:input2 "Sleep Button"

Sleep button

This article or section is being considered for removal.

Reason: Visibly copy/pasted from the page this was inspired from, no unmarked keybinds are noted in #Function keys. (Discuss in Talk:Dell XPS 13 (9350) 2024)

There is also a sleep button/suspend key. It seams to be a virtual, firmware-handled key and will be triggered when using one of the #Unmarked keybinds[broken link: invalid section], which would suspend your device.

Keyboard

Function keys

The XPS 13 (2024) features a touch-sensitive F-key row, which does not provide tactile or haptic feedback. This design allows for additional space to improve cooling.

The F-key symbols are only displayed via backlighting. When the backlight is off, the symbols are invisible. Pressing the Fn key or toggling the Fn lock switches the labels between function (Fx) and secondary symbols.

Key Visible?1 Marked?2 Effect
Fn+Esc No Yes Switch Fn lock
Fn+F1 Yes Yes XF86AudioMute
Fn+F2 Yes Yes XF86AudioLowerVolume
Fn+F3 Yes Yes XF86AudioRaiseVolume
Fn+F4 Yes Yes XF86MicMute
Fn+F5 Yes Yes XF86AudioPlay
Fn+F6 No Yes Keyboard backlight switch
Fn+F7 Yes Yes XF86MonBrightnessDown
Fn+F8 Yes Yes XF86MonBrightnessUp
Fn+F9 Yes Yes Inputs Left_Meta+P
Fn+F10 Yes Yes Print
Fn+F11 Yes Yes Home
Fn+F12 Yes Yes End
Fn+F12(right) Yes Yes Insert
Fn+R Yes Yes Print
Fn+S Yes No ScrollLock
Fn+B, Fn+g Yes No Pause
Fn+r Yes No Print
Fn+Up Yes Yes PageUP
Fn+Down Yes Yes PageDown
Fn+Left Yes No Home
Fn+Right Yes No End
Fn+Copilot Yes Yes Compose
  1. The key is visible to evtest
  2. The physical key has a symbol on it, which describes its function

Remap the Copilot key

The keycode for the Copilot key is F23 + Left Shift + Left Meta. See Input remap utilities for a list of utilities to remap it to something more useful.

If using keyd, the following configuration can be used to remap the key to Right Ctrl:

[main]
leftshift+leftmeta+f23 = rightcontrol