Compare commits

...
5 Commits
Author SHA1 Message Date
theupriser 9aef0a986a Merge pull request #15 from theupriser/fix/cec-steam-settings
fix: Steam's HDMI-CEC settings reach cecd on a first run
2026-09-25 12:19:54 +02:00
theupriser f7aa2412df fix: Steam's HDMI-CEC settings reach cecd on a first run
HDMI-CEC runs before Steam Machine support, which installs steamos-manager,
so its configure-cecd unit couldn't be enabled. Link them from Steam Machine
support too.
2026-09-25 11:13:53 +02:00
theupriser 87162efaa2 Merge pull request #14 from theupriser/perf/pin-kernel-first
Perf/pin kernel first
2026-09-25 10:09:27 +02:00
theupriser c79a3bbda5 fix: No LED warnings when the kernel pin just replaced the running kernel 2026-09-25 10:08:06 +02:00
theupriser ba11f58d9e 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.
2026-09-25 10:04:18 +02:00
4 changed files with 59 additions and 9 deletions

No files matched your search

+20
View File
@@ -5,6 +5,26 @@ All notable changes, per version and per commit. Versions follow
`steamify.sh`. Versions before 0.7.0 were numbered afterwards, `steamify.sh`. Versions before 0.7.0 were numbered afterwards,
one per merged pull request. 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**
- 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. 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
(`/etc/systemd/user/steamos-manager.service.d/`) orders it after cecd.
## 1.1.0 - 2026-09-25 ## 1.1.0 - 2026-09-25
- **feat: HDMI-CEC** (experimental, on every PC; ticked by default only on a - **feat: HDMI-CEC** (experimental, on every PC; ticked by default only on a
+24 -8
View File
@@ -8,12 +8,22 @@
# Sourced by steamify.sh; not meant to be run on its own. # Sourced by steamify.sh; not meant to be run on its own.
CEC_PKGS=(cecd cec-audio-control inputattach-cec-units) 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() { cec_link_steamos_manager() {
# steamos-manager only offers its HDMI-CEC interface (Steam's CEC # On a Steam Machine: steamos-manager writes cecd's config from Steam's
# settings) when cecd was there at its start. # CEC settings (its configure-cecd unit, run before cecd), and only
systemctl --user is-active -q steamos-manager.service 2>/dev/null && # offers Steam those settings when cecd was there at its start. Also
systemctl --user restart steamos-manager.service # 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 return 0
} }
@@ -64,11 +74,13 @@ cec_enable() {
# session, after steamos-manager wrote its config from Steam's settings. # session, after steamos-manager wrote its config from Steam's settings.
sudo udevadm control --reload sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=cec --action=add 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 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 if compgen -G "/dev/cec*" >/dev/null; then
systemctl --user restart cecd.service 2>/dev/null 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)." 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 else
warn "No CEC device (/dev/cec*) found: your GPU may not support CEC. A USB CEC adapter" warn "No CEC device (/dev/cec*) found: your GPU may not support CEC. A USB CEC adapter"
@@ -81,12 +93,16 @@ cec_disable() {
systemctl --user disable --now cecd.service cec-audio-control.socket cec-audio-control.service 2>/dev/null 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 systemctl --user disable steamos-manager-configure-cecd.service 2>/dev/null
sudo pacman -Rns --noconfirm "${CEC_PKGS[@]}" 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 if [[ -n "$(state_get cec installed_linuxconsole)" ]]; then
sudo pacman -Rns --noconfirm linuxconsole 2>/dev/null sudo pacman -Rns --noconfirm linuxconsole 2>/dev/null
state_clear cec state_clear cec
fi fi
sudo udevadm control --reload 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." ok "HDMI-CEC removed."
} }
+14
View File
@@ -251,6 +251,13 @@ install_valve_led_driver() {
# Load now, and on every boot. # Load now, and on every boot.
echo leds-valve | sudo tee /etc/modules-load.d/leds-valve.conf >/dev/null 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..." info "Loading the leds-valve kernel module..."
if sudo modprobe leds-valve; then if sudo modprobe leds-valve; then
ok "Module loaded." ok "Module loaded."
@@ -361,6 +368,11 @@ machine_status() {
} }
machine_enable() { 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; } 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_valve_led_driver || { warn "LED driver setup ran into a problem - see errors above."; return 1; }
install_headers_boot_check install_headers_boot_check
@@ -383,6 +395,8 @@ EOF
sudo systemctl enable --now inputplumber.service sudo systemctl enable --now inputplumber.service
sudo systemctl enable --now steamos-manager.service sudo systemctl enable --now steamos-manager.service
systemctl --user enable steamos-manager.service 2>/dev/null 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 # Console-like power handling, as SteamOS's powerdevilrc (mains-power
# part; there is no battery): the power button sleeps instead of showing # part; there is no battery): the power button sleeps instead of showing
+1 -1
View File
@@ -15,7 +15,7 @@
set -uo pipefail set -uo pipefail
# Release version, see CHANGELOG.md. # Release version, see CHANGELOG.md.
VERSION=1.1.0 VERSION=1.1.2
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"