From b3dcede94b0da0bcaadb550c094ef25e1b265d9d Mon Sep 17 00:00:00 2001 From: Pierre Martin Date: Fri, 17 Apr 2026 10:36:27 +0200 Subject: [PATCH] fix(framework): prevent sound issue of external mic detected for headphones --- nixos/framework.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nixos/framework.nix b/nixos/framework.nix index 19630d9..d741b28 100644 --- a/nixos/framework.nix +++ b/nixos/framework.nix @@ -81,6 +81,27 @@ #media-session.enable = true; }; + # Fix: IDT 92HD95 codec routes capture to external mic jack when headphones + # are plugged in, even if the jack has no mic. Force internal mic routing. + # See Node 0x14 (Audio Selector) connection index 3 = Node 0x0e (Internal Mic). + services.udev.extraRules = '' + ACTION=="change", SUBSYSTEM=="sound", KERNEL=="card0", \ + RUN+="${pkgs.alsa-tools}/bin/hda-verb /dev/snd/hwC0D0 0x14 SET_CONNECT_SEL 3", \ + RUN+="${pkgs.alsa-tools}/bin/hda-verb /dev/snd/hwC0D0 0x0e SET_POWER_STATE 0" + ''; + systemd.services.fix-internal-mic = { + description = "Force internal mic on IDT 92HD95 (Framework Laptop)"; + after = [ "sound.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${pkgs.writeShellScript "fix-internal-mic" '' + ${pkgs.alsa-tools}/bin/hda-verb /dev/snd/hwC0D0 0x14 SET_CONNECT_SEL 3 + ${pkgs.alsa-tools}/bin/hda-verb /dev/snd/hwC0D0 0x0e SET_POWER_STATE 0 + ''}"; + }; + }; + # Enable touchpad support (enabled default in most desktopManager). services.libinput.enable = true;