I installed DVD codecs on Linux so you don’t have to guess

I’m Kayla, and yes, I still watch DVDs. Rainy Sunday, thrifted discs, a USB DVD drive, and a mug of tea. That’s my mood. For readers in the Danville area on the same second-hand hunt, check the local classifieds over at Backpage Danville where community members regularly post stacks of DVDs, used USB drives, and living-room gear at thrift-store prices. I’ve set this up on my own laptops more times than I thought I would. It looks scary at first. It isn’t. Well—almost.
If you want the minute-by-minute rundown of this exact codec adventure, I also published a step-by-step diary on Desktop Linux Reviews—you can skim it here.

Here’s what I did on Ubuntu, Fedora, and Arch, what broke, and how I fixed it. Real commands. Real errors. No nonsense.
If you’d like a broader look at how different Linux distros handle everyday desktop tasks (including media playback), check out the detailed guides on Desktop Linux Reviews.

Note: Some DVDs have copy protection. Rules vary by country. Please follow your local laws.

My setup (so you know I actually did this)

  • Laptop: ThinkPad T480 and a small ASUS mini PC
  • Drive: LG USB DVD writer (model GP65)
  • Distros I used: Ubuntu 22.04 LTS and 24.04, Fedora 40 Workstation, Arch Linux (rolling as of fall 2024)
  • Player: VLC, because it just works and has a nice slider I can drag with my pinky

I tested with three discs:

  • A plain old home video DVD
  • A Disney movie from 2006
  • A BBC documentary that’s a bit fussy about regions

Quick background (why it failed the first time)

I popped in a disc, opened VLC, clicked Play. Boom—error. VLC said it couldn’t read the disc. The thing is, many DVDs use CSS encryption. You need a tiny bit of extra code (libdvdcss) so VLC can read them. Some drives also need a region set. Sounds dull. But it matters.

Here’s the thing: once you install the right pieces, it feels boring, because it just works. And boring is good.

Ubuntu: my smoothest run

On Ubuntu, it’s pretty tidy. The package helps build libdvdcss for you.

What I ran:

  1. sudo apt update
  2. sudo apt install vlc libdvd-pkg
  3. sudo dpkg-reconfigure libdvd-pkg

That third step is key. It fetches and sets up libdvdcss. I made tea while it ran, which took maybe a minute.

While that script chugs away you’ve got a brief window of downtime—perfect for a quick distraction. I sometimes hop into a spontaneous webcam chat to trade movie picks with random strangers, and the place I land most often is this candid Dirty Roulette review where you can jump straight into anonymous video conversations and swap film recommendations while the terminal lines scroll by.

Then I tested:

  • Insert disc
  • Open VLC
  • Media > Open Disc > Play
  • Or run: vlc dvd:///dev/sr0

Result: My Disney disc played. Menus, chapters, all fine.

Tiny snag I hit once: If you skip step 3, CSS movies won’t play. So don’t skip it.

Fedora: a small detour with RPM Fusion

Fedora keeps things clean by default, so you need RPM Fusion first. It sounds fancy, but it’s just a repo with extra stuff like codecs.

What I ran on Fedora 40:

  1. sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
  2. sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  3. sudo dnf install vlc libdvdcss

Then I tested the same way in VLC.

My Fedora hiccup: I forgot the nonfree repo once. VLC installed, but DVDs failed with “could not read.” After adding nonfree and installing libdvdcss, it worked.

Arch Linux: fast and nerdy, but fine

On Arch, the packages are right there.

What I ran:

  1. sudo pacman -Syu
  2. sudo pacman -S vlc libdvdcss

That’s it. If you use Manjaro, it’s in the repos too. Same steps, different name for the package manager.
Of course, if you ever land on some random project that ships only a tar.gz instead of a repo package, don’t panic—here’s my no-drama guide to installing a tar.gz in Linux.

Region code: this tripped me once

Some drives ship with no region set. Some discs are Region 1 (US/Canada), Region 2 (Europe), and so on. If your drive isn’t set, CSS discs may fail or show weird errors.

What I used:

  • sudo pacman -S regionset (Arch)
  • Or sudo apt install regionset (Ubuntu)
  • Or sudo dnf install regionset (Fedora)

Then:

  • sudo regionset /dev/sr0

It shows your current region and lets you pick. Be careful: Drives only let you switch a few times (usually 5). I set my LG drive to Region 1, because most of my discs are US.

After that, my BBC disc (Region 2) didn’t play on that drive—no surprise. I switched to another USB drive set to Region 2. Yes, I have two drives. It’s less silly than it sounds if you watch imports.

Real errors I saw (and how I fixed them)

  • VLC: “Playback failure: DVDRead could not open the disc”

    • Fix: install libdvdcss and restart VLC. On Ubuntu, run sudo dpkg-reconfigure libdvd-pkg.
  • VLC keeps spinning at “Opening…”

    • Fix: try vlc dvd:///dev/sr0 from the terminal to see logs. If it mentions CSS, you need libdvdcss. If it mentions region, set your drive region.
  • Disc mounts in Files but won’t play

    • Fix: close the file manager so it releases the drive; then try VLC again. Also try a different USB port with more power.
  • No menus, just the movie

    • Fix: In VLC, go to Preferences > Input/Codecs and make sure DVD menus are on. Some older discs still act odd, but it’s rare.

Extras I tried (because I’m curious)

  • Flatpak VLC: Worked on Fedora and Ubuntu after I installed libdvdcss on the host. I launched it with flatpak run org.videolan.VLC. Menus were fine. If it fails, check Flatpak’s permission for optical drives, or just use the repo version of VLC.

If you’re curious about squeezing a bit more performance out of your GPU for smoother playback, see my separate experiment where I installed Mesa extra layers on Linux.

  • MPV: Great player. With libdvdcss installed, I ran mpv dvd://. It played the main title cleanly. Menus are basic, but I like it for straight playback.

  • Snap VLC on Ubuntu: It played non-CSS discs right away. For CSS discs, host libdvdcss still mattered. Honestly, repo VLC was simplest.

Quick checklist you can copy

  • Install VLC
  • Install libdvdcss (Ubuntu: libdvd-pkg + reconfigure; Fedora: RPM Fusion + libdvdcss; Arch: libdvdcss)
  • Set drive region if needed (regionset)
  • Test with: vlc dvd:///dev/sr0
  • Try another port or drive if power is low

I’m not a lawyer. DVD rules differ by country. Please check your local laws. I use this to watch my own discs at home. That’s it.

My verdict after a week of movie nights

It felt simple on Ubuntu. Fedora needed one extra step, but it was smooth after that. Arch was fast once I remembered to install libdvdcss first. The only real curveball was the region code, which sneaks up on you like a cat under a blanket.

Would I do it again? Yep. I can toss in a disc, hear that soft drive whirr, and press play. No cloud. No logins. Just a movie and a snack.

Real commands I saved in a notes file

Ubuntu:

  • sudo apt update
  • sudo apt install vlc libdvd-pkg
  • sudo dpkg-reconfigure libdvd-pkg

Fedora:

  • sudo dnf install rpmfusion-free-release rpmfusion-nonfree-release (use the release packages for your Fedora version)
  • sudo dnf install vlc libdvdcss

Arch:

  • sudo pacman -Syu
  • sudo pacman -S vlc libdvdcss

Region (all):

  • sudo regionset /dev/sr0

One last tip

If you’re setting this up for a