Skip to content

[BUG] Arrow Lake (MSI Raider 16 Max HX B2WI): missing SoundWire machine driver for RT713 (link0) + dual RT1320 (link2) — patch included, tested working #5934

Description

@jgault87

Summary

On the MSI Raider 16 Max HX B2WI (Intel Arrow Lake, ARL-S), the built-in speakers don't work because soc-acpi-intel-arl-match.c has no SoundWire machine-driver entry for this board's codec combo: RT713 (SDCA "VB" jack/mic variant) on link 0 + two RT1320 speaker amps sharing link 2. The driver falls back to the generic skl_hda_dsp_generic machine driver, which only exposes HDMI outputs.

The same RT713+RT1320 pairing is already fully supported on Panther Lake (ptl_sdw_rt713_vb_l2_rt1320_l13) and Lunar Lake (lnl_sdw_rt713_vb_l2_rt1320_l13) — it just never got ported to Arrow Lake.

I've written, built, and tested a fix locally (patch below) and confirmed working audio output on real hardware.

Hardware

  • Board (DMI): Micro-Star International Co. Ltd. - Raider16MaxHXB2WI - REV1.0 - MS_2651
  • Platform: Intel Arrow Lake (ARL-S), firmware intel/sof-ipc4/arl-s/sof-arl-s.ri
  • Kernel: 7.2.3-1-cachyos (CachyOS), sof-firmware 2025.12.2-1

Exact SoundWire addresses

From /sys/bus/soundwire/devices/:

sdw:0:0:025d:0713:01     -> RT713, link 0
sdw:0:2:025d:1320:01:0   -> RT1320 #1 (left), link 2
sdw:0:2:025d:1320:01:1   -> RT1320 #2 (right), link 2

Kernel log (before fix)

sof-audio-pci-intel-mtl 0000:80:1f.3: No SoundWire machine driver found for the ACPI-reported configuration:
sof-audio-pci-intel-mtl 0000:80:1f.3: link 0 mfg_id 0x025d part_id 0x0713 version 0x3
sof-audio-pci-intel-mtl 0000:80:1f.3: link 2 mfg_id 0x025d part_id 0x1320 version 0x3
sof-audio-pci-intel-mtl 0000:80:1f.3: link 2 mfg_id 0x025d part_id 0x1320 version 0x3
sof-audio-pci-intel-mtl 0000:80:1f.3: using HDA machine driver skl_hda_dsp_generic now

The fix

Adds a new match entry to soc-acpi-intel-arl-match.c, modeled directly on the existing PTL/LNL rt713+rt1320 entries and the existing ARL rt722_l0_rt1320_l2 / rt712_l0_rt1320_l3 entries in the same file.

--- a/sound/soc/intel/common/soc-acpi-intel-arl-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-arl-match.c
@@ -70,6 +70,23 @@
 	},
 };

+static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = {
+	/* Jack Endpoint */
+	{
+		.num = 0,
+		.aggregated = 0,
+		.group_position = 0,
+		.group_id = 0,
+	},
+	/* DMIC Endpoint */
+	{
+		.num = 1,
+		.aggregated = 0,
+		.group_position = 0,
+		.group_id = 0,
+	},
+};
+
 static const struct snd_soc_acpi_adr_device cs35l56_2_lr_adr[] = {
 	{
 		.adr = 0x00023001FA355601ull,
@@ -301,6 +318,36 @@
 	}
 };

+/*
+ * MSI Raider 16 Max HX B2WI (MS-2651): RT713 (jack/dmic, "VB" SDCA variant)
+ * on link 0, two RT1320 speaker amps sharing link 2 (unique_id 0 = left,
+ * unique_id 1 = right).
+ */
+static const struct snd_soc_acpi_adr_device rt713_vb_0_adr[] = {
+	{
+		.adr = 0x000030025D071301ull,
+		.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
+		.endpoints = jack_dmic_endpoints,
+		.name_prefix = "rt713"
+	}
+};
+
+static const struct snd_soc_acpi_adr_device rt1320_2_lr_adr[] = {
+	{
+		.adr = 0x000230025D132001ull,
+		.num_endpoints = 1,
+		.endpoints = &spk_l_endpoint,
+		.name_prefix = "rt1320-1"
+	},
+	{
+		.adr = 0x000231025D132001ull,
+		.num_endpoints = 1,
+		.endpoints = &spk_r_endpoint,
+		.name_prefix = "rt1320-2"
+	}
+};
+
 static const struct snd_soc_acpi_link_adr arl_n_mrd_es9356_link1[] = {
 	{
 		.mask = BIT(1),
@@ -454,6 +501,20 @@
 	{}
 };

+static const struct snd_soc_acpi_link_adr arl_rt713_vb_l0_rt1320_l2[] = {
+	{
+		.mask = BIT(0),
+		.num_adr = ARRAY_SIZE(rt713_vb_0_adr),
+		.adr_d = rt713_vb_0_adr,
+	},
+	{
+		.mask = BIT(2),
+		.num_adr = ARRAY_SIZE(rt1320_2_lr_adr),
+		.adr_d = rt1320_2_lr_adr,
+	},
+	{}
+};
+
 static const struct snd_soc_acpi_link_adr arl_rt722_l0_rt1320_l2[] = {
 	{
 		.mask = BIT(0),
@@ -561,6 +622,14 @@
 		.get_function_tplg_files = sof_sdw_get_tplg_files,
 	},
 	{
+		.link_mask = BIT(0) | BIT(2),
+		.links = arl_rt713_vb_l0_rt1320_l2,
+		.drv_name = "sof_sdw",
+		.machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
+		.sof_tplg_filename = "sof-arl-rt722-l0_rt1320-l2.tplg",
+		.get_function_tplg_files = sof_sdw_get_tplg_files,
+	},
+	{
 		.link_mask = BIT(0) | BIT(2),
 		.links = arl_rt722_l0_rt1320_l2,
 		.drv_name = "sof_sdw",

About the topology filename

Note the sof_tplg_filename above points at the already-shipped sof-arl-rt722-l0_rt1320-l2.tplg rather than a new file. No topology existed for RT713+RT1320 on ARL specifically, and rather than requiring a new topology build, I tested reusing the existing RT722+RT1320 one — reasoning that the DSP-side pipeline shape (jack+dmic codec on link0, amp stream on link2) shouldn't depend on which specific SDCA codec sits on link0, or on how many physical amp chips multiplex link2 (that fanout is handled by kernel ASoC endpoint aggregation via spk_l_endpoint/spk_r_endpoint, not the DSP topology binary).

This worked. SOF firmware booted cleanly, real ALSA/PipeWire sinks appeared (Speaker, Headphones, HDMI1/2/3), real mic sources appeared (SoundWire Microphones, Headset Microphone), and a test tone played audibly through the physical speakers.

I'd defer to maintainers on whether reusing the rt722 topology filename is acceptable long-term or whether a distinct sof-arl-rt713-l0-rt1320-l2.tplg should be built and shipped instead — but the reuse at least proves the pipeline shape is compatible, and gives a working reference for whoever builds the dedicated topology.

Companion change needed

Building the match table also required a newer soc-acpi-intel-sdca-quirks.c than what ships with kernel 7.2.3 — specifically the exported snd_soc_acpi_intel_rt712_vb_no_function_topology symbol that current soc-acpi-intel-ptl-match.c already references. This is presumably already resolved in-tree by the time these two files are built together upstream; flagging in case it's relevant to reviewing this patch in isolation.

Testing

  • Confirmed via journalctl -k -b that the kernel now correctly identifies the hardware and requests the specified topology (previously fell back to skl_hda_dsp_generic).
  • Confirmed SOF firmware boots without error.
  • Confirmed real sinks/sources appear in PipeWire (pactl list sinks short, wpctl status).
  • Confirmed audible playback (paplay test tone through the Speaker sink).

Happy to test further patch revisions on this hardware if useful.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions