Use makemkv + VLC to play bluray disk

Does anyone have experience using makemvk with vlc to play bluray disks? I tried to play a movie the other day and got an error stating the my drives certs were revoked. Apparently this is irreversible, but I did find that makemvk allowed me to rip the moves, which I could then watch with vlc. Makemvk is supposed to work with vlc to allow skipping the ripping stage (or rather it does it in the background) and allow you to play the movie directly, but vlc crashes. I’ve posted on the makemvk forum, but wanted to check here too in case someone has experience with this.

if your drive certs are revoked you are out of luck, only when there are newer certs available to makemkv (with a higher AACS version then your drive currently have) it can un revoke your drive.
All lower versions of AACS are disabled inside your drive so none of your blurays will work in this stage.

And to be able to play bluray you’ll need aribb24 to be installed next to a makemkv install and vlc. A license is needed after 30 days to be able to continue to play bluray

Sorry @fred666 but I’m having a mental block. I’ve read and reread the wiki and I’m not sure I entirely understand how to get new certs to the drive. Makemkv is able to read the disk as it rips the movies to mkv files just fine, but from their documentation it should be able to decode on the fly so that one could play the movie with VLC without having to rip it, which is not working. From your post do I also need to install aribb24?

If your drive is still working than it is probably not revoked as it wouldn’t be working.

The makemkv wiki isn’t very helpful as i did find this solution on the internet.

Vlc needs aribb24 installed to be able to use makemkv decryption library so yes install it.
load a bluray, open vlc and choose open disc from media menu.
Choose bluray, choose device (if you have more then one) and hit play.

This should be working but you might need a license if your makemkv install is older then 30 days. Or install a newer version or get a free license from the forum

just checked and I already have aribb24 installed. When I try to use vlc I get the following errors in the terminal:

vlc
VLC media player 3.0.21 Vetinari (revision 3.0.21-0-gdd8bfdbabe8)
[00005f25c1657ee0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00005f25c1754930] main playlist: playlist is empty
mmc.c:472: Host key / Certificate (id 0xffff800001c1) has been revoked by your drive ?
aacs.c:1368: Unable to initialize bus encryption required by drive and disc
[00007ce024001130] libbluray demux: First play: 1, Top menu: 1
HDMV Titles: 2, BD-J Titles: 88, Other: 0
[0.161s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Logger.logN(ZLjava/lang/String;ILjava/lang/String;)V from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.getAacsDataN(JI)[B from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.getUOMaskN(J)J from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.setUOMaskN(JZZ)V from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.setKeyInterestN(JI)V from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.getTitleInfosN(J)[Lorg/videolan/TitleInfo; from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.getPlaylistInfoN(JI)Lorg/videolan/PlaylistInfo; from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.seekN(JIIJ)J from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.selectPlaylistN(JIIIJ)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.selectTitleN(JI)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.setVirtualPackageN(JLjava/lang/String;Z)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.selectAngleN(JI)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.soundEffectN(JI)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.tellTimeN(J)J from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.selectRateN(JFI)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.writeRegN(JIIII)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.readRegN(JII)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.cacheBdRomFileN(JLjava/lang/String;Ljava/lang/String;)I from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.listBdFilesN(JLjava/lang/String;Z)[Ljava/lang/String; from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.getBdjoN(JLjava/lang/String;)Lorg/videolan/bdjo/Bdjo; from code in a different classloader
[0.162s][warning][jni,resolve] Re-registering of platform native method: org.videolan.Libbluray.updateGraphicN(JII[IIIII)V from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.initN()J from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.destroyN(J)V from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.resolveFontN(Ljava/lang/String;I)Ljava/lang/String; from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.unloadFontConfigN()V from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.getFontFamilyAndStyleN(JLjava/lang/String;)[Ljava/lang/String; from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.loadFontN(JLjava/lang/String;I)J from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.destroyFontN(J)V from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.charWidthN(JC)I from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.stringWidthN(JLjava/lang/String;)I from code in a different classloader
[0.205s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDFontMetrics.charsWidthN(J[CII)I from code in a different classloader
[0.209s][warning][jni,resolve] Re-registering of platform native method: java.awt.BDGraphicsBase.drawStringN(JLjava/lang/String;III)V from code in a different classloader
Libbluray.java:org.videolan.Libbluray.setSecurityManager:148: Detected Java >= 18, trying setSecurityManager() workaround
java.io.BDFileSystem:0: ERROR: Hooking FileSystem class failed: java.lang.NoSuchFieldException: fs
HBackgroundDevice.java:org.havi.ui.HBackgroundDevice.setBackgroundConfiguration:83: UNIMPLEMENTED: HBackgroundDevide.setBackgroundConfiguration()()
	java.base/org.havi.ui.HBackgroundDevice.setBackgroundConfiguration(HBackgroundDevice.java:83)
	qc.prepareBackGround(Unknown Source)
	qc.configureBackGround(Unknown Source)
	com.uni.radius.xlet.MenuXlet.ce(Unknown Source)
	com.uni.radius.xlet.MenuXlet.startXlet(Unknown Source)
	java.base/org.videolan.BDJAppProxy.doStart(BDJAppProxy.java:270)
	java.base/org.videolan.BDJAppProxy.run(BDJAppProxy.java:365)
	java.base/java.lang.Thread.run(Thread.java:1575)
HStillImageBackgroundConfiguration.java:org.havi.ui.HStillImageBackgroundConfiguration.displayImage:42: UNIMPLEMENTED: HStillImageBackgroundConfiguration.displayImage()()
	java.base/org.havi.ui.HStillImageBackgroundConfiguration.displayImage(HStillImageBackgroundConfiguration.java:42)
	java.base/org.havi.ui.HStillImageBackgroundConfiguration.displayImage(HStillImageBackgroundConfiguration.java:36)
	qc.configureBackGround(Unknown Source)
	com.uni.radius.xlet.MenuXlet.ce(Unknown Source)
	com.uni.radius.xlet.MenuXlet.startXlet(Unknown Source)
	java.base/org.videolan.BDJAppProxy.doStart(BDJAppProxy.java:270)
	java.base/org.videolan.BDJAppProxy.run(BDJAppProxy.java:365)
	java.base/java.lang.Thread.run(Thread.java:1575)
[00007ce024001130] libbluray demux: Start background
[00007ce0255ec000] main decoder error: Timestamp conversion failed for 7219791511: no reference clock
[00007ce0255ec000] main decoder error: Could not convert timestamp 0 for rawvideo
PrintStream.java:java.io.PrintStream.println:1196: org.bluray.media.StreamNotAvailableException

PrintStream.java:java.io.PrintStream.println:1196: 	at java.base/org.videolan.media.content.playlist.StreamControl.selectStreamNumber(StreamControl.java:80)

PrintStream.java:java.io.PrintStream.println:1196: 	at kz.setSubtitle(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at kz.initializeStreams(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at kz.onPrefetched(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at kz.onControllerUpdate(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at kz.access$0(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at la.controllerUpdate(Unknown Source)

PrintStream.java:java.io.PrintStream.println:1196: 	at java.base/org.videolan.BDJListeners$Callback.doAction(BDJListeners.java:199)

PrintStream.java:java.io.PrintStream.println:1196: 	at java.base/org.videolan.BDJAction.process(BDJAction.java:59)

PrintStream.java:java.io.PrintStream.println:1196: 	at java.base/org.videolan.BDJActionQueue.run(BDJActionQueue.java:86)

PrintStream.java:java.io.PrintStream.println:1196: 	at java.base/java.lang.Thread.run(Thread.java:1575)

bluray.c:752: Skipping broken unit at 30720
[00007ce024001130] libbluray demux error: bluray: read error

[00007ce024001130] libbluray demux: Stop background
[00007ce024001130] libbluray demux error: blurayReleaseVout: subpicture channel exists

[00007ce024001130] libbluray demux: Adding ES 4113 select 1
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007ce09261abe8, pid=7737, tid=7867
#
# JRE version: OpenJDK Runtime Environment (23.0) (build 23)
# Java VM: OpenJDK 64-Bit Server VM (23, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# C  [ld-linux-x86-64.so.2+0x25be8]
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (or dumping to /home/jc/core.7737)
#
# An error report file with more information is saved as:
# /home/jc/hs_err_pid7737.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#
zsh: IOT instruction (core dumped)  vlc

Mm your drive IS revoked…

Only a makemkv version with a higher AACS key can un revoke it (AFAIK)
Search makemkv forum, maybe you can find more info.

The only other option is to install a new/other drive that isn’t revoked. But if your disk has a higher AACS version then the new/other drive it WILL also be revoked.

the part that confuses me is if the drive is revoked how can makemkv rip the movie? It really sucks that trying to play a disk can basically brick your drive.

You could do it before, because makemkvcon had an option to stream the unencrypted video through a port and VLC could play it, but the option disappeared.

Years ago, I could play blu-ray discs by changing some libraries with the one from Makemkv :

cd /usr/lib
sudo ln -s libmmbd.so.0 libbdplus.so.0
sudo ln -s libmmbd.so.0 libaacs.so.0

and I had to check the “No menu” option in VLC.

I don’t know what is the state of Linux Blu-Ray playback since I have a Blu-Ray player in my living room.

@vazicebon checking no menu did the trick, it now plays the main movie, it’s a bit on the glitchy side so I think I’ll look into getting a new drive that hopefully won’t get bricked so quickly, or perhaps one with better firmware support.

mm no menu usually means there is a problem with java, there where java errors in your post

I’ve tried several different versions of java and none of them work. I don’t know enough java to really make sense of the errors