Headphone jack gone silent after the 2026‑04 kernel update
I was mid‑streaming a podcast when the sound just… vanished. My 3.5 mm jack had been a reliable work‑horse for years, but after pulling the 5.15.12‑arch kernel I got nothing. The driver was still loaded, aplay -l still listed the jack, but the audio was dead. Turns out the culprit was a subtle tweak in ALSA’s power‑management for the HDA codec. A single udev rule and the jack was back in seconds.
What changed in the kernel
The 5.15.12 kernel added a new snd_hda_intel power‑state transition that aggressively powers down unused pins. For the Realtek ALC282 in my machine the headphone output pin is considered “unused” during boot, so the driver powers it off. The older kernel kept the pin alive, which is why the jack worked before.
You can see the power state with:
cat /sys/class/sound/card0/codec#0/power
If you see 0x0 (off) for the headphone pin, that’s the root cause.
Quick udev workaround
The simplest fix is to force the driver to keep the headphone pin powered on whenever the device is present. Create a rule in /etc/udev/rules.d/99-headphone-power.rules:
# Keep headphone pin powered on for ALC282
ACTION=="add", SUBSYSTEM=="sound", KERNEL=="card0", ATTR{codec#0/power}="0x1"
Reload udev and re‑plug the jack:
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=sound
After that, aplay -l shows the jack active, and the audio comes back.
Why this works
The rule writes 0x1 (on) to the same sysfs attribute the kernel uses internally. Because udev runs after the driver has initialized, it overrides the kernel’s power‑down decision. The rule is idempotent: rebooting or re‑plugging the jack keeps the pin powered without further action.
Alternatives and trade‑offs
| Approach | Pros | Cons |
|---|---|---|
| udev rule (above) | One‑liner, no reboot, minimal impact | Relies on sysfs path; may break with future kernel changes |
| /etc/modprobe.d/alsa-base.conf | Permanent, kernel‑level | Requires reboot, more invasive |
| Disable power‑management in ALSA | Broadly disables aggressive power‑down | May increase power consumption, affects other devices |
| Patch the kernel | Clean fix | Requires building a custom kernel, not practical for most users |
For most users, the udev rule is the sweet spot: quick, reversible, and safe.
Security note
Modifying sysfs attributes is a privileged operation. The rule runs as root, so make sure the file is owned by root and has 644 permissions to avoid accidental tampering. The rule does not expose any new network services or weaken kernel hardening; it merely changes a device state.
Re‑checking after updates
Kernel updates can re‑apply the aggressive power‑down logic. After a new update, run:
sudo udevadm trigger --subsystem-match=sound
If the jack stops working again, the rule will re‑apply automatically. No need to edit the file again.
Bottom line
A single udev rule can resurrect a headphone jack that a kernel update silently disabled. Keep the rule in version control (e.g., Git) so you can roll it back if future updates change the sysfs path. And remember: when a peripheral stops working after an update, check the kernel’s power‑management first.
See also
- How I Configured Caddy as a Reverse Proxy for My Home Lab and Solved the HTTPS Redirect Bug
- How I Prevented a Rootless Podman Container From Filling My Disk With Logs
- Recovering a single config file from a corrupted Borg backup without restoring the whole archive
- Running My Home NAS Backups with `nice` and `ionice` So My Desktop Never Freezes
- Using a systemd path unit to clean my home server’s cache when disk space hits 90%