SN6186: Missing Mic Boost control and incorrect ADC gain on GMKtec EVO-X2 (Subsystem 0x2014801d)

Stéphan Peccini - Pro <[email protected]> Thu, 16 Jul 2026 12:53:20 +0200
Newsgroups gmane.linux.alsa.devel
Message-ID <[email protected]>
Hi,

I'm reporting a microphone input issue with the Senarytech SN6186 codec 
on a GMKtec EVO-X2 mini PC (AMD Ryzen AI Max+ 395, Strix Halo), running 
Fedora 44 with kernel 7.x and PipeWire 1.6.8.

Subsystem Id: 0x2014801d
Driver: snd_hda_codec_senarytech
Board: GMKtec EVO-X2 (Sixunited AXB35-02)

SYMPTOM

Microphone input via the front 3.5mm jack (pin 0x1a, Front Mic) is 
barely audible — the signal is present but far too low for any practical 
use (calls, recording, voice input). Headphone output works correctly.

ROOT CAUSE

Two issues found by inspecting the codec topology:

1. The ADC node 0x14 amp-in at index 1 (connected to pin 0x1a) 
initializes at value 0x3c instead of the offset value 0x4a. The amp-in 
caps specify ofs=0x4a as the 0 dB reference, so 0x3c corresponds to -14 
dB of attenuation on the capture path. This is the primary cause of the 
low volume.

2. The pin complex 0x1a has an input amplifier (Amp-In caps: 
nsteps=0x07, stepsize=0x17 = 24 dB per step, 42 dB total range) but the 
driver does not expose it as a Mic Boost mixer control. The only exposed 
capture control is the ADC 0x14 amp, mapped as "Mic" with +16 dB max. 
Users have no way to enable the hardware pre-amplifier.

Additionally, PipeWire resets the ADC gain to 0x0 (mute/zero) when it 
reopens the device, making any hda-verb workaround non-persistent.

DIAGNOSTIC DATA

dmesg at boot:
snd_hda_codec_senarytech hdaudioC1D0: SN6186: BIOS auto-probing.
snd_hda_codec_senarytech hdaudioC1D0: autoconfig for SN6186: line_outs=1 
(0x1d) type:line
snd_hda_codec_senarytech hdaudioC1D0: speaker_outs=1 (0x17)
snd_hda_codec_senarytech hdaudioC1D0: hp_outs=1 (0x16)
snd_hda_codec_senarytech hdaudioC1D0: inputs: Rear Mic=0x19, Front Mic=0x1a

amixer -c scontents shows only one control:
Simple mixer control 'Mic',0
Capabilities: cvolume cvolume-joined cswitch cswitch-joined
Capture channels: Mono
Limits: Capture 0 - 3896
Mono: Capture 3896 [100%] [16.00dB] [on]

Codec pin 0x1a amp-in values: [0x00 0x00] (gain step 0 = 0 dB boost)
ADC 0x14 amp-in values at index 1: [0x3c 0x3c] (= -14 dB vs 0 dB reference)
ADC 0x14 AMP_IN_CAP: ofs=0x4a, nsteps=0x50, stepsize=0x03, mute=1
Pin 0x1a AMP_IN_CAP: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=1

SUGGESTED FIX

A fixup entry for subsystem 0x2014801d in patch_senarytech.c that:
- Sets ADC 0x14 amp-in index 1 initial value to 0x4a (0 dB)
- Exposes pin 0x1a amp-in as a "Mic Boost" mixer control (0-42 dB range)

I can provide the full codec dump (cat /proc/asound/card1/codec#0) if 
needed.

cat /proc/asound/card1/codec#0
Codec: Senarytech SN6186
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x1fa86186
Subsystem Id: 0x2014801d
Revision Id: 0x100100
No Modem Function Group found
Default PCM:
     rates [0x0]:
     bits [0x0]:
     formats [0x0]:
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
State of AFG node 0x01:
   Power states:  D0 D1 D2 D3 D3cold S3D3cold CLKSTOP EPSS
   Power: setting=D0, actual=D0
GPIO: io=7, o=0, i=0, unsolicited=1, wake=1
   IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[2]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[3]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[4]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[5]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
   IO[6]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
Node 0x10 [Audio Output] wcaps 0x41d: Stereo Amp-Out
   Control: name="Headphone Playback Volume", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Control: name="Headphone Playback Switch", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Amp-Out caps: ofs=0x50, nsteps=0x50, stepsize=0x03, mute=1
   Amp-Out vals:  [0x80 0x80]
   Converter: stream=0, channel=0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x11 [Audio Output] wcaps 0x41d: Stereo Amp-Out
   Control: name="Line Out Playback Volume", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Control: name="Line Out Playback Switch", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Device: name="SN6186 Analog", type="Audio", device=0
   Amp-Out caps: ofs=0x50, nsteps=0x50, stepsize=0x03, mute=1
   Amp-Out vals:  [0x50 0x50]
   Converter: stream=0, channel=0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x12 [Beep Generator Widget] wcaps 0x700000: Mono
Node 0x13 [Audio Input] wcaps 0x10051b: Stereo Amp-In
   Amp-In caps: ofs=0x4a, nsteps=0x50, stepsize=0x03, mute=1
   Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x50 0x50] [0x80 0x80] [0x80 0x80]
   Converter: stream=0, channel=0
   SDI-Select: 0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 5
      0x18 0x24 0x19* 0x25 0x1f
Node 0x14 [Audio Input] wcaps 0x10051b: Stereo Amp-In
   Control: name="Capture Volume", index=0, device=0
     ControlAmp: chs=3, dir=In, idx=1, ofs=0
   Control: name="Capture Switch", index=0, device=0
     ControlAmp: chs=3, dir=In, idx=1, ofs=0
   Device: name="SN6186 Analog", type="Audio", device=0
   Amp-In caps: ofs=0x4a, nsteps=0x50, stepsize=0x03, mute=1
   Amp-In vals:  [0x80 0x80] [0x50 0x50] [0x80 0x80] [0x80 0x80] [0x80 0x80]
   Converter: stream=0, channel=0
   SDI-Select: 0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 5
      0x18 0x1a* 0x24 0x25 0x1f
Node 0x15 [Vendor Defined Widget] wcaps 0xf0050b: Stereo Amp-In
   Amp-In caps: ofs=0x03, nsteps=0x03, stepsize=0x17, mute=1
   Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x80 0x80]
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 3
      0x10* 0x11 0x23
Node 0x16 [Pin Complex] wcaps 0x400581: Stereo
   Pincap 0x0001001c: OUT HP EAPD Detect
   EAPD 0x2: EAPD
   Pin Default 0x01214030: [Jack] HP Out at Ext Rear
     Conn = 1/8, Color = Green
     DefAssociation = 0x3, Sequence = 0x0
   Pin-ctls: 0xc0: OUT HP
   Unsolicited: tag=01, enabled=1
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 1
      0x10
Node 0x17 [Pin Complex] wcaps 0x400500: Mono
   Pincap 0x00010010: OUT EAPD
   EAPD 0x2: EAPD
   Pin Default 0x90170110: [Fixed] Speaker at Int N/A
     Conn = Analog, Color = Unknown
     DefAssociation = 0x1, Sequence = 0x0
     Misc = NO_PRESENCE
   Pin-ctls: 0x40: OUT
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 1
      0x23
Node 0x18 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=1
   Amp-In vals:  [0x07 0x07]
   Pincap 0x00003324: IN Detect
     Vref caps: HIZ 50 80 100
   Pin Default 0x40f001f0: [N/A] Other at Ext N/A
     Conn = Unknown, Color = Unknown
     DefAssociation = 0xf, Sequence = 0x0
     Misc = NO_PRESENCE
   Pin-ctls: 0x25: IN VREF_100
   Unsolicited: tag=00, enabled=0
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=1
   Amp-In vals:  [0x80 0x80]
   Pincap 0x00003324: IN Detect
     Vref caps: HIZ 50 80 100
   Pin Default 0x01a11040: [Jack] Mic at Ext Rear
     Conn = 1/8, Color = Black
     DefAssociation = 0x4, Sequence = 0x0
   Pin-ctls: 0x25: IN VREF_100
   Unsolicited: tag=04, enabled=1
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x1a [Pin Complex] wcaps 0x40058b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=1
   Amp-In vals:  [0x00 0x00]
   Pincap 0x00013334: IN OUT EAPD Detect
     Vref caps: HIZ 50 80 100
   EAPD 0x2: EAPD
   Pin Default 0x02a13050: [Jack] Mic at Ext Front
     Conn = 1/8, Color = Blue
     DefAssociation = 0x5, Sequence = 0x0
   Pin-ctls: 0x24: IN VREF_80
   Unsolicited: tag=03, enabled=1
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 3
      0x10* 0x11 0x23
