hda/realtek: ASUS ExpertBook BM3606CHA (ALC256, SSID 1043:3551) — no internal speaker output
return012345 <[email protected]>
| Newsgroups | org.alsa-project.alsa-devel |
|---|---|
| Message-ID | <-RsCOhCGVU0hO-gh4NKTCRnqzDhSOdp7_bai6idR4C1ss_r650q72wl_jGIpEuMI-v4KS7J8DhXE6KIl3NQIpYAsWSToYy38UOLaJm6ZtNY=@proton.me> |
##Summary The internal speakers on an ASUS ExpertBook BM3606CHA produce no audio under Linux. No quirk entry matches this machine's subsystem ID, and the generic pin-based configuration leaves the speaker path silent. The same hardware works correctly under Windows 11 with ASUS's Realtek driver package, so this is not a hardware fault. --- ##System | | | |---|---| | Machine | ASUS ExpertBook BM3606CHA | | CPU | AMD Ryzen 7 260 w/ Radeon 780M (family 0x19, model 0x75, stepping 0x2) | | BIOS | BM3606CHA.309, 05/21/2026 | | Codec | Realtek ALC256 | | Vendor Id | 0x10ec0256 | | Subsystem Id | **0x10433551** | | HDA controller | AMD Ryzen HD Audio Controller [1022:15e3] at 0000:65:00.6 | | Distribution | Ubuntu 26.04 | | Kernels tested | 7.0.0-29-generic (distro) and 7.1.5-070105-generic (mainline) | | Userspace | PipeWire 1.6.2, WirePlumber 0.5.13 | Other audio devices present and working: * card 0 — ATI HDMI codec [1002:1640] at 0000:65:00.1 — HDMI audio **works** * card 2 — acp63 [1022:15e2] at 0000:65:00.5 — digital mic array **works** * Bluetooth A2DP output **works** `alsa-info` output: https://alsa-project.org/db/?f=68bc0cd2114825b15bf444403990ed9828c4af55 --- ##Symptoms 1. **Internal speakers produce no sound** under any tested configuration. 2. **Headphone jack is silent in the default configuration.** Pin 0x21 selects DAC 0x03, which never receives a stream. 3. **Headphone jack detection never fires.** Unsolicited events are enabled on pin 0x21 (`Unsolicited: tag=01, enabled=1`) but no event is ever delivered, so Auto-Mute cannot function. 4. HDMI, Bluetooth and the digital microphone array all work normally. --- ##No quirk matches this machine ``` snd_hda_codec_alc269 hdaudioC1D0: ALC256: picked fixup (pin match) snd_hda_codec_alc269 hdaudioC1D0: autoconfig for ALC256: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) hp_outs=1 (0x21/0x0/0x0/0x0/0x0) mono: mono_out=0x0 inputs: Headset Mic=0x19 ``` Note the empty fixup name — a generic pin-table match, with no model-specific fixup for SSID 0x1043:0x3551. Identical output on both 7.0.0-29 and mainline 7.1.5. --- ##Codec state during playback Captured while a tone was actively playing to the analog device: ``` Node 0x02 [Audio Output] (speaker DAC) Converter: stream=5, channel=0 Amp-Out vals: [0x54 0x54] Node 0x14 [Pin Complex] (internal speaker) Pin Default 0x90170120: [Fixed] Speaker at Int Pincap 0x00010014: OUT EAPD Detect EAPD 0x2: EAPD <- asserted Pin-ctls: 0x40: OUT <- output enabled Amp-Out vals: [0x00 0x00] <- not muted Connection: 0x02 ``` The speaker DAC receives a live stream, its amp is unmuted at a normal level, the pin is configured as an output, the pin amp is unmuted, and EAPD is asserted. Nothing in the codec's own configuration accounts for the silence. GPIO state at boot (all three pins inactive): ``` GPIO: io=3, o=0, i=0, unsolicited=1, wake=0 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 ``` --- ##Key observation: the speaker DAC is functional Repointing the headphone pin to the speaker DAC while audio is playing: ``` hda-verb /dev/snd/hwC1D0 0x21 SET_CONNECT_SEL 0x0 ``` ...produces clean audio through the headphone jack, immediately and audibly. DAC 0x02 and the entire signal path up to the codec's output stage are therefore functional. The same DAC, the same stream, the same amp settings are audible at pin 0x21 and silent at pin 0x14. (This is also the reason the headphone jack is silent by default: pin 0x21 selects DAC 0x03, which never receives a stream. Changing the selection to DAC 0x02 makes headphones work.) --- ##Tested without success All of the following were tested **with `power_save=0`** and **with audio actively playing**, and the resulting register state was verified by re-reading `/proc/asound/card1/codec#0`: **Codec GPIO** — `SET_GPIO_MASK` / `SET_GPIO_DIRECTION` / `SET_GPIO_DATA` on node 0x01, masks 0x01 through 0x07, with data driven both high and low. **EAPD** — `SET_EAPD_BTLENABLE` 0x00 and 0x02 on node 0x14. **COEF** — index 0x0f, value 0x7774 on node 0x20. **Model strings** — each confirmed applied via `picked fixup <name> (model specified)` in dmesg: * `alc256-asus-aio` — applied cleanly; GPIO2 confirmed `enable=1, dir=1, data=1` and held high during playback. No sound. * `lenovo-eapd` * `alc298-spk-volume` * `huawei-mbx-stereo` * `alc233-eapd` None produced any speaker output. --- ##No external amplifier is involved * `/sys/bus/spi/devices/` is empty. * I2C devices: only `2-0051` (SPD EEPROM) and `i2c-ASCP1209:00` (touchpad). * No `CSC3551` or `CLSA` device in ACPI. * The only `SPKR` device in the DSDT is `PNP0800` at I/O port 0x61 — the legacy PC beeper. * No `OperationRegion` referencing GPIO/GPO in the DSDT. * The ASUS WMI `DEVS` method contains no references to HDA, AZAL, ACP, SPK or AMP. The SoC pinctrl (`AMDI0030:00`) exposes 256 lines, of which only lines 0, 8, 24, 58, 59 and 130 have consumers. Nineteen unclaimed output lines exist but none is identified in ACPI as audio-related; these were **not** toggled. --- ##Windows behaviour Windows 11 was installed on the same machine to establish a control. With the ASUS driver package `X64W11_25H2_SWP_BM3406CHA_02_01_AUDIO` (Realtek V6.0.9932.1) installed: * internal speakers work * headphone jack works * headphone jack detection works correctly The driver INF (`HDXACPASUS.inf`) binds this machine explicitly: ``` "Realtek High Definition Audio" = IntcAzAudModel, HDAUDIO\FUNC_01&VEN_10EC&DEV_0256&SUBSYS_10433551 ``` `Get-PnpDevice -Class AudioEndpoint` reports the speaker endpoint as **"Speakers (Realtek (R) Audio)"**, confirming the speakers are driven by the ALC256 and not by the AMD Audio Coprocessor. The INF contains only audio-effects registry configuration (Dirac / Dolby / IntelliGo APO placement); the actual codec initialisation lives inside `RTKVHD64.sys` and `RTAIODAT.DAT`, which were not reverse-engineered.