Playing movies on Blu-Ray Disks?

Hi folks,
having bought a few movies on Blu-Ray films I wonder if there’s a way to play them.
There seems to be some difficulties regarding drm.

So are there programs or codecs that allow us to play legitimate bought Blu-Rays?
Is there an opportunity to buy a capable player, if there’s no free software available?

1 Like

There are certainly bluray players that will work for your disks. They often cost ~$50 in most of the stores around and AFAIK all have the DRM restrictions built in.

There also is makemkv which when installed can rip the bluray disk to an mkv file after which almost any video player can play it. Of course your drive on the PC must be bluray as well to read the disk.

I have not tried video players with bluray disks but IIUC few (if any) have the ability to decrypt a bluray disk. Almost all can play a DVD disk.

It is your responsibility to comply with IP laws.


Have you tried:


I was planning to give an old laptop which includes a blu-ray device to my nice.
So a simple, legit solution would be appreciated.
Looks like we still have to wait for it.

Thanks for the suggestions though, I’ll give a try.

A while back I crated a script that automatically downloads and installs the latest aacs keys from a public database.

It allows you to play most Blu-Rays using something like VLC, so long as you install the libraries that it needs to read the disks, witch I believe are either in the main fedora repos, or in rpmfusion. I don’t remember what they’re called off the top of my head though.

If it helps, I can make a gist on github, and share it.

If you schedule it as a timer, or as cronjob, and run it daily, it stays pretty up-to-date.

I just checked. The libraries are libaacs, and libbluray, just like in arch, and they’re in rpmfusion.


It would be useful to have that script, or at least the source of the keys. I already have both those libraries installed (libaacs is from rpmfusion, libbluray from fedora) but do not have the needed keys to play the disks.

1 Like

Yes, I second that. If it would be no too big hassle, I’d also would like to have the script.
Also others may really appreciate it.

I made some changes for this version.
Well, “some” changes. I basically rewrote the entire script, but it’s much better now.
It was originally something I did in about 15 minutes to solve the problem of manually installing the KEYDB.cfg file every time I wanted to update it. So I wanted to clean it up before posting it anywhere.

It tries to install the database globally by default, which requires root. You can use ‘-l’ to install locally instead.
It also looks for a file named key_header containing the device host key headers, but you don’t need this, and it usually ends up being useless anyway, as any of the device keys that have been found are old and will be permanently revoked the moment you insert any recent disk with a newer key.

FindVUK updates constantly, so I usually run an update once a day. You can use cron, or systemd timers for this. Ideally you’d be able install this as a package, and it would set up the timer for you. Building a package is a lot of extra work for this one script though, so I’m not going to worry about that.

One important note is that this wont fix BD+ disks.
BD+ is kind of a buggy mess right now, but if you want more on it there’s a Doom9 forum post you should see that covers how you can, sort of, fix it. It includes links to the BD+ table files. From what I understand, they’ve patched libbdplus, so you can skip the part where you have to do that manually.

If they had a central BD+ table database, I would write a script for that too, but, unless I host my own, which I don’t want to, it’s hard for me to make a simple download script, like with the AACS VUK files.


I got a Blu-Ray of “Running Man” working, since it already was in the installed KEYDB.
Others didn’t work yet (only tried two disks). The menus didn’t work though, only the film is playing. Anyway your script does its job.

What I’ve did (this also enables dvd playback):

  1. Installed Repos and Software (probably not every step is needed)
sudo dnf install$(rpm -E %fedora).noarch.rpm$(rpm -E %fedora).noarch.rpm
sudo dnf groupupdate core
sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
sudo dnf groupupdate sound-and-video
sudo dnf install rpmfusion-free-release-tainted
sudo dnf install libaacs libdvdcss
sudo dnf install vlc
  1. Installed crontabs in order to use cron and anachron
    sudo dnf install crontabs

  2. Downloaded @cptgraywolf script made it executable
    sudo chmod a+x
    and placed it into cron.weekly
    sudo mv /etc/cron.weekly/

  3. Executed the script
    sudo bash /etc/cron.weekly/
    → This downloads, unzips and moves the KEYDB to /etc/xdg/aacs
    → This location doesn’t seem to work with vlc
    ----> This can be fixed by giving world readable permissions
    ----> chmod -R a+r /etc/xdg/aacs

  4. Switched to the user context and executed the script with the argument “-l” (only neccessary, if point 4 doesn’t work)
    bash /etc/cron.weekly/ -l
    → This copies the KEYDB to ~/.config/aacs
    → This location worked for me using the vlc player

1 Like

It doesn’t seem like the “/etc/xdg/aacs” location is always honored.
I don’t really have a solid solution to that.

You could run a single script that checks all the directories under “/home” to see is they contain a “.config” folder, then link “/home/<user>/.config/aacs” to the “/etc/xdg” location, if the folder exists.

There are other, more in-depth, options too. Ones that would try things like: checking each user’s passwd entry, to see if it should install the config for them or not.

It would be nice if libaacs would always honor the “/etc/xdg/aacs” location, or, at least, something like that, but I’m not sure if we’ll see that happen or not.

It only occurred to me after the initial post that symlinks would be the obvious choice for this. I think I’m going to implement the fist option, and use a check to make sure the symlink exists in each home folder that contains a ‘.config’ directory.
I can’t be bothered to test passwd entries.

I’ll update the gist once it’s done.
You should see it in “Revisions”, when that happens.

1 Like

Found the problem. The user permission to read the file were missing.
So you may need to add a passage like this e.g. after moving it to /etc…:
chmod -R a+r ${target}

After downloading by root the file belongs to root and won’t be world readable.
So the users processes were not able to read it.

Executing the script using the “-l” option, runs it from the chosen user account and sets the permissions accordingly.

That’s odd.
This doesn’t happen on my system.

Well, that’s easy enough to fix.

1 Like

It should be fixed now.

I also fixed an edge case where ‘mkdir’ could fail, but the script would try to continue.

1 Like

Very welcome, thank a lot. :grinning_face_with_smiling_eyes: :+1:

The reason was that my root users umask is set to 0077.
And I completely forgot about that.