Files
erik 6e0f1c27db Initial commit: rtw89-steam-frame DKMS wrapper
DKMS package that fetches the in-tree rtw89 source for the target kernel,
applies the steam-frame patches, and builds/installs the patched RTL8852CU
modules for the Valve Steam Frame wireless adapter.

- dkms.conf: module list + install locations
- build.sh: fetch (gregkh/linux) + patch + build + verify
- register.sh: clone upstream patches, stage into /usr/src, dkms add/build/install

GPL-2.0-only.
2026-10-09 17:43:34 +02:00

59 lines
2.3 KiB
Markdown

<!-- SPDX-License-Identifier: GPL-2.0-only -->
# rtw89-steam-frame dkms
DKMS wrapper for the patched Realtek rtw89 driver used by the **Valve Steam Frame**
wireless adapter (`28de:2432`, RTL8852CU).
It builds the *in-tree* rtw89 source for whatever kernel you run (fetched from
`gregkh/linux`), applies the **steam-frame patches** (pulled at register time via git
from [Davenport-Physics/rtw89-steam-frame](https://github.com/Davenport-Physics/rtw89-steam-frame)),
and auto-rebuilds on every kernel upgrade through the Arch DKMS pacman hooks.
## Why
The Frame advertises a 6 GHz **VLP** power class and the stock driver honors it,
capping the dongle at 7/4 dBm (1TX/2TX) — roughly 10 dB below what the Windows driver
uses. That deficit caused MAC-layer retry storms and bursty micro-stutters in VR
streaming (see [SteamVR-for-Linux#965](https://github.com/ValveSoftware/SteamVR-for-Linux/issues/965)).
`reg6_pwr_override=1` switches the adapter to the **LPI** table (12/11 dBm at 160 MHz),
which on this system removed the missed-frame stalls even at ~1.8x the previous load.
`disable_2ghz=Y` additionally disables the useless 2.4 GHz band (and the scan-offload
USB resets associated with it).
## Install / re-register
./register.sh # As root
This clones upstream, stages `/usr/src/rtw89-steam-frame-0.1`, and runs
`dkms add/build/install` for the current kernel. After that, the Arch pacman hooks
(`/usr/share/libalpm/hooks/70-dkms-*`) rebuild it automatically on every kernel update.
Optional env overrides: `RTW89_UPSTREAM`, `RTW89_UPSTREAM_REF`, `RTW89_KVER`.
## Preconditions
- `linux-headers` installed and kept in sync with `linux`.
- Network access at (re)build time — the kernel's rtw89 source and the patches are
both fetched over HTTPS.
## Files
| file | purpose |
|---------------|---------|
| `dkms.conf` | DKMS metadata (module list, install location) |
| `build.sh` | DKMS build step: fetch rtw89 for `$kernelver`, patch, build, verify |
| `register.sh` | pull upstream patches via git, stage, `dkms add/build/install` |
## Module parameters
Add this to `modprobe.d`, e.g. `/etc/modprobe.d/rtw89-steam-frame.conf`:
`options rtw89_core reg6_pwr_override=1 disable_2ghz=Y`
You might also want to disable advanced power management if not done so already
(also supported by in-kernel driver):
`options rtw89_core disable_ps_mode=Y`