MakeMKV 1.18.4 + UHD-Fehler-Ursachen im Klartext (Laufwerk ist geflasht — Disc-Key war das Problem)
Ampel / ampel (push) Successful in 29s

Diagnose auf der VM (Summer-Wars-UHD, MKB v82):
- 'Using LibreDrive mode (v06.3)' — der BU40N-Crossflash IST erledigt,
  das Laufwerk liest UHD. Der Fehlschlag kam von 'The volume key is
  unknown for this disc': die Disc ist neuer als MakeMKVs
  Schluessel-Datenbank — mit 1.17.7 UND der aktuellsten 1.18.4 bewiesen
  (beide Versionen live gegen die Disc getestet).

Konsequenzen:
- MakeMKV-Pin von 1.17.7 auf 1.18.4 gehoben: der 1.18er Scan-Haenger
  (Forum t=38128) wird ueberall mit --noscan umgangen (info-Lauf mit
  1.18.4 auf der BU40N sauber durchgelaufen), die Flash-Faehigkeit von
  1.17.7 wird nicht mehr gebraucht. Aktuelle Version = aktuellste
  AACS-Key-DB. URL-Base -> /download (dort liegt nur die aktuelle).
- run_makemkv reicht KRITISCHE Meldungen (volume key unknown, Key
  abgelaufen, too old version) in den Fehlertext durch — vorher stand
  da nur die nichtssagende letzte Zeile 'Failed to open disc'.
- UHD-Klartext in tasks.py unterscheidet jetzt die zwei Faelle:
  volume-key-unknown (MakeMKV/Disc-Alter, AACS-Dump aus /root/.MakeMKV/
  im MakeMKV-Forum einreichen) vs. Failed-to-open ohne LibreDrive
  (Firmware-Hinweis).
