Skip to content

Instantly share code, notes, and snippets.

@cryptob1
Created April 26, 2026 06:16
Show Gist options
  • Select an option

  • Save cryptob1/f62aaf8517df2e540f447347f42c7a03 to your computer and use it in GitHub Desktop.

Select an option

Save cryptob1/f62aaf8517df2e540f447347f42c7a03 to your computer and use it in GitHub Desktop.
ASUS ProArt PX13 (HN7306) Strix Halo - internal speakers on Linux 7.0 (TAS2783 firmware extraction recipe)

ASUS ProArt PX13 (HN7306) — Internal Speakers on Linux

Tested on Omarchy / Arch Linux, kernel 7.0.0+ mainline (the AMD ACP70 PX13 quirks landed in mainline 2026-03-16 and ship in 7.0).

This was the first publicly-confirmed working speaker setup for this laptop — kernel side worked out of the box on 7.0, but the TAS2783 SmartAmp speaker calibration blobs (1714-1-8.bin, 1714-1-B.bin) are not yet in linux-firmware. They ship in the official ASUS Windows driver. Below is a recipe to extract your own copy and install them.

If you're hitting slave-tas2783 ... Direct firmware load for 1714-1-8.bin failed with error -2 in dmesg and wpctl status shows only Dummy Output, this is for you.


Prerequisites

  • Linux 7.0 mainline (e.g. AUR linux-mainline package). Stock linux 6.19.x does not have the ACP70 PX13 quirks; you'll see only an acp-pdm-mach capture-only card.
  • Set the right Strix Halo kernel cmdline (optional but recommended): iommu=pt amdgpu.gttsize=126976 ttm.pages_limit=32505856 (raises GTT to ~124 GiB for unified memory).

Required tools

sudo pacman -S 7zip wine inotify-tools

p7zip from extra was renamed to 7zip in current Arch.

One-shot extract & install script

Save as extract-px13-tas2783-fw.sh:

#!/usr/bin/env bash
set -euo pipefail

# ASUS ProArt PX13 HN7306 TAS2783 firmware extraction
# Downloads official ASUS TI SmartAmp DCH driver, extracts the
# 1714-1-8.bin / 1714-1-B.bin blobs the kernel needs, installs them.

WORK=/tmp/px13-tas2783
URL="https://dlcdnets.asus.com/pub/ASUS/nb/Image/Driver/Audio/47519/SmartAMP_TI_DCH_TexasInstruments_Z_V6.3.1.15_47519.exe?model=HN7306EAC"

mkdir -p "$WORK"
cd "$WORK"

echo "==> Downloading ASUS TI SmartAmp driver (4.3 MB)..."
curl -fL -A "Mozilla/5.0" -o smartamp.exe "$URL"

echo "==> Initialising wine prefix..."
export WINEPREFIX="$WORK/wineprefix" WINEDEBUG=-all
wineboot -i >/dev/null 2>&1 || true

echo "==> Running installer; snapshotting temp files..."
rm -rf "$WORK/snapshot"
mkdir -p "$WORK/snapshot"
TEMP="$WINEPREFIX/drive_c/users/$USER/AppData/Local/Temp"

# Watch temp dir while installer runs and grab files before they get cleaned up.
(
  while true; do
    for d in "$TEMP"/is-*; do
      [ -d "$d" ] && rsync -a "$d/" "$WORK/snapshot/" 2>/dev/null
    done
    sleep 0.2
  done
) &
WATCHER=$!
trap 'kill $WATCHER 2>/dev/null || true' EXIT

wine "$WORK/smartamp.exe" /SP- /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /LOG=Z:\\tmp\\px13-tas2783\\install.log 2>/dev/null
sleep 5
kill $WATCHER 2>/dev/null || true

# Find the firmware blobs.
SRC=$(find "$WORK/snapshot" -name "1714-1-0x8.bin" | head -1)
[ -n "$SRC" ] || { echo "ERROR: Did not find 1714-1-0x8.bin. Snapshot:"; find "$WORK/snapshot" | head; exit 1; }
SRC_DIR=$(dirname "$SRC")

