Internal unused realtek headset microphone port

This laptop has a Realtek chip that as you would expect has at least 2 inputs/outputs for internal/external audio, but of course on Framework 16 there is no external microphone jack as you are expected to purchase the USB audio module.

However, the Realtek audio input for that missing external jack still shows up in the audio list and the driver is activated.

So that leaves 2 questions:

  • What is the proper way in Alsa/pipewire config to disable that jack from showing up as it can conflict and auto switch away from the wired up microphone.
  • Can we access the microphone signal on the motherboard somewhere on a header? It could be possible to add a dedicated microphone only-jack with some creative soldering. Then you don’t need to use the USB card just to plug in a tabletop microphone, for example. (the Realtek input might also be decent enough for line input audio, which we might use in development on microcontroller projects)

I don’t have the audio expansion card, but it might be using audio alt mode.
This changes the pins on the usb connector to actually carry analogue headphone and mic signals.

The audio expansion card uses a different brand audio chip and is an actual USB interface sound card. When the 3.5mm jack isn’t physically connected the expansion card power is disconnected to save power. (doesn’t register as a USB device) When the audio USB card is connected to the framework and the headset/headphones are connected then it shows up as a new USB audio device. What I show above is available when no audio card or external monitor is connected. The audio expansion card is offtopic for this internal audio discussion. There is no usb alt mode thing going on with it either. The audio expansion card works on a normal USB 2 port on non-framework pcs.

Hi, it looks like a bug in the software.
The device reports that that pin on the chip has nothing connected to it.
I think there is a bug in the Linux ALSA code that is not handling it correctly.

Kind Regards


Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
Control: name=“Headset Mic Boost Volume”, index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00]
Pincap 0x00003724: IN Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear ← See N/A
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Power states: D0 D1 D2 D3 EPSS
Power: setting=D0, actual=D0

I just submitted a patch (which is not yet visible on alsa-devel patchwork, FWIW, due to moderation delay) that should address this.

I believe the headset mic quirk from the Framework Laptop 13 was erroneously applied to the Laptop 16, overriding pinctrl 0x411111f0 (not present) with 0x02a1112c (Mic Jack at Ext Front).

/cc @Mario_Limonciello, since we’re having a discussion on the mailing list.

I can only test this patch on the Laptop 13, as it’s all I have. However, if one of you is willing to give it a shot on the Laptop 16, I’d be most grateful.

# Stop pipewire, if it's your audio server (and you're using systemd)
systemctl --user stop pipewire.socket pipewire.service

# Disable node 0x19 and trigger a reconfiguration of the codec
echo '0x19 0x411111f0' | sudo tee /sys/class/sound/card1/hwC1D0/user_pin_configs
echo 1 | sudo tee /sys/class/sound/card1/hwC1D0/reconfig

# Restart pipewire (if you disabled it above)
systemctl --user start pipewire.socket pipewire.service

# If you get an "device not ready" error, something else if using your sound card

(Multiple users on the Discord reported that it was card1 on the Laptop 16 - if your internal audio card is not enumerated as card1, adjust accordingly!)

Open questions:

  • If you connect an audio expansion card, and use a headset with a mic, does it still work? It does for me on my Laptop 13, but that may not be indicative of future success.

I was unable to see the original patch email on the mailing list viewer (and trying to copy it out of Mario’s reply didn’t work) but I created a new patch removing the 1 quirk line and it works as expected. The phantom microphone is gone, and there is no impact to the framework audio card as it still works as expected. (3 new devices show up, but only if you plug a cable into it)
No one answered if it was physically possible to get to the unused signals but it looks like you can also use HDAJackRetask to turn it back on in that case, without needing to patch anything.
Edit: Also just used the laptop’s microphone in a teams call with no issues and no other audio devices connected. :+1: