DVD issues (MPV and VLC, possibly libdvdnav or libdvdcss?)

Hi folks.

So, when I try to open a DVD with VLC or MPV, it either does nothing, or if I open it in a terminal I get some errors…

From MPV:

[dvdnav] Selecting title 1.
[dvdnav] DVDNAV, switched to title: 2
[dvdnav] Error getting next block from DVD 1 (Error reading from DVD.)
[dvdnav] Error getting next block from DVD 1 (Error reading from DVD.)
[dvdnav] Error getting next block from DVD 1 (Error reading from DVD.)
[lavf] av_find_stream_info() failed
Failed to recognize file format.

From VLC, the terminal isn’t as useful, but the Messages window gives me:

dvdnav debug: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000132
dvdnav debug: Elapsed time 0
dvdnav debug: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x000026ff
dvdnav debug: Elapsed time 0
dvdnav debug: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x00002704
qt debug: IM: Setting an input
dvdnav warning: Error cracking CSS key for /VIDEO_TS/VTS_01_1.VOB (0x00002704)
dvdnav debug: Elapsed time 0
dvdnav debug: Get key for /VIDEO_TS/VTS_02_0.VOB at 0x0000275e
dvdnav warning: Error cracking CSS key for /VIDEO_TS/VTS_02_0.VOB (0x0000275e)
dvdnav debug: Elapsed time 0
dvdnav debug: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x000137be
dvdnav warning: Error cracking CSS key for /VIDEO_TS/VTS_02_1.VOB (0x000137be)
dvdnav debug: Elapsed time 0
dvdnav debug: Found 2 VTS's
dvdnav debug: Elapsed time 0
dvdnav debug: trying to go to dvd menu
main debug: using access_demux module "dvdnav"
main debug: attempt to destroy nonexistent variable "title 0"
main debug: attempt to destroy nonexistent variable "title 1"
main debug: attempt to destroy nonexistent variable "title 2"
main debug: attempt to destroy nonexistent variable "title 3"
main debug: attempt to destroy nonexistent variable "title 4"
main debug: attempt to destroy nonexistent variable "title 5"
main debug: looking for meta reader module matching "any": 2 candidates
lua debug: Trying Lua scripts in /home/sam/.local/share/vlc/lua/meta/reader
lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader
lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac
lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader
main debug: no meta reader modules matched
main debug: `dvd:///dev/sr0' successfully opened
dvdnav debug: DVDNAV_HOP_CHANNEL
main debug: ES_OUT_RESET_PCR called
dvdnav debug: DVDNAV_HIGHLIGHT
dvdnav debug: - display=1
dvdnav debug: - buttonN=1
dvdnav debug: buttonUpdate not done b=1 t=0
dvdnav debug: DVDNAV_VTS_CHANGE
dvdnav debug: - vtsN=2
dvdnav debug: - domain=8
main debug: ES_OUT_RESET_PCR called
dvdnav debug: DVDNAV_CELL_CHANGE
dvdnav debug: - cellN=1
dvdnav debug: - pgN=1
dvdnav debug: - cell_length=27250
dvdnav debug: - pg_length=27250
dvdnav debug: - pgc_length=2696400
dvdnav debug: - cell_start=0
dvdnav debug: - pg_start=0
dvdnav debug: DVDNAV_SPU_CLUT_CHANGE
dvdnav debug: DVDNAV_SPU_STREAM_CHANGE
dvdnav debug: - physical_wide=0
dvdnav debug: - physical_letterbox=0
dvdnav debug: - physical_pan_scan=0
dvdnav debug: buttonUpdate not done b=1 t=0
main debug: selecting program id=0
main debug: looking for packetizer module matching "any": 25 candidates
main debug: using packetizer module "spudec"
main debug: looking for spu decoder module matching "any": 22 candidates
main debug: using spu decoder module "spudec"
dvdnav debug: DVDNAV_AUDIO_STREAM_CHANGE
dvdnav debug: - physical=0
dvdnav warning: cannot get next block (Error reading NAV packet.)
dvdnav debug: jumping to first title
dvdnav debug: DVDNAV_HOP_CHANNEL
main debug: ES_OUT_RESET_PCR called
dvdnav debug: DVDNAV_VTS_CHANGE
dvdnav debug: - vtsN=1
dvdnav debug: - domain=2
main debug: ES_OUT_RESET_PCR called
main debug: killing decoder fourcc `spu '
main debug: removing module "spudec"
main debug: removing module "spudec"
main debug: Program doesn't contain anymore ES
dvdnav debug: DVDNAV_CELL_CHANGE
dvdnav debug: - cellN=1
dvdnav debug: - pgN=1
dvdnav debug: - cell_length=5
dvdnav debug: - pg_length=5
dvdnav debug: - pgc_length=43200
dvdnav debug: - cell_start=0
dvdnav debug: - pg_start=0
main debug: attempt to destroy nonexistent variable "next-chapter"
main debug: attempt to destroy nonexistent variable "prev-chapter"
dvdnav debug: DVDNAV_SPU_CLUT_CHANGE
dvdnav debug: DVDNAV_SPU_STREAM_CHANGE
dvdnav debug: - physical_wide=-1
dvdnav debug: - physical_letterbox=-1
dvdnav debug: - physical_pan_scan=-1
dvdnav debug: buttonUpdate not done b=1 t=1
dvdnav debug: DVDNAV_AUDIO_STREAM_CHANGE
dvdnav debug: - physical=-1
dvdnav warning: cannot get next block (Error reading NAV packet.)
main debug: removing module "dvdnav"
main debug: dead input
main debug: changing item without a request (current 0/1)
main debug: nothing to play
dbus debug: Getting property Position
dbus debug: Getting property Position
qt debug: IM: Deleting the input

Anyone have any advice? I’d really like to watch my DVDs…

MakeMKV doesn’t have any trouble ripping, but waiting around for MakeMKV to rip before viewing isn’t particularly appealing.

I have tried messing with region coding, but regionset doesn’t seem to work on my system, possibly due to the unlocked firmware I’m using for my Blu-ray drive. (Unlocks its ability to play 4K discs.)
See:

$ regionset /dev/sr0
ERROR: Could not retrieve region code settings from drive.
Would you like to change the region setting for this drive? [y/n]: Y
Enter the new region number for your drive [1..8]: 2
New RPC bitmask is 0xFD, ok? [y/n]: Y
ERROR: Can't set region code.

Same result with sudo on the front, or even with sudo -s beforehand.

I do have the various libdvd packages installed:

$ pacman -Q | grep libdvd*
libdv 1.0.0-11
libdvbpsi 1:1.3.3-3
libdvdcss 1.4.3-2
libdvdnav 6.1.1-2
libdvdread 6.1.3-2