Dell XPS 15 (9550)
This page covers the current status of hardware support on Arch, pre-installation system configuration tweaks, as well as post-installation recommendations to improve the usability of the system.
The installation process for Arch on the XPS 15 9550 does not differ from any other PC. For installation help please see the Installation guide and UEFI. To set up a dual boot configuration with Windows, refer to Dual boot with Windows.
As of kernel 4.3, the Intel Skylake architecture is supported.
Installation
Prior to installation, access the system UEFI firmware by pressing F2 during boot.
- Turn off legacy ROM
- System -> SATA: change to AHCI
- Disable Secure Boot
- Set the POST Behavior: Fastboot to Thorough
Graphics
The Dell XPS 15 9550 has Intel HD Graphics 530 integrated graphics, and some models have a Nvidia GeForce GTX 960 dedicated card as well in a hybrid configuration.
For computers with only integrated graphics, just install the xf86-video-intel driver.
If your XPS has a hybrid graphics configuration (GTX960M + HD Graphics 530) and you want to maximize battery life you can just use the Intel Graphics.
Intel Only
If your model comes with an nVidia card which you do not use then you can try to disable it with an ACPI command. Depending on the model, this can have a small to profound effect on the laptop’s temperature and battery life (it can more than double battery life!)
- Install the Intel video driver using the xf86-video-intel package.
- Blacklist the nvidia & nouveau modules Kernel modules#Blacklisting
- Power down the GPU with an ACPI command
Optimus Configuration (Hybrid Intel and Nvidia)
The Optimus setup consists of the integrated Intel chip connected to the laptop screen and the Nvidia card runs through this. As such, the Nvidia chip cannot be used without the Intel chip (some other laptops have the option in BIOS to turn Intel off and use just Nvidia, but not this laptop). See the Bumblebee page set of instructions, particularly the Bumblebee#Installation Intel/Nvidia section. The main thing to note is that installing both the Intel and Nvidia packages at once tends to avoid dependency issues. The correct driver for the Nvidia card is nvidia .
Touchpad
By default the touchpad does not respond to tap input or two finger scrolling. You can change the behavior by installing Libinput and adding 30-touchpad.conf to /etc/X11/xorg.conf.d :
/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass" Identifier "MyTouchPad" MatchIsTouchpad "on" Driver "libinput" Option "Tapping" "on" Option "Natural Scrolling" "on" EndSection
Gestures
You can configure custom gestures using the libinput-gestures AUR package. You can follow the instructions from the documentation. Below is a sample configuration file that one might use with this tool:
~/.config/libinput-gestures.conf
# Go back/forward in chrome gesture: swipe right 3 xdotool key Alt+Left gesture: swipe left 3 xdotool key Alt+Right # Zoom in / Zoom out gesture: pinch out xdotool key Ctrl+plus gesture: pinch in xdotool key Ctrl+minus # Switch between desktops gesture: swipe left 4 xdotool set_desktop --relative 1 gesture: swipe right 4 xdotool set_desktop --relative -- -1
Power Management
Suspend & Hibernate
Suspend works without issues, however Hibernation is not completely stable. Write the following to /etc/systemd/sleep.conf :
[Sleep] HibernateState=disk HibernateMode=shutdown
Battery
Battery life can be improved by installing powertop and calibrating it. See Powertop for more info. To further improve the battery life, you can disable the touchscreen in the BIOS.
Fans
The fans may remain on even at low temperatures, draining the battery and producing an unpleasant noise that will only stop on reboot. This is due to the fans being controlled by the BIOS by default.
To prevent this behavior, configure i8k as described in Fan speed control#Dell laptops and use dell-bios-fan-control-git AUR utility to disable BIOS control of fans which conflicts with i8k. You may also want to enable and start dell-bios-fan-control.service to ensure BIOS control of fans is disabled at boot.
Bluetooth
Bluetooth is disabled by default. If you wish to use Bluetooth you will need to install some firmware. See Bluetooth and bug report for details.
bcm20703a1-firmware AUR includes includes the firmware necessary for the Broadcom BCM20703A1 Bluetooth device.
This firmware has been added upstream to linux-firmware [1], so bcm20703a1-firmware AUR is no longer needed as of release 20200421.78c0348-1
If you are experiencing low signal or disconnecting issues specifically with a2dp devices, using this alternative firmware can fix it: broadcom-bt-firmware-git AUR maybe you still need to play with latency/buffer settings on PulseAudio or try using PipeWire
Thunderbolt 3 Docks
It is possible to get video, audio, Ethernet and USB devices working by updating your BIOS to version >=1.2.19 and disabling Thunderbolt security in your bios settings. If you do not disable Thunderbolt security, then only video and power will work (at lest on the Dell TB16 dock).
On bios version 1.4.0 the USB and Ethernet peripherals will not work unless Thunderbolt security and Thunderbolt Boot support options are disabled.
Using bolt allows to use all features of the dock with Thunderbolt security activated.
It should also be noted that the TB16 dock will crash when hot plugged on all BIOS versions after 1.2.18 (Still the case as of version 1.4.0, but no longer as of version 1.8.1).
USB-C / Thunderbolt 3 Compatibility Chart
Device | Ports | Working? |
---|---|---|
StarTech TBT3TBTADAP Thunderbolt 3 to Thunderbolt Adapter | Thunderbolt 2, Thunderbolt | Yes |
Apple Thunderbolt 3 (USB-C) to Thunderbolt 2 Adapter | Thunderbolt 2, Thunderbolt | No |
CHOETECH USB-C to DisplayPort Cable (4K@60Hz) | DisplayPort | Yes |
CableCreation USB-C to HDMI DVI DP | HDMI, DVI, DisplayPort | Yes |
BIOS/firmware Updates
You can update your BIOS either manually, or with fwupdmgr (recommended). Recent BIOSes fix the screen flickering issue previously worked around with the i915.edp_vswing=2 kernel parameter.
marc-fez / dell-XPS-15-arch-linux-install
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
# Having problems with the nvidia drivers |
# Arch wiki page on XPS 15 |
# https://wiki.archlinux.org/index.php/Dell_XPS_15_9560 |
# Install ARCH Linux with encrypted file-system and UEFI on Dell XPS 15 |
# The official installation guide (https://wiki.archlinux.org/index.php/Installation_Guide) contains a more verbose description. |
# Download the archiso image from https://www.archlinux.org/ |
# Copy to a usb-drive |
dd if=archlinux.img of=/dev/sdX bs=16M && sync # on linux |
# Boot from the usb. If the usb fails to boot, make sure that secure boot is disabled in the BIOS configuration. |
# Set UK keymap |
loadkeys uk |
# This assumes a wifi only system. |
wifi-menu |
# Find the main HD |
fdisk -l |
# Create partitions |
cgdisk /dev/nvme0n1 |
1 250MB EFI partition # Hex code ef00 |
2 500MB Boot partition # Hex code 8300 |
3 100% size partiton # (to be encrypted) Hex code 8300 |
# Format disks |
mkfs.vfat -F32 /dev/nvme0n1p1 |
mkfs.ext2 /dev/nvme0n1p2 |
# Setup the encryption of the system |
cryptsetup -c aes-xts-plain64 -y —use-random luksFormat /dev/nvme0n1p3 |
cryptsetup luksOpen /dev/nvme0n1p3 luks |
# Create encrypted partitions |
# This creates one partions for root, modify if /home or other partitions should be on separate partitions |
pvcreate /dev/mapper/luks |
vgcreate vg0 /dev/mapper/luks |
lvcreate —size 16G vg0 —name swap |
lvcreate -l +100%FREE vg0 —name root |
# Create filesystems on encrypted partitions |
mkfs.ext4 /dev/mapper/vg0-root |
mkswap /dev/mapper/vg0-swap |
# Mount the new system |
mount /dev/mapper/vg0-root /mnt # /mnt is the installed system |
swapon /dev/mapper/vg0-swap # Not needed but a good thing to test |
mkdir /mnt/boot |
mount /dev/nvme0n1p2 /mnt/boot |
mkdir /mnt/boot/efi |
mount /dev/nvme0n1p1 /mnt/boot/efi |
# Install the system also includes stuff needed for starting wifi when first booting into the newly installed system |
# Unless vim and zsh are desired these can be removed from the command |
pacstrap /mnt base base-devel grub-efi-x86_64 zsh vim git efibootmgr dialog wpa_supplicant |
# ‘install’ fstab |
genfstab -pU /mnt >> /mnt/etc/fstab |
# Make /tmp a ramdisk (add the following line to /mnt/etc/fstab) |
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 |
# Change relatime on all non-boot partitions to noatime (reduces wear if using an SSD) |
# Enter the new system |
arch-chroot /mnt /bin/bash |
# Setup system clock |
ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime |
hwclock —systohc —utc |
# Set the hostname |
echo MYHOSTNAME > /etc/hostname |
# Update locale |
echo LANG=en_GB.UTF-8 >> /etc/locale.conf |
echo LANGUAGE=en_US >> /etc/locale.conf |
echo LC_ALL=C >> /etc/locale.conf |
# Set password for root |
passwd |
# Add real user remove -s flag if you don’t whish to use zsh |
useradd -m -g users -G wheel -s /bin/zsh MYUSERNAME |
passwd MYUSERNAME |
# Configure mkinitcpio with modules needed for the initrd image |
vim /etc/mkinitcpio.conf |
# Add ‘ext4’ to MODULES |
# Add ‘encrypt’ and ‘lvm2’ to HOOKS before filesystems |
# Regenerate initrd image |
mkinitcpio -p linux |
# Setup grub |
grub-install |
# In /etc/default/grub edit the line GRUB_CMDLINE_LINUX to |
GRUB_CMDLINE_LINUX=»cryptdevice=/dev/nvme0n1p3:luks:allow-discards» |
# Tried a bunch of different acpi parameters, acpi_osi=Linux, acpi_osi=! acpi_osi=»Windows 2009″, acpi_osi=»!Windows 2015″ |
# Finally settled on acpi acpi_rev_override=5 but to be perfectly honest, no idea what it’s actually doing. |
# edit the line GRUB_CMDLINE_LINUX_DEFAULT and add |
acpi_rev_override=5 |
# then run: |
grub-mkconfig -o /boot/grub/grub.cfg |
# Exit new system and go into the cd shell |
exit |
# Unmount all partitions |
umount -R /mnt |
swapoff -a |
# Reboot into the new system, don’t forget to remove the cd/usb |
reboot |
# Log in |
# Escalate to root |
su |
# locale settings didn’t stick? reset the keyboard |
loadkeys uk |
# Add user to sudoers file |
visudo |
# Uncommment line %wheel ALL=(ALL) ALL |
# return to regular user |
exit |
# connect to wifi |
sudo wifi-menu |
# Update |
sudo pacman -Fy |
sudo pacman -Syu |
# if the kernel updates, reboot |
sudo reboot |
# Install linux headers to install from AUR |
sudo pacman -S linux-headers |
# Download and build aurman for AUR installations run this section as normal user (NOT sudo) |
git clone https://aur.archlinux.org/aurman.git |
cd aurman |
makepkg -Acs |
# Install aurman (version may be different) |
sudo pacman -U aurman-2.9.22-1-any.pkg.tar.xz |
# Install xorg |
sudo pacman -S xorg xorg-server xorg-xrandr |
# Install nvidia driver |
# May be prompted to select the Repository extra, only one that worked for me was libglvnd |
sudo pacman -S nvidia |
# I’m going with the budgie desktop, install whatever you want here |
sudo pacman -S budgie-desktop |
# aurman to install budgie-extras |
aurman -S budgie-extras |
# install lightdm |
sudo pacman -S lightdm lightdm-gtk-greeter |
# enable lightdm service |
sudo systemctl enable lightdm.service |
# start lightdm service |
sudo systemctl start lightdm.service |
# install tilix, nautilus, gnome-control-center and python-nautilus |
sudo pacman -S nautilus python-nautilus tilix gnome-control-center |
# install bumblebee and enable the service |
# https://wiki.archlinux.org/index.php/Bumblebee#Installation |
# adding xf86-video-intel to hopefully enable external hdmi monitor |
sudo pacman -S bumblebee mesa xf86-video-intel |
# add user to bumblebee group |
sudo gpasswd -a bumblebee |
# enable bumblebee service |
sudo systemctl enable bumblebeed.service |