Node 0x1b [UNKNOWN Widget] wcaps 0x0: Mono
Node 0x1c [UNKNOWN Widget] wcaps 0x0: Mono
Node 0x1d [Pin Complex] wcaps 0x400581: Stereo
   Pincap 0x0001001c: OUT HP EAPD Detect
   EAPD 0x2: EAPD
   Pin Default 0x02014020: [Jack] Line Out at Ext Front
     Conn = 1/8, Color = Green
     DefAssociation = 0x2, Sequence = 0x0
   Pin-ctls: 0x40: OUT
   Unsolicited: tag=02, enabled=1
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 1
      0x11
Node 0x1e [UNKNOWN Widget] wcaps 0x0: Mono
Node 0x1f [Pin Complex] wcaps 0x40040b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=0
   Amp-In vals:  [0x07 0x07]
   Pincap 0x00000020: IN
   Pin Default 0x40f001f0: [N/A] Other at Ext N/A
     Conn = Unknown, Color = Unknown
     DefAssociation = 0xf, Sequence = 0x0
     Misc = NO_PRESENCE
   Pin-ctls: 0x20: IN
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x20 [UNKNOWN Widget] wcaps 0x0: Mono
Node 0x21 [UNKNOWN Widget] wcaps 0x0: Mono
Node 0x22 [Audio Input] wcaps 0x10051b: Stereo Amp-In
   Amp-In caps: ofs=0x4a, nsteps=0x50, stepsize=0x03, mute=1
   Amp-In vals:  [0x4a 0x4a] [0x4a 0x4a] [0x4a 0x4a]
   Converter: stream=0, channel=0
   SDI-Select: 0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 3
      0x15* 0x25 0x1f
Node 0x23 [Audio Output] wcaps 0x41d: Stereo Amp-Out
   Control: name="Speaker Playback Volume", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Control: name="Speaker Playback Switch", index=0, device=0
     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
   Amp-Out caps: ofs=0x50, nsteps=0x50, stepsize=0x03, mute=1
   Amp-Out vals:  [0x80 0x80]
   Converter: stream=0, channel=0
   PCM:
     rates [0x540]: 48000 96000 192000
     bits [0xe]: 16 20 24
     formats [0x1]: PCM
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
Node 0x24 [Pin Complex] wcaps 0x40058b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=1
   Amp-In vals:  [0x07 0x07]
   Pincap 0x00013334: IN OUT EAPD Detect
     Vref caps: HIZ 50 80 100
   EAPD 0x0:
   Pin Default 0x40f001f0: [N/A] Other at Ext N/A
     Conn = Unknown, Color = Unknown
     DefAssociation = 0xf, Sequence = 0x0
     Misc = NO_PRESENCE
   Pin-ctls: 0x25: IN VREF_100
   Unsolicited: tag=00, enabled=0
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0
   Connection: 3
      0x10* 0x11 0x23
Node 0x25 [Pin Complex] wcaps 0x40040b: Stereo Amp-In
   Amp-In caps: ofs=0x00, nsteps=0x07, stepsize=0x17, mute=0
   Amp-In vals:  [0x07 0x07]
   Pincap 0x00000020: IN
   Pin Default 0x40f001f0: [N/A] Other at Ext N/A
     Conn = Unknown, Color = Unknown
     DefAssociation = 0xf, Sequence = 0x0
     Misc = NO_PRESENCE
   Pin-ctls: 0x20: IN
   Power states:  D0 D1 D2 D3 EPSS
   Power: setting=D0, actual=D0

Best regards,

-- 
Stéphan Peccini - (+33) (0)6 70 06 93 98
Site : https://conseil.peccini.fr
Profil : https://www.linkedin.com/in/stéphan-peccini/
Consultant Numérique Responsable
Expert Stratégie Conception Responsable
Prendre rendez-vous : https://cal.com/stephanpeccini