This repository contains the latest steam package for connecting to the Steam network from Valve. This package cannot be included in the main Fedora repository as it’s not free and is not shipped in source form. Since the Steam license allows package redistribution with a specific note for repacking in Linux distributions; the package is now available in RPMFusion.
Along the main Steam package for Fedora are SteamOS session files and binaries for running a Steam-only session in Big Picture Mode.
This packages try to comply as maximum to the Fedora Packaging Guidelines; this means they have debuginfo packages, default Fedora’s GCC compile time options (where possible) and standard locations for binaries, data and docs.
The main Steam package is 32 bit only, so also on 64 bit systems the package will be 32 bit based. On the contrary, the
xpad kernel module and SteamOS files are native to each architecture.
- Fedora – i686/x86_64
- CentOS/RHEL 7 – x86_64
Installation of the Steam client
To install the repository on a supported Fedora distribution, run as root the following commands to install the client and the joystick/gamepad drivers:
dnf config-manager --add-repo=https://negativo17.org/repos/fedora-steam.repo dnf -y install steam kernel-modules-extra
For CentOS, substitute
dnf commands and paths where appropriate; i.e.:
yum-config-manager --add-repo=https://negativo17.org/repos/epel-steam.repo yum -y install steam
If you are running a 64 bit desktop with proprietary Nvidia or AMD drivers; make sure you have the appropriate 32 bit OpenGL libraries installed; otherwise Steam will throw a “GLX error” when starting and games will not work.
Big Picture Mode
To make “Big Picture” work in Fedora or CentOS/RHEL, enable this SELinux boolean as root:
setsebool -P allow_execheap 1
Moving the Steam client installation
I often poke around with the client, check folder sizes in my home folder, etc. Running a
du -hs * in my home folder to check how much space my Pictures or Music folder take it’s very fast. But since the Steam client is installed in a hidden subdirectory it’s not really clear how much space it does take, especially when it reached nearly 70% of my whole drive.
To move the Steam installation (for example in your home folder), simply issue the following command:
$ mv ~/.local/share/Steam ~/Steam
And launch the client again, it will adjust all the symlinks for folders, saves, etc. by itself. Even the desktop / system shortcuts for the games work because they launch Steam (which is in the path) with the appropriate Steam game ID.
Improved X-Box gamepad kernel module
There is a multiple choice of kernel module packages; akmod (RPMFusion) and dkms packages are available for Fedora and dkms and binary kABI modules are available for CentOS/RHEL. This way all cases and personal preferences are covered. Just stick to what you prefer.
To install the improved X-Box gamepad driver, issue one of the following commands. For the DKMS enabled kernel module:
dnf/yum -y install dkms-xpad kernel-devel
If you plan to use AKMOD kernel modules:
dnf -y install akmod-xpad kernel-devel
kernel-devel is required as otherwise the package
kernel-debug-devel is pulled in automatically in place of the normal non-debug package.
After the kernel module is installed and recompiled for the kernel module you are running, make sure it is loaded in place of the Fedora kernel bundled one by launching the
modprobe command in verbose mode:
# modprobe -v xpad insmod /lib/modules/4.1.3-200.fc22.x86_64/extra/xpad/xpad.ko
The module to be loaded should reside under
extra/xpad, so if it is not and you are loading the official bundled one, just run
depmod or reboot the system.
If you plan to use kABI kernel modules (recommended for RHEL/CentOS):
dnf -y install kmod-xpad
In-Home streaming configuration
Valve has supported In-Home streaming (both as a server and as a client) in Linux for quite some time. According to the documentation, streaming uses UDP ports 27031 and 27036 and TCP ports 27036 and 27037.
The package includes the required service definitions for FirewallD. If you have installed a default desktop, FirewallD should be your firewall solution. To make sure that Steam can listen on the required ports through your firewall software, execute the following commands as
You should then be able to see the word “steam” by running:
firewall-cmd --get-services | grep steam
Then get the firewall zone you are in, and enable the service for it. For example, on my system, to get the firewall zone I’m using:
# firewall-cmd --get-active-zones public interfaces: em1
Then enable it permanently (i.e. at reboot) and immediately with these commands:
firewall-cmd --zone=public --add-service=steam-streaming --permanent firewall-cmd --zone=public --add-service=steam-streaming
Now start up two Steam clients with your user on the same network, and you should see games installed on both systems as available for playing in both Steam clients.
In-Home Streaming (hardware decoding/encoding)
In-Home Streaming hardware decoding is exposed through different backends, depending on the hardware you are running. These are detected at runtime, and are all 32 bit libraries also on 64 bit systems, as the client is 32 bit only.
These are the following backends, depending on what you are running on your system you should use something different:
|Video Driver||Hardware API||Library|
|Intel (intel)||Decoding: VA-API||libva.so.1|
|Nvidia (nvidia)||Decoding: VDPAU||libvdpau.so.1|
|AMD (radeon)||Decoding: VDPAU||libvdpau.so.1|
|Nvidia (nouveau)||Decoding: VDPAU||libvdpau.so.1|
|Nvidia (nvidia)||Encoding: NVENC||libnvidia-encode.so.1|
|Intel (intel)||Encoding: VA-API||libva.so.1|
The various components required for the hardware decoding are pulled in automatically as dependencies by the
steam package. After installing the
steam package, you can enable hardware support for decoding/encoding the video stream, like in the following picture:
During streaming, additional details can be seen by pressing F6. This will display stream statistics along with the encoder and decoder used on the server and client.
Additional controller configuration
The Steam package comes with some additional configuration files for input devices, to make them properly recognized in Big Picture mode. The following devices are part of the original Steam tarball:
- Valve USB devices
- Steam Controller udev write access
- Valve HID devices over USB hidraw
- Valve HID devices over bluetooth hidraw
- DualShock 4 over USB hidraw
- DualShock 4 wireless adapter over USB hidraw
- DualShock 4 Slim over USB hidraw
- DualShock 4 over bluetooth hidraw
- DualShock 4 Slim over bluetooth hidraw
- Nintendo Switch Pro Controller over USB hidraw
- Nintendo Switch Pro Controller over bluetooth hidraw
- Nacon PS4 Revolution Pro Controller
- Razer Raiju PS4 Controller
- Razer Panthera Arcade Stick
- Mad Catz – Street Fighter V Arcade FightPad PRO
- Mad Catz – Street Fighter V Arcade FightStick TE S+
- EMiO Elite Controller for PS4
- HORI RAP4
- HORIPAD 4 FPS
- HORIPAD 4 FPS Plus
- Armor Armor 3 Pad PS4
- STRIKEPAD PS4 Grip Add-on
Appropriate support for the following devices has been added and also to make them appear as a Game Pad and not as a mouse where a touchpad is present (this prevents the “ghost” keypresses in Steam Big Picture mode):
- Nvidia Shield Portable (2013), for In-Home Streaming only
- Nvidia Shield Controller (2015) over USB hidraw
- Nvidia Shield Controller (2017) over bluetooth hidraw
Detection for the following device has been modified to have them properly detected as mice/keyboards and not joysticks due to a bug in the Linux kernel. This prevents the “ghost” keypresses in Steam Big Picture mode:
- Microsoft Microsoft Wireless Optical Desktop® 2.10
- Microsoft Wireless Desktop – Comfort Edition
- Microsoft Microsoft® Digital Media Pro Keyboard
- Microsoft Corp. Digital Media Pro Keyboard
- Microsoft Microsoft® Digital Media Keyboard
- Microsoft Corp. Digital Media Keyboard 1.0A
- Microsoft Microsoft® Digital Media Keyboard 3000
- Microsoft Microsoft® 2.4GHz Transceiver v6.0
- Microsoft Microsoft® 2.4GHz Transceiver v8.0
- Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
- Microsoft Wireless Mobile Mouse 1000
- Microsoft Wireless Desktop 3000
- Microsoft® SideWinder(TM) 2.4GHz Transceiver
- Microsoft Corp. Wired Keyboard 600
- Microsoft Corp. Sidewinder X4 keyboard
- Microsoft® 2.4GHz Transceiver v9.0
- Microsoft® Nano Transceiver v2.1
- Microsoft Sculpt Ergonomic Keyboard (5KV-00001)
- Microsoft® Nano Transceiver v1.0
- Microsoft Wireless Keyboard 800
- Microsoft® Nano Transceiver v2.0
- WACOM CTE-640-U V4.0-3
- Wacom Co., Ltd Graphire 4 6×8
- Wacom Bamboo Pen and Touch CTH-460
- A4 Tech Co., G7 750 mouse
- A4 Tech Co., Ltd Bloody TL80 Terminator Laser Gaming Mouse
- A4 Tech Co., Ltd Bloody RT7 Terminator Wireless
- Modecom MC-5006 Keyboard
- A4 Tech Co., Ltd Terminator TL9 Laser Gaming Mouse
- A4 Tech Co., Ltd Bloody V5
- A4 Tech Co., Ltd Bloody R3 mouse
- A4 Tech Co., Ltd X-718BK Oscar Optical Gaming Mouse
- A4 Tech Co., Ltd XL-750BK Laser Mouse
- A4 Tech Co., Sharkoon Fireglider Optical
- Cooler Master Storm Mizar Mouse
Inside the repository there are packages specific for the SteamOS customization that have been implemented by Valve for their Debian based distribution. It is now possible to install all files and packages required to launch a Steam only session from the login manager. This will bring up Steam in SteamOS mode (
-steamos switch) and allows you to configure all system aspects directly in the Steam interface.
To enable the SteamOS session and enjoy the same experience provided by Valve’s SteamOS; install all the above packages plus the additional SteamOS packages:
yum -y install steamos-compositor
On a 64 bit system:
yum -y install steamos-compositor steamos-modeswitch-inhibitor.i686
This will install the following components on your system:
- The modeswitch inhibitor, a library that is used to ignore the Xrandr resize requests performed by games.
- The SteamOS compositing manager, which takes care of scaling the output to your native resolution, providing a seamless transition between games with different resolutions than your native monitor/TV resolution.
- The required support files for the SteamOS session (binaries, cursor, scripts, etc.).
- The PolicyKit policies that are required to configure additional permissions on the system compared to a normal user, as it is in Valve’s SteamOS (for example for configuring network, resolution, etc.).
These are samples of the additional screens you get with Steam Big Picture in SteamOS mode, most of them on the right side, under “System”:
Example of the packages installed:
$ rpm -qa steam* steamos-modeswitch-inhibitor-1.10-2.fc29.x86_64 steamos-compositor-1.35-1.fc29.x86_64 steamos-base-files-2.58-1.fc29.noarch steam-220.127.116.11-7.fc29.i686
If you have ever installed SteamOS from Valve’s provided media, you will get the same behaviour for the installation. Login once with your user, complete the user Steam installation (with the system icon or by running Steam from the command line) and logout. Now you can login back again using the SteamOS session and experience the SteamOS interface on your Fedora system.
After logging in, if you want to experience Steam on a TV, make sure to go to the audio settings and configure audio output through the HDMI connector of your video card. After testing it and getting back to your normal account, remember to switch back to your normal audio output as Gnome will keep track of your last used audio device, that after testing SteamOS is always the HDMI output.
If you want to make SteamOS start immediately after powering up the system, make sure to enable auto login for your user and all should be fine.
An alternative to configure SteamOS with your user and then switch to autologin, is to install a minimal Fedora system and enable autologin directly from the beginning.
To create such experience, proceed as follows:
- Install Fedora Workstation, selecting the Minimal configuration.
- Make sure that when partitioning the majority of the space on the system is allocated to the
/homemountpoint, as this is where all the games will reside.
- Create a user called
steamwith a password set.
- Then execute as root the following commands to get the base system up and running:
# dnf group install hardware-support # Xorg xorg-x11-drv-evdev libglvnd-egl vulkan-loader.x86_64 vulkan-loader.i686 lightdm flatpak NetworkManager-wifi kernel-modules-extra bluez # dnf config-manager --add-repo=https://negativo17.org/repos/fedora-steam.repo # dnf install steam steamos-compositor steamos-modeswitch-inhibitor.x86_64 steamos-modeswitch-inhibitor.i686 # setsebool -P allow_execheap 1 # systemctl enable sshd.service # systemctl enable lightdm.service # systemctl set-default graphical.target
- After this, edit
/etc/lightdm/lightdm.conffrom LightDM to allow autologin:
pam-service=lightdm-autologin pam-autologin-service=lightdm-autologin user-session=steamos autologin-user=steam autologin-session=steamos
- Then create
/var/lib/AccountsService/users/steamwith the following content:
[User] Session=steamos XSession=steamos Icon=/home/steam/.face SystemAccount=false
- If you also need the Nvidia drivers:
# dnf config-manager --add-repo=https://negativo17.org/repos/fedora-nvidia.repo # dnf install kernel-devel akmod-nvidia nvidia-driver-libs.x86_64 nvidia-driver-libs.i686
The following list of issues are related to the fact that the SteamOS system is designed around Debian, so there are a couple of things that are not supported by this setup:
- Checking for system package updates (not the Steam client updates themselves) from the interface is broken. The Steam client binary calls dpkg directly.
- There is no bug reporting tool installed, as this is not a configuration supported by Valve.
The address for contacting me is in the package’s changelog.