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.
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.chas 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 genericskl_hda_dsp_genericmachine 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
Micro-Star International Co. Ltd. - Raider16MaxHXB2WI - REV1.0 - MS_2651intel/sof-ipc4/arl-s/sof-arl-s.risof-firmware2025.12.2-1Exact SoundWire addresses
From
/sys/bus/soundwire/devices/:Kernel log (before fix)
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 ARLrt722_l0_rt1320_l2/rt712_l0_rt1320_l3entries in the same file.About the topology filename
Note the
sof_tplg_filenameabove points at the already-shippedsof-arl-rt722-l0_rt1320-l2.tplgrather 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 viaspk_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.tplgshould 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.cthan what ships with kernel 7.2.3 — specifically the exportedsnd_soc_acpi_intel_rt712_vb_no_function_topologysymbol that currentsoc-acpi-intel-ptl-match.calready 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
journalctl -k -bthat the kernel now correctly identifies the hardware and requests the specified topology (previously fell back toskl_hda_dsp_generic).pactl list sinks short,wpctl status).paplaytest tone through the Speaker sink).Happy to test further patch revisions on this hardware if useful.