Steam is a proprietary content delivery and launcher application for video games, creative tools, and multimedia such as movies and soundtracks. Starting in 2012, it has official support for GNU/Linux, and has a custom version of Wine included for running Windows-only games and software. It is packaged for Debian in the non-free section.
- Steam runtime issues
- User permissions
- No sound in games
- Game Fails to Launch: (Steam Works)
- Slow Download Speeds
- Unable to load driver
- See also
The instructions in this article will show a # before a command if it needs to be run as root. Exchange this character for sudo or change your user to root in your terminal before running these commands.
Before using Steam, you must ensure you're using the best drivers for your card, and that you have the necessary 32-bit libraries, as well as proper Vulkan support.
Find the make of your GPU and follow the relevant section below.
The proprietary driver is heavily recommended for decent performance, and it's necessary for Vulkan support. Follow the Debian installation guide for the proprietary NVIDIA driver including the multiarch NVIDIA driver libraries section.
The open-source Nouveau driver does not yet support all the video card features (modern OpenGL and Vulkan support is not present), and it is unable to run GPUs above their base clock frequency due to restrictions by NVIDIA. This causes terrible performance and compatibility. The proprietary driver is essentially required for any kind of modern gaming.
For the best support, compatibility, and performance, the open-source drivers are always recommended. On a normal desktop setup, they should be configured properly out-of-the-box. Be sure to follow the guide to install multiarch libraries for AMD.
Consider enabling AMDGPU on certain older cards for better performance and Vulkan support.
The built-in drivers are the best ones available for Intel GPUs, though you're recommended to remove the xserver-xorg-video-intel package on most hardware released after 2007 for better stability and performance.
Be aware that older generations (Particularly Intel Ivybridge and older) have incomplete support for Vulkan, and likely will not work with most Proton/Steam Play games.
Append a "non-free" component to the main line in your /etc/apt/sources.list file (see Editing software sources). For instance, on a Debian 11/Bullseye system, the line may look like this after your edit:
deb http://deb.debian.org/debian/ bullseye main contrib non-free
For amd64 (64-bit) systems, enable Multi-Arch:
# dpkg --add-architecture i386
Update the list of available packages:
# apt update
Install the steam package:
# apt install steam
For amd64 (64-bit) systems, additional libraries need to be installed for Vulkan and 32-bit titles:
# apt install mesa-vulkan-drivers libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386
You should now be able to run Steam either by executing "steam" in your terminal, or from your desktop's application launcher.
Steam runtime issues
Steam ships with its own versions of some libraries (the "Steam Runtime") in an attempt to emulate the Ubuntu 12.04 environment in later versions of Ubuntu.
By default, it will also use newer versions of certain libraries from the host system if available. You can disable this functionality, and force utilization of the older Steam runtime, by running Steam with:
Some core libraries included in the Steam Runtime will often conflict with the newer versions of other libraries included in Debian (such as drivers, and specifically the open-source Mesa driver that may be in use on systems using AMD and Intel graphics).
Variant: remove offending files from Steam Runtime
You can work around this by deleting the Steam Runtime versions of these libraries, forcing Steam to fall back to the up-to-date system versions (the ones installed by apt-get).
Note that Steam will frequently re-install these runtime libraries when Steam is updated, so whenever Steam updates, you should exit, remove the libraries, and restart it again.
Run these commands to remove runtime libraries known to cause issues with Debian:
# rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6 # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1 # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1 # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6 # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libxcb.so.1 # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgpg-error.so.0
Examples of issues / error messages known to occur if these libraries are present:
- Failed to load libGL: undefined symbol: xcb_send_fd
- ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
- Problems with 64-bit games like XCOM
- "OpenGL GLX context is not using direct rendering, which may cause performance problems." (see below)
- "Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported or your OpenGL driver needs to be updated."
- The Steam client itself crashing
If you find yourself at this Steam page then likely removing the above files will sort this problem
Variant: Don't use runtime
If you start steam with:
It won't use its runtime and will only use the system libraries. The necessary packages to run entirely without the runtime have been removed in Debian 10/Buster, but Steam will automatically use specific newer system libraries in place of its runtime if they're available.
On Debian 9/Stretch, you can install the following packages to make this work:
libxtst6:i386 libxrandr2:i386 libglib2.0-0:i386 libgtk2.0-0:i386 libpulse0:i386 libgdk-pixbuf2.0-0:i386 libcurl4-openssl-dev:i386 libopenal1:i386 libusb-1.0-0:i386 libdbus-glib-1-2:i386 libnm-glib4:i386 libnm-util2:i386
It's also necessary to link two libraries because the libudev.so.0 file is currently not available in Debian:
ln -s /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
If this is not enough in the future, use
LD_LIBRARY_PATH=~/.steam/bin32 ldd ~/.steam/bin32/steamclient.so | grep 'not found'
to find missing dependencies of steamclient.so, or if some other Steam *.so fails to load, adapt the command for that one. To find the packages containing the dependencies, use the Debian package search at http://packages.debian.org.
You must be sure that the regular user that will run Steam games is at least at groups "video" and "audio".
# usermod -a -G video,audio second_user
Debian has a security approach that all is forbidden unless sysadmin explicitly allows. This schema is managed by "task" groups. The very first regular user created during installation is included in groups "video", "audio", "cdrom", "scanner", and so on. The next users created are not included at any special group. This way, next created users will not be able to execute Steam. It fails with weird messages regarding "X bad number out of range." You must have to include them explicitly with commands or users management GUIs like kuser.
No sound in games
Possibility: Library conflicts
You need to remove alsa-lib and libasound.so.* in ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/ ~/.steam/debian-installation/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/
# rm -rf ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/alsa-lib # rm -rf ~/.steam/debian-installation/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/alsa-lib # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libasound.so.* # rm ~/.steam/debian-installation/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libasound.so.*
Possibility: Non-standard audio output device
Some games won't use any audio output device which doesn't use 16bit 44.1kHz by default. Usually this happens with quality devices which use higher values by default.
Game Fails to Launch: (Steam Works)
Case #1: In some cases, games may depend on system libraries outside the Steam runtime that you might not have installed, such as GTK2
Install the proper package:
# apt install libgtk2.0-0:i386
Case #2: The Steam game folder needs +x (exec permissions). You may encounter this if you're mounting an external drive containing a library, or if it was copied from a remote location.
Make sure games inside /home/<username>/.steam/steam/steamapps/common/ have execution permissions on the startup script. Some run independently via a shell script (Ending in .sh) while other games run a shortcut.
In the "Properties" menu of most desktop file managers, you can set this permission (Check for an "Is executable" checkbox or similar).
Through the terminal, you can do the same by running a command such as this:
# chmod +x /home/<username>/.steam/steam/steamapps/common/<game ID>/start.sh
Remember to change this example path to the one of the actual file you're attempting to set as an executable, both the folder names and the name of the script file will vary highly. Also note that the "#" indicates that this command needs to be run as an administrator. If it's set up, you can exchange this for a "sudo" at the start of the command, or you can run "su" to change the terminal's user to root before you run this command.
Slow Download Speeds
Due to a bug in the Steam for Linux client, download speeds can slow down to several bytes a second. This happens because the client looks up the network address for all the download servers it connects to every time it makes a connection. This can mean it will request the same information ten times a second from the DNS servers your network connection is using. Depending on how that DNS server is configured, it can throttle down the amount of DNS requests you can make. This causes Steam download speeds to start fast, but then quickly slow down into nothing.
A workaround for this issue is to install a DNS cache on the local machine running Steam so it only taxes your machine, and not your ISP. This involves downloading dnsmasq and resolvconf
# apt update # apt upgrade # apt install dnsmasq # apt install resolvconf
and then restart the services:
# service dnsmasq restart # service resolvconf restart
This issue's solution came from the following Steam Community post.
Unable to load driver
When Steam's runtime is used, errors as these are possible:
- libGL error: unable to load driver: radeonsi_dri.so
- libGL error: unable to load driver: r600_dri.so
Best solution is removing some unnecessary libraries:
# # please be accurate with this command find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete