Skip to content

PTL: HP OmniBook X Flip 14 (103c:8ea4) - no speaker output, no SoundWire machine match (RT712 + 2x TAS2783) #5981

Open

Description

@kevoriordan

Hardware

  • HP OmniBook X Flip Laptop 14-kb0xxx, BIOS F.10
  • Audio controller: Intel Core Ultra Series 3 (Panther Lake), PCI 8086:e428, subsystem 103c:8ea4
  • SoundWire devices (all Attached):
    • link 2: sdw:0:2:0102:0000:01:9 and sdw:0:2:0102:0000:01:c (TI, handled by slave-tas2783)
    • link 3: sdw:0:3:025d:0712:01 (Realtek RT712)

Software

  • Ubuntu 26.10, kernel 7.3.0-9-generic
  • linux-firmware 20260915, firmware-sof-signed 2026.09-1, alsa-ucm-conf 1.2.16.1-1ubuntu1
  • PipeWire 1.6.8 / WirePlumber 0.5.17

Problem
Only "Dummy Output" is offered. The card sof-soundwire is registered, but the HiFi profile is unavailable (pw profile list: off / HiFi=no / pro-audio), so no speaker sink exists.

Kernel log

sof-audio-pci-intel-ptl 0000:00:1f.3: No SoundWire machine driver found for the ACPI-reported configuration:
sof-audio-pci-intel-ptl 0000:00:1f.3: link 2 mfg_id 0x0102 part_id 0x0000 version 0x3
sof-audio-pci-intel-ptl 0000:00:1f.3: link 2 mfg_id 0x0102 part_id 0x0000 version 0x3
sof-audio-pci-intel-ptl 0000:00:1f.3: link 3 mfg_id 0x025d part_id 0x0712 version 0x3
sof-audio-pci-intel-ptl 0000:00:1f.3: Use SoundWire default machine driver with function topologies
acpi device:1e: function type only supported as DisCo constant
acpi device:20: function type only supported as DisCo constant
acpi device:22: SDCA function UAJ (type 6) at 0x1
acpi device:23: SDCA function SmartMic (type 3) at 0x2
acpi device:24: SDCA function HID (type 10) at 0x3

Only the jack (sof-sdca-jack-id0.tplg), mic (sof-sdca-mic-id4.tplg) and HDMI (sof-hdmi-pcm5-id5.tplg) topologies are loaded. No amp topology is loaded, although sof-sdca-2amp-id2.tplg is installed. I also see hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3.

Analysis
The ACPI tables (dump attached on request) describe the two TAS2783 amps as plain SoundWire peripherals with no SDCA speaker function: no function-type property, and the only mipi-sdca-function-* entries belong to the RT712 UAJ/SmartMic/HID functions. The generic function-topology path therefore cannot identify them as amplifiers. This looks like it needs a soc-acpi-intel-ptl-match.c entry (RT712 jack/mic + 2x TAS2783 on link 2, using sof-sdca-2amp-id2.tplg or similar), or another way to infer the amp function. I have not tested a patch.

Firmware (separate, partly worked around)
tas2783 requested 8EA4-2-0xC.bin / 8EA4-2-0x9.bin from /lib/firmware/. linux-firmware ships 8EA4-0-2-0x{9,C}.bin.zst and 8EA4-1-2-0x{9,C}.bin.zst, so the names did not match. After symlinking 8EA4-2-0x{9,C}.bin.zst to the -0- files and reloading snd_sof_pci_intel_ptl, the firmware-load errors disappeared, but there is still no speaker sink. Which of the -0-/-1- files belongs to which amp is a guess.

Also noticed
UBSAN: shift-out-of-bounds in sound/soc/sof/ipc4-topology.c:2471:13 from _sof_ipc4_prepare_copier_module during sof_pcm_hw_params (full trace in ubsan.txt). It may be unrelated.

Attachments: dmesg-audio.txt, ubsan.txt, soundwire.txt, alsa-info.txt, fw-links.txt, system.txt; acpi.dump (3.9 MB) available on request.

Questions

  • Is a machine-driver match for this configuration already in progress?
  • Which TAS2783 firmware file is correct for each amp address (0x9, 0xC)?

Downstream report: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2171307

Activity

  1. added
    TIIssue with codec/Amp from TI
    on Oct 19, 2026
  2. kv2019i commented on Oct 19, 2026

    @kv2019i
    Collaborator

    #5982 seems similar. We have not been directly in the loop w.r.t. this configuration. The driver is present in upstream, so that's good at least. @bardliao , I guess easiest path would be to add an old-style machine entry for this configuration? (for context: with standard SDCA, we should be able to set up a card based on the BIOS description, but we seem to be missing pieces here)

  3. added
    SDWApplies to SoundWire bus for codec connection
    on Oct 19, 2026
  4. bardliao commented on Oct 20, 2026

    @bardliao
    Collaborator

    Yes, @kv2019i @kevoriordan @PatrickH1999 #5981 and #5982 are the same. We should just keep one.

    Oct 17 19:05:44 KevinOmnibookUbuntu kernel: acpi device:1e: function type only supported as DisCo constant
    Oct 17 19:05:44 KevinOmnibookUbuntu kernel: acpi device:20: function type only supported as DisCo constant
    Oct 17 19:05:44 KevinOmnibookUbuntu kernel: acpi device:22: SDCA function UAJ (type 6) at 0x1
    Oct 17 19:05:44 KevinOmnibookUbuntu kernel: acpi device:23: SDCA function SmartMic (type 3) at 0x2
    Oct 17 19:05:44 KevinOmnibookUbuntu kernel: acpi device:24: SDCA function HID (type 10) at 0x3
    

    It is likely the BIOS issue again.
    Please see #5760 (comment).

  5. bardliao commented on Oct 20, 2026

    @bardliao
    Collaborator

    @kevoriordan @PatrickH1999 While waiting for the BIOS update, could you test if #5986 help?

  6. PatrickH1999 commented on Oct 20, 2026

    @PatrickH1999

    @bardliao Thanks — #5986 helps. With it the internal speaker PCM is created and plays via direct ALSA. Note: audio is not yet reaching the speakers through PipeWire/normal apps — see the last point.

    HP OmniBook X 14 (board 8EA6, 2× TAS2783 on SoundWire link 2, Panther Lake), kernel 7.2.11-arch1 + this patch:

    A Speaker PCM is now created — aplay -l shows card 0: sofsoundwire, device 2: Speaker (and device 35 “Deepbuffer Speaker”). Without the patch there was no speaker PCM at all, only Jack + HDMI.
    dmesg now loads an amp topology that was never selected before:
    loading topology 0: intel/sof-ipc4-tplg/sof-sdca-1amp-id2.tplg
    Direct ALSA playback to the PCM is clearly audible from the internal speakers: speaker-test -D hw:0,2 -c2 -t sine -f440 -l1

    A few remaining observations (possibly separate / expected, not blockers for the patch itself):

    The No SoundWire machine driver found ... Use SoundWire default machine driver with function topologies message is still printed.
    It selects 1amp although there are two TAS2783 amps on link 2 — is that expected for this config, or should both be driven?
    The per-amp calibration blobs are still missing (8EA6-2-0x{9,C}.bin ... error -2, fallback load), so the amp runs uncalibrated — audio is audible regardless.
    Only speaker-test/direct ALSA produces sound so far. PipeWire/WirePlumber does not expose the speaker as a sink yet (pactl still shows only auto_null), so normal apps (browser, etc.) stay silent. This looks like a userspace/UCM matter rather than part of this patch, but flagging it in case it’s related.

    Happy to run further tests.

  7. PatrickH1999 commented on Oct 20, 2026

    @PatrickH1999

    @bardliao Update: with #5986 the internal speakers now work end-to-end, including normal apps (browser audio), after one userspace step. Summary for this board:

    HP OmniBook X 14 (board 8EA6, 2× TAS2783 on SoundWire link 2, Panther Lake), kernel 7.2.11-arch1 + this patch.

    Kernel side — the patch fixes it:

    A Speaker PCM is created: aplay -l → card 0: sofsoundwire, device 2: Speaker. Without the patch there was no speaker PCM at all.
    The amp topology now loads: loading topology 0: intel/sof-ipc4-tplg/sof-sdca-1amp-id2.tplg.
    alsa.components now reports cfg-amp:2 ... spk:tas2783 hs:rt712 mic:rt712.
    Direct ALSA playback is audible: speaker-test -D hw:0,2.

    Userspace — why apps were initially silent (separate from this patch):

    The card’s ACP/UCM profile came up as off. The only non-pro output profile (output:stereo-fallback) is marked available: no and contains only a Headphones port — no speaker port, so PipeWire fell back to a null sink.
    Switching the card to the pro-audio profile exposes the raw Speaker PCM (pro-output-2); setting it as the default sink gives working speaker audio for all apps (YouTube etc.).
    So the remaining gap looks like missing ALSA UCM/ACP speaker routing for the 8EA6 config, i.e. an alsa-ucm-conf matter rather than this kernel patch.

    Still open / possibly expected:

    No SoundWire machine driver found ... default machine driver with function topologies is still printed.
    Topology is 1amp although there are two TAS2783 on link 2 — expected, or should both be driven?
    Per-amp calibration blobs still missing (8EA6-2-0x{9,C}.bin ... error -2, fallback load); amp runs uncalibrated but audio is fine.

    Net: #5986 is what makes the speakers reachable at all on this board. Happy to run further tests.

  8. kevoriordan commented on Oct 20, 2026

    @kevoriordan
    Author

    @bardliao Tested #5986 on HP OmniBook X Flip 14-kb0xxx (board 8EA4, BIOS F.10, 2× TAS2783 on link 2 + RT712 on link 3), Ubuntu 26.10 kernel 7.3.0-9-generic, rebuilding only snd-sof-intel-hda-generic with the patch.

    It helps, but only the left speaker plays.

    • loading topology 0: intel/sof-ipc4-tplg/sof-sdca-1amp-id2.tplg (plus jack-id0, mic-id4, hdmi-pcm5-id5)
    • aplay -l: device 2 Speaker, device 35 Deepbuffer Speaker
    • components: cfg-amp:2 iec61937-pcm:7,6,5 spk:tas2783 hs:rt712 mic:rt712
    • Unlike No internal speakers on HP OmniBook X 14 (8EA6, Panther Lake) — 2x TAS2783 report part_id 0x0000, no machine driver match #5982, the HiFi UCM profile is available here and PipeWire exposes Speaker, Headphones, HDMI 1–3, SoundWire Microphones and Headset Mic, with no pro-audio workaround needed.
    • Only the left speaker produces sound. With PipeWire stopped, speaker-test -D hw:0,2 -c2 -s1 -t wav ("Front Left") is audible from the left speaker, while -s2 ("Front Right") is silent. Mapping looks correct; the right channel / second amp just produces nothing. Possibly related to the 1amp topology being selected with two amps present.
    • Reading the amp mixer controls (tas2783-{1,2} Speaker/Amp Volume) logs, for both amps (sdw:0:2:0102:0000:01:9 and :01:c):
      slave-tas2783 sdw:0:2:0102:0000:01:9: ASoC error (-16): at soc_component_read_no_lock() on sdw:0:2:0102:0000:01:9 for register: [0x00800003]
      slave-tas2783 sdw:0:2:0102:0000:01:9: ASoC error (-16): at soc_component_read_no_lock() on sdw:0:2:0102:0000:01:9 for register: [0x0080001a]
      
      and amixer then reports both tas2783-N Speaker volumes as 0 / -100 dB, even though the left side is audible.

    Still seen: "No SoundWire machine driver found … function topologies", and the UBSAN shift-out-of-bounds in ipc4-topology.c:2471.

    Calibration note: tas2783 requests 8EA4-2-0x{9,C}.bin from /lib/firmware, but linux-firmware only provides 8EA4-{0,1}-2-0x{9,C}.bin.zst. I symlinked 8EA4-2-0x{9,C}.bin.zst → 8EA4-0-2-…, which removed the load errors, but I don't know if the -0- variant is the right one for each amp.

    Happy to test further (e.g. a 2amp topology, or other firmware variants).

  9. kevoriordan commented on Oct 20, 2026

    @kevoriordan
    Author

    Follow-up on the #5986 test (same setup: HP OmniBook X Flip 14, 8EA4, kernel 7.3.0-9-generic + patched snd-sof-intel-hda-generic).

    1. Kernel oops in SoundWire bandwidth allocation when an amp has no firmware

    On one boot (it followed a hung systemctl hibernate, so the amp may have been left in a bad state), amp :c refused playback, and WirePlumber's later stream prepare hit a divide-by-zero:

    [    8.159090] slave-tas2783 sdw:0:2:0102:0000:01:c: error playback without fw download
    [    8.159108] slave-tas2783 sdw:0:2:0102:0000:01:c: ASoC error (-22): at snd_soc_dai_hw_params() on tas2783-codec
    [    8.159542]  SDW2-Playback-SmartAmp: ASoC error (-22): at __soc_pcm_hw_params() on SDW2-Playback-SmartAmp
    [    8.159550]  Speaker: ASoC error (-22): at dpcm_fe_dai_hw_params() on Speaker
       (repeated 10x)
    [    8.271090] UBSAN: shift-out-of-bounds in sound/soc/sof/ipc4-topology.c:2471:13 (shift exponent 18446744069414584384)
    [   18.919339] Oops: divide error: 0000 [#1] SMP NOPTI
    [   18.919353] CPU: 7 UID: 1000 PID: 3964 Comm: wireplumber Tainted: G OE 7.3.0-9-generic #9-Ubuntu
    [   18.919361] RIP: 0010:sdw_compute_group_params+0x8b/0x270 [soundwire_generic_allocation]
      sdw_compute_port_params -> sdw_compute_params -> _sdw_prepare_stream -> sdw_prepare_stream
      -> asoc_sdw_prepare -> snd_soc_link_prepare -> __soc_pcm_prepare -> dpcm_be_dai_prepare -> dpcm_fe_dai_prepare
    

    So a failed hw_params on the amp still lets prepare run with zero-valued group params. This happened on 2 consecutive boots, then not again. The vmcore is available if useful. (The ipc4-topology UBSAN also appears with the stock driver.)

    2. Right speaker silent with either calibration variant

    linux-firmware ships two tunings per amp for this board. 8EA4-{0,1}-2-0x{9,C} link to the 8EA1-* files, whose headers read HP_Kento_14_SDW_alpha10_Stereo_AAC_20251014 (-0-) and ..._Stereo_FG_20251014 (-1-), i.e. per-speaker-supplier variants. The driver only requests 8EA4-2-0x{9,C}.bin, so neither gets picked automatically. I tested both via symlinks: no firmware-load errors either way, the left speaker plays, and the right speaker (speaker-test -D hw:0,2 -c2 -s2) is silent with both. So the missing channel doesn't look like a calibration-file issue. The 1amp topology being selected with 2 amps present seems the more likely cause.

    Happy to test a 2amp topology or further patches.

  10. kevoriordan commented on Oct 20, 2026

    @kevoriordan
    Author

    Correction to my last two comments: I suggested the 1amp topology might be why the right speaker is silent, but that looks wrong. In sound/soc/intel/common/sof-function-topology-lib.c, the amp topology is named from dai_link->num_cpus ("sdca-%damp"), i.e. the number of SoundWire links carrying amps, not the number of amps. Both TAS2783s are on link 2, so sof-sdca-1amp-id2.tplg is the expected choice here.

    So the silent right channel is more likely in how the two amps on link 2 (uid 0x9 and 0xC) are mapped to channels, or in the second amp's setup. The ASoC error (-16) register reads on both amps may be relevant. Happy to test a patch.

  11. bardliao commented on Oct 21, 2026

    @bardliao
    Collaborator

    @kevoriordan @PatrickH1999 Thanks for the testing. The "audio is not yet reaching the speakers through PipeWire/normal apps" issue might be an UCM issue. Please update the latest UCM from https://github.com/alsa-project/alsa-ucm-conf. Need @niranjanhyti 's help on the issue. And answer other questions.

    1. sof-sdca-1amp-id2.tplg is expected because the 2 amps are on the same link.
    2. "No SoundWire machine driver found … function topologies" is expected. That is just because we don't add audio configs to the acpi mach table for PTL+ platforms. The direction is to use the default SoundWire machine driver with function topologies.
    3. For the out of bounds issue, you need https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=746de48c3a250f0c264105dcbfcdf0c5001e970b which is in 7.3 kernel.
  12. kevoriordan commented on Oct 26, 2026

    @kevoriordan
    Author

    @bardliao Thanks a lot for the explanations, that clears up the topology and machine-driver questions.

    Update from my side (HP OmniBook X Flip 14, 8EA4, Ubuntu 7.3.0-9-generic + #5986):

    • With the stock Ubuntu UCM, PipeWire already exposed the Speaker sink via the HiFi profile here, so I didn't hit the PipeWire issue from No internal speakers on HP OmniBook X 14 (8EA6, Panther Lake) — 2x TAS2783 report part_id 0x0000, no machine driver match #5982. I also tried the latest alsa-ucm-conf from git (d260eed), and nothing changed. tas2783.conf is identical there anyway.
    • The remaining problem is that only the left speaker plays. The right channel is silent even on raw hw:0,2 with PipeWire stopped (speaker-test -D hw:0,2 -c2 -s2 -t wav), with either the AAC or the FG calibration file. Reading the amp controls logs ASoC error (-16) ... soc_component_read_no_lock() on both amps (uid 0x9 and 0xC).
    • FYI, 746de48 isn't in Ubuntu's 7.3.0-9 kernel yet (it still has the old condition at ipc4-topology.c:2461), which is why I still see the UBSAN. I'll ask Ubuntu to pick it up.

    @niranjanhyti If you have a chance to look at the second amp, I'm happy to run any tests or patches. Thanks!

  13. kevoriordan commented on Oct 26, 2026

    @kevoriordan
    Author

    A possible clue for the silent right speaker, in case it helps @niranjanhyti:

    • A left-only stream (stereo WAV with the right channel all zeros) seems to come out of both speakers. I checked by muffling each side in turn. It's a by-ear check, so not 100% certain.
    • A right-only stream (speaker-test -D hw:0,2 -c2 -s2, PipeWire stopped) comes out of neither speaker.

    So it looks like both amps (uid 0x9 and 0xC on link 2) render channel 1, rather than the second amp being dead.

    This matches what @leepaulmann described on #5904 for the ASUS PX13 (two TAS2783 on one link): the per-amp ClusterIndex (SDW_SDCA_CTL(1, PPU21, 0x10, 0)) decides which channel each amp renders. In the Ubuntu 7.3.0-9 tas2783-sdw.c, tas2783_init_seq writes 0x01 to that control on every amp (line 309), and since our BIOS DisCo tables don't parse (function type only supported as DisCo constant), there's no sa_func_data init table to set a per-amp value. If that's the cause, the second amp would need ClusterIndex set for the right channel.

    Happy to test a patch. I can also try writing the control on amp 0xC by hand if you can tell me the right value.

  14. leepaulmann commented on Oct 26, 2026

    @leepaulmann

    @kevoriordan Some data from the PX13 that may help narrow this down.

    ClusterIndex 0x01 on both amps is also what the PX13 runs on stock 7.3, and it gives correct stereo there. That's because of the stereo split in 7.3's tas2783_sdw_hw_params() (the comment mentions "mirror mode"). For a 2-channel playback stream, it narrows each amp's ch_mask to one channel by the number in its name prefix (tas2783-1 → BIT(0), tas2783-2 → BIT(1)). Each amp then gets a one-channel payload, and ClusterIndex 0x01 renders it.

    Without the split, every amp gets the full 2-channel mask. With 0x01 on both, both render channel 1, so you get Left from both speakers and Right from neither, which is what you describe. So it may be worth checking that the split is in Ubuntu's 7.3.0-9 source (grep -n "mirror mode" sound/soc/codecs/tas2783-sdw.c). Your control names are tas2783-1/2, so the prefix part should match.

    On the test you offered: on the PX13 the ASUS ACPI init table sets 0x01 on the left amp and 0x04 on the right amp. Stock 7.3 never applies that table; the PR #5904 fallback does. Across the two, I saw:

    ch_mask per amp ClusterIndex, second amp result
    one channel (stock 7.3 split) 0x01 stereo
    one channel (stock 7.3 split) 0x04 second amp silent
    full 2-channel 0x04 stereo

    So 0x04 on amp 0xC should tell the two cases apart. If it brings the right speaker back, the amps are getting the full mask and the split isn't taking effect. If amp 0xC goes silent, the split is working and the problem is somewhere else. HP may use different values from ASUS, so this is a hint, not a known-good setting for 8EA4.

    The ASoC error (-16) reads on the volume controls are a separate issue: the regcache is dropped while the amp is runtime suspended. That's being discussed on linux-sound in Matthew Schwartz's series "ASoC: tas2783-sdw: volume and firmware load fixes". It shouldn't affect channel mapping.

    Disclosure: I worked through this with AI assistance (Claude Code). The PX13 results are from my machine, checked by ear and in the kernel log.

  15. kevoriordan commented on Oct 26, 2026

    @kevoriordan
    Author

    Good news: HP BIOS F.11 fixes this on the OmniBook X Flip 14 (8EA4), with no kernel patch needed.

    After updating from F.10 to F.11 (dated 06/23/2026):

    • The function type only supported as DisCo constant messages are gone. Both amps now parse as SDCA function SmartAmp (type 1) at 0x1, and tas2783 logs Found Smart Amp function at index 0 for 0x9 and 0xC.
    • On the stock Ubuntu 7.3.0-9-generic kernel (I removed my ASoC: SOF: Intel: Skip endpoint presence check for single-DAI codecs #5986 build), the Speaker PCM is created, sof-sdca-1amp-id2.tplg loads, and PipeWire's HiFi profile shows the Speaker sink.
    • Stereo works, with correct sides (speaker-test -c2 -t wav, checked by ear). So the silent right speaker on F.10 was the missing per-amp ACPI init table, as suspected. Thanks for pointing to the BIOS fix, @bardliao.

    Remaining, for anyone landing here:

    @PatrickH1999 it may be worth checking HP for a BIOS update for 8EA6 too.

    I'm happy for this to be closed as fixed by BIOS, or kept open for the firmware naming. Whichever you prefer. Thanks all for the help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    SDWApplies to SoundWire bus for codec connectionTIIssue with codec/Amp from TI

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions