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 >