From: GitHub issues - opened <github@alsa-project.org>
To: alsa-devel@alsa-project.org
Subject: HDA/HiFi-mic.conf: Internal mic incorrectly gated by external Mic Jack on ALC287 without Input Source enum
Date: Fri, 12 Jun 2026 15:03:23 +0200 (CEST) [thread overview]
Message-ID: <18b857154c297e00-webhooks-bot@alsa-project.org> (raw)
In-Reply-To: <18b857154c001f00-webhooks-bot@alsa-project.org>
alsa-project/alsa-ucm-conf issue #785 was opened from fabianmartins:
### Machine
- **Model:** Lenovo Legion Pro 7 16IAX10H (DMI product name: 83F5)
- **Codec:** Realtek ALC287 (Vendor Id: 0x10ec0287, Subsystem Id: 0x17aa3906)
- **Driver:** sof-hda-dsp
- **BIOS:** Q7CN44WW
- **alsa-ucm-conf version:** 1.2.16
### Problem
On this machine, the internal microphone (Node 0x12, Pin Default 0x90a60140: `[Fixed] Mic at Int N/A`) is reported as unavailable by PipeWire/WirePlumber because the UCM configuration assigns the wrong `JackControl`.
The codec exposes:
- `Internal Mic Phantom Jack` = on (always-on, internal mic present)
- `Mic Jack` = off (external 3.5mm jack, nothing plugged in)
- **No** `Input Source` or `Capture Source` enum control
### Root Cause
In `ucm2/HDA/HiFi-mic.conf`, the `If.micsetup` condition checks for an `Input Source` / `Capture Source` enum. When neither exists, it enters the `True` branch which unconditionally sets:
```
DeviceMicJack "Mic Jack"
```
This associates the internal mic device with the external jack's availability. Since `Mic Jack` = off (no external mic plugged in), PipeWire's ACP marks the mic route as `available: no`, and GNOME reports no microphone available.
The internal mic hardware works perfectly — direct ALSA recording (`arecord -D hw:1,0`) succeeds.
### Expected Behavior
The internal mic should have no `JackControl` (or use `Internal Mic Phantom Jack`) so its availability is not tied to the external jack state.
### Proposed Fix
In the `True` branch of `If.micsetup` (the "no source selector enum" fallback), add a condition: if `Internal Mic Phantom Jack` exists, don't assign `DeviceMicJack "Mic Jack"`. Something like:
```
True {
Define {
DeviceMicName "Mic"
DeviceMicComment "Stereo Microphone"
DeviceMicJack "Mic Jack"
DeviceMicPriority 200
}
If.internalmic_phantom {
Condition {
Type ControlExists
Control "iface=CARD,name='Internal Mic Phantom Jack'"
}
True.Define.DeviceMicJack ""
}
}
```
This preserves the existing behavior for machines with only an external mic jack, while correctly handling machines where the sole capture device is the internal mic.
### Codec Dump (relevant excerpt)
```
Node 0x12 [Pin Complex] wcaps 0x40040b: Stereo Amp-In
Pincap 0x00000020: IN
Pin Default 0x90a60140: [Fixed] Mic at Int N/A
Conn = Digital, Color = Unknown
DefAssociation = 0x4, Sequence = 0x0
Misc = NO_PRESENCE
Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
Pincap 0x00003724: IN Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x03a11030: [Jack] Mic at Ext Left
Conn = 1/8, Color = Black
DefAssociation = 0x3, Sequence = 0x0
```
### ALSA Controls
```
Internal Mic Phantom Jack: values=on
Mic Jack: values=off
(No 'Input Source' or 'Capture Source' control exists)
```
Issue URL : https://github.com/alsa-project/alsa-ucm-conf/issues/785
Repository URL: https://github.com/alsa-project/alsa-ucm-conf
parent reply other threads:[~2026-06-12 13:04 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <18b857154c001f00-webhooks-bot@alsa-project.org>]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18b857154c297e00-webhooks-bot@alsa-project.org \
--to=github@alsa-project.org \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.