CachyOS / CachyOS/linux-cachyos

[BUG] ONEXPLAYER SUPER X (AMD ACP70) - Digital Microphone Array (DMIC) outputs pure hardware clipping saturation

Open
#867 5 comments 0 reactions 2 assignees Claimed by @ptr1337 View on GitHub
bug
Dominant language
Shell
Stars
4.5k
Forks
160
Avg merge
2d 12h
Merged PRs (30d)
1

Description

### Pre-flight checklist

- [x] I have searched existing issues and this is not a duplicate.
- [x] I have read the [Contributing Guidelines](https://github.com/CachyOS/linux-cachyos/blob/master/CONTRIBUTING.md).
- [x] I have verified the issue is reproducible with the latest available CachyOS kernel.
- [x] I have tried to reproduce the issue on Arch Linux's `linux` kernel.

### Upstream / vanilla kernel check

I have not tested with a vanilla/upstream kernel

### Kernel variant

linux-cachyos (EEVDF, Clang)

### System information (cachyos-bugreport.sh)

```text
https://paste.cachyos.org/p/7c2e6c7.log
```

### Manual system information (if cachyos-bugreport.sh is unavailable)

```text

```

### Bug description

Description:
The internal digital microphone array (DMIC) on the ONEXPLAYER SUPER X handheld (AMD Strix Halo / ACP70 architecture) is exposed to the system, but records pure hardware-level clipping noise/saturation. The software stack (PipeWire/WirePlumber) initializes the streams correctly, but the audio data payload is stuck on maximum positive and negative 32-bit integer rails.

The analog endpoint (hw:1,0 via Realtek ALC245) works but only routes to the physical 3.5mm headset jack (returns absolute silence when unplugged). The built-in DMIC is routed through snd_sof_amd_acp70 (hw:2,0) but suffers from what appears to be a missing DMI machine quirk or PDM clock sync failure.

Hardware & OS Metadata:
- Device: ONEXPLAYER SUPER X Handheld
- CPU: AMD Ryzen (Strix Halo Platform)
- OS: CachyOS (Arch-based)
- Kernel: 7.0.10-2-cachyos
- DMI Board Name: ONEXPLAYER SUPER X
- ALSA Card Name: ONE_NETBOOK-ONEXPLAYERSUPERX-Defaultstring (driver: acp-pdm-mach / acppdmmach)

### Steps to reproduce

Raw card output from /proc/asound/cards:
2 [acppdmmach ]: acp-pdm-mach - acp-pdm-mach
ONE_NETBOOK-ONEXPLAYERSUPERX-Defaultstring

Direct hardware recording using the chip's native format (S32_LE):
arecord -D hw:2,0 -d 3 -f S32_LE -c 2 -r 48000 /tmp/hardware_test.wav

Hexdump analysis of the captured audio payload:
00000020 04 00 10 00 64 61 74 61 00 94 11 00 ff ff ff 7f |....data........|
00000030 ff ff ff 7f ff ff ff 7f ff ff ff 7f ff ff ff 7f |................|
00000040 ff ff ff 7f 00 00 00 80 00 00 00 80 ff ff ff 7f |................|

Note: The payload immediately saturates to max positive signed 32-bit int (ff ff ff 7f -> 0x7FFFFFFF) and max negative signed 32-bit int (00 00 00 80 -> 0x80000000) throughout the entire recording, resulting in zero-amplitude fluctuation on the VU meters.

### Expected behavior

The AMD ACP70 PDM clock should synchronize correctly with the DMIC hardware to deliver dynamic PCM amplitude values instead of immediate full-scale square-wave truncation/clipping.

### Actual behavior

no mic sound input

### Logs / stack traces

```text
> sudo dmesg | grep -E 'sof|amd|acp|pdm'
[ 0.008485] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[ 0.044192] software IO TLB: area num 32.
[ 0.269970] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.332315] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
[ 0.332389] acpi PNP0A08:00: _OSC: platform does not support [SHPCHotplug AER LTR DPC]
[ 0.332515] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability]
[ 0.339795] acpiphp: Slot [1] registered
[ 0.396887] acpi PNP0C02:00: Skipped [io 0x0010-0x001f]
[ 0.396890] acpi PNP0C02:00: Skipped [io 0x0022-0x003f]
[ 0.396891] acpi PNP0C02:00: Skipped [io 0x0063]
[ 0.396892] acpi PNP0C02:00: Skipped [io 0x0065]
[ 0.396893] acpi PNP0C02:00: Skipped [io 0x0067-0x006f]
[ 0.396894] acpi PNP0C02:00: Skipped [io 0x0072-0x007f]
[ 0.396895] acpi PNP0C02:00: Skipped [io 0x0080]
[ 0.396896] acpi PNP0C02:00: Skipped [io 0x0084-0x0086]
[ 0.396897] acpi PNP0C02:00: Skipped [io 0x0088]
[ 0.396898] acpi PNP0C02:00: Skipped [io 0x008c-0x008e]
[ 0.396898] acpi PNP0C02:00: Skipped [io 0x0090-0x009f]
[ 0.396899] acpi PNP0C02:00: Skipped [io 0x00a2-0x00bf]
[ 0.396900] acpi PNP0C02:00: Skipped [io 0x00b1]
[ 0.396901] acpi PNP0C02:00: Skipped [io 0x00e0-0x00ef]
[ 0.396902] acpi PNP0C02:00: Reserved [io 0x04d0-0x04d1]
[ 0.396903] acpi PNP0C02:00: Reserved [io 0x040b]
[ 0.396904] acpi PNP0C02:00: Reserved [io 0x04d6]
[ 0.396905] acpi PNP0C02:00: Reserved [io 0x0c00-0x0c01]
[ 0.396906] acpi PNP0C02:00: Reserved [io 0x0c14]
[ 0.396907] acpi PNP0C02:00: Reserved [io 0x0c50-0x0c51]
[ 0.396908] acpi PNP0C02:00: Reserved [io 0x0c52]
[ 0.396909] acpi PNP0C02:00: Reserved [io 0x0c6c]
[ 0.396909] acpi PNP0C02:00: Reserved [io 0x0c6f]
[ 0.396910] acpi PNP0C02:00: Reserved [io 0x0cd0-0x0cd1]
[ 0.396911] acpi PNP0C02:00: Reserved [io 0x0cd2-0x0cd3]
[ 0.396912] acpi PNP0C02:00: Reserved [io 0x0cd4-0x0cd5]
[ 0.396913] acpi PNP0C02:00: Reserved [io 0x0cd6-0x0cd7]
[ 0.396914] acpi PNP0C02:00: Reserved [io 0x0cd8-0x0cdf]
[ 0.396915] acpi PNP0C02:00: Reserved [io 0x0800-0x089f]
[ 0.396916] acpi PNP0C02:00: Reserved [io 0x0b00-0x0b0f]
[ 0.396917] acpi PNP0C02:00: Reserved [io 0x0b20-0x0b3f]
[ 0.396918] acpi PNP0C02:00: Reserved [io 0x0900-0x090f]
[ 0.396919] acpi PNP0C02:00: Reserved [io 0x0910-0x091f]
[ 0.396920] acpi PNP0C02:00: Could not reserve [mem 0xfec00000-0xfec0ffff]
[ 0.396923] acpi PNP0C02:00: Reserved [mem 0xfed45000-0xfed811ff]
[ 0.396924] acpi PNP0C02:00: Reserved [mem 0xfed81900-0xfed81fff]
[ 0.396926] acpi PNP0C02:00: Reserved [mem 0xfedc0000-0xfedc0fff]
[ 0.396927] acpi PNP0C02:00: Reserved [mem 0xfedc6000-0xfedc6fff]
[ 0.396928] acpi PNP0C02:00: Reserved [mem 0xfee01000-0xffffffff]
[ 0.396929] acpi PNP0C02:00: Could not reserve [mem 0xfec00000-0xfec00fff]
[ 0.396930] acpi PNP0C02:00: Could not reserve [mem 0xfec01000-0xfec01fff]
[ 0.396932] acpi PNP0C02:00: Reserved [mem 0xfedc0000-0xfedc0fff]
[ 0.396933] acpi PNP0C02:00: Reserved [mem 0xfee00000-0xfee00fff]
[ 0.396934] acpi PNP0C02:00: Could not reserve [mem 0xfed80000-0xfed8ffff]
[ 0.396936] acpi PNP0C02:00: Reserved [mem 0xfec10000-0xfec10fff]
[ 0.396937] acpi PNP0C02:00: Reserved [mem 0xff000000-0xffffffff]
[ 0.396955] acpi PNP0C02:01: Reserved [mem 0xfd300000-0xfd3fffff]
[ 0.396959] acpi PNP0C02:02: Reserved [mem 0xe0000000-0xefffffff]
[ 0.407041] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.432454] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.432478] software IO TLB: mapped [mem 0x0000000065e00000-0x0000000069e00000] (64MB)
[ 0.432842] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[ 0.456011] acpi LNXTHERM:00: registered as thermal_zone0
[ 1.729902] x86/amd: Previous system reset reason [0x00080800]: software wrote 0x6 to reset control register 0xCF9
[ 1.743199] integrity: Loaded X.509 cert 'Microsoft Corporation UEFI CA 2011: 13adbf4309bd82709c8cd54f316ed522988a1bd4'
[ 1.743212] integrity: Loaded X.509 cert 'Microsoft Windows Production PCA 2011: a92902398e16c49778cd90f99e4f9ae17c55af53'
[ 1.743222] integrity: Loaded X.509 cert 'Microsoft Option ROM UEFI CA 2023: 514fbf937fa46fb57bf07af8bed84b3b864b1711'
[ 1.743232] integrity: Loaded X.509 cert 'Microsoft UEFI CA 2023: 81aa6b3244c935bce0d6628af39827421e32497d'
[ 1.743243] integrity: Loaded X.509 cert 'Microsoft Corporation: Windows UEFI CA 2023: aefc5fbbbe055d8f8daa585473499417ab5a5272'
[ 2.328777] input: Video Bus as /devices/pci0000:00/0000:00:08.1/acpi.video_bus.0/input/input4
[ 3.702243] amdgpu: Virtual CRAT table created for CPU
[ 3.702253] amdgpu: Topology: Add CPU node
[ 3.702378] amdgpu 0000:c4:00.0: enabling device (0006 -> 0007)
[ 3.702426] amdgpu 0000:c4:00.0: initializing kernel modesetting (IP DISCOVERY 0x1002:0x1586 0x1F66:0x0030 0xC1).
[ 3.702504] amdgpu 0000:c4:00.0: register mmio base: 0xA0200000
[ 3.702505] amdgpu 0000:c4:00.0: register mmio size: 1048576
[ 3.705598] amdgpu 0000:c4:00.0: detected ip block number 0 (soc21_common)
[ 3.705601] amdgpu 0000:c4:00.0: detected ip block number 1 (gmc_v11_0)
[ 3.705603] amdgpu 0000:c4:00.0: detected ip block number 2 (ih_v6_1)
[ 3.705604] amdgpu 0000:c4:00.0: detected ip block number 3 (psp)
[ 3.705605] amdgpu 0000:c4:00.0: detected ip block number 4 (smu)
[ 3.705606] amdgpu 0000:c4:00.0: detected ip block number 5 (dm)
[ 3.705608] amdgpu 0000:c4:00.0: detected ip block number 6 (gfx_v11_0)
[ 3.705609] amdgpu 0000:c4:00.0: detected ip block number 7 (sdma_v6_0)
[ 3.705610] amdgpu 0000:c4:00.0: detected ip block number 8 (vcn_v4_0_5)
[ 3.705611] amdgpu 0000:c4:00.0: detected ip block number 9 (jpeg_v4_0_5)
[ 3.705612] amdgpu 0000:c4:00.0: detected ip block number 10 (mes_v11_0)
[ 3.705613] amdgpu 0000:c4:00.0: detected ip block number 11 (vpe_v6_1)
[ 3.705614] amdgpu 0000:c4:00.0: detected ip block number 12 (isp_ip)
[ 3.705637] amdgpu 0000:c4:00.0: Fetched VBIOS from VFCT
[ 3.705638] amdgpu 0000:c4:00.0: [drm] ATOM BIOS: 113-STRXLGEN-001
[ 3.709417] amdgpu 0000:c4:00.0: VPE: collaborate mode true
[ 3.740664] amdgpu 0000:c4:00.0: Trusted Memory Zone (TMZ) feature disabled as experimental (default)
[ 3.740737] amdgpu 0000:c4:00.0: vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
[ 3.740770] amdgpu 0000:c4:00.0: VRAM: 98304M 0x0000008000000000 - 0x00000097FFFFFFFF (98304M used)
[ 3.740779] amdgpu 0000:c4:00.0: GART: 512M 0x00007FFF00000000 - 0x00007FFF1FFFFFFF
[ 3.740803] amdgpu 0000:c4:00.0: [drm] Detected VRAM RAM=98304M, BAR=98304M
[ 3.740805] amdgpu 0000:c4:00.0: [drm] RAM width 256bits LPDDR5
[ 3.740997] amdgpu 0000:c4:00.0: 98304M of VRAM memory ready
[ 3.741000] amdgpu 0000:c4:00.0: 15860M of GTT memory ready.
[ 3.741028] amdgpu 0000:c4:00.0: [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 3.741763] amdgpu 0000:c4:00.0: [drm] PCIE GART of 512M enabled (table at 0x0000008000300000).
[ 3.742297] amdgpu 0000:c4:00.0: [drm] Loading DMUB firmware via PSP: version=0x09004700
[ 3.742690] amdgpu 0000:c4:00.0: [VCN instance 0] Found VCN firmware Version ENC: 1.24 DEC: 9 VEP: 0 Revision: 34
[ 3.742758] amdgpu 0000:c4:00.0: [VCN instance 1] Found VCN firmware Version ENC: 1.24 DEC: 9 VEP: 0 Revision: 34
[ 3.742876] amdgpu 0000:c4:00.0: MES: vmid_mask_mmhub 0x0000ff00, vmid_mask_gfxhub 0x0000ff00
[ 3.742877] amdgpu 0000:c4:00.0: MES: gfx_hqd_mask 0x00000002, compute_hqd_mask 0x0000000c, sdma_hqd_mask 0x000000fc
[ 3.766590] amdgpu 0000:c4:00.0: reserve 0x8c00000 from 0x97e0000000 for PSP TMR
[ 4.391432] amdgpu 0000:c4:00.0: RAS: optional ras ta ucode is not available
[ 4.395433] amdgpu 0000:c4:00.0: RAP: optional rap ta ucode is not available
[ 4.395434] amdgpu 0000:c4:00.0: SECUREDISPLAY: optional securedisplay ta ucode is not available
[ 4.429926] amdgpu 0000:c4:00.0: SMU is initialized successfully!
[ 4.434187] amdgpu 0000:c4:00.0: [drm] Display Core v3.2.369 initialized on DCN 3.5.1
[ 4.434189] amdgpu 0000:c4:00.0: [drm] DP-HDMI FRL PCON supported
[ 4.437253] amdgpu 0000:c4:00.0: [drm] DMUB hardware initialized: version=0x09004700
[ 4.516219] amdgpu 0000:c4:00.0: [drm] eDP-1: PSR support 1, DC PSR ver 0, sink PSR ver 1 DPCD caps 0x76 su_y_granularity 4
[ 4.516567] amdgpu 0000:c4:00.0: [drm] HDMI-A-1: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730498] amdgpu 0000:c4:00.0: [drm] DP-1: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730654] amdgpu 0000:c4:00.0: [drm] DP-2: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730679] amdgpu 0000:c4:00.0: [drm] DP-3: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730743] amdgpu 0000:c4:00.0: [drm] DP-4: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730803] amdgpu 0000:c4:00.0: [drm] DP-5: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730843] amdgpu 0000:c4:00.0: [drm] DP-6: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.730894] amdgpu 0000:c4:00.0: [drm] DP-7: PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 4.743245] amdgpu: Virtual CRAT table created for GPU
[ 4.745179] amdgpu: Topology: Add GPU node [0x1002:0x1586]
[ 4.745191] amdgpu 0000:c4:00.0: SE 2, SH per SE 2, CU per SH 10, active_cu_number 40
[ 4.745194] amdgpu 0000:c4:00.0: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[ 4.745195] amdgpu 0000:c4:00.0: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[ 4.745196] amdgpu 0000:c4:00.0: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[ 4.745196] amdgpu 0000:c4:00.0: ring comp_1.2.0 uses VM inv eng 6 on hub 0
[ 4.745197] amdgpu 0000:c4:00.0: ring comp_1.3.0 uses VM inv eng 7 on hub 0
[ 4.745197] amdgpu 0000:c4:00.0: ring comp_1.0.1 uses VM inv eng 8 on hub 0
[ 4.745197] amdgpu 0000:c4:00.0: ring comp_1.1.1 uses VM inv eng 9 on hub 0
[ 4.745198] amdgpu 0000:c4:00.0: ring comp_1.2.1 uses VM inv eng 10 on hub 0
[ 4.745198] amdgpu 0000:c4:00.0: ring comp_1.3.1 uses VM inv eng 11 on hub 0
[ 4.745198] amdgpu 0000:c4:00.0: ring sdma0 uses VM inv eng 12 on hub 0
[ 4.745199] amdgpu 0000:c4:00.0: ring vcn_unified_0 uses VM inv eng 0 on hub 8
[ 4.745199] amdgpu 0000:c4:00.0: ring vcn_unified_1 uses VM inv eng 1 on hub 8
[ 4.745200] amdgpu 0000:c4:00.0: ring jpeg_dec_0 uses VM inv eng 4 on hub 8
[ 4.745200] amdgpu 0000:c4:00.0: ring jpeg_dec_1 uses VM inv eng 6 on hub 8
[ 4.745200] amdgpu 0000:c4:00.0: ring mes_kiq_3.1.0 uses VM inv eng 13 on hub 0
[ 4.745201] amdgpu 0000:c4:00.0: ring vpe uses VM inv eng 7 on hub 8
[ 4.899588] amdgpu: HMM registered 98304MB device memory
[ 4.900225] amdgpu 0000:c4:00.0: Runtime PM not available
[ 4.900828] amdgpu 0000:c4:00.0: [drm] Using custom brightness curve
[ 4.902031] amdgpu 0000:c4:00.0: [drm] Registered 4 planes with drm panic
[ 4.919317] [drm] Initialized amdgpu 3.64.0 for 0000:c4:00.0 on minor 1
[ 4.951898] fbcon: amdgpudrmfb (fb0) is primary device
[ 4.951904] amdgpu 0000:c4:00.0: [drm] fb0: amdgpudrmfb frame buffer device
[ 6.074146] acpi_call: loading out-of-tree module taints kernel.
[ 6.074150] acpi_call: module verification failed: signature and/or required key missing - tainting kernel
[ 7.314072] amdxdna 0000:c5:00.1: [drm] Load firmware amdnpu/17f0_11/npu_7.sbin
[ 7.314085] amdxdna 0000:c5:00.1: enabling device (0000 -> 0002)
[ 7.435652] [drm] Initialized amdxdna_accel_driver 0.6.0 for 0000:c5:00.1 on minor 0
[ 7.730755] kvm_amd: TSC scaling supported
[ 7.730758] kvm_amd: Nested Virtualization enabled
[ 7.730760] kvm_amd: Nested Paging enabled
[ 7.730761] kvm_amd: LBR virtualization supported
[ 7.730764] kvm_amd: AVIC enabled
[ 7.730764] kvm_amd: x2AVIC enabled (max 512 vCPUs)
[ 7.730765] kvm_amd: Virtual VMLOAD VMSAVE supported
[ 7.730765] kvm_amd: Virtual GIF supported
[ 7.730766] kvm_amd: Virtual NMI enabled
[ 7.758968] snd_acp_pci 0000:c4:00.5: enabling device (0000 -> 0002)
[ 7.804408] snd_hda_intel 0000:c4:00.1: bound 0000:c4:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[ 7.847726] amd_atl: AMD Address Translation Library initialized
[ 7.869593] snd_sof_amd_acp: unknown parameter 'sof_dmic_override' ignored
[ 7.882244] snd_sof_amd_acp70: unknown parameter 'dmic_num' ignored
[ 11.035566] amdgpu 0000:c4:00.0: [drm] *ERROR* dc_dmub_srv_log_diagnostic_data: DMCUB error - collecting diagnostic data
[ 19.064418] amdxdna 0000:c5:00.1: [drm] *ERROR* aie2_get_info: Not supported request parameter 4
```

### Additional system information

[alsa-info.txt.536YCvivyS.txt](https://github.com/user-attachments/files/28637006/alsa-info.txt.536YCvivyS.txt)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.