echo "==> Found firmware in $SRC_DIR"

echo "==> Installing to /lib/firmware/ (will prompt for sudo)..."
sudo install -m 644 "$SRC_DIR/1714-1-0x8.bin" /lib/firmware/1714-1-8.bin
sudo install -m 644 "$SRC_DIR/1714-1-0xB.bin" /lib/firmware/1714-1-B.bin
sudo install -d -m 755 /lib/firmware/ti/audio/tas2783
sudo install -m 644 "$SRC_DIR/1714-1-0x8.bin" /lib/firmware/ti/audio/tas2783/1714-1-8.bin
sudo install -m 644 "$SRC_DIR/1714-1-0xB.bin" /lib/firmware/ti/audio/tas2783/1714-1-B.bin

echo
echo "==> Done. Firmware installed."
echo "    Reboot, then check: dmesg | grep tas2783"
echo "    You should NOT see 'Direct firmware load for 1714-1-* failed'."

Make it executable, run it:

chmod +x extract-px13-tas2783-fw.sh
./extract-px13-tas2783-fw.sh
sudo reboot

Post-reboot configuration

The kernel will now load the firmware, but PipeWire's auto-profile is off because UCM doesn't expose a "Speakers" port for this card. Force the pro-audio profile and pin the speaker sink as default.

Save ~/.config/wireplumber/wireplumber.conf.d/51-strix-halo-audio.conf:

monitor.alsa.rules = [
  {
    matches = [
      { device.name = "alsa_card.pci-0000_c4_00.5-platform-amd_sdw" }
    ]
    actions = {
      update-props = {
        device.profile = "pro-audio"
      }
    }
  }
  {
    matches = [
      { node.name = "alsa_output.pci-0000_c4_00.5-platform-amd_sdw.pro-output-2" }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
        node.description = "Internal Speakers (TAS2783)"
      }
    }
  }
]

Restart WirePlumber:

systemctl --user restart wireplumber pipewire pipewire-pulse
pactl set-default-sink alsa_output.pci-0000_c4_00.5-platform-amd_sdw.pro-output-2

Test:

pw-cat --target=alsa_output.pci-0000_c4_00.5-platform-amd_sdw.pro-output-2 \
       --playback /usr/share/sounds/alsa/Front_Center.wav

Recovery if speakers desync (occasional)

The SoundWire bus sometimes loses sync after suspend or long idle. Quick fix without reboot:

pactl set-card-profile alsa_card.pci-0000_c4_00.5-platform-amd_sdw off
sleep 1
pactl set-card-profile alsa_card.pci-0000_c4_00.5-platform-amd_sdw pro-audio

The session.suspend-timeout-seconds = 0 rule above prevents most occurrences.

What's working / not working

Status
Internal speakers (TAS2783) ✅ Working
3.5mm headphone jack (RT721 SDCA) ✅ Working (separate sink, pro-output-0)
HDMI audio ✅ Working
Bluetooth audio ✅ Working
Headphone jack auto-switch on plug-in ❌ Manual sink switch needed
Microphone (PDM array) ⚠️ Not tested

Why this is needed

  • Linux's slave-tas2783 driver (sound/soc/codecs/tas2783-sdw.c) calls request_firmware_nowait() for files matching %04X-%1X-%1X.bin. With ASUS subsystem ID 0x1714 and SoundWire link 1, slave addresses 0x8 and 0xB, that resolves to 1714-1-8.bin and 1714-1-B.bin.
  • linux-firmware ships TAS2783 blobs only for HP/Dell systems (subsystem IDs 0x8E86, 0x8E87, 0x8EF5, 0x8EF6). No ASUS blobs upstream as of 2026-04-25.
  • The blobs are device-specific calibration/protection data programmed by ASUS at the factory. They're shipped in the Windows DCH driver under Firmwares/<subsysID>-<link>-0x<addr>.bin.

References


Contributed by a Linux user who got tired of using bluetooth headphones. If you have working firmware blobs for related ASUS models (subsystem IDs near 0x1714), please open an MR against linux-firmware.

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