- SAVEPOINT: Flash-Status korrigiert (war als offen dokumentiert).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-24 13:44:42 +02:00
parent 5778ac4645
commit c9270d08e1
5 changed files with 67 additions and 29 deletions
+14 -4
View File
@@ -14,10 +14,20 @@
**Neu in v3.3:** **Neu in v3.3:**
- **4K UHD als eigener Disc-Typ** (classify ≥ 55 GiB, beide detection.py, - **4K UHD als eigener Disc-Typ** (classify ≥ 55 GiB, beide detection.py,
Tests): eigene Badge-Farbe überall, Prescan-Label „4K UHD". Der Tests): eigene Badge-Farbe überall, Prescan-Label „4K UHD".
UHD-Rip-Fehler „Failed to open disc" (Code 11) bekommt Klartext: - **UHD-Kette diagnostiziert (Nachtrag, gleicher Tag): Der BU40N-Flash IST
Laufwerk kann UHD nicht entschlüsseln → LibreDrive-Firmware-Hinweis erledigt** — makemkvcon meldet „Using LibreDrive mode (v06.3)". Der
(BU40N-Crossflash-Faden bleibt Hardware-Aufgabe des Commanders). Summer-Wars-Fehlschlag lag NICHT am Laufwerk, sondern an „The volume key
is unknown": die Disc (MKB v82) ist neuer als MakeMKVs Schlüssel-DB —
auf der VM mit 1.17.7 UND der aktuellsten 1.18.4 bewiesen. Konsequenzen:
MakeMKV auf **1.18.4** gehoben (Scan-Hänger durch überall genutztes
--noscan umgangen, auf der BU40N sauber gelaufen; URL-Base → /download),
run_makemkv reicht kritische Meldungen (volume key/Key abgelaufen) in
den Fehlertext durch, UHD-Klartext unterscheidet jetzt „Laufwerk kann
kein UHD" von „Disc neuer als Key-DB" inkl. Forum-Dump-Hinweis
(MakeMKV speichert den AACS-Dump automatisch unter /root/.MakeMKV/).
Summer Wars bleibt bis zu einem MakeMKV-Key-Update nicht entschlüsselbar
— das ist Stand der Technik, kein Rippy-Bug.
- **Vollautomatik** (Einstellungen → Ripping): Disc erkannt → Rip startet - **Vollautomatik** (Einstellungen → Ripping): Disc erkannt → Rip startet
ohne Popup in den passenden Schnellwahl-Ordner (Serie/Film/Musik). ohne Popup in den passenden Schnellwahl-Ordner (Serie/Film/Musik).
- **Job-Verwaltung**: „Neu komprimieren" nur noch, wenn Rohdaten wirklich - **Job-Verwaltung**: „Neu komprimieren" nur noch, wenn Rohdaten wirklich
+2 -1
View File
@@ -67,7 +67,8 @@ services:
args: args:
# Übersteuerbar via .env — makemkv.com ist zeitweise down (Cloudflare # Übersteuerbar via .env — makemkv.com ist zeitweise down (Cloudflare
# 525); dann Wayback-Snapshot als MAKEMKV_URL_BASE eintragen. # 525); dann Wayback-Snapshot als MAKEMKV_URL_BASE eintragen.
MAKEMKV_URL_BASE: ${MAKEMKV_URL_BASE:-https://www.makemkv.com/download/old} # /download = aktuelle Version, /download/old = ältere Versionen.
MAKEMKV_URL_BASE: ${MAKEMKV_URL_BASE:-https://www.makemkv.com/download}
environment: environment:
- DATABASE_URL=postgresql://rippy:rippy@postgres:5432/rippy - DATABASE_URL=postgresql://rippy:rippy@postgres:5432/rippy
- REDIS_URL=redis://redis:6379/0 - REDIS_URL=redis://redis:6379/0
+13 -10
View File
@@ -12,15 +12,18 @@
FROM python:3.12-slim-bookworm AS makemkv-build FROM python:3.12-slim-bookworm AS makemkv-build
# 1.17.7 statt 1.18.4 (23.07.2026): MakeMKV 1.18.x hat unter Linux einen # Zurück auf die AKTUELLE Version (24.07.2026): 1.17.7 war wegen des
# bekannten Hänger beim Laufwerks-Scan (100 % CPU, keine Ausgabe) — bei uns # 1.18er-Laufwerks-Scan-Hängers (Forum t=38128) und der Flash-Fähigkeit
# reproduziert, im Forum vielfach bestätigt (t=38128, t=38239), Workaround # gepinnt. Beides erledigt: der Scan wird überall mit --noscan umgangen
# laut Community: 1.17.7. Bonus: 1.17.7 ist auch die Version, die # (info-Lauf mit 1.18.4 auf der BU40N sauber durchgelaufen, 24.07.), und
# Firmware-Flashen kann (neuere ignorieren den Flash-Befehl). # das Laufwerk ist geflasht (LibreDrive v06.3 bestätigt). Die AKTUELLE
# MAKEMKV_URL_BASE ist übersteuerbar (Build-Arg), falls makemkv.com # Version zählt, weil sie die neueste AACS-Schlüssel-Datenbank mitbringt —
# gerade down ist (Wayback-Snapshot als Ausweich-Quelle). # 1.17.7 kannte z. B. den Key der Summer-Wars-UHD (MKB v82) nicht.
ARG MAKEMKV_VERSION=1.17.7 # MAKEMKV_URL_BASE ist übersteuerbar (Build-Arg): /download hat nur die
ARG MAKEMKV_URL_BASE=https://www.makemkv.com/download/old # aktuelle Version, /download/old die älteren; bei Cloudflare-525 einen
# Wayback-Snapshot eintragen.
ARG MAKEMKV_VERSION=1.18.4
ARG MAKEMKV_URL_BASE=https://www.makemkv.com/download
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \ build-essential \
@@ -78,7 +81,7 @@ RUN ldconfig
# Version fürs UI sichtbar machen (Einstellungen → System): makemkvcon hat # Version fürs UI sichtbar machen (Einstellungen → System): makemkvcon hat
# keinen --version-Schalter, also kommt die Wahrheit aus dem Build selbst. # keinen --version-Schalter, also kommt die Wahrheit aus dem Build selbst.
ARG MAKEMKV_VERSION=1.17.7 ARG MAKEMKV_VERSION=1.18.4
ENV MAKEMKV_VERSION=${MAKEMKV_VERSION} ENV MAKEMKV_VERSION=${MAKEMKV_VERSION}
WORKDIR /app WORKDIR /app
+14
View File
@@ -195,6 +195,17 @@ def run_makemkv(device_path: str, output_dir: str, progress_cb=None) -> dict:
) )
letzte_meldung = "" letzte_meldung = ""
# Kritische Meldungen einsammeln: die LETZTE Zeile ist fast immer nur
# "Failed to open disc" — die URSACHE ("volume key is unknown", Key
# abgelaufen) steht Zeilen davor und ging im Fehlertext verloren
# (Befund 24.07., Summer-Wars-UHD).
kritische_meldungen = []
KRITISCH = (
"volume key is unknown",
"evaluation period has expired",
"registration key",
"Too old version",
)
try: try:
for line in process.stdout: for line in process.stdout:
progress = get_progress_from_prgv(line) progress = get_progress_from_prgv(line)
@@ -205,6 +216,8 @@ def run_makemkv(device_path: str, output_dir: str, progress_cb=None) -> dict:
teile = line.split(",", 4) teile = line.split(",", 4)
if len(teile) >= 4: if len(teile) >= 4:
letzte_meldung = teile[3].strip('"') letzte_meldung = teile[3].strip('"')
if any(muster in letzte_meldung for muster in KRITISCH):
kritische_meldungen.append(letzte_meldung)
except RipAbbruch: except RipAbbruch:
process.kill() process.kill()
process.wait() process.wait()
@@ -229,6 +242,7 @@ def run_makemkv(device_path: str, output_dir: str, progress_cb=None) -> dict:
"status": "error", "status": "error",
"error": ( "error": (
f"makemkvcon endete mit Code {process.returncode}" f"makemkvcon endete mit Code {process.returncode}"
+ (f" — Ursache: {'; '.join(kritische_meldungen)}" if kritische_meldungen else "")
+ (f" — letzte Meldung: {letzte_meldung}" if letzte_meldung else "") + (f" — letzte Meldung: {letzte_meldung}" if letzte_meldung else "")
+ ("" if mkv_dateien else " — keine MKV-Datei entstanden") + ("" if mkv_dateien else " — keine MKV-Datei entstanden")
), ),
+24 -14
View File
@@ -274,20 +274,30 @@ def rip_disc(self, device_path: str, job_id: str, target_dir: str = None):
progress_cb=fortschritt, output_dir=final_dir, progress_cb=fortschritt, output_dir=final_dir,
) )
# 4K-UHD scheitert mit Nicht-LibreDrive-Laufwerken IMMER an der # UHD-Fehler in Klartext übersetzen — "Failed to open disc" allein hilft
# Verschlüsselung — "Failed to open disc" heißt dann nicht "Disc kaputt", # niemandem. Zwei bekannte Ursachen (Befunde 24.07., Summer-Wars-UHD):
# sondern "Laufwerk kann kein UHD" (Firmware-Faden, siehe SAVEPOINT). if ergebnis.get("status") == "error" and disc_type == "uhd":
if ( fehler_text = ergebnis.get("error") or ""
ergebnis.get("status") == "error" if "volume key is unknown" in fehler_text:
and disc_type == "uhd" # LibreDrive lief bereits — MakeMKV kennt nur den Disc-Schlüssel
and "Failed to open disc" in (ergebnis.get("error") or "") # nicht: Version zu alt ODER Disc neuer als die Key-Datenbank.
): ergebnis["error"] += (
ergebnis["error"] += ( " — Klartext: Das Laufwerk liest die Disc (LibreDrive OK), "
" — 4K-UHD erkannt: Das Laufwerk kann UHD-Discs vermutlich nicht " "aber MakeMKV kennt den Schlüssel dieser Disc nicht. Erst "
"entschlüsseln. Dafür ist eine LibreDrive-Firmware nötig (BU40N: " "prüfen: MakeMKV aktuell? (Einstellungen → System; Update = "
"Crossflash auf 1.03-MK, MakeMKV-Forum 'Ultimate UHD Drives " "Image-Rebuild). Ist es aktuell, ist die Disc neuer als die "
"Flashing Guide'). Normale BD/DVD gehen weiterhin." "Schlüssel-Datenbank — MakeMKV hat einen AACS-Dump unter "
) "/root/.MakeMKV/ im Worker gespeichert; im MakeMKV-Forum "
"(Bereich 'Ultra HD Blu-ray') einreichen, mit einem der "
"nächsten Updates ist die Disc dann rippbar."
)
elif "Failed to open disc" in fehler_text:
ergebnis["error"] += (
" — 4K-UHD erkannt: Das Laufwerk kann UHD-Discs vermutlich "
"nicht entschlüsseln. Dafür ist eine LibreDrive-Firmware nötig "
"(MakeMKV-Forum 'Ultimate UHD Drives Flashing Guide'). "
"Normale BD/DVD gehen weiterhin."
)
if ergebnis.get("status") == "success" and transcode_an: if ergebnis.get("status") == "success" and transcode_an:
# Kompression als eigener Task auf der transcode-Queue — kann vom # Kompression als eigener Task auf der transcode-Queue — kann vom