Steam

steamThis 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.

This repository requires that the RPMFusion repository be enabled on your system for the S3TXC library required by free drivers (nouveau, radeon, intel) and contains packages that may or may not be included in RPMFusion.

Along the main Steam package for Fedora are:

  • An alternative kernel module for xpad, the X-Box gamepad driver. This variant contains patches created by Valve to improve the driver and its behaviour.
  • SteamOS session files and binaries for running a Steam-only system.

Packages information

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.

Supported distributions:

  • Fedora 19 – i686/x86_64
  • Fedora 20 – i686/x86_64
  • Fedora 21 – i686/x86_64

Installation of the Steam client

To install the repository on a supported Fedora distribution, run as root the following command:

yum-config-manager --add-repo=http://negativo17.org/repos/fedora-steam.repo

Then perform the following command to install the client:

yum -y install steam

If you are already running a 32 bit desktop, it’s very likely that you have most of the dependencies already installed. 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

Videos (Game trailers, etc.)

To have flash videos playing in the steam client, you have to make the 32 bit flash player plugin available in your user directory. The 32 bit flash plugin needs to be used also if you’re running it in a 64 bit Fedora, as the Steam client and its embedded browser is still 32 bit only.

Click on this site menu and follow the instructions reported in the Flash Plugin page to proceed with the installation of the plugin repository.

On a 32 bit system, run as root:

yum -y install flash-plugin

On a 64 bit system:

yum -y install flash-plugin flash-plugin.i686

Manual steps

If you don’t want to use the packages, perform the following operations.

1) Open your browser to:

http://get.adobe.com/flashplayer/otherversions/

Select “Linux (32-bit)” and then “Flash Player 11.2 for other Linux (.tar.gz) 32-bit”.

2) As your user; put the plugin in your installation folder:

1
2
3
mkdir ~/.local/share/Steam/ubuntu12_32/plugins/
tar -xzf install_flash_player_11_linux.i386.tar.gz libflashplayer.so
cp libflashplayer.so ~/.local/share/Steam/ubuntu12_32/plugins/

3) Start again steam and enjoy the videos.

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.

Running Steam without the Ubuntu libraries

Normally the package uses Ubuntu libraries. To use instead Fedora provided libraries, install the additional package steam-noruntime:

yum -y install steam-noruntime

After installing, log out and log in back again so the environment file is sourced, setting STEAM_RUNTIME to 0.

Running Steam this way is unsupported and may lead to unexpected results. Know issues include: videos in the client are not played (regardless of installation of the Flash Plugin) and accessing audio settings when running Steam in Big Picture Mode make the client crash.

On the contrary, my USB gamepads are recognized better by games, I don’t have any visual artifact with Big Picture Mode and you can use the latest ALSA technologies in the drivers like 7.1 DTS sound, etc.

Just make some tests and see what works best for you.

Installed Steam client without the Ubuntu libraries

For comparison, see the difference in size for an installation that uses the Steam runtime and one that doesn’t (the SteamApps folder is the folder where applications/games are installed):

$ cd Steam
$ du -hs --exclude=SteamApps
1.4G .
$ du -hs --exclude=SteamApps --exclude=steam-runtime
1.1G .

If we could run it without the Steam runtime enabled and also avoid downloading the runtime archives the client would weigh nearly 500 mb less:

$ du -hs --exclude=SteamApps --exclude=steam-runtime*
906M

Let’s hope that in the future Valve will not mandate the use of Ubuntu libraries for long and will standardize on a specific set of common libraries (LSB?).

Screenshot from 2014-06-09 15:42:26

Improved X-Box gamepad kernel module

There is a multiple choice of kernel module packages; akmod (RPMFusion) and dkms packages are available. 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:

yum -y install dkms-xpad

If you plan to use AKMOD kernel modules:

yum -y install akmod-xpad kernel-devel

Requirement on 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/3.14.5-200.fc20.x86_64/extra/xpad/xpad.ko

The module to be loaded should reside under extra/xpad, so if it is not, just run depmod or reboot the system.

SteamOS session

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.

The SteamOS session is NOT compatible with the steam-noruntime package that disables the Steam Ubuntu Runtime. By disabling the runtime, the configuration panels in the interface to configure Audio, Voice and other settings will make the interface crash. So, if you want to try the SteamOS interface, remove your steam-noruntime package if you have it installed.

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-session

On a 64 bit system:

yum -y install steamos-session 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 Steam user that is configured to have additional permissions on the system compared to a normal user, as it is in Valve’s SteamOS
  • Some (ugly) wallpapers

Example of the packages installed:

$ rpm -qa steam\* \*xpad\*| sort
akmod-xpad-0.1-1.fc20.x86_64
kmod-xpad-3.14.5-200.fc20.x86_64-0.1-1.fc20.x86_64
steam-1.0.0.47-4.fc20.i686
steamos-backgrounds-0.7-1.fc20.noarch
steamos-base-files-2.30-1.fc20.noarch
steamos-compositor-1.19-1.fc20.x86_64
steamos-modeswitch-inhibitor-1.9.1-1.fc20.i686
steamos-modeswitch-inhibitor-1.9.1-1.fc20.x86_64
steamos-session-1.19-1.fc20.noarch
xpad-kmod-common-0.1-1.fc20.noarch

Screenshot from 2014-06-09 16:39:27If you have ever installed SteamOS from Valve’s provided media, you will get the same behaviour for the installation. Login once as the SteamOS user (the password is “steam”, finish the 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, unless you’re connected through HDMI, you will not get any audio, as by default SteamOS routes all audio through the HDMI connector of your video card.

Alternatively, if you just want to give it a quick test, reboot your computer, login with your user and select the SteamOS session. 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 the SteamOS is always the HDMI output.

Known issues

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 package updates (not Steam client updates) from the interface is broken. The Steam client binray calls dpkg directly.
  • There is no bug reporting tool installed, as this is not a configuration supported by Valve.
  • Shutdown/Restart etc. do not work reliably (at the moment). Debian 7 on which SteamOS is based still uses PolicyKit, in Fedora this is replaced by systemd’s logind. Converting all the rules is next on my todo list.

Bugs

The address for contacting me is in the package’s changelog.

26 Responses so far...

  1. abcdflg says:

    nstall mesa-dri-filesystem.i686 mesa-dri-drivers.i686 mesa-libGLU-devel.i686 mesa-libgbm.i686 mesa-libglapi.i686 mesa-libGL.i686 mesa-libGLU.i686 mesa-libEGL.i686′

    Theses libraries are missing after installing steam, maybe you can add them? :-)

    • slaanesh says:

      Hello, those packages are already requirements (or dependencies of its requirements) for the steam package. How did you install it? The only way to install it without its rpm requirements is to force the installation.

      $ rpm -q –requires steam | grep mesa
      mesa-libEGL(x86-32)
      mesa-libGL(x86-32)
      mesa-libgbm(x86-32)
      mesa-libglapi(x86-32)

  2. Bjoern says:

    On F19 x86_64 I’m getting since a couple of days these errors:

    /usr/bin/pulseaudio: symbol lookup error: /lib64/libpulsecore-3.0.so: undefined symbol: orc_program_new_from_static_bytecode

    Preloading liborc-0.4.so.0 as suggested on several sites on the web does not work for me.

    ERROR: ld.so: object '/usr/lib/liborc-0.4.so.0' from LD_PRELOAD cannot be preloaded: ignored.

    Any idea how to fix/work around this?

    • slaanesh says:

      I think you’re mixing two different things, the pulseaudio command you pasted is a 64 bit command in fact it’s looking for a 64 bit library.

      $ ldd /usr/bin/pulseaudio | grep orc
      	liborc-0.4.so.0 => /lib64/liborc-0.4.so.0 (0x00007faa487b6000)
      $ rpm -qf /lib64/liborc-0.4.so.0
      orc-0.4.17-2.fc19.x86_64

      while the library you want to preload for Steam is a 32 bit one.

      $ ls -al /usr/lib/liborc-*
      lrwxrwxrwx. 1 root root     20 May 27  2013 /usr/lib/liborc-0.4.so.0 -> liborc-0.4.so.0.17.0
      -rwxr-xr-x. 1 root root 610884 Feb 20  2013 /usr/lib/liborc-0.4.so.0.17.0
      lrwxrwxrwx. 1 root root     25 May 27  2013 /usr/lib/liborc-test-0.4.so.0 -> liborc-test-0.4.so.0.17.0
      -rwxr-xr-x. 1 root root  31228 Feb 20  2013 /usr/lib/liborc-test-0.4.so.0.17.0
      $ rpm -qf /usr/lib/liborc-0.4.so.0.17.0
      orc-0.4.17-2.fc19.i686

      I think that for some reason you’re missing a 64 bit library and this prevents pulseaudio from running. Try installing both the i686 and x86_64 variants:

      yum -y install orc.i686 orc.x86_64

      If the x86_64 one is already installed try to reinstall it with yum -y reinstall. There should be nothing to preload as I’m running with the same setup and Steam works fine without any preload.

  3. Bjoern says:

    My fault, I pasted my second try. My first one was preloading the 64 bit library which failed with the same error.

  4. Chris says:

    Thank you very much for this.
    Just installed the Steam client + Flash on a 64Bit Korora (Fedora 20) machine.
    Works as advertised :)

    Merry Xmas!

  5. David says:

    I’m not having any luck running steam with Fedora 20. Has anyone seen this before?

    $ STEAM_RUNTIME=1 steam
    Running Steam on fedora 20 64-bit
    STEAM_RUNTIME is enabled by the user
    Installing breakpad exception handler for appid(steam)/version(0_client)
    /home/dlewis/.local/share/Steam/steam.sh: line 755:  7280 Segmentation fault      (core dumped) $STEAM_DEBUGGER "$STEAMROOT/$PLATFORM/$STEAMEXE" "$@"
    mv: cannot stat/home/dlewis/.steam/registry.vdf’: No such file or directory
    Installing bootstrap /home/dlewis/.local/share/Steam/bootstrap.tar.xz
    Reset complete!
    Restarting Steam by request...
    Running Steam on fedora 20 64-bit
    STEAM_RUNTIME has been set by the user to: /home/dlewis/.local/share/Steam/ubuntu12_32/steam-runtime
    Installing breakpad exception handler for appid(steam)/version(0_client)
    /home/dlewis/.local/share/Steam/steam.sh: line 755:  7372 Segmentation fault      (core dumped) $STEAM_DEBUGGER "$STEAMROOT/$PLATFORM/$STEAMEXE" "$@"
    • David says:

      I finally found the problem related to segmentation faults. Steam requires the 32-bit version of the nvidia librarires…

      sudo yum install xorg-x11-drv-nvidia-libs.i686

      • slaanesh says:

        Exactly. It’s written under the “Installation” section of the page. Please note that the Steam package here it’s slightly different than the one in RPMFusion, if you want standard Steam defaults (i.e. using the Steam Runtime) do not use the one hosted here.

  6. punk45rock says:

    Is there any chance you could build the steamos xpad dkms driver to your package or to rpmfusion until it gets moved upstream to the kernel? I hear it has a lot of fixes, including no more blinking LED on the wireless Xbox controller. I found some packages at https://launchpad.net/~mdeslaur/+archive/steamos which seems to include the source file.

    • slaanesh says:

      Hello, I downloaded the original xpad.c file from kernel version 3.12.6 and from git; it is quite different from the one that is available at the link you posted. Since I don’t own a Wireless X-Box 360 controller, will you be able to make some tests for me if I build the package kernel module (DKMS/aKMOD)?

      • slaanesh says:

        The other 2 packages are for the compositor + Steam session file and the other for a library that inhibits games from resizing the screen. The compositor takes charge of expanding the game window fullscreen, so even if the TV set does not support the game resolution you will get a “nice” experience.

        Do you think that there would be any interest in running those packages on Fedora for getting a similar experience to SteamOS?

        • punk45rock says:

          Hi, I would be willing to test the package for you, I managed to add the xpad driver via dkms a while back and it worked, I tried to look up on using akmods and building rpms instead but I didn’t really have much spare time. I would also definitely be interested in running steam as steamos on my media center, but whether you want to put time into it is completely up to you. :)

  7. Gabriel says:

    Went through all the steps and the videos of the games aren’t playing. I just get a black background instead ;/

    • slaanesh says:

      Unfortunately Flash videos are not played with the Steam Runtime disabled, Steam does not load the Flash Plugin. Please use the Steam package as provided by RPMFusion or enable the Steam Runtime through STEAM_RUNTIME=1.

  8. wencan says:

    Failed to run steam through bumblebee
    steam from rpmfusion

    bash-4.2$ optirun steam
    Running Steam on fedora 20 64-bit
    STEAM_RUNTIME is enabled automatically
    /home/wencan/.local/share/Steam/steam.sh: line 755: 6625 Segmentation fault (core dumped) $STEAM_DEBUGGER “$STEAMROOT/$PLATFORM/$STEAMEXE” “$@”
    mv: cannot stat ‘/home/wencan/.steam/registry.vdf’: No such file or directory
    Installing bootstrap /home/wencan/.local/share/Steam/bootstrap.tar.xz
    Reset complete!
    Restarting Steam by request…
    Running Steam on fedora 20 64-bit
    STEAM_RUNTIME has been set by the user to: /home/wencan/.local/share/Steam/ubuntu12_32/steam-runtime
    /home/wencan/.local/share/Steam/steam.sh: line 755: 6875 Segmentation fault (core dumped) $STEAM_DEBUGGER “$STEAMROOT/$PLATFORM/$STEAMEXE” “$@”
    bash-4.2$

  9. Brae says:

    Great to see the xpad modules! i noticed in your installation instructions you gave the commands yum -y install dkms-steam and yum -y install akmod-steam, where in your repo they are named akmod-xpad and dkms-xpad. Thanks for the great work :)

  10. Gian Mureddu says:

    Is the improved xpad driver from the kmod and akmod installed onto the same path? I ask, because even though I installed it, and ran depmod, and rebooted, the driver loaded is still from extra/drivers/joystick path under /lib/modules/`uname -r`/ for the latest F20 3.15.6 kernel, and I don’t get the extra/xpad path, I’ve thought of manually rebuilding the src.rpm

    • slaanesh says:

      Hello,

      if you add akmox-xpad you get the new module under extra, and that will take precedence over the installed one. On my system:

      # rpm -ql kmod-xpad-3.15.6-200.fc20.x86_64
      /usr/lib/modules/3.15.6-200.fc20.x86_64/extra
      /usr/lib/modules/3.15.6-200.fc20.x86_64/extra/xpad
      /usr/lib/modules/3.15.6-200.fc20.x86_64/extra/xpad/xpad.ko
      # find /lib/modules/3.15.6-200.fc20.x86_64/ -name "*xpad*"
      /lib/modules/3.15.6-200.fc20.x86_64/extra/drivers/input/joystick/xpad.ko
      /lib/modules/3.15.6-200.fc20.x86_64/extra/xpad
      /lib/modules/3.15.6-200.fc20.x86_64/extra/xpad/xpad.ko
      # modprobe xpad
      # modinfo xpad | grep file
      filename:       /lib/modules/3.15.6-200.fc20.x86_64/extra/xpad/xpad.ko
      • Gian Mureddu says:

        For some odd reason, and this is a newly installed Fedora 20, akmod did not install the kernel-devel package, and I have installed the Nvidia blob as well as its akmod… that turned out to be the reason why the module was not being built, odd….

        • slaanesh says:

          You should open a bug on akmod, it is pulling in “kernel-devel” as a dependency, but kernel-devel is also provided by “kernel-debug-devel”, and since it comes alphabetically first it’s installed in place of the normal one.

          I’ve updated the guide to install “kernel-devel” explicitly.

  11. Gian Mureddu says:

    Nice, by the way, the driver works mazingly well. I hope Valve keep on improving Linux input device (aka) joystick and gamepad support and that THAT work will eventually make its way upstream to the kernel. In the mean time I enjoy that xpad driver does provide accurate rumble_ff feedback in actual games (well, at least those I’ve tested, like Dust), on this gamepad I explicitly bought for Steam and native games alike in steam games… As soon as Valve makes a Steam Controller final version available, I’m sure as heck I’ll be getting one!

  12. Gian Mureddu says:

    Just a last minute comment on the xpad driver thingy :D… So it turns out that the driver works WONDERFULLY and rumble and all is supported, as long as the device event driver is WRITEABLE, so if you simply:

    sudo chmod o+w /dev/input/by-id/*event*joystick

    You’ll get the desired functionality, however upon reboot you’ll lose that, so I wrote a quick and dirty hack to have udev do this for me, in a rule (92-xpad.rules; gotta love the name :D), like so:

    KERNEL=="event*", SUBSYSTEMS=="usb", SUBSYSTEM=="input", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0291", MODE=="0666"

    This does work on my system, however I do reckon that different pads will not work even if they do work with this driver, which is why I thought of formulating it in a different way so that the actual DRIVER does the detection for us, like so:

    KERNEL=="event*", SUBSYSTEMS=="usb", SUBSYSTEM=="input", DRIVERS="xpad", MODE="0666"

    Indeed works!! Still this makes the node writeable by anyone, which could theoretically imply a security concern, so I decided to instead leave it like so:

    KERNEL=="event*", SUBSYSTEMS=="usb", SUBSYSTEM=="input", DRIVERS=="xpad", GROUP="games", MODE="0660"
    KERNEL=="js*", SUBSYSTEMS=="usb", SUBSYSTEM=="input", DRIVERS=="xpad", GROUP="games" MODE="0664"

    This however requires manual addition of the current user to the games group, which I’m not sure could be automated by a scriptlet in the akmod rpm or simply be a requirement to do manually and have permanent permisons on the device across reboots; my 2¢ :-)

  13. Gian Mureddu says:

    Quick correction, in the example above I used /dev/inpu/by-id/, which as it is a symbolic link does not work, since the symlink is already world readable/writeable even if its objective node file isn’t, in my case the event node was /dev/input/event20, but still the udev rules do apply and the device nodes get the correct parameters!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

%d bloggers like this: