From 19ca966913c6c86d6a2bffb0aa8acb30f57d1162 Mon Sep 17 00:00:00 2001 From: rickpeters Date: Sun, 27 Sep 2026 12:25:08 +0200 Subject: [PATCH] docs: Drop the kernel pin and HDMI refresh boost descriptions --- README.md | 10 ----- TECHNICAL.md | 85 +---------------------------------------- lib/fremont-poweroff.sh | 3 +- lib/menu.sh | 2 +- ui/qml/Main.qml | 4 +- 5 files changed, 5 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index e1fff15..eb08c43 100644 --- a/README.md +++ b/README.md @@ -48,16 +48,6 @@ What Steamify can do on a Valve Steam Machine: - **Power-off fix** - on by default: shutting down really turns the Steam Machine off, also with the newest CachyOS kernel ([details](TECHNICAL.md#power-off-fix-steam-machine)). - - **Pin the kernel to 7.1.6-1** - no longer offered: it was needed for - shutting down, which the power-off fix above covers now. An existing pin - is shown unticked, so the next run removes it and brings back CachyOS's - current kernel ([details](TECHNICAL.md#kernel-pin-steam-machine)). - - **HDMI refresh boost** - only with the pinned kernel, never ticked by - default: gets the highest refresh rate your HDMI display runs at the - desktop resolution (e.g. 110 Hz instead of 60 on a 3440x1440 monitor). - Each step is shown and you confirm it; no answer within 15 s switches - back. For more (e.g. 175 Hz), use DisplayPort - ([details](TECHNICAL.md#hdmi-refresh-boost-steam-machine)). - **Update BIOS** - installs Valve's newest Steam Machine BIOS. Never ticked by default, at your own risk, and only after two warnings ([details](TECHNICAL.md#bios-updates-steam-machine)). diff --git a/TECHNICAL.md b/TECHNICAL.md index c973843..3e2d66b 100644 --- a/TECHNICAL.md +++ b/TECHNICAL.md @@ -253,88 +253,6 @@ on the system itself; the version only decides about updates: Bump a component's number whenever what its `_enable` sets up changes. -## Kernel pin (Steam Machine) - -With CachyOS kernels newer than 7.1.6 a Steam Machine rebooted instead of -shutting down; the power-off fix above handles that now. Since 2.2.0 the -**Pin the kernel** sub-option is no longer offered. A pin that's still -there is shown unticked, so a normal run (after the review) removes it and -brings back CachyOS's current kernel; HDMI refresh boost, which needs the -pinned kernel, is unticked with it. The pin installed `linux-cachyos` and -`linux-cachyos-headers` 7.1.6-1 and added them to `IgnorePkg` in -`/etc/pacman.conf`, so updates skipped them. - -The packages (and their signatures, which pacman checks) are kept in -`/var/cache/steamify/kernel`, so re-applying needs no download. Missing -files are taken from pacman's cache, else downloaded from this repo's -`kernel-7.1.6-1` release, then `archive.cachyos.org`, then -`mirror.cachyos.org` (which only has the current kernel). Every file must -match the SHA-256 in the script and have a valid CachyOS signature; a bad -one is deleted, so the next run downloads it again. Set `PINNED_KERNEL_URL` -to a directory URL with the files to try another source first, or drop them -into the kernel directory yourself. - -Unticking it removes the pin and runs `sudo pacman -Syu`, which brings the -kernel back to CachyOS's current version; the files stay for next time. - -## HDMI refresh boost (Steam Machine) - -With the pinned kernel (7.1.6), HDMI displays often stay at 60 Hz. Two -reasons: - -- Monitors list their fast modes in an extra EDID block, announced by the - HDMI Forum EEODB data block. 7.1.6 only reads the first extension block, - so it never sees them. Newer kernels do. -- Their fastest modes need HDMI 2.1 (FRL). 7.1.6's amdgpu only does HDMI - 2.0 (TMDS, at most 600 MHz), but a mode with the display's own shortest - blanking at a slightly lower rate often fits. - -The menu item (only on a Steam Machine with the pinned kernel, never -ticked by default, run from the desktop in Konsole): - -1. Takes the desktop resolution from KDE (`kscreen-doctor -j`) and reads the - display's complete EDID over DDC (`i2ctransfer`, segment pointer 0x30). - A live EDID left by an earlier test is cleared first. -2. Calculates the highest rate that fits: the display's TMDS limit (HDMI - Forum VSDB, capped at amdgpu's 600 MHz), its shortest blanking at that - resolution and its maximum refresh (range limits, VRR maximum). Steps: - that rate rounded down to ten, and the hundred below it as a safe option. - Rates the display already lists, or that aren't faster than what works - now, are left out. -3. Builds the EDID: all of the display's blocks, the block count and EEODB - fixed, plus a DisplayID block with the steps. -4. Loads it live (debugfs `edid_override`, `trigger_hotplug`) and switches - to each step, lowest first. Each one needs a "y" within 15 s - (`WIZARD_HDMI_CONFIRM_SECONDS` for tests); anything else switches back - and stops. -5. Saves the confirmed steps for that display: the EDID as - `/usr/lib/firmware/edid/steamify-.bin`, where `` is the display's - manufacturer, model, serial and date (EDID bytes 8-17), and a line in - `/etc/steamify/hdmi-edid.conf` (id, name, mode, rates). Other saved - displays are kept. - -`steamify-edid.service` (at boot, before the login manager) and a udev rule -(`90-steamify-edid.rules`, every drm hotplug) run -`/usr/local/bin/steamify-edid-hotplug`. Per HDMI port it reads the connected -display's ID over DDC (the real display, even while an override is loaded) -and loads that display's saved EDID through debugfs, or resets the port to -the display's own EDID when there is none, or no display. What's loaded per -port is kept in `/run/steamify-edid`, so the hotplug the script triggers -itself doesn't loop. - -The item is on when the connected display runs on its saved EDID; with -another display it's off, and ticking it sets that one up. Turning it off -removes the connected display's EDID; the unit and rule go with the last -one. In the app the item is a **Set up…** button, and **Manage** once a -display is saved: it lists every saved display, removes any of them, and -sets up the connected display when it has none. Unpinning the kernel -removes them all. - -Versions before 2.1.0 used `drm.edid_firmware=` on the kernel command line -(and the initramfs), which applied to any display on that port; re-applying -saves such a setup per display and removes the parameter. Untick it before removing the -kernel pin: newer kernels read the EDID themselves and can do HDMI 2.1. - ## BIOS updates (Steam Machine) The **Update BIOS** item is only shown on a Steam Machine and is never ticked @@ -403,9 +321,8 @@ immediately, which can turn into a loop - see | `lib/wizard-shortcut.sh` | Steamify shortcut: desktop icon and launcher entry that run the newest release | | `lib/bios.sh` | Update BIOS (Steam Machine, opt-in): current/newest version, double confirmation, fwupd | | `lib/cec.sh` | HDMI-CEC: Valve's `cecd` and friends from its `holo` repository | -| `lib/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager; kernel pin | +| `lib/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager | | `lib/fremont-poweroff.sh` | Steam Machine support: the power-off fix (DKMS module from `patches/`) | -| `lib/hdmi-refresh.sh` | HDMI refresh boost (Steam Machine, pinned kernel): EDID over DDC, calculated steps, live test, per-display EDID hotplug script | | `patches/` | Module sources and patches the scripts build or apply (`patch_file`); see its README | | `.github/tools/bundle.sh` | Builds the single-file version (`dist/steamify.sh`), with `patches/` embedded | | `.github/workflows/bundle.yml` | Builds and checks it on every push; publishes it on `main` | diff --git a/lib/fremont-poweroff.sh b/lib/fremont-poweroff.sh index 7619ead..2ea8482 100644 --- a/lib/fremont-poweroff.sh +++ b/lib/fremont-poweroff.sh @@ -4,8 +4,7 @@ # booting up again. Recent kernels (7.2, and the 6.x, 7.0 and 7.1 updates # that got the change backported) keep the S4/S5 wake bit the firmware # leaves set on GPIO pin 18 ("pinctrl-amd: Don't clear S4 wake bits at -# probe"), so the machine starts again right after powering off (the reason -# for the old kernel pin). Valve's kernel clears it at probe on Fremont, in +# probe"), so the machine starts again right after powering off. Valve's kernel clears it at probe on Fremont, in # a patch not meant for upstream, so CachyOS won't get it. A small module # (patches/steamify-fremont-poweroff.c) clears it right before power-off; # DKMS builds it for each installed kernel. On a kernel that clears it diff --git a/lib/menu.sh b/lib/menu.sh index cf623e6..95f8123 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -34,7 +34,7 @@ declare -A LABEL=( [cec]="HDMI-CEC: use Steam with the TV remote, TV on/off with the PC (experimental)" [machine]="Steam Machine support: LED bar driver, hardware settings in Steam" [poweroff]="Power-off fix: the Steam Machine stays off after shutting down" - [kpin]="Pin the kernel to $PINNED_KERNEL_VER (no longer needed: untick for CachyOS's current kernel)" + [kpin]="Pin the kernel to $PINNED_KERNEL_VER (untick for CachyOS's current kernel)" [hdmi]="HDMI refresh boost: highest refresh your HDMI display runs" [bios]="Update BIOS" ) diff --git a/ui/qml/Main.qml b/ui/qml/Main.qml index d52c087..46dc0f3 100644 --- a/ui/qml/Main.qml +++ b/ui/qml/Main.qml @@ -72,8 +72,8 @@ ApplicationWindow { poweroff: { label: "Power-off fix", hint: "Stays off after shutting down", body: "With recent kernels the Steam Machine starts again right after shutting down: the firmware leaves a wake bit set, and newer kernels (7.2, and updates of 6.x, 7.0 and 7.1) no longer clear it. Valve's own kernel clears it; this small module does the same right before power-off.", changes: ["steamify-fremont-poweroff module for each installed kernel (DKMS)", "Only on a Steam Machine, only touches that one wake bit", "Off: recent kernels may start it again after shutting down"] }, - kpin: { label: "Pin the kernel", hint: "No longer needed: untick for the current kernel", - body: "Keeps the Steam Machine on CachyOS kernel 7.1.6, which older versions of Steamify needed to shut down properly. The power-off fix handles that now. Untick it to go back to CachyOS's current kernel (HDMI refresh boost goes with it: newer kernels read the display's fast modes and do HDMI 2.1 themselves).", + kpin: { label: "Pin the kernel", hint: "Untick for CachyOS's current kernel", + body: "Keeps the Steam Machine on CachyOS kernel 7.1.6. Untick it to go back to CachyOS's current kernel; HDMI refresh boost goes with it.", changes: ["linux-cachyos from Steamify's release (signature checked)", "Kept in /var/cache/steamify/kernel", "Added to IgnorePkg"] }, hdmi: { label: "HDMI refresh boost", hint: "Higher refresh rates over HDMI", body: "The pinned kernel keeps many HDMI displays at 60 Hz. Turning this on shows which refresh rates your display can run at the desktop resolution; you pick them, and each one is tried for 15 seconds so you can check the picture before it's installed.",