Ein Wiki privater Natur

LUKS-Passphrase wird sporadisch nicht akzeptiert (NVMe / APST Bug)

Kurzfassung

Nach einem vollständigen Stromverlust (Akku abgesteckt, Gerät komplett spannungslos) wurde die LUKS-Passphrase beim Booten nur sporadisch akzeptiert – oft erst nach 3–10 Versuchen.
Tastatur, Passwort, Keymap und Benutzerfehler konnten ausgeschlossen werden.

Ursache:
Ein NVMe-Firmware/Power-Management-Problem (APST) in Kombination mit frühem LUKS-Unlock.

Lösung:
Abschalten der aggressiven NVMe-Tiefschlafzustände per Kernel-Parameter.

Symptome

LUKS-Passphrase korrekt, aber:

Versuch → „falsch“

mehrere Wiederholungen nötig

Problem tritt plötzlich auf, vorher jahrelang stabil

USB-Tastatur zeigt identisches Verhalten

Häufiger nach:

Akku abgesteckt

Gerät komplett stromlos

BIOS/Hardware-Arbeiten

Betroffene Hardware (Beispiel)

Notebook: Lenovo ThinkPad P15s

NVMe: Kingston SNVS2000G

Verschlüsselung: LUKS (manuelle Passphrase)

Distribution: Debian (systemd, initramfs)

Technischer Hintergrund (Kurz erklärt)

Moderne NVMe-SSDs nutzen APST (Autonomous Power State Transitions), um sehr tiefe Stromsparzustände zu erreichen (PS3/PS4).

Bei bestimmten Consumer-NVMe-SSDs (u. a. Kingston) führt das zu:

instabilem PCIe/NVMe-Timing

sporadisch falschen oder verzögerten Daten beim frühen Boot

LUKS bekommt inkonsistente Daten beim Header-Zugriff

Ergebnis:

korrektes Passwort → Hashvergleich schlägt trotzdem fehl

Nach erneutem Versuch ist das Device „wach“ → Passwort wird akzeptiert.

Das ist kein Kryptographie-Fehler.

Hinweise in den Logs

Typische Auffälligkeiten:

nvme nvme0: using unchecked data buffer
nvme nvme0: 8/0/0 default/read/poll queues (mehrfach)

Diese Meldungen sind ein starkes Indiz für NVMe-Power-State-Probleme.

Lösung (bewährt)
NVMe-Tiefschlaf deaktivieren (APST aus)

Kernel-Parameter setzen:

nvme_core.default_ps_max_latency_us=0
Umsetzung (GRUB)

Datei bearbeiten:

nano /etc/default/grub

Beispiel:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvme_core.default_ps_max_latency_us=0"

Danach:

update-grub
update-initramfs -u
reboot

Ergebnis

LUKS-Passphrase wird sofort beim ersten Versuch akzeptiert

reproduzierbar stabil

Na ja:
habe jetzt noch

#cat /etc/modprobe.d/nvme-latency.conf 
options nvme_core default_ps_max_latency_us=0

gesetzt, damit ist die Option bereits mit initramfs verfügbar

auch nach Akku-Abklemmen / Kaltstart

Was nicht die Ursache war ...

❌ falsches Passwort

❌ Tastatur / Keymap

❌ Sonderzeichen

❌ Benutzerfehler

❌ LUKS-Defekt

❌ RAM-Probleme

Hinweise / Langfristig

Kernel-Parameter dauerhaft behalten!

BIOS-Updates können das Verhalten ändern

Bei NVMe-Tausch ggf. erneut testen

Enterprise-NVMe (Samsung, WD) sind hier meist robuster

Merksatz

Wenn LUKS sich „sporadisch vertippt“, ist fast immer die NVMe schuld – nicht das Passwort.