Re:

Syed Saba Kareem <[email protected]>
Newsgroups org.alsa-project.alsa-devel
Message-ID <[email protected]>
Hi Mark,

We will investigate this issue.
Could you please log a ticket in Bugzilla for easy tracking.

Thanks,
Syed Saba Kareem.

On 8/11/26 13:18, Mark Nelson wrote:
>
> 	
> You don't often get email from [email protected]. Learn why 
> this is important <https://aka.ms/LearnAboutSenderIdentification>
> 	
>
>
>   Internal microphone not detected on Acer Nitro ANV16S-41 (AMD ACP6.3
>   / Pink Sardine) — missing ACPI DMIC device object
>
>
>     Summary
>
> The internal microphone array does not work on the Acer Nitro 
> ANV16S-41 (AMD Ryzen 7 260, "Phoenix3" APU, ACP6.3/"Pink Sardine" 
> audio coprocessor, PCI ID |1022:15e2| rev 63). Root cause has been 
> isolated to the BIOS/ACPI layer: |sound/soc/amd/ps/pci-ps.c|'s 
> |get_acp63_device_config()| looks for a child ACPI device at address 
> |ACP63_DMIC_ADDR| (|2|) under the ACP PCI device's ACPI scope, 
> carrying an |acp-audio-device-type| |_DSD| property equal to 
> |ACP_DMIC_DEV| (|2|). On this laptop's firmware, *no ACPI device 
> exists at that address at all* — every sibling audio sub-device (HDA 
> analog, Bluetooth SCO, USB) is correctly declared with the expected 
> |_DSD| properties, but the PDM/DMIC controller object is simply absent.
>
> As a result |is_dmic_dev| is never set, no platform device is created 
> for |snd-ps-pdm-dma| / |snd-soc-ps-mach| to bind to, and userspace has 
> no capture device for the internal mic array — only the 
> (non-functional, see below) legacy HDA analog capture path is visible 
> to PipeWire/ALSA.
>
> This looks like a firmware omission rather than a kernel bug per se, 
> but is filed here because a DMI-based quirk fallback (as already 
> exists for the |renoir| driver, see |rn_acp_quirk_table| in 
> |sound/soc/amd/renoir/rn-pci-acp3x.c|) would let Linux work around it, 
> matching the precedent set for similarly-affected models (see "Related 
> reports" below).
>
>
>     System information
>
>
> 	
> Laptop 	Acer Nitro ANV16S-41
> BIOS version 	v1.01 (shipped); *also reproduced on v1.14*, the latest 
> available (AMD PI update, 2026/07/28) — see "BIOS update tested" below
> CPU 	AMD Ryzen 7 260 w/ Radeon 780M Graphics ("Phoenix3", |1002:1900| 
> rev b6)
> Audio Coprocessor 	AMD ACP/ACP3X/ACP6x Audio Coprocessor, |1022:15e2| 
> rev 63 (ACP6.3 / "Pink Sardine")
> Bound kernel driver 	|snd_pci_ps| (|sound/soc/amd/ps/pci-ps.c|)
> OS 	Ubuntu 24.04 LTS
> Kernel 	|7.0.0-28-generic|
> |sys_vendor| 	Acer
> |product_name| 	Nitro ANV16S-41
> |product_version| 	V1.01
> |board_vendor| 	/(please fill in: |cat /sys/class/dmi/id/board_vendor|)/
>
>
>     Expected behavior
>
> The internal microphone array should appear as a working ALSA/PipeWire 
> capture source, as it does under Windows on the same hardware.
>
>
>     Actual behavior
>
>   * No ACP-based capture device is ever created.
>   * PipeWire/WirePlumber falls back to the legacy HDA analog input
>     ("Family 17h/19h HD Audio Controller Analog Stereo" / ALC245),
>     which is itself non-functional for capture on this hardware — raw
>     |arecord| testing against it (with PipeWire/WirePlumber stopped)
>     returns either a fixed, bit-for-bit-identical noise pattern across
>     independent takes, or a saturated near-DC signal, depending on
>     prior pin-configuration state. This confirms that pin is not wired
>     to a real microphone element and is a red herring/legacy stub,
>     separate from the ACP root cause below.
>   * |snd-ps-pdm-dma| and |snd-soc-ps-mach| load cleanly with no
>     errors, but create no card (0 refcount, no new entry in
>     |/proc/asound/cards|), because |pci-ps.c| never creates the
>     platform device they need.
>
>
>     Root cause (isolated via ACPI table decompile)
>
> Kernel source (|sound/soc/amd/ps/acp63.h|):
>
> c
> |#define ACP63_DMIC_ADDR 2 #define ACP_DMIC_DEV 2|
>
> |sound/soc/amd/ps/pci-ps.c|, |get_acp63_device_config()|:
>
> c
> |dmic_dev = acpi_find_child_device(ACPI_COMPANION(&pci->dev), 
> ACP63_DMIC_ADDR, 0); if (dmic_dev) { if 
> (!acpi_dev_get_property(dmic_dev, "acp-audio-device-type", 
> ACPI_TYPE_INTEGER, &obj) && obj->integer.value == ACP_DMIC_DEV) 
> is_dmic_dev = true; }|
>
> Full ACPI dump (|acpidump -b| + |iasl -d|) of this laptop's DSDT/SSDTs 
> shows the ACP's ACPI scope (|\_SB.PCI0.GP17.ACP_|) declares exactly 
> six child devices, at |_ADR| values 1, 3, 4, 5, 6, 7:
>
> |Device (HDA0) Name (_ADR, One) // = 1, has _DSD: 
> acp-audio-device-type = 1 Device (I2SC) Name (_ADR, 0x03) // no _DSD 
> at all Device (BTSC) Name (_ADR, 0x04) // has _DSD: 
> acp-audio-device-type = 4 Device (SDWC) Name (_ADR, 0x05) // no _DSD 
> Device (SDWS) Name (_ADR, 0x06) // no _DSD Device (USBS) Name (_ADR, 
> 0x07) // has _DSD: acp-audio-device-type = 7|
>
> *There is no device at |_ADR 0x02|.* The PDM/DMIC controller object 
> the driver expects is entirely missing from the firmware's ACPI 
> namespace — not merely missing a property on an existing device, but 
> absent as an object. Every other audio sub-device (HDA, Bluetooth SCO, 
> USB) is declared correctly and completely; only the DMIC entry is omitted.
>
>
>     BIOS update tested
>
> Between filing this report, BIOS was updated from the as-shipped v1.01 
> to the latest available, *v1.14* (2026/07/28, "Updates AMD PI 
> version"). The ACPI tables were re-dumped and re-decompiled after the 
> update: *no change*. The same three |_DSD| declarations (HDA0, BTSC, 
> USBS) are present, |_ADR 0x02| is still absent, and |arecord|/|wpctl| 
> behavior is unchanged. This suggests the missing device object is 
> written by Acer's own board-level ASL rather than anything AMD's 
> AGESA/PI blob controls, so an AMD PI update alone is not expected to 
> fix it.
>
>
>     Suggested fix
>
> Add a DMI-based quirk fallback to |get_acp63_device_config()| in 
> |sound/soc/amd/ps/pci-ps.c|, mirroring the existing |dmi_system_id| 
> mechanism already used in |sound/soc/amd/renoir/rn-pci-acp3x.c| 
> (|rn_acp_quirk_table|), to force |is_dmic_dev = true| for this DMI 
> match (|sys_vendor| "Acer", |product_name| "Nitro ANV16S-41") when 
> ACPI declaration is absent. This is the same category of fix already 
> applied upstream for comparable AMD ACP-generation laptops (see below).
>
> Related / precedent reports
>
>   * Arch Linux forum, [Solved] Built-in microphone not working on Acer
>     Nitro ANV15-41 (same OEM family, one ACP generation earlier —
>     |snd_pci_acp6x|/|yc| driver, DMI-quirk-based; ultimately fixed by
>     a kernel update that added the necessary quirk):
>     https://bbs.archlinux.org/viewtopic.php?id=306867
>     <https://bbs.archlinux.org/viewtopic.php?id=306867>
>   * LKML patch adding a |yc|-driver DMI quirk for a different affected
>     model (MSI Bravo 15 C7UCX):
>     https://lkml.iu.edu/hypermail/linux/kernel/2503.1/10229.html
>     <https://lkml.iu.edu/hypermail/linux/kernel/2503.1/10229.html>
>   * Fedora Discussion, same symptom on a sibling Acer Nitro AN16-41 /
>     ANV15-41-R2VJ model:
>     https://discussion.fedoraproject.org/t/built-in-microphone-is-not-working-on-acer-nitro-an16-41-on-fedora-42-gnome/151554
>     <https://discussion.fedoraproject.org/t/built-in-microphone-is-not-working-on-acer-nitro-an16-41-on-fedora-42-gnome/151554>
>
>
>     Diagnostics performed
>
>  1. Confirmed no process holds |/dev/snd/*| unexpectedly (|fuser -v|).
>  2. Confirmed raw ALSA capture off the legacy HDA path (with PipeWire
>     and WirePlumber fully stopped) is non-functional: bit-identical
>     noise across independent takes, then a saturated DC signal after
>     reverting an |hda-jack-retask| override — neither is real acoustic
>     signal.
>  3. Verified ALSA mixer levels (|amixer|, |alsamixer|) are unmuted and
>     at maximum gain/boost throughout.
>  4. Confirmed via |lspci -k| / |lsmod| / |modinfo| that |snd_pci_ps|
>     binds to the ACP PCI device (|1022:15e2| rev 63) with no SOF
>     dependency.
>  5. Confirmed |snd-ps-pdm-dma| and |snd-soc-ps-mach| load without
>     error but create no platform device / sound card, via |modprobe|,
>     |lsmod| refcounts, |/proc/asound/cards|, and PCI unbind/rebind
>     with elevated |printk| level and live |dmesg| monitoring.
>  6. Full ACPI DSDT + all SSDT tables dumped (|acpidump -b|) and
>     decompiled (|iasl -d|), confirming the missing |_ADR 0x02| device
>     as described above.
>  7. Repeated steps 4–6 after updating BIOS from v1.01 to v1.14; no change.
>
>
> Alsa info script
> https://alsa-project.org/db/?f=b35ba5a7c4cc84669c7bdaad5a3d01c4ee68af79
>
> sudo dmesg | grep snd
> [    3.040295] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
> [    3.040443] snd_hda_intel 0000:01:00.1: Disabling MSI
> [    3.040454] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio 
> client
> [    3.040812] snd_hda_intel 0000:65:00.1: enabling device (0000 -> 0002)
> [    3.040921] snd_hda_intel 0000:65:00.1: Handle vga_switcheroo audio 
> client
> [    3.040991] snd_hda_intel 0000:65:00.6: enabling device (0000 -> 0002)
> [    3.060213] snd_pci_ps 0000:65:00.5: enabling device (0000 -> 0002)
> [    3.063800] snd_hda_codec_alc269 hdaudioC2D0: ALC245: picked fixup 
>  for PCI SSID 1025:0000
> [    3.064274] snd_hda_codec_alc269 hdaudioC2D0: autoconfig for 
> ALC245: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
> [    3.064278] snd_hda_codec_alc269 hdaudioC2D0:  speaker_outs=0 
> (0x0/0x0/0x0/0x0/0x0)
> [    3.064280] snd_hda_codec_alc269 hdaudioC2D0:    hp_outs=1 
> (0x21/0x0/0x0/0x0/0x0)
> [    3.064282] snd_hda_codec_alc269 hdaudioC2D0:    mono: mono_out=0x0
> [    3.064283] snd_hda_codec_alc269 hdaudioC2D0:    inputs:
> [    3.064285] snd_hda_codec_alc269 hdaudioC2D0:      Internal Mic=0x12
> [    3.064287] snd_hda_codec_alc269 hdaudioC2D0:      Internal Mic=0x13
> [    5.213121] snd_hda_intel 0000:65:00.1: bound 0000:65:00.0 (ops 
> amdgpu_dm_audio_component_bind_ops [amdgpu])
>
> wpctl status
> PipeWire 'pipewire-0' [1.0.5, mdn@SerangoonHippo, cookie:3037145564]
>  └─ Clients:
>         32. pipewire                            [1.0.5, 
> mdn@SerangoonHippo, pid:3212]
>         34. WirePlumber                         [1.0.5, 
> mdn@SerangoonHippo, pid:3209]
>         35. WirePlumber [export]                [1.0.5, 
> mdn@SerangoonHippo, pid:3209]
>         52. GNOME Volume Control Media Keys     [1.0.5, 
> mdn@SerangoonHippo, pid:3681]
>         53. gnome-shell                         [1.0.5, 
> mdn@SerangoonHippo, pid:3534]
>         54. GNOME Shell Volume Control          [1.0.5, 
> mdn@SerangoonHippo, pid:3534]
>         55. xdg-desktop-portal                  [1.0.5, 
> mdn@SerangoonHippo, pid:4098]
>         56. GNOME Settings                      [1.0.5, 
> mdn@SerangoonHippo, pid:5076]
>         71. Firefox                             [1.0.5, 
> mdn@SerangoonHippo, pid:4384]
>         72. Terminal                            [1.0.5, 
> mdn@SerangoonHippo, pid:6049]
>         73. Mutter                              [1.0.5, 
> mdn@SerangoonHippo, pid:3534]
>         74. speech-dispatcher-dummy             [1.0.5, 
> mdn@SerangoonHippo, pid:6907]
>         82. wpctl                               [1.0.5, 
> mdn@SerangoonHippo, pid:7385]
>
> Audio
>  ├─ Devices:
>  │      46. Family 17h/19h HD Audio Controller  [alsa]
>  │      47. HDA NVidia                          [alsa]
>  │      48. Rembrandt Radeon High Definition Audio Controller [alsa]
>  │
>  ├─ Sinks:
>  │  *   49. Family 17h/19h HD Audio Controller Analog Stereo [vol: 1.00]
>  │
>  ├─ Sink endpoints:
>  │
>  ├─ Sources:
>  │  *   50. Family 17h/19h HD Audio Controller Analog Stereo [vol: 1.00]
>  │
>  ├─ Source endpoints:
>  │
>  └─ Streams:
>         57. GNOME Settings
>              59. input_FL        < ALC245 Analog:monitor_FL [active]
>              60. monitor_FL
>              61. input_FR        < ALC245 Analog:monitor_FR [active]
>              62. monitor_FR
>         58. GNOME Settings
>              63. input_FL        < ALC245 Analog:capture_FL [active]
>              64. monitor_FL
>              65. input_FR        < ALC245 Analog:capture_FR [active]
>              66. monitor_FR
>         79. speech-dispatcher-dummy
>              76. output_FL       > ALC245 Analog:playback_FL [paused]
>              78. output_FR       > ALC245 Analog:playback_FR [paused]
>
> Video
>  ├─ Devices:
>  │
>  ├─ Sinks:
>  │
>  ├─ Sink endpoints:
>  │
>  ├─ Sources:
>  │
>  ├─ Source endpoints:
>  │
>  └─ Streams:
>
> Settings
>  └─ Default Configured Node Names:
>          0. Audio/Sink  alsa_output.pci-0000_65_00.6.pro-output-0
>          1. Audio/Source  alsa_input.pci-0000_65_00.6.analog-stereo
>
> sudo lspci -nnvv -s 65:00.5
>
> 65:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. 
> [AMD] ACP/ACP3X/ACP6x Audio Coprocessor [1022:15e2] (rev 63)
> Subsystem: Acer Incorporated [ALI] ACP/ACP3X/ACP6x Audio Coprocessor 
> [1025:1969]
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- 
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin B routed to IRQ 137
> IOMMU group: 25
> Region 0: Memory at bc780000 (32-bit, non-prefetchable) [size=256K]
> Region 2: Memory at 7e20000000 (64-bit, prefetchable) [size=8M]
> Capabilities: [48] Vendor Specific Information: Len=08 <?>
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [64] Express (v2) Endpoint, MSI 00
> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
> DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
> RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
> LnkCap: Port #0, Speed 16GT/s, Width x16, ASPM L0s L1, Exit Latency 
> L0s <64ns, L1 <1us
> ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
> LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 16GT/s, Width x16
> TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR-
> 10BitTagComp+ 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix+, 
> MaxEETLPPrefixes 1
> EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
> FRS- TPHComp- ExtTPHComp-
> AtomicOpsCap: 32bit- 64bit- 128bitCAS-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 
> 10BitTagReq- OBFF Disabled,
> AtomicOpsCtl: ReqEn-
> LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- 
> EqualizationPhase1-
> EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
> Retimer- 2Retimers- CrosslinkRes: unsupported
> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
> Address: 0000000000000000  Data: 0000
> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 
> Len=010 <?>
> Capabilities: [2a0 v1] Access Control Services
> ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- 
> EgressCtrl- DirectTrans-
> ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- 
> EgressCtrl- DirectTrans-
> Kernel driver in use: snd_pci_ps
> Kernel modules: snd_pci_acp3x, snd_rn_pci_acp3x, snd_pci_acp5x, 
> snd_pci_acp6x, snd_acp_pci, snd_rpl_pci_acp6x, snd_pci_ps, 
> snd_sof_amd_renoir, snd_sof_amd_rembrandt, snd_sof_amd_vangogh, 
> snd_sof_amd_acp63, snd_sof_amd_acp70
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.