From 58f156c6ae728fd13b80717ebb1e6ed612a32d7b Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Fri, 25 Sep 2026 10:04:18 +0200 Subject: [PATCH 1/2] perf: Pinned kernel before the LED driver; steamos-manager after cecd With the kernel pin ticked, install 7.1.6-1 before the LED driver, so DKMS builds it once. steamos-manager checks for cecd only at its start: order it after cecd. --- CHANGELOG.md | 11 +++++++++++ lib/cec.sh | 9 +++++++++ lib/steam-machine.sh | 5 +++++ steamify.sh | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9558b23..bace610 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ All notable changes, per version and per commit. Versions follow `steamify.sh`. Versions before 0.7.0 were numbered afterwards, one per merged pull request. +## 1.1.1 - 2026-09-25 + +- **perf: Pinned kernel before the LED driver** + - With the kernel pin ticked, Steam Machine support installs kernel + 7.1.6-1 first, so DKMS builds the LED driver once, for that kernel, + instead of for the current kernel first and then again. +- **fix: steamos-manager starts after cecd** + - It checks only at its start whether cecd runs; if it was first, Steam's + HDMI-CEC settings were missing until it restarted. A drop-in + (`/etc/systemd/user/steamos-manager.service.d/`) orders it after cecd. + ## 1.1.0 - 2026-09-25 - **feat: HDMI-CEC** (experimental, on every PC; ticked by default only on a diff --git a/lib/cec.sh b/lib/cec.sh index 27388a6..3cd367f 100644 --- a/lib/cec.sh +++ b/lib/cec.sh @@ -8,6 +8,9 @@ # Sourced by steamify.sh; not meant to be run on its own. CEC_PKGS=(cecd cec-audio-control inputattach-cec-units) +# steamos-manager checks once, at its start, whether cecd runs; order it +# after cecd so it never misses it at login. +CEC_ORDER_DROPIN=/etc/systemd/user/steamos-manager.service.d/10-steamify-after-cecd.conf restart_steamos_manager() { # steamos-manager only offers its HDMI-CEC interface (Steam's CEC @@ -64,6 +67,9 @@ cec_enable() { # session, after steamos-manager wrote its config from Steam's settings. sudo udevadm control --reload sudo udevadm trigger --subsystem-match=cec --action=add + sudo mkdir -p "$(dirname "$CEC_ORDER_DROPIN")" + printf '%s\n' "# Written by Steamify: steamos-manager only sees cecd if it runs at its start." \ + '[Unit]' 'After=cecd.service' | sudo tee "$CEC_ORDER_DROPIN" >/dev/null systemctl --user daemon-reload systemctl --user enable steamos-manager-configure-cecd.service 2>/dev/null if compgen -G "/dev/cec*" >/dev/null; then @@ -81,6 +87,9 @@ cec_disable() { systemctl --user disable --now cecd.service cec-audio-control.socket cec-audio-control.service 2>/dev/null systemctl --user disable steamos-manager-configure-cecd.service 2>/dev/null sudo pacman -Rns --noconfirm "${CEC_PKGS[@]}" 2>/dev/null + sudo rm -f "$CEC_ORDER_DROPIN" + sudo rmdir "$(dirname "$CEC_ORDER_DROPIN")" 2>/dev/null + systemctl --user daemon-reload if [[ -n "$(state_get cec installed_linuxconsole)" ]]; then sudo pacman -Rns --noconfirm linuxconsole 2>/dev/null state_clear cec diff --git a/lib/steam-machine.sh b/lib/steam-machine.sh index 717bb2e..331648a 100644 --- a/lib/steam-machine.sh +++ b/lib/steam-machine.sh @@ -361,6 +361,11 @@ machine_status() { } machine_enable() { + # The pinned kernel first when it's wanted too, so DKMS builds the LED + # driver for it once, instead of for the current kernel and then again. + if [[ "${WANTED[kpin]:-0}" == 1 ]]; then + install_pinned_kernel || { err "Couldn't set up kernel $PINNED_KERNEL_VER."; return 1; } + fi ensure_aur_helper || { warn "Couldn't set up an AUR helper automatically. Install yay or paru, then run the wizard again."; return 1; } install_valve_led_driver || { warn "LED driver setup ran into a problem - see errors above."; return 1; } install_headers_boot_check diff --git a/steamify.sh b/steamify.sh index cefea11..aedd6fa 100755 --- a/steamify.sh +++ b/steamify.sh @@ -15,7 +15,7 @@ set -uo pipefail # Release version, see CHANGELOG.md. -VERSION=1.1.0 +VERSION=1.1.1 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" From 2aa5751ec07a0064279c73ea25f9db0983eec41a Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Fri, 25 Sep 2026 10:08:06 +0200 Subject: [PATCH 2/2] fix: No LED warnings when the kernel pin just replaced the running kernel --- CHANGELOG.md | 3 ++- lib/steam-machine.sh | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bace610..449e499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ one per merged pull request. - **perf: Pinned kernel before the LED driver** - With the kernel pin ticked, Steam Machine support installs kernel 7.1.6-1 first, so DKMS builds the LED driver once, for that kernel, - instead of for the current kernel first and then again. + instead of for the current kernel first and then again. The LED driver + then loads after the restart, which it now says instead of warning. - **fix: steamos-manager starts after cecd** - It checks only at its start whether cecd runs; if it was first, Steam's HDMI-CEC settings were missing until it restarted. A drop-in diff --git a/lib/steam-machine.sh b/lib/steam-machine.sh index 331648a..1e7a25b 100644 --- a/lib/steam-machine.sh +++ b/lib/steam-machine.sh @@ -251,6 +251,13 @@ install_valve_led_driver() { # Load now, and on every boot. echo leds-valve | sudo tee /etc/modules-load.d/leds-valve.conf >/dev/null + # The running kernel was just replaced (the kernel pin): its modules are + # gone, so the driver can only load after the restart. + if [[ ! -d "/usr/lib/modules/$(uname -r)/kernel" ]]; then + ok "The LED driver loads after the restart (into the new kernel)." + return 0 + fi + info "Loading the leds-valve kernel module..." if sudo modprobe leds-valve; then ok "Module loaded."