How-To: Watch DVDs on Fedora Linux

The goal of this post is to help you be able to watch DVDs on Fedora Linux. If you are using a different Linux distribution, this method should be able to be applied by altering it to your respective distro.


    1. Install rpmfusion Repository
    2. Install (all the) Codecs
    3. Install DVD Tools/Libraries and VLC Media Player
    4. Install libdvdcss
  3. Wrapping Up
    1. How To Update libdvdcss in the Future


I am slowly in the process of getting ready to replace my current “home media PC” (a.k.a my laptop) with a new computer using Fedora. I used my current Fedora desktop to try watching DVDs, and I found that without adding libdvdcss, I was only able to watch some DVDs but not all DVDs (ex: I could not watch Redbox movies). After a bit of digging and key pounding, I can gladly say that I have been able to watch every DVDI have tried so far, including ones that did not work previous to installing libdvdcss.

This specific guide was written using a system running Fedora 21, but this should work for at least Fedora 20 and Fedora 22.


Note: The ‘-y’ option in the dnf command tells dnf to not prompt for confirmation for the installation. If you would like to see exactly what is being installed and be prompted for confirmation before the install begins, then remove the ‘-y’ option from the commands.

Note: All dnf commands can be replaced by using yum instead of dnf. The first command would have to be changed to ‘yum -y localinstall’, but otherwise you can just do a drop-in replacement of yum wherever dnf is used, if you prefer to use yum.

Install rpmfusion Repository

This repository contains extra packages that are not included in the default Fedora repositories, including packages, such as VLC media player, that we will be installing later in this process.

dnf -y install --nogpgcheck$(rpm -E %fedora).noarch.rpm$(rpm -E %fedora).noarch.rpm

Install (all the) Codecs

It is possible not every one of these codecs is needed, but I had installed all of them to ensure I didn’t miss anything that would get DVD playing working correctly.

dnf -y install gstreamer-ffmpeg gstreamer-plugins-base gstreamer-plugins-good gstreamer-plugins-good-extras gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-devel gstreamer-plugins-base-devel gstreamer1-libav gstreamer1-plugins-bad-freeworld gstreamer1-plugins-ugly

Install DVD Tools/Libraries and VLC Media Player

Note: You don’t have to install VLC media player if you have another media player that you prefer, however VLC is a great media player with support for a ton of video and audio formats.

dnf -y install libdvdread libdvdnav lsdvd vlc

Install libdvdcss

libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption.
libdvdcss basic description from VideoLAN website

More information on libdvdcss and what it does can be found at the following two links:

  1. If not already installed, install git.
    sudo dnf -y install git
  2. Create a directory to clone (download) the libdvdcss Git repository. This can be created most anywhere of your choosing, just make sure to the path in the commands below with the path you chose.
    mkdir ~/bin
  3. Clone (download) the libdvdcss Git repository
    cd ~/bin
    git clone
  4. Autoreconf, configure, make, and install the libdvdcss library
    cd libdvdcss
    autoreconf -i
    ./configure --prefix=/usr
    sudo make install

Wrapping Up

Watch DVDs on Fedora Linux - Watching the DVD of The Incredibles
Watching the Incredibles with VLC media player on Fedora 21

Hopefully at this point you can watch your DVDs using Fedora. Make sure to keep the libdvdcss library updated; directions on how to do so are listed below.

If you have any questions or comments, then feel free to leave a comment at the bottom of this page.

How To Update libdvdcss in the Future

New versions of libdvdcss will be released and like any piece of software it is good to keep it up to date. Since we did not install it using the package manager (it was not an option at the time of writing), we will need to do a few manual steps to update it.

cd ~/bin/libdvdcss/
make clean
git pull
autoreconf -i
./configure --prefix=/usr
sudo make install

How To: Configure Synergy Server as a systemd Service in Linux (Fedora 20)

After I got my desktop up and running full time, I decided that I wanted to use it as my Synergy server instead of as a Synergy client (see here for how to setup as a client).  If you would like to learn more about what Synergy is then you can visit my previous post here or you can visit the Synergy website.


    1. Install and Configure Synergy Server
    2. Verify systemd User Instance is Running
    3. Create systemd user service for synergys
    4. Create synergys.desktop Autostart File
  2. Wrapping Up
  3. References


The following directions were verified to work on my Fedora 20 64-bit system.  Hopefully your experience will be the same, though your mileage may vary.  I cannot guarantee exactly what will happen with your system, and I take no responsibility for any issues this causes.  Follow these at your own risk.

If you do not understand what a certain command or component might be doing, then I suggest you research it to fully understand what changes you are making to your system.

Install and Configure Synergy Server

If you don’t have it already, you’re going to need to download and install Synergy.

  1. Download — Go to and grab the appropriate file for your version of Linux.  In my case with Fedora 20 64-bit,  Or via command line:
    $ wget
  2. Install — Go to where you downloaded the file, and install it.
    $ cd ~/Downloads/
    $ sudo yum -y localinstall synergy-1.5.0-r2278-Linux-x86_64.rpm
  3. Get a working configuration — Open the Synergy GUI (in command line type: synergy) and edit your settings so Synergy clients can successfully connect to this system (your Synergy server).  Verify you can swipe your mouse over to one of the clients and use the mouse and keyboard on that system correctly.
  4. Copy the command used by synergys to run your server — Run the following command and look for the line that starts with /usr/bin/synergys:
    $ ps -eo command | grep -v grep | grep synergys

    Note: The line should look something like
    /usr/bin/synergys -f –no-tray –debug INFO –name YourHostName -c /tmp/<tmpFileName> –address :24800
    Note: If you use synergy’s built-in encryption then the option –crypto-pass <yourPasswordHash> will also be present. Example:
    /usr/bin/synergys -f –no-tray –debug INFO –name YourHostName –crypto-pass <passHashHere> -c /tmp/<tmpFileName> –address :24800

  5. Click ‘File’, then click ‘Save configuration as…’ and choose a location and name to save your file (ex: /home/yourUser/.synergy.conf)
  6. Now stop synergy and close it.

Verify systemd User Instance is Running

We just need to check that your systemd user instance is starting on boot.  This should be the default action of your system.

  1. Find your userid — At the command line type the following command, and look for “uid=####(username)”, where #### is any number, most likely 1000 (doesn’t have to be 1000, whatever is there is your userid).
    $ id
  2. Make sure a sytemd user instance has been created for your user
    $ sudo systemctl status user@####.service

Create systemd user service for synergys

Now we need to create the synergys.service file to use for our systemd user instance.  Creating this service will cause the synergys service to start once you log in to your system.

  1. Create appropriate directory
    $ mkdir -p ~/.config/systemd/user
  2. Using your favorite text editor, create the file ~/.config/systemd/user/synergys.serviceTo understand what any of the switches in the synergys commmand do, run ‘synergys –help’ from a command line.Copy and paste the following config into the file. In the ExecStart= line, put the entire command you found above.  If you would like to have synergys log to a specific file (instead of logging to the default journald log), add the -l option after the -d option (ex: -l /path/to/log-file/writeable/by/your/user). Also make sure to specify the Synergy configuration file you saved earlier with the -c option (place it after the –crypto-pass option).Note:  In the config below I replaced the long options with their respective short options.  For example, I replaced –name with -n.
    Description=Synergy server service
    ExecStart=/usr/bin/synergys -f -d INFO -n pcName --crypto-pass passwordHashHere -c /home/yourUser/.synergy.conf -a :24800
  3. Save your file.
  4. Make your user instance aware of the service, and verify you can start, restart, and stop it:
    $ systemctl --user daemon-reload
    $ systemctl --user start synergys.service
    $ systemctl --user restart synergys.service
    $ systemctl --user stop synergys.service

Create synergys.desktop Autostart File

Now we need to create our synergys.desktop file, which will run once we log in to our system.

  1. Create the file ~/.config/autostart/synergys.desktop
  2. Copy and paste the config below into the file, then save your file.
    [Desktop Entry]
    GenericName=Software KVM
    Comment=Share your keyboard and mouse over a network
    Exec=systemctl --user start synergys.service

Wrapping Up

You should now be able to reboot your system, log in, and then use your mouse and keyboard to control your Synergy clients.  Please see the references below which helped me to create this guide.  If you have any questions or comments, leave them below!