diff --git a/CHANGELOG.md b/CHANGELOG.md index 449e499..13fa3fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ 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.2 - 2026-09-25 + +- **fix: Steam's HDMI-CEC settings reach cecd on a first run** + - HDMI-CEC runs before Steam Machine support, which installs + steamos-manager; so steamos-manager's `configure-cecd` unit couldn't be + enabled and cecd ran without Steam's settings. Steam Machine support now + links them once steamos-manager is there. + ## 1.1.1 - 2026-09-25 - **perf: Pinned kernel before the LED driver** diff --git a/lib/cec.sh b/lib/cec.sh index 3cd367f..2b7a2bd 100644 --- a/lib/cec.sh +++ b/lib/cec.sh @@ -12,11 +12,18 @@ CEC_PKGS=(cecd cec-audio-control inputattach-cec-units) # 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 - # settings) when cecd was there at its start. - systemctl --user is-active -q steamos-manager.service 2>/dev/null && - systemctl --user restart steamos-manager.service +cec_link_steamos_manager() { + # On a Steam Machine: steamos-manager writes cecd's config from Steam's + # CEC settings (its configure-cecd unit, run before cecd), and only + # offers Steam those settings when cecd was there at its start. Also + # called by Steam Machine support, which installs steamos-manager after + # this item ran. + pacman -Q steamos-manager >/dev/null 2>&1 || return 0 + systemctl --user daemon-reload + systemctl --user enable steamos-manager-configure-cecd.service 2>/dev/null + systemctl --user start steamos-manager-configure-cecd.service 2>/dev/null + systemctl --user restart cecd.service 2>/dev/null + systemctl --user restart steamos-manager.service 2>/dev/null return 0 } @@ -71,10 +78,9 @@ cec_enable() { 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 + cec_link_steamos_manager if compgen -G "/dev/cec*" >/dev/null; then systemctl --user restart cecd.service 2>/dev/null - restart_steamos_manager ok "HDMI-CEC on ($(cd /dev && echo cec*)). Turn on CEC on your TV too (e.g. Sony: BRAVIA Sync, Samsung: Anynet+, LG: SimpLink)." else warn "No CEC device (/dev/cec*) found: your GPU may not support CEC. A USB CEC adapter" @@ -95,7 +101,8 @@ cec_disable() { state_clear cec fi sudo udevadm control --reload - restart_steamos_manager + systemctl --user is-active -q steamos-manager.service 2>/dev/null && + systemctl --user restart steamos-manager.service ok "HDMI-CEC removed." } diff --git a/lib/steam-machine.sh b/lib/steam-machine.sh index 1e7a25b..1e2d9b0 100644 --- a/lib/steam-machine.sh +++ b/lib/steam-machine.sh @@ -395,6 +395,8 @@ EOF sudo systemctl enable --now inputplumber.service sudo systemctl enable --now steamos-manager.service systemctl --user enable steamos-manager.service 2>/dev/null + # HDMI-CEC ran before this and couldn't link cecd to steamos-manager yet. + cec_status && cec_link_steamos_manager # Console-like power handling, as SteamOS's powerdevilrc (mains-power # part; there is no battery): the power button sleeps instead of showing diff --git a/steamify.sh b/steamify.sh index aedd6fa..8ad3365 100755 --- a/steamify.sh +++ b/steamify.sh @@ -15,7 +15,7 @@ set -uo pipefail # Release version, see CHANGELOG.md. -VERSION=1.1.1 +VERSION=1.1.2 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"