Zurück zur Startseite

Sound-Regression snd_hda_intel: PCI-Rescan-Fix

Analyse der snd_hda_intel Regression: CORB-Reset-Timeout auf Intel HDA nach Kernel-Update. Diagnostik über dmesg, Lösung — PCI-Rescan über sysfs mit BAR-Neuzuweisung. Automatisierung und Debugging-Tipps für alte Hardware.

Sound reparieren: PCI-Rescan gegen Kernel-Regression
Advertisement 728x90

## Behebung des snd_hda_intel-Regressionsfehlers: PCI-Rescan lädt Audio auf altem Laptop neu

Nach einem Kernel-Update auf meinem Emachines E732 mit Intel 5 Series/3400 Series HDA (Chip-ID 8086:3b56) war der Ton weg. aplay -l meldet no soundcards found. lspci findet das Gerät unter 00:1b.0, inxi -Axxz bestätigt den snd_hda_intel-Treiber, aber journalctl quillt über vor Fehlern: hdaudio hdaudioC0D0: no AFG or MFG node found bei allen Knoten.

dmesg verrät die wahre Geschichte: Bei der Initialisierung kommt snd_hda_intel 0000:00:1b.0: CORB reset timeout#2, CORBRP = 65535, gefolgt von no codecs initialized. CORB (Command Output Ring Buffer) ist der Ringpuffer für Codec-Befehle. Ein Wert von 0xFFFF deutet auf einen hängenden Bus oder unzugängliche Hardware hin – Lesen aus einem uninitialisierten Register.

BAR beim Kaltstart: mem 0xd4400000-0xd4403fff 64bit. Neuladen des Moduls (modprobe -r/-a snd_hda_intel) wiederholt den Fehler mit frischen Timestamps.

Google AdInline article slot

Unwirksame Schnelllösungen

Standard-Anpassungen brachten nichts:

  • Benutzerraum-Tools: PipeWire/WirePlumber neu installieren, alsamixer anpassen – nutzlos ohne ALSA-Geräte.
  • Moduloptionen: options snd-hda-intel enable=1 power_save=0 power_save_controller=N model=auto in /etc/modprobe.d/alsa-fix.conf.
  • GRUB-Parameter: pci=nocrs pci=nomsi pcie_aspm=off snd_hda_intel.power_save=0 snd_hda_intel.dma_mask=0.
  • Hot-Reload: modprobe snd_hda_intel msi=0 dsp_driver=1 probe_mask=1.

Das Problem liegt in der frühen Initialisierung: LTS-Kernel oder LiveCDs funktionierten dank anderer Modul-Ladereihenfolge oder BIOS-Zustand.

[   17.492159] snd_hda_intel 0000:00:1b.0: CORB reset timeout#2, CORBRP = 65535
[   17.492380] snd_hda_intel 0000:00:1b.0: no codecs initialized

Die Lösung: PCI-Hot-Rescan über sysfs

Schlüssel-Einsicht: Beim Kaltstart wird eine fehlerhafte BAR zugewiesen, aber Hot-Rescan auf einem aufgeheizten System klappt. So geht's:

Google AdInline article slot
  • echo 1 | sudo tee /sys/bus/pci/devices/0000:00:1b.0/remove
  • sleep 2
  • echo 1 | sudo tee /sys/bus/pci/rescan

Frische dmesg-Ausgabe:

[  473.969035] pci 0000:00:1b.0: [8086:3b56] ... 
[  473.969102] pci 0000:00:1b.0: BAR 0 [mem 0x00000000-0x00003fff 64bit]
[  473.969982] pci 0000:00:1b.0: BAR 0 [mem 0x23c000000-0x23c003fff 64bit]: assigned
[  474.095498] input: HDA Intel MID Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input24
[  474.095675] input: HDA Intel MID Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input25

Ton ist zurück: Soundkarte in /dev/snd, PipeWire erkennt Geräte. Der Übeltäter? BIOS vergibt früh falsche Parameter; Rescan nach vollständiger PCI-Init weist die richtige BAR zu.

Automatisierung für den Alltag

Für ein systemd-Skript im Produktiveinsatz (nach Boot):

Google AdInline article slot
#!/bin/bash
PCI_ID="0000:00:1b.0"
echo 1 > /sys/bus/pci/devices/$PCI_ID/remove
sleep 2
echo 1 > /sys/bus/pci/rescan
# Prüfen
if aplay -l | grep -q "card 0"; then
    systemctl --user restart pipewire pipewire-pulse wireplumber
fi

Ablegen in /etc/systemd/system/pci-audio-rescan.service mit After=multi-user.target.

Diagnose ähnlicher Regressionen

Für snd_hda_intel auf legacy Intel HDA:

  • Logs sichern: dmesg | grep '00:1b.0', journalctl -b -p err | grep hda.
  • BAR prüfen: lspci -vv -s 00:1b.0 | grep BAR.
  • Rescan testen: Sysfs-Methode oben nutzen.
  • Kernel vergleichen: LTS vs. Mainline – Regression in PCI-Zuweisung oder Power-Management.
  • BIOS/UEFI: Update falls verfügbar, hilft aber selten bei 2010er-Chipsätzen.

Das trifft alte Hardware nach Kernel 6.8+ hart: Änderungen bei PCI-Enumeration und ASPM.

Wichtige Erkenntnisse

  • CORBRP=0xFFFF signalisiert angehangenen HDA-Controller, keine BIOS/Codec-Probleme.
  • PCI-Rescan über sysfs umgeht Kaltstart-Timeouts durch Neuzuweisung der BAR.
  • LTS-Kernel gelingen dank Timing: Module laden nach BIOS-Übergabe.
  • Automatisierung: systemd-Service sorgt für Zuverlässigkeit im Daily Driver.
  • Diagnose: dmesg priorisieren vor Benutzerraum; auf PCI-BAR und CORB/RIRB fokussieren.

— Editorial Team

Advertisement 728x90

Weiterlesen