Valve's custom repositories
The Deck uses some specialized drivers that must be installed from Valve's holo and jupiter repositories. These can be added to any installation by appending the repositories in pacman's configuration:
... [jupiter] Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch SigLevel = Never [holo] Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch SigLevel = Never
It's also possible to install packages from the beta repositories by appending either
-staging to the repository names.
Running the Steam Deck UI
You need to set up Valve's custom repositories for this.
Preferably add all packages installed from either the
holo repositories to your IgnorePkg to prevent them from being overridden by the main repositories as they will often times include special configuration tailored for the Steam Deck.
jupiter/sddm-wayland and enable
You will need to replace
/usr/bin/steamos-update with this stub, otherwise you will receive an error message on first startup or when updating.
/usr/bin/steamos-select-branch and add it to your NoExtract to prevent the Beta participation option in the System settings from mentioning SteamOS (and replace it with Steam Client beta channels). Note that this is only visual and will not affect any actual behaviour.
FPS Limiter is broken
jupiter/mesa or compile mesa with this patch applied.
Performance overlay does not show up
jupiter-fan-control.service. You will need the jupiter platform drivers, otherwise the service will fail (see below).
As of kernel version 5.19, the following will not work on the mainline kernel:
- Fan controls
- Audio (speaker or headphones, drivers were upstreamed for 6.0)
- Ambient light sensor
- Likely a bunch of other stuff
linux-neptune kernel along with
Alternatively I host the patches I use to get those working on the mainline 5.19 kernel.
If you use the mainline kernel with the linked patches, to get the audio working properly (with the same volume levels and working headphone / speaker switching) download the ucm.zip from here, drag and drop the .conf files into
/usr/share/alsa/ucm2/conf.d/acp5x (replacing the existing ones if necessary) and copy the following files (provided by
/usr/lib/firmware/cs35l41-dsp1-spk-cali.bin /usr/lib/firmware/cs35l41-dsp1-spk-cali.wmfw /usr/lib/firmware/cs35l41-dsp1-spk-prot.bin /usr/lib/firmware/cs35l41-dsp1-spk-prot.wmfw
Here are the stats on my Steam Deck with zstd (level 6) compression applied on my game library for instance:
# compsize -x /run/media/mmcblk0p1/ Processed 186895 files, 2454891 regular extents (2728341 refs), 85721 inline. Type Perc Disk Usage Uncompressed Referenced TOTAL 83% 416G 501G 539G none 100% 279G 279G 286G zstd 61% 137G 221G 252G prealloc 100% 2.2M 2.2M 696K
As you can see, depending on your game library this can lead to significant savings.
To make the Deck UI format sd cards using Btrfs and mount those, head over to the steamos-btrfs project's repository and apply the
files/usr/lib/hwsupport/sdcard-mount.sh.patch patches to the corresponding files on your Steam Deck's filesystem. Copy
/etc/default/steamos-btrfs and make changes to the default mount options as needed (personally I use
SteamOS KDE Plasma Themes
Steam On-Screen Keyboard in Desktop Session