I recently needed a new laptop at work. Being quite content with my former 7390, I went ahead and ordered just another in the row without looking very closely at the specs, nor checking the small print. Which is something that you should not do.
The good: The XPS 13 9340 has excellent speed, a very nice display with touch screen, a keyboard with adjustable backlight, quite allright lasting battery, up to Intel Core Ultra 9 CPU, up to 32 GB of memory, and up to 2TB nvme storage. My variant may serve as well as anything, sporting an Intel Core Ultra 7 with 32 GB RAM, and two USB-C connectors. A powerful workstation in a slick but sturdy ultrabook aluminum case. Nice! Fedora (and probably any modern Linux distro) installs easily from a memory stick.
The bad:
- The Keyboard: Wall-to-wall!
Being used to the keyboard on my former 7390, which had keys separated by a couple of millimeteres, making it easy for the fingers to trace the keys without looking at the keyboard, the keyboard on the 9340 takes some learning. It has a wall-to-wall keyboard with almost no spacing between its flat keys. Some designer probably thought this looks very clean and nice, but it is harder to use for typing and programming. When I got used to it, I can now type quite fast with few mistakes, and the tactile feedback is allright, so it’s not outright bad. But I liked the old keyboard much better. - The keyboard: No function keys!
Yep, you read that right. No function keys. Neither any escape, delete, insert, home, nor print screen. Instead you get a lighted function strip where you tap your finger on the chassis. Looks very clean, but terrible if you are a programmer or power user that use the function keys all the time. I really miss the physical keys. It is very difficult to see that the keys are missing on Dell’s marketing pictures. If I had known, I would have got some other model. - The keyboard: No right side control key!
Instead of the nifty right control key, Dell has jumped the bandwagon and put a Microsoft CoPilot key in its place. Which does not actually provide a real keystroke, but produces left-shift + left-super + F23. See below for using keyd to switch it back to control. - The camera: No official support in Linux (yet)
Dell has included the latest and greatest in laptop camera tech, that is the Intel ipu6 stack that is hooked directly to the computer’s internals instead of being presented as a USB camera. The camera itself is allright, but ipu6 is still quite new tech in the Linux world, and by 2025, drivers are only slowly appearing. See below for adding a working out-of-tree driver.
Getting the camera to work
After owning the laptop for some weeks, a new driver suddenly appeared on the Linux media mailing list. Heimir Sverrison based his work on the out-of-tree Intel driver, and added the missing parts for the OV02C10 sensor that comes with the 9340 and 9440 XPS models. Lo and behold, the driver works fine. Great work, Heimir! For easy install on Fedora, here is a quick receipt with a Makefile and the latest (february 2025) version of the driver.
Note that you probably will have to switch off secure boot in the UEFI BIOS to be able to load the driver. Or you can add the missing parts on how to stamp the module with your own secure key. Just google it, YMMV. I do not advice to run without secure boot for other than simple testing.
First, make a small build environment
sudo dnf install wget make gcc dwarves libcamera-qcam
mkdir -p ~/src/kernel/ov02c10
cd ~/src/kernel/ov02c10
wget http://ingvar.users.bitbit.net/ov02c10/Makefile
wget http://ingvar.users.bitbit.net/ov02c10/ov02c10.c
Then build the driver. Until the driver is included in Fedora, you have to reiterate this part every time you install a new kernel.
sudo dnf install kernel-devel-$(uname -r)
make
make install
sudo modprobe ov02c10
lsmod | grep ov02c10
If you get output from that last command, things should be quite ready. Reboot to make sure the camera is picked up correctly during boot. Then test the camera on the desktop with qcam, and in Firefox or Chromium with https://mozilla.github.io/webrtc-landing/gum_test.html. If that works, most video conferencing browser stuff should work fine as well.
I have tested the camera with Jitsi, Cheese, and OBS. It works fine with those, though I miss some general camera controls for hue/warmth/zoom/white balance, etc in GNOME/KDE.
Heimir works on getting the driver upstream, and thanks to Hans de Goede’s excellent work, when loaded, this driver works fine in Fedora with the rest of the ipu6 stack. Check out https://bugzilla.redhat.com/show_bug.cgi?id=2333347.
Switch CoPilot for right-control
As I deeply missed the right control key, I looked around until I found keyd, that solves this problem elegantly. I even found some old fedora specfile that I patched up for the latest version. keyd upstream source is at https://github.com/rvaiya/keyd . My patched srpm and prebuilt rpm for fedora 41 may be downloaded from http://ingvar.users.bitbit.net/keyd/ .
Install the package and add something like this to your /etc/keyd/default.conf. This also gives you escape/control on CapsLock, which I prefer, since the physical Escape key is missing.
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held
capslock = overload(control, esc)
# Same for that pesky copilot key
leftshift+leftmeta = overload(control, esc)
Restart keyd by
sudo systemctl restart keyd
and test. This works for me. There are a lot of configuration variants available. Read the docs and go wild. There is more inspiration for example here. When you are content with the result, enable keyd at boot by
sudo systemctl enable keyd.