Dell XPS 13 (9350) 2024
| 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.
Firmware
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
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):
- Run
alsamixer - Press
F6and select the "sof..." sound card - Press
F3for playback controls - Use arrow keys to navigate and
mto unmute channels - For rt1318 controls, set to
L,R - For rt714 AD, set to
DMIC1
Microphone
If the microphone is not working:
- Run
alsamixer - Press
F6and select the "sof..." sound card - Press
F4for capture controls - Use
mto unmute andSpaceto 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
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.
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
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
|
- The key is visible to
evtest - 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