From 8436c990292dff2e03f4db87abebf801343e19eb Mon Sep 17 00:00:00 2001 From: enjihn <150061999+enjihn@users.noreply.github.com> Date: Sun, 26 Jul 2026 14:53:03 -0400 Subject: [PATCH 1/2] feat(audio): add Odin 3 stereo and virtual surround Add device-gated PipeWire profiles for the Odin 3 built-in speakers, preserve speaker output preferences, route Bluetooth and 3.5 mm outputs independently, and synchronize the selected output with Steam. Include managed setup and rollback, the exact bundled HRIR, documentation, and focused policy and routing tests. --- LICENSE.md | 7 +- build_files/40-vendor-system-files.sh | 24 + docs/odin3-audio/README.md | 210 +++++ .../system/armada-odin3-audio-setup.service | 14 + .../user/armada-odin3-audio-default.service | 13 + .../user/armada-odin3-audio-hotplug.service | 15 + .../armada-odin3-audio-steam-restore.service | 13 + system_files/usr/libexec/armada/launch-steam | 1 + .../usr/libexec/armada/odin3-audio-default | 70 ++ .../usr/libexec/armada/odin3-audio-hotplug | 660 +++++++++++++++ .../usr/libexec/armada/odin3-audio-setup | 261 ++++++ .../libexec/armada/odin3-audio-steam-restore | 328 ++++++++ .../armada/audio/odin3/hrir/vss_speaker.wav | Bin 0 -> 470458 bytes .../pipewire-pulse.conf.d/10-no-flat.conf | 1 + .../20-odin3-stereo-downmix.conf | 5 + .../odin3/pipewire.conf.d/50-hrir-7_1.conf | 167 ++++ .../pipewire.conf.d/55-odin3-stereo.conf | 154 ++++ .../51-odin3-audio-names.conf | 26 + .../90-odin3-speaker-route-unity.conf | 13 + .../scripts/odin3-speaker-route-unity.lua | 86 ++ tests/odin3-audio-device-test.sh | 131 +++ tests/odin3-audio-hotplug-test.py | 550 ++++++++++++ tests/odin3-audio-policy-test.py | 788 ++++++++++++++++++ tests/odin3-audio-steam-sync-test.py | 124 +++ tests/odin3-audio-test.sh | 47 ++ 25 files changed, 3705 insertions(+), 3 deletions(-) create mode 100644 docs/odin3-audio/README.md create mode 100644 system_files/usr/lib/systemd/system/armada-odin3-audio-setup.service create mode 100644 system_files/usr/lib/systemd/user/armada-odin3-audio-default.service create mode 100644 system_files/usr/lib/systemd/user/armada-odin3-audio-hotplug.service create mode 100644 system_files/usr/lib/systemd/user/armada-odin3-audio-steam-restore.service create mode 100755 system_files/usr/libexec/armada/odin3-audio-default create mode 100755 system_files/usr/libexec/armada/odin3-audio-hotplug create mode 100755 system_files/usr/libexec/armada/odin3-audio-setup create mode 100755 system_files/usr/libexec/armada/odin3-audio-steam-restore create mode 100644 system_files/usr/share/armada/audio/odin3/hrir/vss_speaker.wav create mode 100644 system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/10-no-flat.conf create mode 100644 system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf create mode 100644 system_files/usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf create mode 100644 system_files/usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf create mode 100644 system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/51-odin3-audio-names.conf create mode 100644 system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/90-odin3-speaker-route-unity.conf create mode 100644 system_files/usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua create mode 100755 tests/odin3-audio-device-test.sh create mode 100755 tests/odin3-audio-hotplug-test.py create mode 100644 tests/odin3-audio-policy-test.py create mode 100755 tests/odin3-audio-steam-sync-test.py create mode 100755 tests/odin3-audio-test.sh diff --git a/LICENSE.md b/LICENSE.md index c193e507..fbdaafe5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -7,9 +7,10 @@ component is provided under its own license. Copyright the Armada contributors. -Original software and scripts written for Armada are licensed under the terms of -the **GNU General Public License, version 2 or (at your option) any later -version** (`GPL-2.0-or-later`). License text: +Original software, scripts, configuration, and bundled assets created for +Armada are licensed under the terms of the **GNU General Public License, +version 2 or (at your option) any later version** (`GPL-2.0-or-later`). +License text: [GPL-2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt). ## Upstream and bundled works diff --git a/build_files/40-vendor-system-files.sh b/build_files/40-vendor-system-files.sh index aeeef3d9..8a1f7ef0 100755 --- a/build_files/40-vendor-system-files.sh +++ b/build_files/40-vendor-system-files.sh @@ -15,6 +15,27 @@ EOF chmod 0755 /usr/libexec/armada/* chmod 0755 /usr/libexec/os-session-select +test -x /usr/libexec/armada/odin3-audio-setup +test -x /usr/libexec/armada/odin3-audio-default +test -x /usr/libexec/armada/odin3-audio-steam-restore +test -x /usr/libexec/armada/odin3-audio-hotplug +test -f /usr/lib/systemd/system/armada-odin3-audio-setup.service +test -f /usr/lib/systemd/user/armada-odin3-audio-default.service +test -f /usr/lib/systemd/user/armada-odin3-audio-steam-restore.service +test -f /usr/lib/systemd/user/armada-odin3-audio-hotplug.service +test -f /usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf +test -f /usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf +test -f /usr/share/armada/audio/odin3/pipewire-pulse.conf.d/10-no-flat.conf +test -f /usr/share/armada/audio/odin3/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf +test -f /usr/share/armada/audio/odin3/wireplumber.conf.d/51-odin3-audio-names.conf +test -f /usr/share/armada/audio/odin3/wireplumber.conf.d/90-odin3-speaker-route-unity.conf +test -f /usr/share/armada/audio/odin3/hrir/vss_speaker.wav +test "$( + sha256sum /usr/share/armada/audio/odin3/hrir/vss_speaker.wav | + cut -d' ' -f1 +)" = f88ee26f5af80e73365ea1428cea970eeb383c8dfaa1fb77b0fc5a1efb48a7cb +test -f /usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua + sed -i '/const allPanels/,$d' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js sed -i '$r /usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/armada-pins.js' /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js @@ -29,6 +50,9 @@ systemctl enable armada-input-calibration.service systemctl enable armada-controller-type.service systemctl enable inputplumber.service systemctl enable armada-device-quirks.service +systemctl enable armada-odin3-audio-setup.service +systemctl --global enable armada-odin3-audio-default.service +systemctl --global enable armada-odin3-audio-hotplug.service systemctl enable armada-fixups.service systemctl enable armada-installer-visibility.service systemctl enable armada-steamapps.service diff --git a/docs/odin3-audio/README.md b/docs/odin3-audio/README.md new file mode 100644 index 00000000..18c80c41 --- /dev/null +++ b/docs/odin3-audio/README.md @@ -0,0 +1,210 @@ +# Odin 3 stereo and virtual surround audio + +This integration gives the AYN Odin 3 two user-facing speaker outputs: + +- **Stereo** downmixes multichannel content to the built-in stereo speakers. +- **Virtual Surround Sound** applies an HRIR convolution to 7.1 content before + sending the result to the built-in stereo speakers. + +The physical speaker sink remains an internal transport. Steam sees the two +profiles above instead of exposing **Built-In Audio** as a third selectable +output. + +## Device scope + +The setup is restricted to an exact device-policy match for the AYN Odin 3 on +SM8750. A non-matching device activates no audio configuration and removes only +this package's exact managed links if they survived an earlier image. Original +files displaced by those links are restored. Internal Odin 3 audio values and +policy must not be applied to other handhelds or external audio devices. + +## Defaults and persistence + +On a new account with no saved audio state, the first session: + +1. Sets both public sinks to 100 percent. +2. Selects **Stereo** as the default. +3. Records that initialization has completed. + +That initialization is not repeated. If the user later selects **Virtual +Surround Sound**, the normal PipeWire and WirePlumber state preserves that +choice across sessions and reboots. Selecting **Stereo** makes it the persistent +choice again. An update must not replace an existing user selection. + +The physical speaker route is held at unity gain. User volume is applied to the +selected public sink, so a restored hardware-route volume cannot silently make +both profiles quieter or louder. + +Steam keeps a separate output-device override inside its SharedJSContext. On +each Steam launch, `launch-steam` nonblockingly restarts +`armada-odin3-audio-steam-restore.service`. If and only if the exact Odin 3 / +SM8750 device policy matches, the bounded helper waits for Steam CEF and +synchronizes PipeWire's current default output in Steam. It selects only the +`SharedJSContext` target served for `steamloopback.host` through a loopback +WebSocket, verifies Steam exposes one exact matching output, applies the +override, and reads it back. A missing +target, ambiguous device, timeout, or protocol error leaves the system audio +default unchanged and is reported in the user journal. For **Stereo**, +Bluetooth, and wired headphones, the helper selects the exact current +PipeWire sink in Steam and verifies both Steam's override and active output. +It first matches the exact sink name; if Steam exposes a different friendly +name, it derives the live Steam device ID from the independently checked +**Stereo** and **Virtual Surround Sound** PipeWire/Steam ID offset. Device IDs +are rediscovered on every run and are never persisted. + +## External audio + +Bluetooth outputs and the Odin 3's 3.5 mm headphone output are independent of +both built-in-speaker HRIR graphs. They remain ordinary public PipeWire sinks, +so Steam lists them alongside **Stereo** and **Virtual Surround Sound** while +the raw **Built-In Audio** speaker transport remains hidden. + +`armada-odin3-audio-hotplug.service` watches the live card and sink topology. +On its first start after an update, it preserves an existing bounded +**Stereo** or **Virtual Surround Sound** selection from WirePlumber's +`default-nodes` state before observing the newly created graph. +It also detects the exact legacy 2-channel `Stereo` volume pattern in which +FL/FR retain the user's equal volume but the six newly introduced 7.1 channels +are zero. Once, it copies that existing raw front volume to all eight channels, +verifies the result, and records a versioned migration marker. Other volume +layouts are left unchanged. +Connecting wired headphones switches the exact Odin card to its headphone +profile; connecting a positively identified BlueZ output selects that output. +The newest newly connected external output becomes the PipeWire default, +already-playing streams are moved to it, and Steam is resynchronized. If +several external outputs are connected, removing the active one selects the +most recently created remaining output. Removing the final external output +restores the user's saved **Stereo** or **Virtual Surround Sound** choice. + +The router never applies Odin speaker gain, HRIR convolution, hidden-transport +policy, or the graph-local Stereo downmix to an external sink. Unknown USB, +HDMI, and unrelated outputs do not trigger this Bluetooth/headphone policy. + +## Signal level + +Both profiles use a base gain of `0.295248`. This is 12 percent of the +logarithmic interval from the earlier `0.25` setting (`-12.0412 dB`) toward +unity (`0 dB`): + +```text +-12.0412 dB + (0.12 * 12.0412 dB) = -10.5963 dB +10 ^ (-10.5963 / 20) = 0.295248 +``` + +Virtual-surround channel weights retain the established relative balance: + +| Input | Gain | +|---|---:| +| Front and LFE | `0.295248` | +| Side | `0.265723` | +| Rear | `0.236199` | +| Center | `0.354298` | + +The final left and right samples are clamped to `+/-0.8912509381`, which is a +hard `-1 dBFS` sample ceiling. This is an emergency peak limit, not a loudness +normalizer or a guarantee that all upstream combinations are free of audible +compression. + +The Stereo profile accepts 7.1 input and performs its downmix inside its own +filter graph. Front channels use unity coefficients, center and surround +channels use `0.707106781`, and LFE uses `0.353553391`. The resulting left and +right signals then use the existing front HRIR paths. This retains every input +channel without applying speaker-specific downmix policy to Bluetooth, +headphone, or other external sinks. + +## Installation lifecycle + +The image contains immutable profile templates under +`/usr/share/armada/audio/odin3`. Before the display manager starts, +`armada-odin3-audio-setup.service` verifies the device and installs only the six +managed configuration links in the `armada` user's PipeWire and WirePlumber +directories. Both built-in-speaker graphs reference the same immutable +`/usr/share/armada/audio/odin3/hrir/vss_speaker.wav`. Setup verifies its exact +SHA-256 before changing any user configuration and fails closed if the file is +missing or differs. There is no fallback HRIR and no per-user replacement. + +If a managed path already contains a regular file, setup moves it to an +adjacent file ending in `.armada-odin3-audio.backup` before creating the link. +Setup refuses to replace foreign symlinks, special files, unsafe parent paths, +or an existing backup. + +The user service `armada-odin3-audio-default.service` performs the one-time +clean-account initialization after PipeWire, PipeWire Pulse, and WirePlumber +are available. Existing audio state suppresses that initialization. + +`armada-odin3-audio-steam-restore.service` is launch-triggered and intentionally +is not enabled. Its bounded one-shot failure cannot prevent Steam from starting. + +`armada-odin3-audio-hotplug.service` is globally enabled for user sessions but +exits without changing audio unless the immutable device policy exactly matches +an AYN Odin 3 on SM8750. + +## Rollback + +On an Odin 3, restore displaced configuration with: + +```text +sudo /usr/libexec/armada/odin3-audio-setup --restore +systemctl --user restart pipewire pipewire-pulse wireplumber +``` + +The restore operation removes only links owned by this integration and puts +the adjacent backups back in place. It refuses to remove a foreign link or +overwrite a current user file. Reboot instead of restarting the user services +if the Qualcomm audio path does not return cleanly. + +## Limitations + +- Virtual surround is a perceptual widening preset for the Odin 3 built-in + speakers; it does not create discrete physical surround channels. HRIRs + assume isolated ears, while speakers introduce acoustic crosstalk and the + listener's own head response, so this is not geometrically accurate binaural + rendering. +- Perceived localization varies by listener and by the HRIR dataset. +- The hard sample ceiling protects the final graph output but is not a + true-peak limiter. +- The virtual sinks, hidden transport, unity-route enforcement, downmix, and + gain tuning apply only to the built-in Odin 3 speakers. Bluetooth, headphone, + and other external sinks retain their own PipeWire routing and mixing policy. +- The bundled HRIR is checksum-pinned. Replacing it requires updating the + expected checksum and audio validation tests. + +## Tests + +Run the repository checks from the repository root: + +```text +bash tests/odin3-audio-test.sh +``` + +Run the opt-in, read-only live-session checks on an Odin 3: + +```text +ODIN3_AUDIO_DEVICE_TEST=1 bash tests/odin3-audio-device-test.sh +``` + +The repository test validates the device gate, managed installation and +rollback, first-run default policy, Steam rehydration contract, graph structure, +channel routing, gain ratios, final sample clamps, external-output +classification, connection ordering, stream migration, and saved-speaker +restoration. The device check verifies the two speaker-profile sinks, the +internal hardware route, and an expected persistent default selection. + +Physical release validation still requires one Bluetooth output and one 3.5 mm +headset or speaker. For each, verify that connection adds the device to Steam's +audio picker and selects it, audio bypasses both HRIR profiles, and disconnection +restores the prior speaker profile. + +For an audible built-in-speaker channel test on PipeWire 1.6.8, use ALSA's +canonical 7.1 order: + +```text +speaker-test -D pipewire -r 48000 -c 8 \ + -m FL,FR,RL,RR,FC,LFE,SL,SR -t wav -l 1 +``` + +Do not reorder the `-m` list to match the graph declaration. PipeWire 1.6.8's +ALSA plugin publishes the canonical order even when another map is requested, +which makes `speaker-test` place the center, LFE, and rear samples in the wrong +semantic ports. The ALSA test sound pack has no spoken LFE sample and uses its +“Rear Center” recording for the LFE slot; the stream position is still LFE. diff --git a/system_files/usr/lib/systemd/system/armada-odin3-audio-setup.service b/system_files/usr/lib/systemd/system/armada-odin3-audio-setup.service new file mode 100644 index 00000000..2aa80462 --- /dev/null +++ b/system_files/usr/lib/systemd/system/armada-odin3-audio-setup.service @@ -0,0 +1,14 @@ +[Unit] +Description=Install the managed AYN Odin 3 audio profile +After=local-fs.target +Before=display-manager.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/libexec/armada/odin3-audio-setup +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=multi-user.target diff --git a/system_files/usr/lib/systemd/user/armada-odin3-audio-default.service b/system_files/usr/lib/systemd/user/armada-odin3-audio-default.service new file mode 100644 index 00000000..fbab8087 --- /dev/null +++ b/system_files/usr/lib/systemd/user/armada-odin3-audio-default.service @@ -0,0 +1,13 @@ +[Unit] +Description=Initialize the AYN Odin 3 audio sinks once +After=pipewire.service pipewire-pulse.service wireplumber.service +Wants=pipewire.service pipewire-pulse.service wireplumber.service + +[Service] +Type=oneshot +ExecStart=/usr/libexec/armada/odin3-audio-default +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=default.target diff --git a/system_files/usr/lib/systemd/user/armada-odin3-audio-hotplug.service b/system_files/usr/lib/systemd/user/armada-odin3-audio-hotplug.service new file mode 100644 index 00000000..ecab0d40 --- /dev/null +++ b/system_files/usr/lib/systemd/user/armada-odin3-audio-hotplug.service @@ -0,0 +1,15 @@ +[Unit] +Description=Route AYN Odin 3 external audio devices +After=pipewire.service pipewire-pulse.service wireplumber.service armada-odin3-audio-default.service +Wants=pipewire.service pipewire-pulse.service wireplumber.service armada-odin3-audio-default.service + +[Service] +Type=simple +ExecStart=/usr/bin/python3 /usr/libexec/armada/odin3-audio-hotplug +Restart=on-failure +RestartSec=1s +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=default.target diff --git a/system_files/usr/lib/systemd/user/armada-odin3-audio-steam-restore.service b/system_files/usr/lib/systemd/user/armada-odin3-audio-steam-restore.service new file mode 100644 index 00000000..715f6f2d --- /dev/null +++ b/system_files/usr/lib/systemd/user/armada-odin3-audio-steam-restore.service @@ -0,0 +1,13 @@ +[Unit] +Description=Synchronize the Odin 3 audio selection in Steam +After=pipewire.service pipewire-pulse.service wireplumber.service +Wants=pipewire.service pipewire-pulse.service wireplumber.service +StartLimitIntervalSec=30s +StartLimitBurst=5 + +[Service] +Type=oneshot +ExecStart=/usr/libexec/armada/odin3-audio-steam-restore +TimeoutStartSec=75s +Restart=on-failure +RestartSec=1s diff --git a/system_files/usr/libexec/armada/launch-steam b/system_files/usr/libexec/armada/launch-steam index f4aa665f..cd395036 100755 --- a/system_files/usr/libexec/armada/launch-steam +++ b/system_files/usr/libexec/armada/launch-steam @@ -82,6 +82,7 @@ for steamapps in "${steamapps_dirs[@]}"; do done touch "${steam_root}/.cef-enable-remote-debugging" +systemctl --user --no-block restart armada-odin3-audio-steam-restore.service || true cd "${steam_arm_dir}" exec "${steam_arm}" \ "${steam_args[@]}" \ diff --git a/system_files/usr/libexec/armada/odin3-audio-default b/system_files/usr/libexec/armada/odin3-audio-default new file mode 100755 index 00000000..c3272be9 --- /dev/null +++ b/system_files/usr/libexec/armada/odin3-audio-default @@ -0,0 +1,70 @@ +#!/bin/bash +set -euo pipefail + +readonly TRUSTED_PATH=/usr/bin:/usr/sbin:/bin:/sbin +readonly DEVICE_ENV=${ARMADA_AUDIO_DEVICE_ENV:-/usr/libexec/armada/device-env} +readonly USER_HOME=${ARMADA_AUDIO_USER_HOME:-${HOME:-/var/home/armada}} +readonly STATE_DIR=${ARMADA_AUDIO_STATE_DIR:-${USER_HOME}/.local/state/armada} +readonly PENDING_MARKER=${STATE_DIR}/odin3-audio-default.pending +readonly DONE_MARKER=${STATE_DIR}/odin3-audio-default.done +readonly PACTL=${ARMADA_AUDIO_PACTL:-/usr/bin/pactl} +readonly SLEEP=${ARMADA_AUDIO_SLEEP:-/usr/bin/sleep} +readonly WAIT_ATTEMPTS=${ARMADA_AUDIO_WAIT_ATTEMPTS:-40} +readonly WAIT_SECONDS=${ARMADA_AUDIO_WAIT_SECONDS:-0.25} + +die() { + printf 'Armada Odin 3 audio default: %s\n' "$*" >&2 + exit 1 +} + +is_odin3() { + local policy line ARMADA_DEVICE_ID= ARMADA_DEVICE_NAME= ARMADA_SOC_CLASS= + policy=$( + /usr/bin/env -i PATH="$TRUSTED_PATH" \ + /bin/bash --noprofile --norc -p "$DEVICE_ENV" + ) || die 'immutable device policy could not be read' + + while IFS= read -r line; do + case "$line" in + ARMADA_DEVICE_ID=*) ARMADA_DEVICE_ID=${line#*=} ;; + ARMADA_DEVICE_NAME=*) ARMADA_DEVICE_NAME=${line#*=} ;; + ARMADA_SOC_CLASS=*) ARMADA_SOC_CLASS=${line#*=} ;; + esac + done <<<"$policy" + + [[ "$ARMADA_DEVICE_ID" == ayn-odin-3 && + "$ARMADA_SOC_CLASS" == SM8750 ]] || return 1 + case "$ARMADA_DEVICE_NAME" in + 'AYN Odin 3'|'AYN\ Odin\ 3'|"'AYN Odin 3'") return 0 ;; + *) return 1 ;; + esac +} + +is_odin3 || exit 0 + +# A missing pending marker means the account already had audio/default state, +# or this one-time initialization has completed. Never infer permission to +# replace a user's later sink choice. +[[ -f "$PENDING_MARKER" && ! -L "$PENDING_MARKER" ]] || exit 0 +[[ ! -e "$DONE_MARKER" && ! -L "$DONE_MARKER" ]] || exit 0 + +[[ "$WAIT_ATTEMPTS" =~ ^[1-9][0-9]*$ ]] || die 'invalid wait attempt count' + +ready=0 +for (( attempt=1; attempt<=WAIT_ATTEMPTS; attempt++ )); do + sinks=$("$PACTL" list short sinks 2>/dev/null || true) + if grep -Fq $'\tStereo\t' <<<"$sinks" && + grep -Fq $'\tVirtual Surround Sound\t' <<<"$sinks"; then + ready=1 + break + fi + "$SLEEP" "$WAIT_SECONDS" +done +(( ready )) || die 'Stereo and Virtual Surround Sound sinks did not become ready' + +"$PACTL" set-sink-volume Stereo 100% +"$PACTL" set-sink-volume 'Virtual Surround Sound' 100% +"$PACTL" set-default-sink Stereo + +: >"$DONE_MARKER" +rm -- "$PENDING_MARKER" diff --git a/system_files/usr/libexec/armada/odin3-audio-hotplug b/system_files/usr/libexec/armada/odin3-audio-hotplug new file mode 100755 index 00000000..7e80c0e0 --- /dev/null +++ b/system_files/usr/libexec/armada/odin3-audio-hotplug @@ -0,0 +1,660 @@ +#!/usr/bin/python3 +"""Route Odin 3 external audio without passing it through speaker HRIR graphs.""" + +from __future__ import annotations + +import json +import os +import select +import stat +import subprocess +import sys +import tempfile +import time +import urllib.request +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +TRUSTED_PATH = "/usr/bin:/usr/sbin:/bin:/sbin" +INTERNAL_SINKS = ("Stereo", "Virtual Surround Sound") +ODIN_CARD = "alsa_card.platform-sound" +HEADPHONE_PROFILE = "HiFi (Headphones)" +SPEAKER_PROFILE = "HiFi (Speaker)" +HEADPHONE_SINK = "alsa_output.platform-sound.HiFi__Headphones__sink" +STEAM_RESTORE_UNIT = os.environ.get( + "ARMADA_AUDIO_STEAM_RESTORE_UNIT", + "armada-odin3-audio-steam-restore.service", +) +INTERNAL_PLAYBACK_NODES = { + "effect_output.odin3_stereo", + "effect_output.odin3_dvs", +} + + +def log(message: str) -> None: + print(f"Armada Odin 3 audio hotplug: {message}", flush=True) + + +def device_matches() -> bool: + device_env = os.environ.get( + "ARMADA_AUDIO_DEVICE_ENV", "/usr/libexec/armada/device-env" + ) + try: + result = subprocess.run( + [ + "/usr/bin/env", + "-i", + f"PATH={TRUSTED_PATH}", + "/bin/bash", + "--noprofile", + "--norc", + "-p", + device_env, + ], + check=True, + capture_output=True, + text=True, + timeout=5, + ) + except (OSError, subprocess.SubprocessError): + log("immutable device policy could not be read") + return False + + policy: dict[str, str] = {} + for line in result.stdout.splitlines(): + key, separator, value = line.partition("=") + if separator: + policy[key] = value.strip("'\"").replace("\\ ", " ") + return ( + policy.get("ARMADA_DEVICE_ID") == "ayn-odin-3" + and policy.get("ARMADA_DEVICE_NAME") == "AYN Odin 3" + and policy.get("ARMADA_SOC_CLASS") == "SM8750" + ) + + +def profile_name(value: Any) -> str: + if isinstance(value, str): + return value + if isinstance(value, dict): + return str(value.get("name", "")) + return "" + + +def profile_available(card: dict[str, Any], wanted: str) -> bool: + def is_available(value: Any) -> bool: + return value is True or ( + isinstance(value, str) + and value.strip().lower() in {"yes", "true", "available"} + ) + + profiles = card.get("profiles", []) + if isinstance(profiles, dict): + profile = profiles.get(wanted, {}) + return isinstance(profile, dict) and is_available( + profile.get("available") + ) + for profile in profiles if isinstance(profiles, list) else []: + if ( + isinstance(profile, dict) + and profile.get("name") == wanted + and is_available(profile.get("available")) + ): + return True + return False + + +def bluez_output(sink: dict[str, Any]) -> bool: + name = str(sink.get("name", "")) + properties = sink.get("properties", {}) + if not name.startswith("bluez_output.") or not isinstance(properties, dict): + return False + return ( + properties.get("device.api") == "bluez5" + or properties.get("device.bus") == "bluetooth" + or bool(properties.get("api.bluez5.address")) + ) + + +def external_sink(sink: dict[str, Any]) -> bool: + return str(sink.get("name", "")) == HEADPHONE_SINK or bluez_output(sink) + + +def migratable_sink_input(stream: dict[str, Any]) -> bool: + properties = stream.get("properties", {}) + if not isinstance(properties, dict): + return False + return ( + properties.get("media.class") != "Stream/Output/Audio/Internal" + and properties.get("node.name") not in INTERNAL_PLAYBACK_NODES + ) + + +def sink_serial(sink: dict[str, Any]) -> int: + properties = sink.get("properties", {}) + candidates = ( + properties.get("object.serial") if isinstance(properties, dict) else None, + sink.get("index"), + ) + for value in candidates: + try: + return int(value) + except (TypeError, ValueError): + continue + return -1 + + +@dataclass(frozen=True) +class Snapshot: + default: str + external: dict[str, dict[str, Any]] + sink_inputs: tuple[int, ...] + card: dict[str, Any] | None + + +class Pactl: + def __init__(self) -> None: + self.binary = os.environ.get("ARMADA_AUDIO_PACTL", "/usr/bin/pactl") + + def run( + self, *arguments: str, check: bool = True + ) -> subprocess.CompletedProcess[str]: + return subprocess.run( + [self.binary, *arguments], + check=check, + capture_output=True, + text=True, + timeout=5, + ) + + def json_list(self, kind: str) -> list[dict[str, Any]]: + result = self.run("--format=json", "list", kind) + value = json.loads(result.stdout) + if not isinstance(value, list): + raise ValueError(f"pactl {kind} result is not an array") + return [item for item in value if isinstance(item, dict)] + + def snapshot(self) -> Snapshot: + sinks = self.json_list("sinks") + cards = self.json_list("cards") + inputs = self.json_list("sink-inputs") + default = self.run("get-default-sink").stdout.strip() + card = next((item for item in cards if item.get("name") == ODIN_CARD), None) + external = { + str(item["name"]): item + for item in sinks + if item.get("name") and external_sink(item) + } + indexes: list[int] = [] + for item in inputs: + if not migratable_sink_input(item): + continue + try: + indexes.append(int(item["index"])) + except (KeyError, TypeError, ValueError): + continue + return Snapshot(default, external, tuple(indexes), card) + + +class ReturnChoice: + def __init__(self) -> None: + home = Path(os.environ.get("HOME", "/var/home/armada")) + self.directory = Path( + os.environ.get( + "ARMADA_AUDIO_STATE_DIR", home / ".local/state/armada" + ) + ) + self.path = self.directory / "odin3-audio-speaker-default" + self.wireplumber_default_nodes = Path( + os.environ.get( + "ARMADA_AUDIO_WIREPLUMBER_DEFAULT_NODES", + home / ".local/state/wireplumber/default-nodes", + ) + ) + + def load_valid(self) -> str | None: + try: + if self.path.is_symlink() or not self.path.is_file(): + return None + value = self.path.read_text(encoding="ascii").strip() + except (OSError, UnicodeError): + return None + return value if value in INTERNAL_SINKS else None + + def load(self) -> str: + return self.load_valid() or "Stereo" + + def seed_from_wireplumber(self) -> None: + if self.load_valid() is not None: + return + source = self.wireplumber_default_nodes + try: + if source.is_symlink() or not source.is_file(): + return + if source.stat().st_size > 4096: + return + lines = source.read_text(encoding="utf-8").splitlines() + except (OSError, UnicodeError): + return + prefix = "default.configured.audio.sink=" + candidates = [ + line[len(prefix) :] + for line in lines + if line.startswith(prefix) and line[len(prefix) :] in INTERNAL_SINKS + ] + if len(candidates) == 1: + self.save(candidates[0]) + log(f"preserved configured speaker preference {candidates[0]}") + + def save(self, value: str) -> None: + if value not in INTERNAL_SINKS: + return + self.directory.mkdir(mode=0o700, parents=True, exist_ok=True) + if self.directory.is_symlink() or not self.directory.is_dir(): + raise RuntimeError(f"unsafe audio state directory: {self.directory}") + if self.path.is_symlink(): + raise RuntimeError(f"refusing symlinked audio state: {self.path}") + if self.path.exists() and not self.path.is_file(): + raise RuntimeError(f"refusing special audio state: {self.path}") + + descriptor, temporary = tempfile.mkstemp( + prefix=".odin3-audio-speaker-default.", dir=self.directory + ) + try: + if hasattr(os, "fchmod"): + os.fchmod(descriptor, stat.S_IRUSR | stat.S_IWUSR) + else: + os.chmod(temporary, stat.S_IRUSR | stat.S_IWUSR) + with os.fdopen(descriptor, "w", encoding="ascii") as handle: + descriptor = -1 + handle.write(f"{value}\n") + handle.flush() + os.fsync(handle.fileno()) + os.replace(temporary, self.path) + if hasattr(os, "O_DIRECTORY"): + directory_fd = os.open( + self.directory, os.O_RDONLY | os.O_DIRECTORY + ) + try: + os.fsync(directory_fd) + finally: + os.close(directory_fd) + finally: + if descriptor >= 0: + os.close(descriptor) + try: + os.unlink(temporary) + except FileNotFoundError: + pass + + +class StereoVolumeMigration: + CHANNELS = ( + "front-left", + "front-right", + "front-center", + "lfe", + "rear-left", + "rear-right", + "side-left", + "side-right", + ) + + def __init__(self, state_directory: Path) -> None: + self.state_directory = state_directory + self.marker = ( + state_directory / "odin3-audio-stereo-8ch-volume-v1.done" + ) + self.complete = False + + def _marker_exists(self) -> bool: + if self.marker.is_symlink(): + raise RuntimeError( + f"refusing symlinked audio migration state: {self.marker}" + ) + if self.marker.exists() and not self.marker.is_file(): + raise RuntimeError( + f"refusing special audio migration state: {self.marker}" + ) + return self.marker.is_file() + + def _mark_complete(self) -> None: + self.state_directory.mkdir(mode=0o700, parents=True, exist_ok=True) + if ( + self.state_directory.is_symlink() + or not self.state_directory.is_dir() + ): + raise RuntimeError( + f"unsafe audio state directory: {self.state_directory}" + ) + if self._marker_exists(): + return + descriptor, temporary = tempfile.mkstemp( + prefix=".odin3-audio-stereo-volume.", + dir=self.state_directory, + ) + try: + if hasattr(os, "fchmod"): + os.fchmod(descriptor, stat.S_IRUSR | stat.S_IWUSR) + else: + os.chmod(temporary, stat.S_IRUSR | stat.S_IWUSR) + with os.fdopen(descriptor, "w", encoding="ascii") as handle: + descriptor = -1 + handle.write("1\n") + handle.flush() + os.fsync(handle.fileno()) + os.replace(temporary, self.marker) + finally: + if descriptor >= 0: + os.close(descriptor) + try: + os.unlink(temporary) + except FileNotFoundError: + pass + + @classmethod + def _values(cls, sink: dict[str, Any]) -> dict[str, int] | None: + volume = sink.get("volume") + if not isinstance(volume, dict) or set(volume) != set(cls.CHANNELS): + return None + values: dict[str, int] = {} + for channel in cls.CHANNELS: + item = volume.get(channel) + value = item.get("value") if isinstance(item, dict) else None + if not isinstance(value, int) or value < 0: + return None + values[channel] = value + return values + + def reconcile(self, pactl: Pactl) -> None: + if self.complete: + return + if self._marker_exists(): + self.complete = True + return + matches = [ + sink + for sink in pactl.json_list("sinks") + if sink.get("name") == "Stereo" + ] + if len(matches) != 1: + return + values = self._values(matches[0]) + if values is None: + # The graph may still be rebuilding. Do not permanently suppress + # migration until the exact eight-channel volume state is visible. + return + front = values["front-left"] + legacy_zero_channels = self.CHANNELS[2:] + if ( + front > 0 + and values["front-right"] == front + and all(values[channel] == 0 for channel in legacy_zero_channels) + ): + pactl.run("set-sink-volume", "Stereo", str(front)) + verified = [ + sink + for sink in pactl.json_list("sinks") + if sink.get("name") == "Stereo" + ] + if ( + len(verified) != 1 + or self._values(verified[0]) + != {channel: front for channel in self.CHANNELS} + ): + raise RuntimeError( + "Stereo 2-to-8-channel volume migration did not verify" + ) + log( + "preserved Stereo volume while initializing all eight channels" + ) + self._mark_complete() + self.complete = True + + +class HotplugPolicy: + def __init__(self, pactl: Pactl, choice: ReturnChoice) -> None: + self.pactl = pactl + self.choice = choice + self.known_external: set[str] | None = None + self.active_external: str | None = None + + def _set_card_profile(self, profile: str) -> bool: + try: + self.pactl.run("set-card-profile", ODIN_CARD, profile) + log(f"selected {profile} profile") + return True + except (OSError, subprocess.SubprocessError) as error: + log(f"could not select {profile} profile: {error}") + return False + + def _prepare_headphone_profile(self, snapshot: Snapshot) -> bool: + card = snapshot.card + if card is None: + return False + active = profile_name(card.get("active_profile")) + available = profile_available(card, HEADPHONE_PROFILE) + if available and active != HEADPHONE_PROFILE: + return self._set_card_profile(HEADPHONE_PROFILE) + if not available and active == HEADPHONE_PROFILE: + return self._set_card_profile(SPEAKER_PROFILE) + return False + + def _steam_is_reachable(self) -> bool: + try: + with urllib.request.urlopen( + "http://127.0.0.1:8080/json", timeout=0.3 + ) as response: + return response.status == 200 + except (OSError, ValueError): + return False + + def _notify_steam(self) -> None: + if not self._steam_is_reachable(): + return + try: + subprocess.run( + [ + "/usr/bin/systemctl", + "--user", + "reset-failed", + STEAM_RESTORE_UNIT, + ], + check=False, + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=2, + ) + subprocess.Popen( + [ + "/usr/bin/systemctl", + "--user", + "--no-block", + "restart", + STEAM_RESTORE_UNIT, + ], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + start_new_session=True, + ) + except (OSError, subprocess.SubprocessError) as error: + log(f"could not notify Steam audio policy: {error}") + + def _activate(self, snapshot: Snapshot, target: str) -> bool: + if not target: + return False + if snapshot.default != target: + try: + self.pactl.run("set-default-sink", target) + selected = self.pactl.run("get-default-sink").stdout.strip() + except (OSError, subprocess.SubprocessError) as error: + log(f"could not select {target}: {error}") + return False + if selected != target: + log( + f"default-sink verification deferred: wanted {target}, " + f"found {selected or ''}" + ) + return False + for index in snapshot.sink_inputs: + try: + self.pactl.run( + "move-sink-input", str(index), target, check=False + ) + except (OSError, subprocess.SubprocessError): + continue + log(f"selected {target}") + self._notify_steam() + return True + + @staticmethod + def _newest( + names: set[str], external: dict[str, dict[str, Any]] + ) -> str | None: + if not names: + return None + return max(names, key=lambda name: (sink_serial(external[name]), name)) + + def reconcile(self) -> None: + snapshot = self.pactl.snapshot() + if self._prepare_headphone_profile(snapshot): + # Card-profile changes rebuild the sink set. Read the settled graph + # instead of making a decision from the now-stale snapshot. + time.sleep(0.1) + snapshot = self.pactl.snapshot() + + current = set(snapshot.external) + + if self.known_external is None: + if ( + snapshot.default in INTERNAL_SINKS + and self.choice.load_valid() is None + ): + self.choice.save(snapshot.default) + if snapshot.default in INTERNAL_SINKS and current: + target = self._newest(current, snapshot.external) + if target and self._activate(snapshot, target): + self.active_external = target + self.known_external = current + else: + # Treat the sinks as new again on the next graph event if + # PipeWire was still settling and rejected the switch. + self.known_external = set() + elif snapshot.default in current: + self.active_external = snapshot.default + self.known_external = current + self._activate(snapshot, snapshot.default) + else: + self.known_external = current + return + + added = current - self.known_external + removed = self.known_external - current + + # Process loss of the output we selected before accepting Pulse's + # automatic fallback as a user choice. Otherwise a transient fallback + # to Stereo can overwrite a saved Virtual Surround preference. + if removed and self.active_external in removed: + target = self._newest(current, snapshot.external) + if target is None: + target = self.choice.load() + if self._activate(snapshot, target): + self.active_external = target if target in current else None + self.known_external = current + # On failure, retain the previous set so a later graph event + # retries this same removal instead of losing the restore. + return + + if added: + if ( + snapshot.default in INTERNAL_SINKS + and self.choice.load_valid() is None + ): + self.choice.save(snapshot.default) + target = self._newest(added, snapshot.external) + if target and self._activate(snapshot, target): + self.active_external = target + self.known_external = current + # On failure, retain the previous set so the connection remains + # new and can be retried after PipeWire finishes creating it. + return + + self.known_external = current + if snapshot.default in INTERNAL_SINKS: + # Respect an explicit return to the speakers while external devices + # remain connected. + self.choice.save(snapshot.default) + self.active_external = None + return + + if snapshot.default in current: + # Record an explicit user selection between connected externals. + self.active_external = snapshot.default + return + +def watch( + policy: HotplugPolicy, volume_migration: StereoVolumeMigration +) -> int: + volume_migration.reconcile(policy.pactl) + policy.reconcile() + if "--once" in sys.argv[1:]: + return 0 + + pactl_binary = os.environ.get("ARMADA_AUDIO_PACTL", "/usr/bin/pactl") + process = subprocess.Popen( + [pactl_binary, "subscribe"], + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + text=True, + bufsize=1, + ) + assert process.stdout is not None + relevant = ("on sink ", "on sink-input ", "on card ", "on server ") + debounce = float(os.environ.get("ARMADA_AUDIO_DEBOUNCE_SECONDS", "0.20")) + while True: + line = process.stdout.readline() + if line == "": + return process.wait() or 1 + if not any(token in line for token in relevant): + continue + + deadline = time.monotonic() + max(0.02, debounce) + while True: + remaining = deadline - time.monotonic() + if remaining <= 0: + break + ready, _, _ = select.select([process.stdout], [], [], remaining) + if not ready: + break + next_line = process.stdout.readline() + if next_line == "": + return process.wait() or 1 + if any(token in next_line for token in relevant): + deadline = time.monotonic() + max(0.02, debounce) + try: + volume_migration.reconcile(policy.pactl) + policy.reconcile() + except (OSError, ValueError, subprocess.SubprocessError) as error: + log(f"reconciliation deferred after transient error: {error}") + + +def main() -> int: + if not device_matches(): + return 0 + try: + choice = ReturnChoice() + choice.seed_from_wireplumber() + return watch( + HotplugPolicy(Pactl(), choice), + StereoVolumeMigration(choice.directory), + ) + except (OSError, ValueError, subprocess.SubprocessError, RuntimeError) as error: + log(str(error)) + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/system_files/usr/libexec/armada/odin3-audio-setup b/system_files/usr/libexec/armada/odin3-audio-setup new file mode 100755 index 00000000..f277c323 --- /dev/null +++ b/system_files/usr/libexec/armada/odin3-audio-setup @@ -0,0 +1,261 @@ +#!/bin/bash +set -euo pipefail + +readonly TRUSTED_PATH=/usr/bin:/usr/sbin:/bin:/sbin +readonly DEVICE_ENV=${ARMADA_AUDIO_DEVICE_ENV:-/usr/libexec/armada/device-env} +readonly TEMPLATE_ROOT=${ARMADA_AUDIO_TEMPLATE_ROOT:-/usr/share/armada/audio/odin3} +readonly USER_HOME=${ARMADA_AUDIO_USER_HOME:-/var/home/armada} +readonly AUDIO_USER=${ARMADA_AUDIO_USER:-armada} +readonly AUDIO_GROUP=${ARMADA_AUDIO_GROUP:-armada} +readonly STATE_DIR=${ARMADA_AUDIO_STATE_DIR:-${USER_HOME}/.local/state/armada} +readonly PACKAGED_HRIR=${TEMPLATE_ROOT}/hrir/vss_speaker.wav +readonly PACKAGED_HRIR_SHA256=f88ee26f5af80e73365ea1428cea970eeb383c8dfaa1fb77b0fc5a1efb48a7cb +readonly PENDING_MARKER=${STATE_DIR}/odin3-audio-default.pending +readonly DONE_MARKER=${STATE_DIR}/odin3-audio-default.done +readonly BACKUP_SUFFIX=.armada-odin3-audio.backup + +readonly -a MANAGED_LINKS=( + 'pipewire.conf.d/50-hrir-7_1.conf|.config/pipewire/pipewire.conf.d/50-hrir-7_1.conf' + 'pipewire.conf.d/55-odin3-stereo.conf|.config/pipewire/pipewire.conf.d/55-odin3-stereo.conf' + 'pipewire-pulse.conf.d/10-no-flat.conf|.config/pipewire/pipewire-pulse.conf.d/10-no-flat.conf' + 'pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf|.config/pipewire/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf' + 'wireplumber.conf.d/51-odin3-audio-names.conf|.config/wireplumber/wireplumber.conf.d/51-odin3-audio-names.conf' + 'wireplumber.conf.d/90-odin3-speaker-route-unity.conf|.config/wireplumber/wireplumber.conf.d/90-odin3-speaker-route-unity.conf' +) + +die() { + printf 'Armada Odin 3 audio setup: %s\n' "$*" >&2 + exit 1 +} + +is_odin3() { + local policy line ARMADA_DEVICE_ID= ARMADA_DEVICE_NAME= ARMADA_SOC_CLASS= + policy=$( + /usr/bin/env -i PATH="$TRUSTED_PATH" \ + /bin/bash --noprofile --norc -p "$DEVICE_ENV" + ) || die 'immutable device policy could not be read' + + while IFS= read -r line; do + case "$line" in + ARMADA_DEVICE_ID=*) ARMADA_DEVICE_ID=${line#*=} ;; + ARMADA_DEVICE_NAME=*) ARMADA_DEVICE_NAME=${line#*=} ;; + ARMADA_SOC_CLASS=*) ARMADA_SOC_CLASS=${line#*=} ;; + esac + done <<<"$policy" + + [[ "$ARMADA_DEVICE_ID" == ayn-odin-3 && + "$ARMADA_SOC_CLASS" == SM8750 ]] || return 1 + case "$ARMADA_DEVICE_NAME" in + 'AYN Odin 3'|'AYN\ Odin\ 3'|"'AYN Odin 3'") return 0 ;; + *) return 1 ;; + esac +} + +ensure_directory() { + local path=$1 relative component + + [[ -d "$USER_HOME" && ! -L "$USER_HOME" ]] || + die "user home is not a real directory: $USER_HOME" + + relative=${path#"${USER_HOME}/"} + [[ "$relative" != "$path" ]] || die "directory escapes user home: $path" + path=$USER_HOME + IFS=/ read -r -a components <<<"$relative" + for component in "${components[@]}"; do + [[ -n "$component" && "$component" != . && "$component" != .. ]] || + die "unsafe directory component in $relative" + path=${path}/${component} + if [[ -e "$path" || -L "$path" ]]; then + [[ -d "$path" && ! -L "$path" ]] || + die "refusing non-directory or symlinked directory: $path" + else + mkdir -- "$path" + chown -- "$AUDIO_USER:$AUDIO_GROUP" "$path" + fi + done +} + +validate_directory_chain() { + local path=$1 relative component + + [[ -d "$USER_HOME" && ! -L "$USER_HOME" ]] || + die "user home is not a real directory: $USER_HOME" + relative=${path#"${USER_HOME}/"} + [[ "$relative" != "$path" ]] || die "directory escapes user home: $path" + path=$USER_HOME + IFS=/ read -r -a components <<<"$relative" + for component in "${components[@]}"; do + [[ -n "$component" && "$component" != . && "$component" != .. ]] || + die "unsafe directory component in $relative" + path=${path}/${component} + if [[ -e "$path" || -L "$path" ]]; then + [[ -d "$path" && ! -L "$path" ]] || + die "refusing non-directory or symlinked directory: $path" + fi + done +} + +has_saved_audio_state() { + local path + for path in \ + "${USER_HOME}/.local/state/wireplumber" \ + "${USER_HOME}/.config/pulse"; do + if [[ -e "$path" || -L "$path" ]]; then + return 0 + fi + done + [[ -e "$DONE_MARKER" || -L "$DONE_MARKER" || + -e "$PENDING_MARKER" || -L "$PENDING_MARKER" ]] +} + +preflight_install() { + local entry source_rel target_rel source target backup packaged_hash _ + for entry in "${MANAGED_LINKS[@]}"; do + IFS='|' read -r source_rel target_rel <<<"$entry" + source=${TEMPLATE_ROOT}/${source_rel} + target=${USER_HOME}/${target_rel} + backup=${target}${BACKUP_SUFFIX} + + [[ -f "$source" && ! -L "$source" ]] || + die "missing immutable template: $source" + validate_directory_chain "${target%/*}" + + if [[ -L "$target" ]]; then + [[ "$target" -ef "$source" ]] || + die "refusing to replace foreign symlink: $target" + elif [[ -e "$target" ]]; then + [[ -f "$target" ]] || die "refusing to replace non-regular file: $target" + [[ ! -e "$backup" && ! -L "$backup" ]] || + die "one-time backup already exists: $backup" + fi + + if [[ -e "$backup" || -L "$backup" ]]; then + [[ -f "$backup" && ! -L "$backup" ]] || + die "invalid backup object: $backup" + fi + done + + [[ -f "$PACKAGED_HRIR" && ! -L "$PACKAGED_HRIR" ]] || + die "missing immutable HRIR: $PACKAGED_HRIR" + read -r packaged_hash _ < <( + /usr/bin/sha256sum -- "$PACKAGED_HRIR" + ) || die "could not checksum immutable HRIR: $PACKAGED_HRIR" + [[ "$packaged_hash" == "$PACKAGED_HRIR_SHA256" ]] || + die "immutable HRIR checksum mismatch: $PACKAGED_HRIR" +} + +install_links() { + local entry source_rel target_rel source target backup parent + for entry in "${MANAGED_LINKS[@]}"; do + IFS='|' read -r source_rel target_rel <<<"$entry" + source=${TEMPLATE_ROOT}/${source_rel} + target=${USER_HOME}/${target_rel} + backup=${target}${BACKUP_SUFFIX} + parent=${target%/*} + ensure_directory "$parent" + + if [[ -L "$target" ]]; then + continue + fi + if [[ -f "$target" ]]; then + mv -- "$target" "$backup" + fi + ln -s -- "$source" "$target" + done +} + +preflight_restore() { + local entry source_rel target_rel source target backup + for entry in "${MANAGED_LINKS[@]}"; do + IFS='|' read -r source_rel target_rel <<<"$entry" + source=${TEMPLATE_ROOT}/${source_rel} + target=${USER_HOME}/${target_rel} + backup=${target}${BACKUP_SUFFIX} + + validate_directory_chain "${target%/*}" + if [[ -L "$target" ]]; then + [[ "$target" -ef "$source" ]] || + die "refusing to remove foreign symlink: $target" + elif [[ -e "$target" ]]; then + die "refusing to overwrite current user object: $target" + fi + if [[ -e "$backup" || -L "$backup" ]]; then + [[ -f "$backup" && ! -L "$backup" ]] || + die "invalid backup object: $backup" + fi + done +} + +restore_links() { + local entry source_rel target_rel target backup + for entry in "${MANAGED_LINKS[@]}"; do + IFS='|' read -r source_rel target_rel <<<"$entry" + target=${USER_HOME}/${target_rel} + backup=${target}${BACKUP_SUFFIX} + [[ ! -L "$target" ]] || rm -- "$target" + if [[ -f "$backup" ]]; then + mv -- "$backup" "$target" + fi + done + if [[ -f "$PENDING_MARKER" && ! -L "$PENDING_MARKER" ]]; then + validate_directory_chain "$STATE_DIR" + rm -- "$PENDING_MARKER" + fi +} + +cleanup_non_odin() { + local entry source_rel target_rel source target backup + for entry in "${MANAGED_LINKS[@]}"; do + IFS='|' read -r source_rel target_rel <<<"$entry" + source=${TEMPLATE_ROOT}/${source_rel} + target=${USER_HOME}/${target_rel} + backup=${target}${BACKUP_SUFFIX} + + validate_directory_chain "${target%/*}" + if [[ -L "$target" ]] && [[ "$target" -ef "$source" ]]; then + rm -- "$target" + if [[ -f "$backup" && ! -L "$backup" ]]; then + mv -- "$backup" "$target" + fi + elif [[ ! -e "$target" && ! -L "$target" && + -f "$backup" && ! -L "$backup" ]]; then + mv -- "$backup" "$target" + fi + done + if [[ -f "$PENDING_MARKER" && ! -L "$PENDING_MARKER" ]]; then + validate_directory_chain "$STATE_DIR" + rm -- "$PENDING_MARKER" + fi +} + +if ! is_odin3; then + # Persistent home configuration can outlive an image or device-policy + # change. Remove only this package's exact managed links on a definitive + # non-Odin result so the device gate remains fail-closed across upgrades. + cleanup_non_odin + printf 'Armada Odin 3 audio setup: device gate did not match; managed profile removed\n' + exit 0 +fi + +case "${1:-}" in + '') + clean_state=1 + if has_saved_audio_state; then + clean_state=0 + fi + preflight_install + install_links + if (( clean_state )); then + ensure_directory "$STATE_DIR" + : >"$PENDING_MARKER" + chown -- "$AUDIO_USER:$AUDIO_GROUP" "$PENDING_MARKER" + fi + ;; + --restore) + preflight_restore + restore_links + ;; + *) + die "usage: ${0##*/} [--restore]" + ;; +esac diff --git a/system_files/usr/libexec/armada/odin3-audio-steam-restore b/system_files/usr/libexec/armada/odin3-audio-steam-restore new file mode 100755 index 00000000..f6d33ebd --- /dev/null +++ b/system_files/usr/libexec/armada/odin3-audio-steam-restore @@ -0,0 +1,328 @@ +#!/usr/bin/python3 +"""Synchronize Steam's output override after its SharedJSContext is ready.""" + +from __future__ import annotations + +import json +import os +import subprocess +import sys +import time +import urllib.error +import urllib.parse +import urllib.request +from dataclasses import dataclass + +import websocket + + +DEVICE_ENV = os.environ.get( + "ARMADA_AUDIO_DEVICE_ENV", "/usr/libexec/armada/device-env" +) +PACTL = os.environ.get("ARMADA_AUDIO_PACTL", "/usr/bin/pactl") +CEF_TARGETS = os.environ.get( + "ARMADA_AUDIO_STEAM_CEF_TARGETS", "http://127.0.0.1:8080/json" +) +WAIT_ATTEMPTS = 240 +WAIT_SECONDS = 0.25 +HTTP_TIMEOUT = 0.5 +WEBSOCKET_TIMEOUT = 6.0 +VIRTUAL_SINK = "Virtual Surround Sound" +STEREO_SINK = "Stereo" +TRUSTED_PATH = "/usr/bin:/usr/sbin:/bin:/sbin" + +# The only substituted value is a JSON object produced by json.dumps from +# bounded PipeWire names and integer object indexes. JSON is valid JavaScript +# syntax and ensure_ascii=True escapes quotes, controls, and line separators. +SELECT_EXPRESSION = r""" +(async () => { + const requested = __SELECTION__; + const audio = SteamClient.System.Audio; + const before = await audio.GetDevices(); + if (!before || !Array.isArray(before.vecDevices)) + throw new Error("GetDevices returned an invalid response"); + const outputs = before.vecDevices.filter( + (device) => device && Number.isInteger(device.id) && + device.currentConfig && + Number.isInteger(device.currentConfig.nChannels) && + device.currentConfig.nChannels > 0 + ); + let matches = outputs.filter((device) => device.sName === requested.name); + if (matches.length !== 1) { + const virtual = outputs.filter( + (device) => device.sName === "Virtual Surround Sound" + ); + const stereo = outputs.filter((device) => device.sName === "Stereo"); + if (virtual.length !== 1 || stereo.length !== 1 || + requested.virtualPulseIndex < 0 || requested.stereoPulseIndex < 0) + throw new Error("Steam/PipeWire device calibration was not unique"); + const virtualOffset = virtual[0].id - requested.virtualPulseIndex; + const stereoOffset = stereo[0].id - requested.stereoPulseIndex; + if (!Number.isInteger(virtualOffset) || virtualOffset !== stereoOffset) + throw new Error("Steam/PipeWire device-id calibration disagreed"); + const derivedId = requested.pulseIndex + virtualOffset; + matches = outputs.filter((device) => device.id === derivedId); + } + if (matches.length !== 1) + throw new Error("requested Steam output was not unique"); + const id = matches[0].id; + await audio.SetDefaultDeviceOverride(id, 1); + for (let attempt = 0; attempt < 12; attempt++) { + await new Promise((resolve) => setTimeout(resolve, 250)); + const after = await audio.GetDevices(); + if (after && after.overrideOutputDeviceId === id && + after.activeOutputDeviceId === id) + return { ok: true, id: id, name: requested.name }; + } + throw new Error("Steam output selection verification failed"); +})() +""".strip() + + +@dataclass(frozen=True) +class SinkSelection: + name: str + pulse_index: int + virtual_pulse_index: int + stereo_pulse_index: int + + +def diagnostic(message: str) -> None: + print(f"Armada Odin 3 Steam audio restore: {message}", file=sys.stderr) + + +def is_odin3() -> bool: + try: + result = subprocess.run( + [ + "/usr/bin/env", + "-i", + f"PATH={TRUSTED_PATH}", + "/bin/bash", + "--noprofile", + "--norc", + "-p", + DEVICE_ENV, + ], + check=True, + capture_output=True, + text=True, + timeout=2, + ) + except (OSError, subprocess.SubprocessError) as error: + diagnostic(f"immutable device policy could not be read: {error}") + return False + + policy: dict[str, str] = {} + for line in result.stdout.splitlines(): + key, separator, value = line.partition("=") + if separator and key in { + "ARMADA_DEVICE_ID", + "ARMADA_DEVICE_NAME", + "ARMADA_SOC_CLASS", + }: + policy[key] = value + + return ( + policy.get("ARMADA_DEVICE_ID") == "ayn-odin-3" + and policy.get("ARMADA_SOC_CLASS") == "SM8750" + and policy.get("ARMADA_DEVICE_NAME") + in {"AYN Odin 3", r"AYN\ Odin\ 3", "'AYN Odin 3'"} + ) + + +def run_pactl(*arguments: str) -> subprocess.CompletedProcess[str]: + return subprocess.run( + [PACTL, *arguments], + check=True, + capture_output=True, + text=True, + timeout=2, + ) + + +def default_sink_name() -> str | None: + try: + result = run_pactl("get-default-sink") + except (OSError, subprocess.SubprocessError) as error: + diagnostic(f"default sink query failed; leaving Steam unchanged: {error}") + return None + sink = result.stdout.rstrip("\r\n") + if not sink or "\n" in sink or "\r" in sink: + diagnostic("default sink query returned an invalid name; leaving Steam unchanged") + return None + return sink + + +def selected_sink() -> SinkSelection | None: + for attempt in range(1, 9): + before = default_sink_name() + if before is None: + return None + try: + result = run_pactl("--format=json", "list", "sinks") + sinks = json.loads(result.stdout) + except (OSError, ValueError, subprocess.SubprocessError) as error: + diagnostic(f"sink inventory failed; leaving Steam unchanged: {error}") + return None + after = default_sink_name() + if before != after: + if attempt < 8: + time.sleep(WAIT_SECONDS) + continue + diagnostic("default sink did not settle; leaving Steam unchanged") + return None + if not isinstance(sinks, list): + diagnostic("sink inventory was not an array; leaving Steam unchanged") + return None + by_name: dict[str, list[int]] = {} + for sink in sinks: + if not isinstance(sink, dict): + continue + name = sink.get("name") + index = sink.get("index") + if ( + isinstance(name, str) + and 0 < len(name) <= 512 + and not any(ord(character) < 32 for character in name) + and isinstance(index, int) + and 0 <= index < 2**31 + ): + by_name.setdefault(name, []).append(index) + matches = by_name.get(before, []) + if len(matches) != 1: + diagnostic( + f"default sink {before!r} was not unique; leaving Steam unchanged" + ) + return None + virtual = by_name.get(VIRTUAL_SINK, []) + stereo = by_name.get(STEREO_SINK, []) + return SinkSelection( + name=before, + pulse_index=matches[0], + virtual_pulse_index=virtual[0] if len(virtual) == 1 else -1, + stereo_pulse_index=stereo[0] if len(stereo) == 1 else -1, + ) + return None + + +def selection_expression(selection: SinkSelection) -> str: + payload = json.dumps( + { + "name": selection.name, + "pulseIndex": selection.pulse_index, + "virtualPulseIndex": selection.virtual_pulse_index, + "stereoPulseIndex": selection.stereo_pulse_index, + }, + ensure_ascii=True, + separators=(",", ":"), + ) + return SELECT_EXPRESSION.replace("__SELECTION__", payload) + + +def find_shared_context() -> str | None: + for attempt in range(1, WAIT_ATTEMPTS + 1): + try: + with urllib.request.urlopen(CEF_TARGETS, timeout=HTTP_TIMEOUT) as response: + targets = json.load(response) + matches = [] + for target in targets if isinstance(targets, list) else []: + if not isinstance(target, dict) or target.get("title") != "SharedJSContext": + continue + page = urllib.parse.urlsplit(str(target.get("url", ""))) + ws_url = str(target.get("webSocketDebuggerUrl", "")) + websocket_endpoint = urllib.parse.urlsplit(ws_url) + if ( + page.scheme == "https" + and page.hostname == "steamloopback.host" + and websocket_endpoint.scheme == "ws" + and websocket_endpoint.hostname == "127.0.0.1" + and websocket_endpoint.port == 8080 + and websocket_endpoint.path.startswith("/devtools/page/") + ): + matches.append(ws_url) + if len(matches) == 1: + return matches[0] + if len(matches) > 1: + diagnostic("multiple qualifying SharedJSContext targets; refusing") + return None + except (OSError, ValueError, urllib.error.URLError): + pass + if attempt < WAIT_ATTEMPTS: + time.sleep(WAIT_SECONDS) + diagnostic("timed out waiting for the qualifying Steam SharedJSContext") + return None + + +def update_steam_override( + websocket_url: str, selection: SinkSelection +) -> bool: + request = { + "id": 1, + "method": "Runtime.evaluate", + "params": { + "expression": selection_expression(selection), + "awaitPromise": True, + "returnByValue": True, + }, + } + try: + connection = websocket.create_connection( + websocket_url, + timeout=WEBSOCKET_TIMEOUT, + origin="http://127.0.0.1:8080", + ) + try: + connection.send(json.dumps(request, separators=(",", ":"))) + while True: + response = json.loads(connection.recv()) + if response.get("id") == 1: + break + finally: + connection.close() + except (OSError, ValueError, websocket.WebSocketException) as error: + diagnostic(f"CEF evaluation failed: {error}") + return False + + if "error" in response: + diagnostic(f"CEF Runtime.evaluate rejected the request: {response['error']!r}") + return False + evaluation = response.get("result", {}) + if evaluation.get("exceptionDetails"): + diagnostic(f"CEF expression failed: {evaluation['exceptionDetails']!r}") + return False + value = evaluation.get("result", {}).get("value") + if not isinstance(value, dict) or value.get("ok") is not True: + diagnostic(f"CEF expression returned an unexpected result: {value!r}") + return False + if ( + not isinstance(value.get("id"), int) + or value.get("name") != selection.name + ): + diagnostic(f"CEF selection result was not verified: {value!r}") + return False + diagnostic( + f"synchronized Steam output {selection.name!r} " + f"to device id {value['id']}" + ) + return True + + +def main() -> int: + if not is_odin3(): + diagnostic("device gate did not match; leaving Steam unchanged") + return 0 + # Steam and the user audio graph start concurrently. Waiting for the + # SharedJSContext first also gives WirePlumber time to restore the saved + # default instead of mistaking its brief priority fallback for user intent. + target = find_shared_context() + if target is None: + return 1 + selection = selected_sink() + if selection is None: + return 1 + return 0 if update_steam_override(target, selection) else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/system_files/usr/share/armada/audio/odin3/hrir/vss_speaker.wav b/system_files/usr/share/armada/audio/odin3/hrir/vss_speaker.wav new file mode 100644 index 0000000000000000000000000000000000000000..f17c012b64fc03994b09f2c7d7b1bc38848cfbc4 GIT binary patch literal 470458 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

wiF00MbxuBE;LS3 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�e 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

=~Iu> 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�ld9A5QoDU^m!F3rGqQ1v~h$&c3 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ⅇ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

NAUl+%C953%*-13rj@a#Pgi96!vtq5+MXFn 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 literal 0 HcmV?d00001 diff --git a/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/10-no-flat.conf b/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/10-no-flat.conf new file mode 100644 index 00000000..947b6917 --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/10-no-flat.conf @@ -0,0 +1 @@ +pulse.properties = { flat-volumes = false } diff --git a/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf b/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf new file mode 100644 index 00000000..cbac4d8c --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/pipewire-pulse.conf.d/20-odin3-stereo-downmix.conf @@ -0,0 +1,5 @@ +# Compatibility placeholder retained for upgrades from earlier Odin 3 audio +# builds. Stereo downmixing now happens entirely inside the Stereo filter graph +# so this fragment cannot alter Bluetooth, headphone, or other external audio. + +stream.properties = { } diff --git a/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf b/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf new file mode 100644 index 00000000..74c882ef --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf @@ -0,0 +1,167 @@ +# AYN Odin 3 virtual 7.1 speaker profile. +# +# Eight application channels are convolved into the two internal speakers. +# The selected base level is -10.60 dB, with the source profile's relative +# front/side/rear/center/LFE balance preserved. A final -1 dBFS sample clamp +# provides an emergency safety ceiling. + +context.modules = [ + { + name = libpipewire-module-filter-chain + flags = [ nofail ] + args = { + node.description = "Virtual Surround Sound" + node.nick = "Virtual Surround Sound" + device.description = "Virtual Surround Sound" + media.name = "Virtual Surround Sound" + + filter.graph = { + nodes = [ + { type = builtin label = copy name = copyFL } + { type = builtin label = copy name = copyFR } + { type = builtin label = copy name = copyFC } + { type = builtin label = copy name = copyRL } + { type = builtin label = copy name = copyRR } + { type = builtin label = copy name = copySL } + { type = builtin label = copy name = copySR } + { type = builtin label = copy name = copyLFE } + + { type = builtin label = convolver name = convFL_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 0 } } + { type = builtin label = convolver name = convFL_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 1 } } + { type = builtin label = convolver name = convSL_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 2 } } + { type = builtin label = convolver name = convSL_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 3 } } + { type = builtin label = convolver name = convRL_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 4 } } + { type = builtin label = convolver name = convRL_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 5 } } + { type = builtin label = convolver name = convFC_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 6 } } + { type = builtin label = convolver name = convFR_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 7 } } + { type = builtin label = convolver name = convFR_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 8 } } + { type = builtin label = convolver name = convSR_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 9 } } + { type = builtin label = convolver name = convSR_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 10 } } + { type = builtin label = convolver name = convRR_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 11 } } + { type = builtin label = convolver name = convRR_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 12 } } + { type = builtin label = convolver name = convFC_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 13 } } + + # The profile treats LFE as a centered source. + { type = builtin label = convolver name = convLFE_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 6 } } + { type = builtin label = convolver name = convLFE_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 13 } } + + { + type = builtin + label = mixer + name = mixL + control = { + "Gain 1" = 0.295248 + "Gain 2" = 0.265723 + "Gain 3" = 0.236199 + "Gain 4" = 0.354298 + "Gain 5" = 0.295248 + "Gain 6" = 0.265723 + "Gain 7" = 0.236199 + "Gain 8" = 0.295248 + } + } + { + type = builtin + label = mixer + name = mixR + control = { + "Gain 1" = 0.295248 + "Gain 2" = 0.265723 + "Gain 3" = 0.236199 + "Gain 4" = 0.354298 + "Gain 5" = 0.295248 + "Gain 6" = 0.265723 + "Gain 7" = 0.236199 + "Gain 8" = 0.295248 + } + } + + { type = builtin label = clamp name = clampL control = { "Min" = -0.8912509381 "Max" = 0.8912509381 } } + { type = builtin label = clamp name = clampR control = { "Min" = -0.8912509381 "Max" = 0.8912509381 } } + ] + + links = [ + { output = "copyFL:Out" input = "convFL_L:In" } + { output = "copyFL:Out" input = "convFL_R:In" } + { output = "copySL:Out" input = "convSL_L:In" } + { output = "copySL:Out" input = "convSL_R:In" } + { output = "copyRL:Out" input = "convRL_L:In" } + { output = "copyRL:Out" input = "convRL_R:In" } + { output = "copyFC:Out" input = "convFC_L:In" } + { output = "copyFC:Out" input = "convFC_R:In" } + { output = "copyFR:Out" input = "convFR_L:In" } + { output = "copyFR:Out" input = "convFR_R:In" } + { output = "copySR:Out" input = "convSR_L:In" } + { output = "copySR:Out" input = "convSR_R:In" } + { output = "copyRR:Out" input = "convRR_L:In" } + { output = "copyRR:Out" input = "convRR_R:In" } + { output = "copyLFE:Out" input = "convLFE_L:In" } + { output = "copyLFE:Out" input = "convLFE_R:In" } + + { output = "convFL_L:Out" input = "mixL:In 1" } + { output = "convFL_R:Out" input = "mixR:In 1" } + { output = "convSL_L:Out" input = "mixL:In 2" } + { output = "convSL_R:Out" input = "mixR:In 2" } + { output = "convRL_L:Out" input = "mixL:In 3" } + { output = "convRL_R:Out" input = "mixR:In 3" } + { output = "convFC_L:Out" input = "mixL:In 4" } + { output = "convFC_R:Out" input = "mixR:In 4" } + { output = "convFR_L:Out" input = "mixL:In 5" } + { output = "convFR_R:Out" input = "mixR:In 5" } + { output = "convSR_L:Out" input = "mixL:In 6" } + { output = "convSR_R:Out" input = "mixR:In 6" } + { output = "convRR_L:Out" input = "mixL:In 7" } + { output = "convRR_R:Out" input = "mixR:In 7" } + { output = "convLFE_L:Out" input = "mixL:In 8" } + { output = "convLFE_R:Out" input = "mixR:In 8" } + + { output = "mixL:Out" input = "clampL:In" } + { output = "mixR:Out" input = "clampR:In" } + ] + + inputs = [ + "copyFL:In" + "copyFR:In" + "copyFC:In" + "copyLFE:In" + "copyRL:In" + "copyRR:In" + "copySL:In" + "copySR:In" + ] + outputs = [ "clampL:Out" "clampR:Out" ] + } + + capture.props = { + node.name = "Virtual Surround Sound" + node.description = "Virtual Surround Sound" + node.nick = "Virtual Surround Sound" + device.description = "Virtual Surround Sound" + media.name = "Virtual Surround Sound" + media.class = Audio/Sink + node.virtual = true + priority.session = 2400 + audio.rate = 48000 + audio.channels = 8 + audio.position = [ FL FR FC LFE RL RR SL SR ] + stream.dont-remix = true + } + + playback.props = { + node.name = "effect_output.odin3_dvs" + media.class = "Stream/Output/Audio/Internal" + target.object = "alsa_output.platform-sound.HiFi__Speaker__sink" + node.autoconnect = true + node.passive = true + node.dont-fallback = true + node.linger = true + node.dont-move = true + state.restore-props = false + audio.rate = 48000 + audio.channels = 2 + audio.position = [ FL FR ] + stream.dont-remix = true + } + } + } +] diff --git a/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf b/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf new file mode 100644 index 00000000..86a03c81 --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf @@ -0,0 +1,154 @@ +# AYN Odin 3 two-channel speaker profile. +# +# This graph accepts 7.1 content and performs its own standard stereo downmix. +# Only the resulting left and right signals enter the front-left and +# front-right impulse-response paths. The downmix therefore cannot affect +# Bluetooth, headphone, or other external audio sinks. + +context.modules = [ + { + name = libpipewire-module-filter-chain + flags = [ nofail ] + args = { + node.description = "Stereo" + node.nick = "Stereo" + device.description = "Stereo" + media.name = "Stereo" + + filter.graph = { + nodes = [ + { type = builtin label = copy name = copyFL } + { type = builtin label = copy name = copyFR } + { type = builtin label = copy name = copyFC } + { type = builtin label = copy name = copyLFE } + { type = builtin label = copy name = copyRL } + { type = builtin label = copy name = copyRR } + { type = builtin label = copy name = copySL } + { type = builtin label = copy name = copySR } + + { + type = builtin + label = mixer + name = downmixL + control = { + "Gain 1" = 1.0 + "Gain 2" = 0.707106781 + "Gain 3" = 0.353553391 + "Gain 4" = 0.707106781 + "Gain 5" = 0.707106781 + } + } + { + type = builtin + label = mixer + name = downmixR + control = { + "Gain 1" = 1.0 + "Gain 2" = 0.707106781 + "Gain 3" = 0.353553391 + "Gain 4" = 0.707106781 + "Gain 5" = 0.707106781 + } + } + + { type = builtin label = convolver name = convFL_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 0 } } + { type = builtin label = convolver name = convFL_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 1 } } + { type = builtin label = convolver name = convFR_L config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 8 } } + { type = builtin label = convolver name = convFR_R config = { blocksize = 128 tailsize = 1024 gain = 1.0 resample_quality = 15 filename = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" channel = 7 } } + + { + type = builtin + label = mixer + name = mixL + control = { + "Gain 1" = 0.295248 + "Gain 2" = 0.295248 + } + } + { + type = builtin + label = mixer + name = mixR + control = { + "Gain 1" = 0.295248 + "Gain 2" = 0.295248 + } + } + + { type = builtin label = clamp name = clampL control = { "Min" = -0.8912509381 "Max" = 0.8912509381 } } + { type = builtin label = clamp name = clampR control = { "Min" = -0.8912509381 "Max" = 0.8912509381 } } + ] + + links = [ + { output = "copyFL:Out" input = "downmixL:In 1" } + { output = "copyFC:Out" input = "downmixL:In 2" } + { output = "copyLFE:Out" input = "downmixL:In 3" } + { output = "copyRL:Out" input = "downmixL:In 4" } + { output = "copySL:Out" input = "downmixL:In 5" } + + { output = "copyFR:Out" input = "downmixR:In 1" } + { output = "copyFC:Out" input = "downmixR:In 2" } + { output = "copyLFE:Out" input = "downmixR:In 3" } + { output = "copyRR:Out" input = "downmixR:In 4" } + { output = "copySR:Out" input = "downmixR:In 5" } + + { output = "downmixL:Out" input = "convFL_L:In" } + { output = "downmixL:Out" input = "convFL_R:In" } + { output = "downmixR:Out" input = "convFR_L:In" } + { output = "downmixR:Out" input = "convFR_R:In" } + + { output = "convFL_L:Out" input = "mixL:In 1" } + { output = "convFR_L:Out" input = "mixL:In 2" } + { output = "convFL_R:Out" input = "mixR:In 1" } + { output = "convFR_R:Out" input = "mixR:In 2" } + + { output = "mixL:Out" input = "clampL:In" } + { output = "mixR:Out" input = "clampR:In" } + ] + + inputs = [ + "copyFL:In" + "copyFR:In" + "copyFC:In" + "copyLFE:In" + "copyRL:In" + "copyRR:In" + "copySL:In" + "copySR:In" + ] + outputs = [ "clampL:Out" "clampR:Out" ] + } + + capture.props = { + node.name = "Stereo" + node.description = "Stereo" + node.nick = "Stereo" + device.description = "Stereo" + media.name = "Stereo" + media.class = Audio/Sink + node.virtual = true + priority.session = 2500 + audio.rate = 48000 + audio.channels = 8 + audio.position = [ FL FR FC LFE RL RR SL SR ] + stream.dont-remix = false + } + + playback.props = { + node.name = "effect_output.odin3_stereo" + media.class = "Stream/Output/Audio/Internal" + target.object = "alsa_output.platform-sound.HiFi__Speaker__sink" + node.autoconnect = true + node.passive = true + node.dont-fallback = true + node.linger = true + node.dont-move = true + state.restore-props = false + audio.rate = 48000 + audio.channels = 2 + audio.position = [ FL FR ] + stream.dont-remix = true + } + } + } +] diff --git a/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/51-odin3-audio-names.conf b/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/51-odin3-audio-names.conf new file mode 100644 index 00000000..fec1d017 --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/51-odin3-audio-names.conf @@ -0,0 +1,26 @@ +# Keep the hardware speaker sink as an internal unity-gain transport. +# +# PipeWire Pulse exports only public Audio/Sink nodes, so Steam sees Stereo and +# Virtual Surround Sound while both playback legs can still target this node. + +monitor.alsa.rules = [ + { + matches = [ + { + node.name = "alsa_output.platform-sound.HiFi__Speaker__sink" + } + ] + actions = { + update-props = { + media.class = "Audio/Sink/Internal" + priority.session = 0 + state.restore-props = false + channelmix.lock-volumes = true + node.description = "Built-In Audio" + node.nick = "Built-In Audio" + device.description = "Built-In Audio" + media.name = "Built-In Audio" + } + } + } +] diff --git a/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/90-odin3-speaker-route-unity.conf b/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/90-odin3-speaker-route-unity.conf new file mode 100644 index 00000000..4b6c1701 --- /dev/null +++ b/system_files/usr/share/armada/audio/odin3/wireplumber.conf.d/90-odin3-speaker-route-unity.conf @@ -0,0 +1,13 @@ +wireplumber.components = [ + { + name = odin3-speaker-route-unity.lua + type = script/lua + provides = hooks.odin3-speaker-route-unity + } +] + +wireplumber.profiles = { + main = { + hooks.odin3-speaker-route-unity = required + } +} diff --git a/system_files/usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua b/system_files/usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua new file mode 100644 index 00000000..01b4cde7 --- /dev/null +++ b/system_files/usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua @@ -0,0 +1,86 @@ +-- Keep the hidden physical speaker route at unity. User-facing volume belongs +-- to the Stereo and Virtual Surround Sound sinks that feed this route. + +local cutils = require ("common-utils") +local log = Log.open_topic ("odin3-speaker-route-unity") + +local target_device = "alsa_card.platform-sound" +local target_route = "[Out] Speaker" +local epsilon = 0.000001 + +local function enforce (device) + if not device or device.properties["device.name"] ~= target_device then + return + end + + for param in device:iterate_params ("Route") do + local route = cutils.parseParam (param, "Route") + if route and route.name == target_route and route.direction == "Output" then + local props = route.props and route.props.properties + local current = props and props.channelVolumes + local needs_fix = (not props) or (props.mute ~= false) + + if type (current) ~= "table" or #current == 0 then + needs_fix = true + else + for _, volume in ipairs (current) do + if type (volume) ~= "number" + or math.abs (volume - 1.0) > epsilon then + needs_fix = true + break + end + end + end + + if not needs_fix then + return + end + + local unity = { "Spa:Float" } + local channels = + (type (current) == "table" and #current > 0) and #current or 2 + for _ = 1, channels do + unity[#unity + 1] = 1.0 + end + + local route_props = Pod.Object { + "Spa:Pod:Object:Param:Props", + "Props", + mute = false, + channelVolumes = Pod.Array (unity), + } + local fixed_route = Pod.Object { + "Spa:Pod:Object:Param:Route", + "Route", + index = route.index, + device = route.device, + props = route_props, + save = true, + } + + log:info (device, "restoring [Out] Speaker route to unity and unmuted") + device:set_param ("Route", fixed_route) + return + end + end +end + +SimpleEventHook { + name = "odin3-audio/keep-speaker-route-unity", + after = { + "device/select-route", + "device/store-or-restore-routes", + }, + interests = { + EventInterest { + Constraint { "event.type", "=", "device-added" }, + }, + EventInterest { + Constraint { "event.type", "=", "device-params-changed" }, + Constraint { "event.subject.param-id", "=", "Route" }, + }, + }, + execute = function (event) + enforce (event:get_subject ()) + end, +}:register () diff --git a/tests/odin3-audio-device-test.sh b/tests/odin3-audio-device-test.sh new file mode 100755 index 00000000..707a577d --- /dev/null +++ b/tests/odin3-audio-device-test.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +# Opt-in read-only checks against a running Odin 3 audio session. +set -euo pipefail + +if [[ "${ODIN3_AUDIO_DEVICE_TEST:-0}" != 1 ]]; then + printf '%s\n' 'SKIP: set ODIN3_AUDIO_DEVICE_TEST=1 on an Odin 3' + exit 0 +fi + +readonly model_path="${ODIN3_AUDIO_MODEL_PATH:-/sys/firmware/devicetree/base/model}" +model="$(tr -d '\0' <"$model_path")" +if [[ "$model" != "AYN Odin 3" ]]; then + printf 'ERROR: expected AYN Odin 3, found %q\n' "$model" >&2 + exit 1 +fi + +for command in pactl wpctl; do + command -v "$command" >/dev/null || + { printf 'ERROR: missing %s\n' "$command" >&2; exit 1; } +done + +mapfile -t public_sinks < <( + pactl list short sinks | + while IFS=$'\t' read -r _ sink_name _; do + printf '%s\n' "$sink_name" + done +) + +stereo_count=0 +virtual_count=0 +for sink_name in "${public_sinks[@]}"; do + case "$sink_name" in + Stereo) (( stereo_count += 1 )) ;; + 'Virtual Surround Sound') (( virtual_count += 1 )) ;; + alsa_output.platform-sound.HiFi__Speaker__sink|effect_input.odin3-stereo|effect_input.odin3_dvs) + printf 'ERROR: obsolete or physical Odin sink is public: %s\n' \ + "$sink_name" >&2 + exit 1 + ;; + esac +done + +if (( stereo_count != 1 || virtual_count != 1 )); then + printf 'ERROR: expected one Stereo and one Virtual Surround Sound sink; found %s and %s\n' \ + "$stereo_count" "$virtual_count" >&2 + printf ' public sink: %s\n' "${public_sinks[@]}" >&2 + exit 1 +fi + +default_sink="$(pactl get-default-sink)" +case "$default_sink" in + Stereo | 'Virtual Surround Sound') ;; + *) + printf 'ERROR: unexpected default sink: %s\n' "$default_sink" >&2 + exit 1 + ;; +esac + +if [[ -n "${ODIN3_AUDIO_EXPECT_DEFAULT:-}" && + "$default_sink" != "$ODIN3_AUDIO_EXPECT_DEFAULT" ]]; then + printf 'ERROR: expected persisted default %q, found %q\n' \ + "$ODIN3_AUDIO_EXPECT_DEFAULT" "$default_sink" >&2 + exit 1 +fi + +virtual_volume="$( + pactl get-sink-volume 'Virtual Surround Sound' | + grep -oE '[0-9]+%' | sort -u || true +)" +if [[ "$virtual_volume" == *$'\n'* || ! "$virtual_volume" =~ ^[0-9]+%$ ]]; then + printf 'ERROR: Virtual Surround Sound has unequal or unreadable channel volumes: %q\n' \ + "$virtual_volume" >&2 + exit 1 +fi +virtual_volume_percent=${virtual_volume%\%} +virtual_mute="$(pactl get-sink-mute 'Virtual Surround Sound')" +virtual_mute=${virtual_mute##*: } +case "$virtual_mute" in + yes | no) ;; + *) + printf 'ERROR: unreadable Virtual Surround Sound mute state: %q\n' \ + "$virtual_mute" >&2 + exit 1 + ;; +esac + +if [[ -n "${ODIN3_AUDIO_EXPECT_VIRTUAL_VOLUME_PERCENT:-}" && + "$virtual_volume_percent" != "$ODIN3_AUDIO_EXPECT_VIRTUAL_VOLUME_PERCENT" ]]; then + printf 'ERROR: expected persisted Virtual Surround Sound volume %s%%, found %s%%\n' \ + "$ODIN3_AUDIO_EXPECT_VIRTUAL_VOLUME_PERCENT" "$virtual_volume_percent" >&2 + exit 1 +fi +if [[ -n "${ODIN3_AUDIO_EXPECT_VIRTUAL_MUTE:-}" && + "$virtual_mute" != "$ODIN3_AUDIO_EXPECT_VIRTUAL_MUTE" ]]; then + printf 'ERROR: expected persisted Virtual Surround Sound mute %q, found %q\n' \ + "$ODIN3_AUDIO_EXPECT_VIRTUAL_MUTE" "$virtual_mute" >&2 + exit 1 +fi + +wpctl_status="$(wpctl status --name)" +transport_name='alsa_output.platform-sound.HiFi__Speaker__sink' +transport_id="$( + sed -n "\|${transport_name}|s/^[^0-9]*\([0-9][0-9]*\)\..*/\1/p" \ + <<<"$wpctl_status" | head -n 1 +)" +if [[ -z "$transport_id" ]]; then + printf 'ERROR: hidden speaker transport %s is absent\n' "$transport_name" >&2 + exit 1 +fi +transport_volume="$(wpctl get-volume "$transport_id")" +if grep -Fq '[MUTED]' <<<"$transport_volume"; then + printf 'ERROR: hidden speaker transport is muted: %s\n' "$transport_volume" >&2 + exit 1 +fi +transport_volume=${transport_volume#Volume: } +if ! awk -v volume="$transport_volume" \ + 'BEGIN { exit !(volume >= 0.999999 && volume <= 1.000001) }'; then + printf 'ERROR: hidden speaker transport must remain at 100%%, found %s\n' \ + "$transport_volume" >&2 + exit 1 +fi + +printf 'Current default: %s\n' "$default_sink" +printf 'Virtual Surround Sound: %s%%, mute=%s\n' \ + "$virtual_volume_percent" "$virtual_mute" +printf '%s\n' 'To verify persistence, reboot without changing audio state and run:' +printf 'ODIN3_AUDIO_DEVICE_TEST=1 ODIN3_AUDIO_EXPECT_DEFAULT=%q ' "$default_sink" +printf 'ODIN3_AUDIO_EXPECT_VIRTUAL_VOLUME_PERCENT=%q ' "$virtual_volume_percent" +printf 'ODIN3_AUDIO_EXPECT_VIRTUAL_MUTE=%q %q\n' \ + "$virtual_mute" "$0" +printf '%s\n' 'Odin 3 live audio checks passed' diff --git a/tests/odin3-audio-hotplug-test.py b/tests/odin3-audio-hotplug-test.py new file mode 100755 index 00000000..efb6f56b --- /dev/null +++ b/tests/odin3-audio-hotplug-test.py @@ -0,0 +1,550 @@ +#!/usr/bin/env python3 +"""Isolated policy tests for the Odin 3 external-audio router.""" + +from __future__ import annotations + +import importlib.machinery +import importlib.util +import os +import subprocess +import sys +import tempfile +import unittest +from pathlib import Path +from unittest import mock + + +ROOT = Path(__file__).resolve().parents[1] +HELPER = ROOT / "system_files/usr/libexec/armada/odin3-audio-hotplug" +UNIT = ( + ROOT + / "system_files/usr/lib/systemd/user/armada-odin3-audio-hotplug.service" +) +loader = importlib.machinery.SourceFileLoader("odin3_audio_hotplug", str(HELPER)) +spec = importlib.util.spec_from_loader(loader.name, loader) +assert spec is not None +hotplug = importlib.util.module_from_spec(spec) +sys.modules[loader.name] = hotplug +loader.exec_module(hotplug) + + +def sink(name: str, serial: int, **properties: str) -> dict: + values = {"object.serial": str(serial), **properties} + return {"name": name, "index": serial, "properties": values} + + +BT_ONE = sink( + "bluez_output.AA_BB_CC_DD_EE_FF.1", + 100, + **{"device.api": "bluez5"}, +) +BT_TWO = sink( + "bluez_output.11_22_33_44_55_66.1", + 200, + **{"device.bus": "bluetooth"}, +) +HEADPHONES = sink(hotplug.HEADPHONE_SINK, 150) + + +class FakePactl: + def __init__(self, snapshots: list) -> None: + self.snapshots = snapshots + self.commands: list[tuple[str, ...]] = [] + self.default = "" + + def snapshot(self): + current = self.snapshots.pop(0) + self.default = current.default + return current + + def run(self, *arguments: str, check: bool = True): + self.commands.append(arguments) + if arguments[:1] == ("set-default-sink",): + self.default = arguments[1] + output = f"{self.default}\n" if arguments == ("get-default-sink",) else "" + return mock.Mock(stdout=output) + + +class FailFirstDefaultPactl(FakePactl): + def __init__(self, snapshots: list) -> None: + super().__init__(snapshots) + self.failed = False + + def run(self, *arguments: str, check: bool = True): + if arguments and arguments[0] == "set-default-sink" and not self.failed: + self.commands.append(arguments) + self.failed = True + raise subprocess.CalledProcessError(1, arguments) + return super().run(*arguments, check=check) + + +class FakeChoice: + def __init__(self, value: str | None = None) -> None: + self.value = value + self.saved: list[str] = [] + + def load_valid(self) -> str | None: + return self.value if self.value in hotplug.INTERNAL_SINKS else None + + def load(self) -> str: + return self.load_valid() or "Stereo" + + def save(self, value: str) -> None: + self.value = value + self.saved.append(value) + + +def snapshot(default: str, *externals: dict, inputs=(7, 8), card=None): + return hotplug.Snapshot( + default=default, + external={item["name"]: item for item in externals}, + sink_inputs=tuple(inputs), + card=card, + ) + + +def stereo_sink(front: int, other: int) -> dict: + channels = hotplug.StereoVolumeMigration.CHANNELS + values = { + channel: {"value": front if index < 2 else other} + for index, channel in enumerate(channels) + } + return {"name": "Stereo", "volume": values} + + +class MigrationPactl: + def __init__(self, sink: dict) -> None: + self.sink = sink + self.commands: list[tuple[str, ...]] = [] + + def json_list(self, kind: str): + self.assert_kind = kind + return [self.sink] + + def run(self, *arguments: str, check: bool = True): + self.commands.append(arguments) + if arguments[:2] == ("set-sink-volume", "Stereo"): + value = int(arguments[2]) + self.sink = stereo_sink(value, value) + return mock.Mock(stdout="") + + +class ClassificationTests(unittest.TestCase): + def test_only_exact_headphone_or_positive_bluez_output_is_external(self): + self.assertTrue(hotplug.external_sink(HEADPHONES)) + self.assertTrue(hotplug.external_sink(BT_ONE)) + self.assertTrue(hotplug.external_sink(BT_TWO)) + self.assertFalse( + hotplug.external_sink( + sink("bluez_output.fake.1", 1, **{"device.api": "alsa"}) + ) + ) + self.assertFalse( + hotplug.external_sink( + sink("alsa_output.usb_headset", 1, **{"device.api": "bluez5"}) + ) + ) + self.assertFalse(hotplug.external_sink(sink("Stereo", 1))) + + def test_headphone_profile_availability_shapes(self): + self.assertTrue( + hotplug.profile_available( + { + "profiles": [ + {"name": hotplug.HEADPHONE_PROFILE, "available": "yes"} + ] + }, + hotplug.HEADPHONE_PROFILE, + ) + ) + self.assertFalse( + hotplug.profile_available( + { + "profiles": { + hotplug.HEADPHONE_PROFILE: {"available": "no"} + } + }, + hotplug.HEADPHONE_PROFILE, + ) + ) + self.assertFalse( + hotplug.profile_available( + {"profiles": {hotplug.HEADPHONE_PROFILE: {}}}, + hotplug.HEADPHONE_PROFILE, + ) + ) + + def test_internal_hrir_playback_legs_are_never_migrated(self): + self.assertFalse( + hotplug.migratable_sink_input( + { + "properties": { + "media.class": "Stream/Output/Audio/Internal", + "node.name": "effect_output.odin3_dvs", + } + } + ) + ) + self.assertFalse( + hotplug.migratable_sink_input( + { + "properties": { + "media.class": "Stream/Output/Audio", + "node.name": "effect_output.odin3_stereo", + } + } + ) + ) + self.assertTrue( + hotplug.migratable_sink_input( + { + "properties": { + "media.class": "Stream/Output/Audio", + "application.name": "Game", + } + } + ) + ) + + +class RoutingTests(unittest.TestCase): + def policy(self, pactl, choice): + policy = hotplug.HotplugPolicy(pactl, choice) + policy._notify_steam = mock.Mock() + return policy + + def test_startup_external_switches_and_remembers_virtual(self): + pactl = FakePactl([snapshot("Virtual Surround Sound", BT_ONE)]) + choice = FakeChoice() + policy = self.policy(pactl, choice) + policy.reconcile() + self.assertEqual(choice.saved, ["Virtual Surround Sound"]) + self.assertIn(("set-default-sink", BT_ONE["name"]), pactl.commands) + self.assertIn(("move-sink-input", "7", BT_ONE["name"]), pactl.commands) + policy._notify_steam.assert_called_once() + + def test_startup_already_on_external_still_moves_and_notifies(self): + pactl = FakePactl([snapshot(BT_ONE["name"], BT_ONE)]) + policy = self.policy(pactl, FakeChoice("Virtual Surround Sound")) + policy.reconcile() + self.assertNotIn( + ("set-default-sink", BT_ONE["name"]), pactl.commands + ) + self.assertIn(("move-sink-input", "7", BT_ONE["name"]), pactl.commands) + policy._notify_steam.assert_called_once() + + def test_newest_new_connection_wins(self): + pactl = FakePactl( + [ + snapshot("Stereo"), + snapshot("Stereo", BT_ONE, HEADPHONES, BT_TWO), + ] + ) + policy = self.policy(pactl, FakeChoice()) + policy.reconcile() + policy.reconcile() + self.assertIn(("set-default-sink", BT_TWO["name"]), pactl.commands) + + def test_settling_graph_retries_new_connection(self): + pactl = FailFirstDefaultPactl( + [ + snapshot("Stereo"), + snapshot("Stereo", BT_ONE), + snapshot("Stereo", BT_ONE), + ] + ) + policy = self.policy(pactl, FakeChoice()) + policy.reconcile() + policy.reconcile() + policy.reconcile() + attempts = [ + command + for command in pactl.commands + if command == ("set-default-sink", BT_ONE["name"]) + ] + self.assertEqual(len(attempts), 2) + self.assertEqual(policy.active_external, BT_ONE["name"]) + + def test_restart_enumeration_does_not_overwrite_saved_virtual(self): + pactl = FakePactl( + [ + snapshot("Stereo"), + snapshot("Stereo", BT_ONE), + ] + ) + choice = FakeChoice("Virtual Surround Sound") + policy = self.policy(pactl, choice) + policy.reconcile() + policy.reconcile() + self.assertEqual(choice.value, "Virtual Surround Sound") + self.assertEqual(choice.saved, []) + self.assertIn(("set-default-sink", BT_ONE["name"]), pactl.commands) + + def test_last_external_removal_restores_saved_internal(self): + pactl = FakePactl( + [ + snapshot("Virtual Surround Sound", BT_ONE), + snapshot("auto_null"), + ] + ) + choice = FakeChoice("Virtual Surround Sound") + policy = self.policy(pactl, choice) + policy.reconcile() + policy.reconcile() + self.assertEqual(choice.value, "Virtual Surround Sound") + self.assertIn( + ("set-default-sink", "Virtual Surround Sound"), + pactl.commands, + ) + + def test_pulse_fallback_does_not_overwrite_saved_internal(self): + pactl = FakePactl( + [ + snapshot("Virtual Surround Sound", BT_ONE), + snapshot("Stereo"), + ] + ) + choice = FakeChoice() + policy = self.policy(pactl, choice) + policy.reconcile() + policy.reconcile() + self.assertEqual(choice.value, "Virtual Surround Sound") + self.assertIn( + ("set-default-sink", "Virtual Surround Sound"), pactl.commands + ) + + def test_removal_uses_remaining_external(self): + pactl = FakePactl( + [ + snapshot("Stereo", BT_ONE, BT_TWO), + snapshot("auto_null", BT_ONE), + ] + ) + policy = self.policy(pactl, FakeChoice()) + policy.reconcile() + policy.reconcile() + self.assertIn(("set-default-sink", BT_ONE["name"]), pactl.commands) + + def test_manual_internal_selection_is_respected(self): + pactl = FakePactl( + [ + snapshot("Stereo", BT_ONE), + snapshot("Virtual Surround Sound", BT_ONE), + snapshot("Virtual Surround Sound"), + ] + ) + choice = FakeChoice() + policy = self.policy(pactl, choice) + policy.reconcile() + policy.reconcile() + policy.reconcile() + defaults = [ + command + for command in pactl.commands + if command and command[0] == "set-default-sink" + ] + self.assertEqual(defaults, [("set-default-sink", BT_ONE["name"])]) + self.assertEqual(choice.value, "Virtual Surround Sound") + + def test_jack_profile_is_switched_before_routing(self): + card = { + "name": hotplug.ODIN_CARD, + "active_profile": hotplug.SPEAKER_PROFILE, + "profiles": [ + {"name": hotplug.HEADPHONE_PROFILE, "available": "yes"} + ], + } + pactl = FakePactl( + [ + snapshot("Stereo", card=card), + snapshot("Stereo", HEADPHONES), + ] + ) + policy = self.policy(pactl, FakeChoice()) + with mock.patch.object(hotplug.time, "sleep"): + policy.reconcile() + self.assertEqual( + pactl.commands[0], + ( + "set-card-profile", + hotplug.ODIN_CARD, + hotplug.HEADPHONE_PROFILE, + ), + ) + self.assertIn(("set-default-sink", hotplug.HEADPHONE_SINK), pactl.commands) + + def test_steam_retry_limit_is_reset_before_restart(self): + policy = hotplug.HotplugPolicy(FakePactl([]), FakeChoice()) + policy._steam_is_reachable = mock.Mock(return_value=True) + calls = mock.Mock() + run = mock.Mock() + popen = mock.Mock() + calls.attach_mock(run, "run") + calls.attach_mock(popen, "popen") + with ( + mock.patch.object(hotplug.subprocess, "run", run), + mock.patch.object(hotplug.subprocess, "Popen", popen), + ): + policy._notify_steam() + self.assertEqual( + [call[0] for call in calls.mock_calls], + ["run", "popen"], + ) + run.assert_called_once_with( + [ + "/usr/bin/systemctl", + "--user", + "reset-failed", + hotplug.STEAM_RESTORE_UNIT, + ], + check=False, + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=2, + ) + popen.assert_called_once_with( + [ + "/usr/bin/systemctl", + "--user", + "--no-block", + "restart", + hotplug.STEAM_RESTORE_UNIT, + ], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + start_new_session=True, + ) + + +class StateAndArtifactTests(unittest.TestCase): + def test_state_is_bounded_and_atomic(self): + with tempfile.TemporaryDirectory() as temporary: + with mock.patch.dict( + hotplug.os.environ, + {"ARMADA_AUDIO_STATE_DIR": temporary}, + clear=False, + ): + choice = hotplug.ReturnChoice() + choice.save("Virtual Surround Sound") + self.assertEqual(choice.load(), "Virtual Surround Sound") + choice.save("not-an-output") + self.assertEqual(choice.load(), "Virtual Surround Sound") + if os.name != "nt": + self.assertEqual( + oct( + ( + Path(temporary) + / "odin3-audio-speaker-default" + ).stat().st_mode + & 0o777 + ), + "0o600", + ) + + def test_existing_wireplumber_internal_default_seeds_return_choice(self): + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + state = root / "armada-state" + configured = root / "default-nodes" + configured.write_text( + "[default-nodes]\n" + "default.configured.audio.sink=Virtual Surround Sound\n", + encoding="utf-8", + ) + with mock.patch.dict( + hotplug.os.environ, + { + "ARMADA_AUDIO_STATE_DIR": str(state), + "ARMADA_AUDIO_WIREPLUMBER_DEFAULT_NODES": str(configured), + }, + clear=False, + ): + choice = hotplug.ReturnChoice() + choice.seed_from_wireplumber() + self.assertEqual(choice.load(), "Virtual Surround Sound") + self.assertEqual( + ( + state / "odin3-audio-speaker-default" + ).read_text(encoding="ascii"), + "Virtual Surround Sound\n", + ) + + def test_legacy_two_channel_volume_is_migrated_once(self): + with tempfile.TemporaryDirectory() as temporary: + pactl = MigrationPactl(stereo_sink(49151, 0)) + migration = hotplug.StereoVolumeMigration(Path(temporary)) + migration.reconcile(pactl) + migration.reconcile(pactl) + self.assertEqual( + pactl.commands, + [("set-sink-volume", "Stereo", "49151")], + ) + self.assertTrue( + ( + Path(temporary) + / "odin3-audio-stereo-8ch-volume-v1.done" + ).is_file() + ) + + def test_nonlegacy_channel_volume_layout_is_left_unchanged(self): + with tempfile.TemporaryDirectory() as temporary: + pactl = MigrationPactl(stereo_sink(49151, 32768)) + migration = hotplug.StereoVolumeMigration(Path(temporary)) + migration.reconcile(pactl) + self.assertEqual(pactl.commands, []) + + def test_unsettled_stereo_layout_is_retried_before_marking_complete(self): + with tempfile.TemporaryDirectory() as temporary: + pactl = MigrationPactl( + { + "name": "Stereo", + "volume": { + "front-left": {"value": 49151}, + "front-right": {"value": 49151}, + }, + } + ) + migration = hotplug.StereoVolumeMigration(Path(temporary)) + migration.reconcile(pactl) + self.assertFalse(migration.complete) + self.assertFalse(migration.marker.exists()) + pactl.sink = stereo_sink(49151, 0) + migration.reconcile(pactl) + self.assertTrue(migration.complete) + self.assertTrue(migration.marker.is_file()) + + def test_unit_is_bounded_and_restartable(self): + unit = UNIT.read_text(encoding="utf-8") + self.assertIn( + "ExecStart=/usr/bin/python3 /usr/libexec/armada/odin3-audio-hotplug", + unit, + ) + self.assertIn("Restart=on-failure", unit) + self.assertIn("WantedBy=default.target", unit) + + def test_helper_contains_exact_device_and_route_bounds(self): + source = HELPER.read_text(encoding="utf-8") + for value in ( + "ayn-odin-3", + "AYN Odin 3", + "SM8750", + hotplug.ODIN_CARD, + hotplug.HEADPHONE_SINK, + "bluez_output.", + "device.api", + "bluez5", + "pactl", + "move-sink-input", + hotplug.STEAM_RESTORE_UNIT, + "http://127.0.0.1:8080/json", + "os.replace", + "effect_output.odin3_stereo", + "odin3-audio-stereo-8ch-volume-v1.done", + ): + self.assertIn(value, source) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/odin3-audio-policy-test.py b/tests/odin3-audio-policy-test.py new file mode 100644 index 00000000..6049ec7d --- /dev/null +++ b/tests/odin3-audio-policy-test.py @@ -0,0 +1,788 @@ +#!/usr/bin/env python3 +"""Off-device production-policy tests for the Odin 3 audio profiles.""" + +from __future__ import annotations + +import hashlib +import math +import os +import re +import shutil +import stat +import struct +import subprocess +import tempfile +import unittest +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +SYSTEM = ROOT / "system_files" +PACKAGE = SYSTEM / "usr/share/armada/audio/odin3" +PIPEWIRE = PACKAGE / "pipewire.conf.d" +PULSE = PACKAGE / "pipewire-pulse.conf.d" +WIREPLUMBER = PACKAGE / "wireplumber.conf.d" +HRIR = PACKAGE / "hrir/vss_speaker.wav" +IMMUTABLE_HRIR = "/usr/share/armada/audio/odin3/hrir/vss_speaker.wav" +ROUTE_HOOK = ( + SYSTEM / "usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua" +) +SETUP = SYSTEM / "usr/libexec/armada/odin3-audio-setup" +DEFAULT = SYSTEM / "usr/libexec/armada/odin3-audio-default" +STEAM_RESTORE = SYSTEM / "usr/libexec/armada/odin3-audio-steam-restore" +HOTPLUG = SYSTEM / "usr/libexec/armada/odin3-audio-hotplug" +LAUNCH_STEAM = SYSTEM / "usr/libexec/armada/launch-steam" +SETUP_UNIT = ( + SYSTEM / "usr/lib/systemd/system/armada-odin3-audio-setup.service" +) +DEFAULT_UNIT = ( + SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-default.service" +) +STEAM_RESTORE_UNIT = ( + SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-steam-restore.service" +) +HOTPLUG_UNIT = ( + SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-hotplug.service" +) +VENDOR_FILES = ROOT / "build_files/40-vendor-system-files.sh" + +EXPECTED_FRAGMENTS = { + PIPEWIRE / "50-hrir-7_1.conf", + PIPEWIRE / "55-odin3-stereo.conf", + PULSE / "10-no-flat.conf", + PULSE / "20-odin3-stereo-downmix.conf", + WIREPLUMBER / "51-odin3-audio-names.conf", + WIREPLUMBER / "90-odin3-speaker-route-unity.conf", +} +BASE_GAIN = 0.295248 +CLAMP = 0.8912509381 +HRIR_SHA256 = "f88ee26f5af80e73365ea1428cea970eeb383c8dfaa1fb77b0fc5a1efb48a7cb" +POSITIONS = ("FL", "FR", "RL", "RR", "FC", "LFE", "SL", "SR") + + +def text(path: Path) -> str: + return path.read_text(encoding="utf-8") + + +def numbers(source: str) -> list[float]: + return [ + float(value) + for value in re.findall(r"(? dict[str, int]: + raw = path.read_bytes() + if raw[:4] != b"RIFF" or raw[8:12] != b"WAVE": + raise AssertionError("HRIR is not a RIFF/WAVE file") + chunks: dict[bytes, bytes] = {} + offset = 12 + while offset + 8 <= len(raw): + chunk_id = raw[offset : offset + 4] + size = struct.unpack_from(" len(raw): + raise AssertionError(f"truncated HRIR chunk {chunk_id!r}") + chunks[chunk_id] = raw[start:end] + offset = end + (size & 1) + if b"fmt " not in chunks or b"data" not in chunks: + raise AssertionError("HRIR lacks fmt or data") + format_tag, channels, rate, _, block_align, bits = struct.unpack_from( + " None: + self.assertEqual( + { + path + for directory in (PIPEWIRE, PULSE, WIREPLUMBER) + for path in directory.glob("*.conf") + }, + EXPECTED_FRAGMENTS, + ) + for path in ( + *EXPECTED_FRAGMENTS, + ROUTE_HOOK, + SETUP, + DEFAULT, + STEAM_RESTORE, + HOTPLUG, + SETUP_UNIT, + DEFAULT_UNIT, + STEAM_RESTORE_UNIT, + HOTPLUG_UNIT, + ): + self.assertTrue(path.is_file(), path.relative_to(ROOT)) + + @unittest.skipUnless(os.name != "nt", "POSIX executable modes are not exposed on Windows") + def test_installed_helpers_are_executable(self) -> None: + for path in (SETUP, DEFAULT, STEAM_RESTORE, HOTPLUG): + self.assertTrue( + path.stat().st_mode & stat.S_IXUSR, + f"{path.relative_to(ROOT)} must be executable", + ) + + def test_setup_and_units_install_only_on_odin3(self) -> None: + setup = text(SETUP) + setup_unit = text(SETUP_UNIT) + default_unit = text(DEFAULT_UNIT) + + self.assertIn("/usr/libexec/armada/device-env", setup) + self.assertRegex( + setup, + r'ARMADA_DEVICE_ID[^=\n]*"?\s*==\s*"?ayn-odin-3', + ) + self.assertIn("/usr/share/armada/audio/odin3", setup) + for directory in ( + "pipewire/pipewire.conf.d", + "pipewire/pipewire-pulse.conf.d", + "wireplumber/wireplumber.conf.d", + ): + self.assertIn(directory, setup) + self.assertRegex(setup, r"\bln\b.*-[^ \n]*s") + self.assertRegex(setup.lower(), r"backup|\.bak") + self.assertNotRegex(setup, r"rm\s+-rf") + + self.assertIn("/usr/libexec/armada/odin3-audio-setup", setup_unit) + self.assertRegex(setup_unit, r"(?m)^Before=.*display-manager") + self.assertIn("/usr/libexec/armada/odin3-audio-default", default_unit) + self.assertRegex(default_unit, r"(?m)^After=.*(pipewire|wireplumber)") + + vendor = text(VENDOR_FILES) + self.assertIn("systemctl enable armada-odin3-audio-setup.service", vendor) + self.assertIn( + "systemctl --global enable armada-odin3-audio-default.service", + vendor, + ) + self.assertIn( + "test -x /usr/libexec/armada/odin3-audio-steam-restore", + vendor, + ) + self.assertIn( + "test -f /usr/lib/systemd/user/armada-odin3-audio-steam-restore.service", + vendor, + ) + self.assertIn( + "test -x /usr/libexec/armada/odin3-audio-hotplug", + vendor, + ) + self.assertIn( + "test -f /usr/lib/systemd/user/armada-odin3-audio-hotplug.service", + vendor, + ) + self.assertIn( + "systemctl --global enable armada-odin3-audio-hotplug.service", + vendor, + ) + + def test_managed_link_names_are_complete(self) -> None: + setup = text(SETUP) + for fragment in EXPECTED_FRAGMENTS: + self.assertIn(fragment.name, setup) + + def test_steam_restore_is_bounded_exact_and_launch_triggered(self) -> None: + helper = text(STEAM_RESTORE) + unit = text(STEAM_RESTORE_UNIT) + launcher = text(LAUNCH_STEAM) + + for token in ( + "ayn-odin-3", + "AYN Odin 3", + "SM8750", + "pactl", + "get-default-sink", + '"--format=json", "list", "sinks"', + 'VIRTUAL_SINK = "Virtual Surround Sound"', + 'STEREO_SINK = "Stereo"', + "http://127.0.0.1:8080/json", + 'target.get("title") != "SharedJSContext"', + 'page.hostname == "steamloopback.host"', + 'websocket_endpoint.hostname == "127.0.0.1"', + "websocket_endpoint.port == 8080", + 'websocket_endpoint.path.startswith("/devtools/page/")', + "SteamClient.System.Audio", + "audio.GetDevices()", + 'device.sName === requested.name', + "audio.SetDefaultDeviceOverride(id, 1)", + "after.overrideOutputDeviceId === id", + "after.activeOutputDeviceId === id", + "virtualOffset", + "stereoOffset", + "SELECT_EXPRESSION", + 'SELECT_EXPRESSION.replace("__SELECTION__", payload)', + "ensure_ascii=True", + '"awaitPromise": True', + ): + self.assertIn(token, helper) + self.assertNotIn("set-default-sink", helper) + self.assertNotIn("ClearDefaultDeviceOverride", helper) + self.assertNotIn('f"""', helper) + self.assertRegex(helper, r"WAIT_ATTEMPTS\s*=\s*[1-9]\d*") + self.assertRegex(helper, r"WEBSOCKET_TIMEOUT\s*=\s*[0-9.]+") + self.assertLess( + helper.index("target = find_shared_context()"), + helper.index("selection = selected_sink()"), + "Steam readiness must precede the final default-sink decision", + ) + self.assertRegex( + helper, + r"return 0 if update_steam_override\(target, selection\) else 1", + ) + + self.assertRegex(unit, r"(?m)^Type=oneshot$") + self.assertRegex(unit, r"(?m)^After=.*pipewire.*wireplumber") + self.assertIn( + "ExecStart=/usr/libexec/armada/odin3-audio-steam-restore", + unit, + ) + self.assertRegex(unit, r"(?m)^TimeoutStartSec=\d+s$") + self.assertRegex(unit, r"(?m)^Restart=on-failure$") + self.assertRegex(unit, r"(?m)^StartLimitBurst=[1-9]\d*$") + self.assertNotIn("[Install]", unit) + + trigger = ( + "systemctl --user --no-block restart " + "armada-odin3-audio-steam-restore.service || true" + ) + self.assertIn(trigger, launcher) + self.assertLess(launcher.index(trigger), launcher.index('exec "${steam_arm}"')) + + +class AudioGraphPolicyTests(unittest.TestCase): + def test_two_public_profiles_and_hidden_physical_sink(self) -> None: + graphs = text(PIPEWIRE / "50-hrir-7_1.conf") + text( + PIPEWIRE / "55-odin3-stereo.conf" + ) + names = text(WIREPLUMBER / "51-odin3-audio-names.conf") + + for public_name in ("Stereo", "Virtual Surround Sound"): + self.assertIn(public_name, graphs + names) + self.assertEqual( + len(re.findall(r"media\.class\s*=\s*[\"']?Audio/Sink[\"']?", graphs)), + 2, + ) + self.assertGreaterEqual(len(re.findall(r"node\.virtual\s*=\s*true", graphs)), 2) + + self.assertIn("alsa_output.platform-sound.HiFi__Speaker__sink", names) + self.assertTrue( + re.search(r"node\.hidden\s*=\s*true", names) + or "Audio/Sink/Internal" in names + ) + self.assertIn("Audio/Sink/Internal", names) + + def test_default_priorities_prefer_stereo(self) -> None: + stereo = text(PIPEWIRE / "55-odin3-stereo.conf") + surround = text(PIPEWIRE / "50-hrir-7_1.conf") + priority_pattern = r"priority\.(?:session|driver)\s*=\s*(\d+)" + stereo_priorities = [int(n) for n in re.findall(priority_pattern, stereo)] + surround_priorities = [int(n) for n in re.findall(priority_pattern, surround)] + self.assertTrue(stereo_priorities, "Stereo has no explicit priority") + self.assertTrue(surround_priorities, "Virtual Surround has no explicit priority") + self.assertGreater(max(stereo_priorities), max(surround_priorities)) + + default = text(DEFAULT) + self.assertIn("Stereo", default) + self.assertIn("Virtual Surround Sound", default) + self.assertRegex(default.lower(), r"marker|initialized|first") + + def test_all_eight_channel_paths_and_hrir_convolution_are_declared(self) -> None: + surround = text(PIPEWIRE / "50-hrir-7_1.conf") + for position in POSITIONS: + self.assertRegex( + surround, + rf"(? None: + pulse = text(PULSE / "20-odin3-stereo-downmix.conf") + stereo = text(PIPEWIRE / "55-odin3-stereo.conf") + surround = text(PIPEWIRE / "50-hrir-7_1.conf") + documentation = text(ROOT / "docs/odin3-audio/README.md") + self.assertNotRegex( + pulse, + r"(?:stream\.rules|channelmix\.)\s*", + "the compatibility fragment must not modify external channel mixing", + ) + self.assertRegex(pulse, r"stream\.properties\s*=\s*\{\s*\}") + self.assertRegex(stereo, r"audio\.channels\s*=\s*8") + self.assertRegex( + stereo, + r"audio\.position\s*=\s*\[\s*FL\s+FR\s+FC\s+LFE\s+RL\s+RR\s+SL\s+SR\s*\]", + ) + self.assertIn("downmix inside its own", documentation) + self.assertIn("external sinks retain their own", documentation) + expected_links = { + "FL": ("downmixL", 1), + "FC_L": ("downmixL", 2), + "LFE_L": ("downmixL", 3), + "RL": ("downmixL", 4), + "SL": ("downmixL", 5), + "FR": ("downmixR", 1), + "FC_R": ("downmixR", 2), + "LFE_R": ("downmixR", 3), + "RR": ("downmixR", 4), + "SR": ("downmixR", 5), + } + source_positions = { + "FC_L": "FC", + "LFE_L": "LFE", + "FC_R": "FC", + "LFE_R": "LFE", + } + for key, (mixer, port) in expected_links.items(): + position = source_positions.get(key, key) + self.assertRegex( + stereo, + rf'output\s*=\s*"copy{position}:Out"\s+' + rf'input\s*=\s*"{mixer}:In {port}"', + ) + for mixer, expected in ( + ("downmixL", (1.0, 0.707106781, 0.353553391, 0.707106781, 0.707106781)), + ("downmixR", (1.0, 0.707106781, 0.353553391, 0.707106781, 0.707106781)), + ): + block = re.search( + rf"name\s*=\s*{mixer}\s+control\s*=\s*\{{(?P.*?)\}}", + stereo, + flags=re.DOTALL, + ) + self.assertIsNotNone(block, f"{mixer} is missing") + for index, coefficient in enumerate(expected, start=1): + self.assertRegex( + block.group("body"), + rf'"Gain {index}"\s*=\s*{re.escape(str(coefficient))}', + ) + for position in ("FC", "LFE", "RL", "RR", "SL", "SR"): + self.assertRegex(stereo + surround, rf"(? None: + graphs = "\n".join(text(path) for path in sorted(PIPEWIRE.glob("*.conf"))) + values = numbers(graphs) + self.assertTrue(any(math.isclose(v, BASE_GAIN, abs_tol=5e-7) for v in values)) + + for ratio in (1.0, 0.9, 0.8, 1.2): + expected = BASE_GAIN * ratio + self.assertTrue( + any(math.isclose(v, expected, abs_tol=7e-7) for v in values), + f"missing {ratio:g}x gain {expected:.7f}", + ) + self.assertGreaterEqual( + sum(math.isclose(abs(v), CLAMP, abs_tol=1e-10) for v in values), + 4, + "both graphs must clamp both final outputs to +/-0.8912509381", + ) + for graph in PIPEWIRE.glob("*.conf"): + source = text(graph) + for ear in ("L", "R"): + self.assertRegex( + source, + rf'output\s*=\s*"mix{ear}:Out"\s+' + rf'input\s*=\s*"clamp{ear}:In"', + ) + self.assertRegex( + source, + r'outputs\s*=\s*\[\s*"clampL:Out"\s+"clampR:Out"\s*\]', + ) + + loud = 1.0 + quiet = 0.25 + perceived_interval_gain = math.exp( + math.log(quiet) + 0.12 * (math.log(loud) - math.log(quiet)) + ) + self.assertTrue( + math.isclose(BASE_GAIN, perceived_interval_gain, abs_tol=5e-7) + ) + + def test_route_unity_hook_targets_only_the_internal_speaker(self) -> None: + fragment = text(WIREPLUMBER / "90-odin3-speaker-route-unity.conf") + hook = text(ROUTE_HOOK) + combined = fragment + hook + for token in ( + "odin3-speaker-route-unity", + "alsa_card.platform-sound", + "[Out] Speaker", + ): + self.assertIn(token, combined) + self.assertRegex(hook, r"(?i)mute") + self.assertRegex(hook, r"(?i)volume") + self.assertRegex(hook, r"(?i)save") + self.assertRegex(hook, r"(? None: + self.assertTrue(HRIR.is_file(), "packaged HRIR asset is missing") + self.assertEqual( + riff_metadata(HRIR), + { + "format_tag": 3, + "channels": 14, + "rate": 48000, + "bits": 32, + "frames": 8400, + }, + ) + + digest = hashlib.sha256(HRIR.read_bytes()).hexdigest() + self.assertEqual(digest, HRIR_SHA256) + self.assertEqual(list(HRIR.parent.glob("*.wav")), [HRIR]) + self.assertEqual( + {path.name for path in HRIR.parent.iterdir()}, + {"vss_speaker.wav"}, + ) + + def test_single_immutable_hrir_contract_is_documented_and_enforced(self) -> None: + setup = text(SETUP) + documentation = text(ROOT / "docs/odin3-audio/README.md") + for token in ( + "${TEMPLATE_ROOT}/hrir/vss_speaker.wav", + "PACKAGED_HRIR", + HRIR_SHA256, + "/usr/bin/sha256sum", + "immutable HRIR checksum mismatch", + ): + self.assertIn(token, setup) + self.assertNotIn("HRIR_DIR", setup) + self.assertNotIn("HRIR_PATH", setup) + self.assertNotIn("seed_hrir", setup) + self.assertIn(IMMUTABLE_HRIR, documentation) + self.assertIn("There is no fallback HRIR", documentation) + + +class SetupIntegrationTests(unittest.TestCase): + def test_non_odin_gate_precedes_mutating_commands(self) -> None: + """The exact gate must run before link, backup, or service mutations.""" + setup = text(SETUP) + gate = setup.find("ayn-odin-3") + self.assertGreaterEqual(gate, 0) + mutation_offsets = [ + offset + for token in ("ln ", "ln\t", "mv ", "cp ", "systemctl") + if (offset := setup.find(token)) >= 0 + ] + self.assertTrue(mutation_offsets) + self.assertLess(gate, min(mutation_offsets)) + + @unittest.skipUnless( + os.name != "nt" and shutil.which("bash"), + "requires GNU Bash with native POSIX symlinks", + ) + def test_mock_non_odin_is_noop_and_odin_links_backup_restore(self) -> None: + with tempfile.TemporaryDirectory() as temporary: + fixture = Path(temporary) + home = fixture / "home" + home.mkdir() + device_env = fixture / "device-env" + target_rel = Path( + ".config/pipewire/pipewire.conf.d/50-hrir-7_1.conf" + ) + target = home / target_rel + target.parent.mkdir(parents=True) + target.write_text("user-owned\n", encoding="utf-8") + + def write_policy(device_id: str, name: str, soc: str) -> None: + device_env.write_text( + "#!/bin/bash\n" + f"printf '%s\\n' 'ARMADA_DEVICE_ID={device_id}'\n" + f"printf '%s\\n' 'ARMADA_DEVICE_NAME={name}'\n" + f"printf '%s\\n' 'ARMADA_SOC_CLASS={soc}'\n", + encoding="utf-8", + ) + device_env.chmod(0o755) + + environment = os.environ.copy() + environment.update( + { + "ARMADA_AUDIO_DEVICE_ENV": str(device_env), + "ARMADA_AUDIO_TEMPLATE_ROOT": str(PACKAGE), + "ARMADA_AUDIO_USER_HOME": str(home), + "ARMADA_AUDIO_STATE_DIR": str(home / ".local/state/armada"), + "ARMADA_AUDIO_USER": str(os.getuid()), + "ARMADA_AUDIO_GROUP": str(os.getgid()), + } + ) + + write_policy("ayn-odin-2", "AYN Odin 2", "SM8550") + before = { + path.relative_to(home): ( + path.is_symlink(), + path.read_bytes() if path.is_file() and not path.is_symlink() else b"", + ) + for path in home.rglob("*") + } + result = subprocess.run( + [shutil.which("bash") or "bash", str(SETUP)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + after = { + path.relative_to(home): ( + path.is_symlink(), + path.read_bytes() if path.is_file() and not path.is_symlink() else b"", + ) + for path in home.rglob("*") + } + self.assertEqual(after, before) + + # Pre-create every managed parent and saved-state directory so this + # unprivileged fixture never needs the production chown path. + for fragment in EXPECTED_FRAGMENTS: + if fragment.parent == PIPEWIRE: + relative = Path(".config/pipewire/pipewire.conf.d") / fragment.name + elif fragment.parent == PULSE: + relative = ( + Path(".config/pipewire/pipewire-pulse.conf.d") / fragment.name + ) + else: + relative = ( + Path(".config/wireplumber/wireplumber.conf.d") / fragment.name + ) + (home / relative).parent.mkdir(parents=True, exist_ok=True) + (home / ".config/pulse").mkdir(parents=True) + + write_policy("ayn-odin-3", "AYN Odin 3", "SM8750") + result = subprocess.run( + [shutil.which("bash") or "bash", str(SETUP)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertTrue(target.is_symlink()) + backup = target.with_name(target.name + ".armada-odin3-audio.backup") + self.assertEqual(backup.read_text(encoding="utf-8"), "user-owned\n") + + # If a later image no longer identifies this as an Odin 3, remove + # only the package-managed links and restore the original files. + write_policy("ayn-odin-2", "AYN Odin 2", "SM8550") + result = subprocess.run( + [shutil.which("bash") or "bash", str(SETUP)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertFalse(target.is_symlink()) + self.assertEqual(target.read_text(encoding="utf-8"), "user-owned\n") + for link in home.rglob("*.conf"): + self.assertFalse(link.is_symlink(), link) + + # Explicit rollback remains independently reversible. + write_policy("ayn-odin-3", "AYN Odin 3", "SM8750") + result = subprocess.run( + [shutil.which("bash") or "bash", str(SETUP)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertTrue(target.is_symlink()) + + result = subprocess.run( + [shutil.which("bash") or "bash", str(SETUP), "--restore"], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertFalse(target.is_symlink()) + self.assertEqual(target.read_text(encoding="utf-8"), "user-owned\n") + + @unittest.skipUnless( + os.name != "nt" and shutil.which("bash"), + "requires GNU Bash on a POSIX filesystem", + ) + def test_mock_default_initializes_once_and_preserves_later_choice(self) -> None: + with tempfile.TemporaryDirectory() as temporary: + fixture = Path(temporary) + home = fixture / "home" + state = home / ".local/state/armada" + state.mkdir(parents=True) + device_env = fixture / "device-env" + device_env.write_text( + "#!/bin/bash\n" + "printf '%s\\n' 'ARMADA_DEVICE_ID=ayn-odin-3'\n" + "printf '%s\\n' 'ARMADA_DEVICE_NAME=AYN Odin 3'\n" + "printf '%s\\n' 'ARMADA_SOC_CLASS=SM8750'\n", + encoding="utf-8", + ) + device_env.chmod(0o755) + calls = fixture / "pactl.calls" + pactl = fixture / "pactl" + pactl.write_text( + "#!/bin/bash\n" + "if [[ \"$*\" == 'list short sinks' ]]; then\n" + " printf '1\\tStereo\\tmodule\\n'\n" + " printf '2\\tVirtual Surround Sound\\tmodule\\n'\n" + " exit 0\n" + "fi\n" + "printf '%s\\n' \"$*\" >>\"$MOCK_PACTL_CALLS\"\n", + encoding="utf-8", + ) + pactl.chmod(0o755) + + environment = os.environ.copy() + environment.update( + { + "ARMADA_AUDIO_DEVICE_ENV": str(device_env), + "ARMADA_AUDIO_USER_HOME": str(home), + "ARMADA_AUDIO_STATE_DIR": str(state), + "ARMADA_AUDIO_PACTL": str(pactl), + "ARMADA_AUDIO_SLEEP": "/bin/true", + "ARMADA_AUDIO_WAIT_ATTEMPTS": "1", + "ARMADA_AUDIO_WAIT_SECONDS": "0", + "MOCK_PACTL_CALLS": str(calls), + } + ) + + # Without setup's pending marker, the helper must not infer + # permission to alter an existing default. + result = subprocess.run( + [shutil.which("bash") or "bash", str(DEFAULT)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertFalse(calls.exists()) + + pending = state / "odin3-audio-default.pending" + done = state / "odin3-audio-default.done" + pending.touch() + result = subprocess.run( + [shutil.which("bash") or "bash", str(DEFAULT)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual( + calls.read_text(encoding="utf-8").splitlines(), + [ + "set-sink-volume Stereo 100%", + "set-sink-volume Virtual Surround Sound 100%", + "set-default-sink Stereo", + ], + ) + self.assertTrue(done.is_file()) + self.assertFalse(pending.exists()) + + calls.unlink() + result = subprocess.run( + [shutil.which("bash") or "bash", str(DEFAULT)], + check=False, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=environment, + timeout=10, + ) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertFalse(calls.exists()) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/odin3-audio-steam-sync-test.py b/tests/odin3-audio-steam-sync-test.py new file mode 100755 index 00000000..acfc2d75 --- /dev/null +++ b/tests/odin3-audio-steam-sync-test.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python3 +"""Focused tests for Odin 3 PipeWire-to-Steam output synchronization.""" + +from __future__ import annotations + +import importlib.machinery +import importlib.util +import json +import subprocess +import sys +import types +import unittest +from pathlib import Path +from unittest import mock + + +ROOT = Path(__file__).resolve().parents[1] +HELPER = ROOT / "system_files/usr/libexec/armada/odin3-audio-steam-restore" +if "websocket" not in sys.modules: + try: + __import__("websocket") + except ModuleNotFoundError: + websocket_stub = types.ModuleType("websocket") + websocket_stub.WebSocketException = Exception + sys.modules["websocket"] = websocket_stub +loader = importlib.machinery.SourceFileLoader( + "odin3_audio_steam_sync", str(HELPER) +) +spec = importlib.util.spec_from_loader(loader.name, loader) +assert spec is not None +steam_sync = importlib.util.module_from_spec(spec) +sys.modules[loader.name] = steam_sync +loader.exec_module(steam_sync) + + +def result(stdout: str) -> subprocess.CompletedProcess[str]: + return subprocess.CompletedProcess([], 0, stdout=stdout, stderr="") + + +class SelectionTests(unittest.TestCase): + def test_stable_pipewire_selection_carries_calibration_indexes(self): + sinks = json.dumps( + [ + {"index": 39, "name": "Virtual Surround Sound"}, + {"index": 41, "name": "Stereo"}, + { + "index": 172, + "name": "alsa_output.platform-sound.HiFi__Headphones__sink", + }, + ] + ) + with mock.patch.object( + steam_sync, + "run_pactl", + side_effect=[ + result( + "alsa_output.platform-sound.HiFi__Headphones__sink\n" + ), + result(sinks), + result( + "alsa_output.platform-sound.HiFi__Headphones__sink\n" + ), + ], + ): + selection = steam_sync.selected_sink() + self.assertEqual( + selection, + steam_sync.SinkSelection( + name="alsa_output.platform-sound.HiFi__Headphones__sink", + pulse_index=172, + virtual_pulse_index=39, + stereo_pulse_index=41, + ), + ) + + def test_duplicate_default_sink_fails_closed(self): + sinks = json.dumps( + [ + {"index": 7, "name": "duplicate"}, + {"index": 8, "name": "duplicate"}, + ] + ) + with mock.patch.object( + steam_sync, + "run_pactl", + side_effect=[ + result("duplicate\n"), + result(sinks), + result("duplicate\n"), + ], + ): + self.assertIsNone(steam_sync.selected_sink()) + + def test_selection_payload_is_json_escaped_not_javascript_source(self): + name = 'sink"; throw new Error("unsafe")\n\u2028' + expression = steam_sync.selection_expression( + steam_sync.SinkSelection(name, 7, 8, 9) + ) + prefix = "const requested = " + encoded = expression.split(prefix, 1)[1].split(";\n", 1)[0] + payload = json.loads(encoded) + self.assertEqual(payload["name"], name) + self.assertIn(r"\"", encoded) + self.assertIn(r"\n", encoded) + self.assertIn(r"\u2028", encoded) + self.assertNotIn("\u2028", encoded) + + def test_unsettled_pipewire_inventory_requests_service_retry(self): + with ( + mock.patch.object(steam_sync, "is_odin3", return_value=True), + mock.patch.object( + steam_sync, + "find_shared_context", + return_value="ws://127.0.0.1/context", + ), + mock.patch.object(steam_sync, "selected_sink", return_value=None), + mock.patch.object(steam_sync, "update_steam_override") as update, + ): + self.assertEqual(steam_sync.main(), 1) + update.assert_not_called() + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/odin3-audio-test.sh b/tests/odin3-audio-test.sh new file mode 100755 index 00000000..b6e63167 --- /dev/null +++ b/tests/odin3-audio-test.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +set -euo pipefail + +readonly root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +complete=1 + +PYTHONDONTWRITEBYTECODE=1 \ + python3 "$root/tests/odin3-audio-policy-test.py" -v +PYTHONDONTWRITEBYTECODE=1 \ + python3 "$root/tests/odin3-audio-hotplug-test.py" -v +PYTHONDONTWRITEBYTECODE=1 \ + python3 "$root/tests/odin3-audio-steam-sync-test.py" -v + +if command -v spa-json-dump >/dev/null 2>&1; then + while IFS= read -r fragment; do + spa-json-dump "$fragment" >/dev/null + done < <( + find "$root/system_files/usr/share/armada/audio/odin3" \ + -type f -name '*.conf' -print + ) +else + printf '%s\n' 'SKIP: spa-json-dump is unavailable; Python structural checks ran' + complete=0 +fi + +if command -v luac >/dev/null 2>&1; then + luac -p \ + "$root/system_files/usr/share/wireplumber/scripts/odin3-speaker-route-unity.lua" +else + printf '%s\n' 'SKIP: luac is unavailable; Python route-hook checks ran' + complete=0 +fi + +case "$(uname -s)" in + Linux) ;; + *) + printf '%s\n' 'SKIP: POSIX symlink integration requires Linux' + complete=0 + ;; +esac + +if (( complete )); then + printf '%s\n' 'Odin 3 audio production tests passed' +else + printf '%s\n' \ + 'Odin 3 audio portable checks passed; run the skipped checks on Linux before release' +fi From 2046c6e10da4c966c5de1514b983431cd9997baf Mon Sep 17 00:00:00 2001 From: enjihn <150061999+enjihn@users.noreply.github.com> Date: Sun, 26 Jul 2026 14:53:34 -0400 Subject: [PATCH 2/2] fix(audio): preserve the selected output across suspend Record the active internal speaker profile before real suspend, restore it after the PipeWire graph returns, move existing streams, and resynchronize Steam. Keep external outputs independent and retain Virtual Surround Sound through temporary Stereo fallback during resume. --- build_files/40-vendor-system-files.sh | 5 + docs/odin3-audio/README.md | 18 ++ .../system-sleep/60-armada-odin3-audio-resume | 65 +++++++ .../user/armada-odin3-audio-resume.path | 10 ++ .../user/armada-odin3-audio-resume.service | 7 + .../usr/libexec/armada/odin3-audio-hotplug | 162 +++++++++++++++++- .../usr/libexec/armada/odin3-audio-resume | 46 +++++ tests/odin3-audio-hotplug-test.py | 138 ++++++++++++++- tests/odin3-audio-policy-test.py | 74 ++++++++ tests/odin3-audio-resume-test.sh | 59 +++++++ tests/odin3-audio-test.sh | 1 + 11 files changed, 573 insertions(+), 12 deletions(-) create mode 100644 system_files/usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume create mode 100644 system_files/usr/lib/systemd/user/armada-odin3-audio-resume.path create mode 100644 system_files/usr/lib/systemd/user/armada-odin3-audio-resume.service create mode 100644 system_files/usr/libexec/armada/odin3-audio-resume create mode 100644 tests/odin3-audio-resume-test.sh diff --git a/build_files/40-vendor-system-files.sh b/build_files/40-vendor-system-files.sh index 8a1f7ef0..74918653 100755 --- a/build_files/40-vendor-system-files.sh +++ b/build_files/40-vendor-system-files.sh @@ -14,14 +14,18 @@ EOF chmod 0755 /usr/libexec/armada/* chmod 0755 /usr/libexec/os-session-select +chmod 0755 /usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume test -x /usr/libexec/armada/odin3-audio-setup test -x /usr/libexec/armada/odin3-audio-default test -x /usr/libexec/armada/odin3-audio-steam-restore test -x /usr/libexec/armada/odin3-audio-hotplug +test -x /usr/libexec/armada/odin3-audio-resume test -f /usr/lib/systemd/system/armada-odin3-audio-setup.service test -f /usr/lib/systemd/user/armada-odin3-audio-default.service test -f /usr/lib/systemd/user/armada-odin3-audio-steam-restore.service +test -f /usr/lib/systemd/user/armada-odin3-audio-resume.path +test -f /usr/lib/systemd/user/armada-odin3-audio-resume.service test -f /usr/lib/systemd/user/armada-odin3-audio-hotplug.service test -f /usr/share/armada/audio/odin3/pipewire.conf.d/50-hrir-7_1.conf test -f /usr/share/armada/audio/odin3/pipewire.conf.d/55-odin3-stereo.conf @@ -53,6 +57,7 @@ systemctl enable armada-device-quirks.service systemctl enable armada-odin3-audio-setup.service systemctl --global enable armada-odin3-audio-default.service systemctl --global enable armada-odin3-audio-hotplug.service +systemctl --global enable armada-odin3-audio-resume.path systemctl enable armada-fixups.service systemctl enable armada-installer-visibility.service systemctl enable armada-steamapps.service diff --git a/docs/odin3-audio/README.md b/docs/odin3-audio/README.md index 18c80c41..b4d26a6d 100644 --- a/docs/odin3-audio/README.md +++ b/docs/odin3-audio/README.md @@ -76,6 +76,24 @@ several external outputs are connected, removing the active one selects the most recently created remaining output. Removing the final external output restores the user's saved **Stereo** or **Virtual Surround Sound** choice. +While running, the hotplug router atomically records an active **Stereo** or +**Virtual Surround Sound** sink in per-user runtime state and removes that +record for headphones, Bluetooth, or any other output. Before real suspend, +the system sleep hook snapshots only that confirmed active internal sink. On +resume, the hook creates a one-shot trigger. `armada-odin3-audio-resume.path` +starts a dedicated service whose validated helper atomically consumes that +trigger into the retained pending-request path before restarting the hotplug +router. Clearing the pending request therefore cannot retrigger the resume +service. + +The restarted router handles the pending resume choice before ordinary +preference capture. It restores the exact sink, moves existing streams, updates +the durable return preference, clears the pending marker, and then requests the +bounded Steam synchronization. If **Virtual Surround Sound** is still being +created, **Stereo** can provide temporary audio without replacing the saved +surround preference; a later sink event completes the requested restore. A +second sleep during that fallback retains the still-pending surround request. + The router never applies Odin speaker gain, HRIR convolution, hidden-transport policy, or the graph-local Stereo downmix to an external sink. Unknown USB, HDMI, and unrelated outputs do not trigger this Bluetooth/headphone policy. diff --git a/system_files/usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume b/system_files/usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume new file mode 100644 index 00000000..9b944bb8 --- /dev/null +++ b/system_files/usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume @@ -0,0 +1,65 @@ +#!/bin/bash +# Preserve the selected internal output across real suspend and restore it only +# after the resumed user audio graph is ready. +set -uo pipefail + +[[ "${2:-}" == suspend ]] || exit 0 + +eval "$(/usr/libexec/armada/device-env 2>/dev/null)" || exit 0 +[[ "${ARMADA_DEVICE_ID:-}" == ayn-odin-3 ]] || exit 0 +[[ "${ARMADA_DEVICE_NAME:-}" == 'AYN Odin 3' ]] || exit 0 +[[ "${ARMADA_SOC_CLASS:-}" == SM8750 ]] || exit 0 +[[ "${ARMADA_SUSPEND_MODE:-fake}" != fake ]] || exit 0 + +session_user="${ARMADA_SESSION_USER:-armada}" +session_uid="$(id -u "$session_user" 2>/dev/null)" || exit 0 +session_gid="$(id -g "$session_user" 2>/dev/null)" || exit 0 +snapshot="/run/armada/odin3-audio-pre-suspend-${session_uid}" +runtime_dir="/run/user/${session_uid}" +active_output="$runtime_dir/armada-odin3-audio-active-output" +resume_marker="$runtime_dir/armada-odin3-audio-resume" +resume_trigger="$runtime_dir/armada-odin3-audio-resume-trigger" + +case "${1:-}" in + pre) + rm -f "$snapshot" + rm -f "$resume_trigger" + if [[ ! -f "$active_output" || -L "$active_output" ]]; then + rm -f "$resume_marker" + exit 0 + fi + read -r active_choice <"$active_output" || exit 0 + case "$active_choice" in + Stereo|'Virtual Surround Sound') ;; + *) rm -f "$resume_marker"; exit 0 ;; + esac + choice="$active_choice" + if [[ -f "$resume_marker" && ! -L "$resume_marker" ]]; then + read -r pending_choice <"$resume_marker" || pending_choice= + case "$pending_choice" in + Stereo|'Virtual Surround Sound') choice="$pending_choice" ;; + *) rm -f "$resume_marker" ;; + esac + fi + install -d -m 0755 -o root -g root /run/armada + umask 077 + printf '%s\n' "$choice" >"$snapshot" + ;; + post) + if [[ ! -f "$snapshot" || -L "$snapshot" ]]; then + rm -f "$resume_marker" + rm -f "$resume_trigger" + exit 0 + fi + read -r choice <"$snapshot" || exit 0 + case "$choice" in + Stereo|'Virtual Surround Sound') ;; + *) rm -f "$snapshot"; exit 0 ;; + esac + [[ -d "$runtime_dir" ]] || exit 0 + staged="${snapshot}.resume" + install -m 0600 -o "$session_uid" -g "$session_gid" "$snapshot" "$staged" + mv -fT "$staged" "$resume_trigger" + rm -f "$snapshot" + ;; +esac diff --git a/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.path b/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.path new file mode 100644 index 00000000..0819aa90 --- /dev/null +++ b/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.path @@ -0,0 +1,10 @@ +[Unit] +Description=Restore the Odin 3 audio selection after real suspend +After=pipewire.service pipewire-pulse.service wireplumber.service + +[Path] +PathExists=%t/armada-odin3-audio-resume-trigger +Unit=armada-odin3-audio-resume.service + +[Install] +WantedBy=default.target diff --git a/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.service b/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.service new file mode 100644 index 00000000..dd995154 --- /dev/null +++ b/system_files/usr/lib/systemd/user/armada-odin3-audio-resume.service @@ -0,0 +1,7 @@ +[Unit] +Description=Restart Odin 3 audio routing after real suspend +After=pipewire.service pipewire-pulse.service wireplumber.service + +[Service] +Type=oneshot +ExecStart=/usr/libexec/armada/odin3-audio-resume diff --git a/system_files/usr/libexec/armada/odin3-audio-hotplug b/system_files/usr/libexec/armada/odin3-audio-hotplug index 7e80c0e0..0aa7c016 100755 --- a/system_files/usr/libexec/armada/odin3-audio-hotplug +++ b/system_files/usr/libexec/armada/odin3-audio-hotplug @@ -148,6 +148,7 @@ def sink_serial(sink: dict[str, Any]) -> int: @dataclass(frozen=True) class Snapshot: default: str + sinks: frozenset[str] external: dict[str, dict[str, Any]] sink_inputs: tuple[int, ...] card: dict[str, Any] | None @@ -186,6 +187,9 @@ class Pactl: for item in sinks if item.get("name") and external_sink(item) } + sink_names = frozenset( + str(item["name"]) for item in sinks if item.get("name") + ) indexes: list[int] = [] for item in inputs: if not migratable_sink_input(item): @@ -194,7 +198,7 @@ class Pactl: indexes.append(int(item["index"])) except (KeyError, TypeError, ValueError): continue - return Snapshot(default, external, tuple(indexes), card) + return Snapshot(default, sink_names, external, tuple(indexes), card) class ReturnChoice: @@ -289,6 +293,85 @@ class ReturnChoice: pass +class RuntimeOutputState: + def __init__(self) -> None: + runtime = Path( + os.environ.get( + "XDG_RUNTIME_DIR", + f"/run/user/{os.getuid() if hasattr(os, 'getuid') else 1000}", + ) + ) + self.active = Path( + os.environ.get( + "ARMADA_AUDIO_ACTIVE_OUTPUT", + runtime / "armada-odin3-audio-active-output", + ) + ) + self.pending = Path( + os.environ.get( + "ARMADA_AUDIO_RESUME_PREFERENCE", + runtime / "armada-odin3-audio-resume", + ) + ) + + @staticmethod + def _read(path: Path) -> str | None: + try: + if path.is_symlink() or not path.is_file() or path.stat().st_size > 64: + return None + value = path.read_text(encoding="ascii").strip() + except (OSError, UnicodeError): + return None + return value if value in INTERNAL_SINKS else None + + @staticmethod + def _write(path: Path, value: str) -> None: + path.parent.mkdir(mode=0o700, parents=True, exist_ok=True) + if path.parent.is_symlink() or not path.parent.is_dir(): + raise RuntimeError(f"unsafe runtime audio directory: {path.parent}") + if path.is_symlink(): + raise RuntimeError(f"refusing symlinked runtime audio state: {path}") + descriptor, temporary = tempfile.mkstemp( + prefix=f".{path.name}.", dir=path.parent + ) + try: + if hasattr(os, "fchmod"): + os.fchmod(descriptor, stat.S_IRUSR | stat.S_IWUSR) + with os.fdopen(descriptor, "w", encoding="ascii") as handle: + descriptor = -1 + handle.write(f"{value}\n") + handle.flush() + os.fsync(handle.fileno()) + os.replace(temporary, path) + finally: + if descriptor >= 0: + os.close(descriptor) + try: + os.unlink(temporary) + except FileNotFoundError: + pass + + def record_active(self, value: str) -> None: + if value in INTERNAL_SINKS: + self._write(self.active, value) + return + self.clear(self.active) + + def load_pending(self) -> str | None: + return self._read(self.pending) + + def clear_pending(self) -> None: + self.clear(self.pending) + + @staticmethod + def clear(path: Path) -> None: + try: + if path.is_symlink() or path.is_file(): + path.unlink() + except FileNotFoundError: + pass + + class StereoVolumeMigration: CHANNELS = ( "front-left", @@ -414,11 +497,18 @@ class StereoVolumeMigration: class HotplugPolicy: - def __init__(self, pactl: Pactl, choice: ReturnChoice) -> None: + def __init__( + self, + pactl: Pactl, + choice: ReturnChoice, + runtime: RuntimeOutputState, + ) -> None: self.pactl = pactl self.choice = choice + self.runtime = runtime self.known_external: set[str] | None = None self.active_external: str | None = None + self.resume_fallback_activated = False def _set_card_profile(self, profile: str) -> bool: try: @@ -483,7 +573,9 @@ class HotplugPolicy: except (OSError, subprocess.SubprocessError) as error: log(f"could not notify Steam audio policy: {error}") - def _activate(self, snapshot: Snapshot, target: str) -> bool: + def _activate( + self, snapshot: Snapshot, target: str, *, notify: bool = True + ) -> bool: if not target: return False if snapshot.default != target: @@ -507,7 +599,41 @@ class HotplugPolicy: except (OSError, subprocess.SubprocessError): continue log(f"selected {target}") - self._notify_steam() + self.runtime.record_active(target) + if notify: + self._notify_steam() + return True + + def _restore_pending(self, snapshot: Snapshot) -> bool: + requested = self.runtime.load_pending() + if requested is None: + return False + + self.known_external = set(snapshot.external) + if requested in snapshot.sinks: + if not self._activate(snapshot, requested, notify=False): + raise RuntimeError( + f"pending resume output {requested} was present " + "but could not be activated" + ) + self.choice.save(requested) + self.runtime.clear_pending() + self.resume_fallback_activated = False + self._notify_steam() + log(f"restored pre-suspend output {requested}") + return True + + # VSS can appear after Stereo while PipeWire rebuilds the graph. Keep + # the request and durable preference guarded, but provide working audio + # through Stereo until a later sink event can complete the restore. + if ( + requested == "Virtual Surround Sound" + and "Stereo" in snapshot.sinks + and not self.resume_fallback_activated + ): + if self._activate(snapshot, "Stereo"): + self.resume_fallback_activated = True + log("using Stereo while Virtual Surround Sound is settling") return True @staticmethod @@ -527,6 +653,9 @@ class HotplugPolicy: snapshot = self.pactl.snapshot() current = set(snapshot.external) + self.runtime.record_active(snapshot.default) + if self._restore_pending(snapshot): + return if self.known_external is None: if ( @@ -598,9 +727,9 @@ class HotplugPolicy: def watch( policy: HotplugPolicy, volume_migration: StereoVolumeMigration ) -> int: - volume_migration.reconcile(policy.pactl) - policy.reconcile() if "--once" in sys.argv[1:]: + volume_migration.reconcile(policy.pactl) + policy.reconcile() return 0 pactl_binary = os.environ.get("ARMADA_AUDIO_PACTL", "/usr/bin/pactl") @@ -611,12 +740,17 @@ def watch( text=True, bufsize=1, ) + # Subscribe before the initial resume reconciliation so a sink created + # between the first inventory and the blocking read remains queued. + volume_migration.reconcile(policy.pactl) + policy.reconcile() assert process.stdout is not None relevant = ("on sink ", "on sink-input ", "on card ", "on server ") debounce = float(os.environ.get("ARMADA_AUDIO_DEBOUNCE_SECONDS", "0.20")) while True: line = process.stdout.readline() if line == "": + policy.runtime.record_active("") return process.wait() or 1 if not any(token in line for token in relevant): continue @@ -631,6 +765,7 @@ def watch( break next_line = process.stdout.readline() if next_line == "": + policy.runtime.record_active("") return process.wait() or 1 if any(token in next_line for token in relevant): deadline = time.monotonic() + max(0.02, debounce) @@ -638,20 +773,31 @@ def watch( volume_migration.reconcile(policy.pactl) policy.reconcile() except (OSError, ValueError, subprocess.SubprocessError) as error: + policy.runtime.record_active("") log(f"reconciliation deferred after transient error: {error}") def main() -> int: if not device_matches(): return 0 + runtime = RuntimeOutputState() try: choice = ReturnChoice() choice.seed_from_wireplumber() return watch( - HotplugPolicy(Pactl(), choice), + HotplugPolicy(Pactl(), choice, runtime), StereoVolumeMigration(choice.directory), ) - except (OSError, ValueError, subprocess.SubprocessError, RuntimeError) as error: + except RuntimeError as error: + # A confirmed pending selection can fail while the graph is settling. + # Preserve its active-output guard and let systemd retry this daemon. + log(str(error)) + return 1 + except (OSError, ValueError, subprocess.SubprocessError) as error: + try: + runtime.record_active("") + except OSError: + pass log(str(error)) return 1 diff --git a/system_files/usr/libexec/armada/odin3-audio-resume b/system_files/usr/libexec/armada/odin3-audio-resume new file mode 100644 index 00000000..7f352f2c --- /dev/null +++ b/system_files/usr/libexec/armada/odin3-audio-resume @@ -0,0 +1,46 @@ +#!/bin/bash +set -euo pipefail + +readonly DEVICE_ENV="${ARMADA_AUDIO_DEVICE_ENV:-/usr/libexec/armada/device-env}" +readonly SYSTEMCTL="${ARMADA_AUDIO_SYSTEMCTL:-/usr/bin/systemctl}" + +runtime="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}" +trigger="$runtime/armada-odin3-audio-resume-trigger" +pending="$runtime/armada-odin3-audio-resume" + +discard_trigger() { + rm -f "$trigger" + exit 0 +} + +if ! policy="$( + /usr/bin/env -i PATH=/usr/bin:/usr/sbin:/bin:/sbin \ + /bin/bash --noprofile --norc -p "$DEVICE_ENV" +)"; then + discard_trigger +fi +eval "$policy" || discard_trigger +if [[ "${ARMADA_DEVICE_ID:-}" != ayn-odin-3 || + "${ARMADA_DEVICE_NAME:-}" != 'AYN Odin 3' || + "${ARMADA_SOC_CLASS:-}" != SM8750 ]]; then + discard_trigger +fi + +[[ -f "$trigger" && ! -L "$trigger" ]] || discard_trigger +[[ "$(stat -c %s "$trigger")" -le 64 ]] || discard_trigger +values=() +mapfile -t values <"$trigger" || discard_trigger +[[ "${#values[@]}" -eq 1 ]] || discard_trigger +case "${values[0]}" in + Stereo|'Virtual Surround Sound') ;; + *) discard_trigger ;; +esac + +# The rename consumes the path trigger before this one-shot exits while +# preserving the validated request for the restarted hotplug daemon. +mv -fT "$trigger" "$pending" +if ! "$SYSTEMCTL" --user --no-block restart \ + armada-odin3-audio-hotplug.service; then + mv -fT "$pending" "$trigger" + exit 1 +fi diff --git a/tests/odin3-audio-hotplug-test.py b/tests/odin3-audio-hotplug-test.py index efb6f56b..4da1d342 100755 --- a/tests/odin3-audio-hotplug-test.py +++ b/tests/odin3-audio-hotplug-test.py @@ -94,9 +94,37 @@ def save(self, value: str) -> None: self.saved.append(value) -def snapshot(default: str, *externals: dict, inputs=(7, 8), card=None): +class FakeRuntime: + def __init__(self, pending: str | None = None) -> None: + self.pending = pending + self.active: str | None = None + self.recorded: list[str] = [] + self.cleared = 0 + + def record_active(self, value: str) -> None: + self.active = value if value in hotplug.INTERNAL_SINKS else None + self.recorded.append(value) + + def load_pending(self) -> str | None: + return self.pending + + def clear_pending(self) -> None: + self.pending = None + self.cleared += 1 + + +def snapshot( + default: str, + *externals: dict, + inputs=(7, 8), + card=None, + internal=hotplug.INTERNAL_SINKS, +): return hotplug.Snapshot( default=default, + sinks=frozenset( + (*internal, *(item["name"] for item in externals)) + ), external={item["name"]: item for item in externals}, sink_inputs=tuple(inputs), card=card, @@ -208,11 +236,87 @@ def test_internal_hrir_playback_legs_are_never_migrated(self): class RoutingTests(unittest.TestCase): - def policy(self, pactl, choice): - policy = hotplug.HotplugPolicy(pactl, choice) + def policy(self, pactl, choice, runtime=None): + policy = hotplug.HotplugPolicy( + pactl, choice, runtime or FakeRuntime() + ) policy._notify_steam = mock.Mock() return policy + def test_pending_virtual_is_restored_before_stereo_can_be_saved(self): + pactl = FakePactl([snapshot("Stereo")]) + choice = FakeChoice("Virtual Surround Sound") + runtime = FakeRuntime("Virtual Surround Sound") + policy = self.policy(pactl, choice, runtime) + + policy.reconcile() + + self.assertIn( + ("set-default-sink", "Virtual Surround Sound"), pactl.commands + ) + self.assertIn( + ("move-sink-input", "7", "Virtual Surround Sound"), + pactl.commands, + ) + self.assertEqual(choice.saved, ["Virtual Surround Sound"]) + self.assertIsNone(runtime.pending) + self.assertEqual(runtime.cleared, 1) + self.assertEqual(runtime.active, "Virtual Surround Sound") + policy._notify_steam.assert_called_once() + + def test_failed_pending_restore_keeps_request_and_durable_choice(self): + pactl = FailFirstDefaultPactl([snapshot("Stereo")]) + choice = FakeChoice("Virtual Surround Sound") + runtime = FakeRuntime("Virtual Surround Sound") + policy = self.policy(pactl, choice, runtime) + + with self.assertRaisesRegex( + RuntimeError, "present but could not be activated" + ): + policy.reconcile() + + self.assertEqual(runtime.pending, "Virtual Surround Sound") + self.assertEqual(runtime.cleared, 0) + self.assertEqual(choice.saved, []) + policy._notify_steam.assert_not_called() + + def test_missing_virtual_keeps_guard_during_safe_stereo_fallback(self): + pactl = FakePactl( + [ + snapshot("Stereo", internal=("Stereo",)), + snapshot("Stereo"), + ] + ) + choice = FakeChoice("Virtual Surround Sound") + runtime = FakeRuntime("Virtual Surround Sound") + policy = self.policy(pactl, choice, runtime) + + policy.reconcile() + self.assertEqual(runtime.pending, "Virtual Surround Sound") + self.assertEqual(choice.saved, []) + self.assertEqual(choice.value, "Virtual Surround Sound") + self.assertEqual(runtime.active, "Stereo") + self.assertIn(("move-sink-input", "7", "Stereo"), pactl.commands) + + policy.reconcile() + self.assertIsNone(runtime.pending) + self.assertEqual(choice.saved, ["Virtual Surround Sound"]) + self.assertEqual(runtime.active, "Virtual Surround Sound") + self.assertIn( + ("set-default-sink", "Virtual Surround Sound"), pactl.commands + ) + self.assertEqual(policy._notify_steam.call_count, 2) + + def test_external_active_output_is_not_recorded_as_internal(self): + runtime = FakeRuntime() + policy = self.policy( + FakePactl([snapshot(BT_ONE["name"], BT_ONE)]), + FakeChoice("Virtual Surround Sound"), + runtime, + ) + policy.reconcile() + self.assertIsNone(runtime.active) + def test_startup_external_switches_and_remembers_virtual(self): pactl = FakePactl([snapshot("Virtual Surround Sound", BT_ONE)]) choice = FakeChoice() @@ -374,7 +478,9 @@ def test_jack_profile_is_switched_before_routing(self): self.assertIn(("set-default-sink", hotplug.HEADPHONE_SINK), pactl.commands) def test_steam_retry_limit_is_reset_before_restart(self): - policy = hotplug.HotplugPolicy(FakePactl([]), FakeChoice()) + policy = hotplug.HotplugPolicy( + FakePactl([]), FakeChoice(), FakeRuntime() + ) policy._steam_is_reachable = mock.Mock(return_value=True) calls = mock.Mock() run = mock.Mock() @@ -419,6 +525,27 @@ def test_steam_retry_limit_is_reset_before_restart(self): class StateAndArtifactTests(unittest.TestCase): + def test_runtime_active_output_is_atomic_and_internal_only(self): + with tempfile.TemporaryDirectory() as temporary: + active = Path(temporary) / "active" + pending = Path(temporary) / "pending" + with mock.patch.dict( + hotplug.os.environ, + { + "ARMADA_AUDIO_ACTIVE_OUTPUT": str(active), + "ARMADA_AUDIO_RESUME_PREFERENCE": str(pending), + }, + clear=False, + ): + state = hotplug.RuntimeOutputState() + state.record_active("Virtual Surround Sound") + self.assertEqual( + active.read_text(encoding="ascii"), + "Virtual Surround Sound\n", + ) + state.record_active(BT_ONE["name"]) + self.assertFalse(active.exists()) + def test_state_is_bounded_and_atomic(self): with tempfile.TemporaryDirectory() as temporary: with mock.patch.dict( @@ -542,6 +669,9 @@ def test_helper_contains_exact_device_and_route_bounds(self): "os.replace", "effect_output.odin3_stereo", "odin3-audio-stereo-8ch-volume-v1.done", + "armada-odin3-audio-active-output", + "armada-odin3-audio-resume", + "restored pre-suspend output", ): self.assertIn(value, source) diff --git a/tests/odin3-audio-policy-test.py b/tests/odin3-audio-policy-test.py index 6049ec7d..53f83b54 100644 --- a/tests/odin3-audio-policy-test.py +++ b/tests/odin3-audio-policy-test.py @@ -41,6 +41,16 @@ STEAM_RESTORE_UNIT = ( SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-steam-restore.service" ) +RESUME_PATH_UNIT = ( + SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-resume.path" +) +RESUME_SERVICE_UNIT = ( + SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-resume.service" +) +RESUME_HELPER = SYSTEM / "usr/libexec/armada/odin3-audio-resume" +RESUME_HOOK = ( + SYSTEM / "usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume" +) HOTPLUG_UNIT = ( SYSTEM / "usr/lib/systemd/user/armada-odin3-audio-hotplug.service" ) @@ -117,10 +127,14 @@ def test_exact_packaged_artifacts_exist(self) -> None: DEFAULT, STEAM_RESTORE, HOTPLUG, + RESUME_HELPER, SETUP_UNIT, DEFAULT_UNIT, STEAM_RESTORE_UNIT, HOTPLUG_UNIT, + RESUME_PATH_UNIT, + RESUME_SERVICE_UNIT, + RESUME_HOOK, ): self.assertTrue(path.is_file(), path.relative_to(ROOT)) @@ -172,6 +186,17 @@ def test_setup_and_units_install_only_on_odin3(self) -> None: "test -f /usr/lib/systemd/user/armada-odin3-audio-steam-restore.service", vendor, ) + self.assertIn( + "test -f /usr/lib/systemd/user/armada-odin3-audio-resume.path", + vendor, + ) + self.assertIn( + "test -f /usr/lib/systemd/user/armada-odin3-audio-resume.service", + vendor, + ) + self.assertIn( + "test -x /usr/libexec/armada/odin3-audio-resume", vendor + ) self.assertIn( "test -x /usr/libexec/armada/odin3-audio-hotplug", vendor, @@ -184,6 +209,14 @@ def test_setup_and_units_install_only_on_odin3(self) -> None: "systemctl --global enable armada-odin3-audio-hotplug.service", vendor, ) + self.assertIn( + "systemctl --global enable armada-odin3-audio-resume.path", + vendor, + ) + self.assertIn( + "chmod 0755 /usr/lib/systemd/system-sleep/60-armada-odin3-audio-resume", + vendor, + ) def test_managed_link_names_are_complete(self) -> None: setup = text(SETUP) @@ -250,6 +283,47 @@ def test_steam_restore_is_bounded_exact_and_launch_triggered(self) -> None: self.assertRegex(unit, r"(?m)^StartLimitBurst=[1-9]\d*$") self.assertNotIn("[Install]", unit) + resume_path = text(RESUME_PATH_UNIT) + resume_service = text(RESUME_SERVICE_UNIT) + resume_helper = text(RESUME_HELPER) + resume_hook = text(RESUME_HOOK) + self.assertIn( + "PathExists=%t/armada-odin3-audio-resume-trigger", resume_path + ) + self.assertNotIn("PathChanged=", resume_path) + self.assertIn( + "Unit=armada-odin3-audio-resume.service", resume_path + ) + self.assertNotIn("steam-restore", resume_path) + self.assertRegex(resume_path, r"(?m)^WantedBy=default.target$") + self.assertRegex(resume_service, r"(?m)^Type=oneshot$") + self.assertIn( + "ExecStart=/usr/libexec/armada/odin3-audio-resume", + resume_service, + ) + self.assertNotIn("steam-restore", resume_service) + self.assertIn("armada-odin3-audio-resume-trigger", resume_helper) + self.assertIn("armada-odin3-audio-resume", resume_helper) + self.assertIn('mv -fT "$trigger" "$pending"', resume_helper) + self.assertIn("--user --no-block restart", resume_helper) + self.assertIn("armada-odin3-audio-hotplug.service", resume_helper) + self.assertLess( + resume_helper.index('mv -fT "$trigger" "$pending"'), + resume_helper.index("--user --no-block restart"), + ) + self.assertIn("odin3-audio-active-output", resume_hook) + self.assertIn("odin3-audio-resume-trigger", resume_hook) + self.assertNotIn("odin3-audio-speaker-default", resume_hook) + for value in ("ayn-odin-3", "AYN Odin 3", "SM8750"): + self.assertIn(value, resume_hook) + self.assertIn('choice="$pending_choice"', resume_hook) + self.assertIn("case \"${1:-}\"", resume_hook) + self.assertIn("pre)", resume_hook) + self.assertIn("post)", resume_hook) + self.assertIn("mv -fT", resume_hook) + self.assertIn('rm -f "$snapshot"', resume_hook) + self.assertIn('rm -f "$resume_marker"', resume_hook) + trigger = ( "systemctl --user --no-block restart " "armada-odin3-audio-steam-restore.service || true" diff --git a/tests/odin3-audio-resume-test.sh b/tests/odin3-audio-resume-test.sh new file mode 100644 index 00000000..64ed3e1a --- /dev/null +++ b/tests/odin3-audio-resume-test.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +readonly root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +readonly helper="$root/system_files/usr/libexec/armada/odin3-audio-resume" +readonly temporary="$(mktemp -d)" +trap 'rm -rf "$temporary"' EXIT + +device_env="$temporary/device-env" +systemctl_mock="$temporary/systemctl" +calls="$temporary/systemctl.calls" +trigger="$temporary/armada-odin3-audio-resume-trigger" +pending="$temporary/armada-odin3-audio-resume" + +cat >"$device_env" <<'EOF' +printf '%s\n' 'ARMADA_DEVICE_ID=ayn-odin-3' +printf '%s\n' "ARMADA_DEVICE_NAME='AYN Odin 3'" +printf '%s\n' 'ARMADA_SOC_CLASS=SM8750' +EOF +cat >"$systemctl_mock" <<'EOF' +#!/usr/bin/env bash +printf '%s\n' "$*" >>"$MOCK_SYSTEMCTL_CALLS" +[[ "${MOCK_SYSTEMCTL_FAIL:-0}" != 1 ]] +EOF +chmod 0755 "$systemctl_mock" + +run_helper() { + XDG_RUNTIME_DIR="$temporary" \ + ARMADA_AUDIO_DEVICE_ENV="$device_env" \ + ARMADA_AUDIO_SYSTEMCTL="$systemctl_mock" \ + MOCK_SYSTEMCTL_CALLS="$calls" \ + bash "$helper" +} + +printf '%s\n' 'Virtual Surround Sound' >"$trigger" +run_helper +[[ ! -e "$trigger" ]] +[[ "$(cat "$pending")" == 'Virtual Surround Sound' ]] +[[ "$(cat "$calls")" == \ + '--user --no-block restart armada-odin3-audio-hotplug.service' ]] + +rm -f "$pending" "$calls" +printf '%s\n' 'not-an-output' >"$trigger" +run_helper +[[ ! -e "$trigger" && ! -e "$pending" && ! -e "$calls" ]] + +printf '%s\n' 'Virtual Surround Sound' >"$trigger" +if XDG_RUNTIME_DIR="$temporary" \ + ARMADA_AUDIO_DEVICE_ENV="$device_env" \ + ARMADA_AUDIO_SYSTEMCTL="$systemctl_mock" \ + MOCK_SYSTEMCTL_CALLS="$calls" \ + MOCK_SYSTEMCTL_FAIL=1 \ + bash "$helper"; then + printf '%s\n' 'ERROR: failed systemctl restart was reported as success' >&2 + exit 1 +fi +[[ -f "$trigger" && ! -e "$pending" ]] + +printf '%s\n' 'Odin 3 audio resume helper tests passed' diff --git a/tests/odin3-audio-test.sh b/tests/odin3-audio-test.sh index b6e63167..cb6c9795 100755 --- a/tests/odin3-audio-test.sh +++ b/tests/odin3-audio-test.sh @@ -10,6 +10,7 @@ PYTHONDONTWRITEBYTECODE=1 \ python3 "$root/tests/odin3-audio-hotplug-test.py" -v PYTHONDONTWRITEBYTECODE=1 \ python3 "$root/tests/odin3-audio-steam-sync-test.py" -v +bash "$root/tests/odin3-audio-resume-test.sh" if command -v spa-json-dump >/dev/null 2>&1; then while IFS= read -r fragment; do