From 31bd80daa4613ffdee995ac27467fce5a2990806 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 11 Sep 2026 21:51:13 +0200 Subject: [PATCH] Keep the KEF LSX II LT USB sink from suspending (#11318) The speaker's USB firmware stops answering control requests when the host stops the audio stream after WirePlumber's 5 s idle suspend. The kernel then logs usb_set_interface failed (-110), clock source 1 is not valid, and cannot set freq 48000 err -110; PipeWire fails to start the sink and only a replug recovers it. On one machine this happened on six days over three weeks, up to hundreds of timeouts a day. A WirePlumber rule sets session.suspend-timeout-seconds = 0 for the KEF node only, so the stream is never stopped and the trigger never fires. Other sinks keep the default. The migration seeds the file for existing installs and restarts WirePlumber if it is running, since conf.d is only read at startup. Co-authored-by: Claude Fable 5.1 --- .../kef-lsx-no-suspend.conf | 19 +++++++++++++++++++ migrations/1789130779.sh | 9 +++++++++ 2 files changed, 28 insertions(+) create mode 100644 config/wireplumber/wireplumber.conf.d/kef-lsx-no-suspend.conf create mode 100644 migrations/1789130779.sh diff --git a/config/wireplumber/wireplumber.conf.d/kef-lsx-no-suspend.conf b/config/wireplumber/wireplumber.conf.d/kef-lsx-no-suspend.conf new file mode 100644 index 00000000..02955660 --- /dev/null +++ b/config/wireplumber/wireplumber.conf.d/kef-lsx-no-suspend.conf @@ -0,0 +1,19 @@ +## Never suspend the KEF LSX II LT USB sink. +## The speaker's USB firmware stops answering control requests when the host +## stops the stream after idle (usb_set_interface -110), and only a replug +## recovers it. Keeping the stream open avoids the trigger. + +monitor.alsa.rules = [ + { + matches = [ + { + node.name = "~alsa_output.usb-KEF_LSX_II_LT.*" + } + ] + actions = { + update-props = { + session.suspend-timeout-seconds = 0 + } + } + } +] diff --git a/migrations/1789130779.sh b/migrations/1789130779.sh new file mode 100644 index 00000000..56d9fe20 --- /dev/null +++ b/migrations/1789130779.sh @@ -0,0 +1,9 @@ +echo "Keep the KEF LSX II LT USB sink from suspending" + +conf="wireplumber/wireplumber.conf.d/kef-lsx-no-suspend.conf" + +if [[ ! -f "$HOME/.config/$conf" ]]; then + omarchy-refresh-config "$conf" + # WirePlumber only reads conf.d at startup; restart it if it is running. + systemctl --user try-restart wireplumber.service 2>/dev/null || true +fi