Polaris 1.5.0-beta.2
There’s a lot in this one, which is why it’s 1.5.0 and not 1.4.14. Mission Control is rebuilt around the game you’re playing, Steam can be driven from the couch, Steam Deck hosts on SteamOS 3.9 get their own package, PyroWave gets the bitrate it needs, and when a stream can’t work the host tells you why instead of guessing. Your settings, paired devices and Spaces keep working.
This is 1.5.0-beta.2, the second beta. The first went out as 1.4.14-beta.1, before the number changed. Coming from beta.1? The beta.2 sections come first. Sections marked beta.1 have been in since then, and all of it is new if you’re on 1.4.13. Nova’s side of these changes is in its own release notes.
Highlights
Section titled “Highlights”- Mission Control, rebuilt (beta.2). One stage for what’s playing or up next, with the game’s own Steam art, a Recent games shelf and one Diagnostics section. A sixth theme,
< Congratulations, Director >, and a console that fits phones and tablets, so far checked only in a browser emulating them. - Launch to the device in your hands (beta.2). Nova for Android opens the console as Host Console, and Launch there streams the game to that device instead of only starting it on the host.
- Steam, from the couch and on the Deck (beta.2). Desktop Steam can stay open after End Session, Nova can open or quit Steam on the host, and SteamOS 3.9 gets its own package. An app can opt in to leaving Game Mode before it launches, on SteamOS 3.9.
- Enough bitrate for PyroWave (beta.1). Advice from the model PyroWave’s author published, up to 500 Mbps set by hand, and a stream the host can’t feed is turned away before it starts, with the reason.
- Evidence, not guesses (beta.2). Fix My Stream shows the host’s own findings before a stream, Doctor names the mode a stream really uses, and a Tailscale peer readout describes the control connection, not where video goes.
- Experimental, off by default (beta.2). Source-paced VRR, which Nova doesn’t request yet, and a Recording tab that saves raw video with no audio.
New in beta.2: Mission Control and the console
Section titled “New in beta.2: Mission Control and the console”- Mission Control leads with one stage for what is happening now: the running title while you stream, or the next title while the host is idle. Behind it is the title’s own Steam background, or a softened copy of its cover when it has none, and its logo takes the place of the name when the logo reads clearly. Each state has one main action, and a reading the host didn’t send shows a dash and a reason instead of a zero. Frame health, pacing, host vitals, launch checks and session history sit in one Diagnostics section.
- Recent games is a shelf of up to eight posters under the stage. Selecting a poster features it and starts nothing; Launch on the poster starts it. To show those backgrounds and logos, the host fetches a Steam title’s missing images once, in the background, from Steam’s own image servers, never from SteamGridDB, and fetches nothing for Desktop entries or after Remove artwork.
- When Nova for Android opens the console as Host Console, the console takes Nova’s theme for that visit and hides its guide links, and Launch hands the title to Nova, which streams it to the device in your hands. Your saved theme doesn’t change.
- A sixth theme,
< Congratulations, Director >, brings Nova’s Director look to the console: near-black charcoal, warm white text, and red kept for focus and active markers. Polaris Aurora stays the default, and a theme you already chose is kept. - The console fits phones and tablets in portrait and landscape, and with doubled text: the sidebar becomes a drawer whenever the page is narrow, and the theme picker stays on screen. This was checked in a browser emulating those screens, not yet on a physical phone or tablet.
- Library rows get a Launch button, poster fallbacks and Move up/down, and secondary text is easier to read.
- Settings says what Save changes, when a restart is needed and that restarting disconnects streams, and keeps edits made while a save is in flight. PyroWave gets one card above Encoder Profiles with availability, requested and encoded bitrate, and the encoder input route. Launch cards name the provider and what happens to your physical screen.
New in beta.2: Steam and the Steam Deck
Section titled “New in beta.2: Steam and the Steam Deck”- Desktop Steam can stay open after End Session. Settings has Keep Desktop Steam Running After End Session, each app can inherit it, keep Steam or close it, and End Session then closes only the game that stream launched. A Steam and games that were already open stay yours.
- Nova can open Steam, open Big Picture or ask Steam to quit on the host, from its PC menu or Command Center. Quitting with a game running asks first. Viewers, another client’s session, private runtimes and Game Mode are refused.
- SteamOS 3.9 gets its own package,
Polaris-steamos3.9-x86_64.pkg.tar.zst, with its own capture helper and debug symbols, because SteamOS 3.9 can’t load the 3.8 package’s libraries. Each SteamOS package now refuses to install on the other release, and the Update Center picks the one for the release your Deck runs. - An app can opt in to leaving Steam Deck Game Mode for Desktop Mode before its private launch, and go back when the session ends or the launch fails. Off unless set per app. It needs SteamOS Manager 26.4.1, which ships with SteamOS 3.9; on SteamOS 3.8 an opted-in launch is refused before anything changes. See the SteamOS guide. (#792)
New in beta.2: evidence before guesses
Section titled “New in beta.2: evidence before guesses”- Before a stream, Fix My Stream shows the host’s own configuration findings: a saved KMS capture a Private Stream sets aside, a configured mode this host can’t enter and why, and the last stream’s capture findings marked unverified until the next one.
- Doctor shows the mode the running stream really uses, with the host default named separately, so a per-game Mirror Desktop no longer reads as Private Stream. Its pacing advice stops telling everyone to turn VRR off and asks about the game’s frame cap and capture timing first. On Game Mode it reports the compositor’s adaptive-sync feedback as an aged observation, not a current state.
- Doctor stops guessing Tailscale from an address. A Tailscale peer readout asks your local tailscaled whether the connected client is a peer, and whether its control connection is direct, through DERP or through a peer relay. Nova for Android shows the same reading. It describes the control connection, not where video and audio go.
- Stream stats and Doctor’s advanced evidence keep a short history of Live Tuning’s decisions, what the encoder confirmed, and the client’s media report intervals and cadence, so a change that reverses between polls is still visible.
New in beta.2: experimental, off by default
Section titled “New in beta.2: experimental, off by default”- Allow source-paced VRR (experimental) under Audio/Video, Stream pacing, off by default. With it on, a client that asks for VRR on a Private Stream gets frames paced from the game’s own clock when the capture route can prove its timing, and a fixed grid with a named reason when it can’t. Settings shows each client’s requested and effective pacing. The cadence that reaches a display hasn’t been measured yet, and Nova does not request VRR yet. Nonary’s VRR work in Moonlight is the design this follows.
- Host & Runtime has a Recording tab: Off, which is the default, Manual continuous, or a Replay buffer that keeps the last minutes of one stream in memory until a host admin saves it. Files are raw
.h264or.hevcvideo with no audio or container;ffmpeg -i clip.hevc -c copy clip.mkvwraps one in a container. Playback isn’t qualified yet. Each paired device gets an Approve recordings for this device switch that is stored for later and changes nothing yet.
Fixed in beta.2
Section titled “Fixed in beta.2”- An idle host says Waiting for a stream instead of Needs attention, and the post-session report labels captured quality as historical, blames no client by default, and shows nothing where it has no measurement.
- End Session no longer stalls the console: stream stats and the app list answer during teardown instead of waiting behind cleanup, and Library and Dashboard pause Launch and Stop while the running app is unknown.
- An encoder that fails to start, like NVENC with no VRAM left, stops after a bounded run of attempts instead of retrying 99 times in eleven seconds while the client waits.
- GPU-native DMA-BUF capture keeps a buffer’s lease alive while a conversion still uses it, and releases a lease the GPU queue refused for lack of memory instead of holding it until teardown.
- Gamescope cleanup inside a PID namespace, Spaces included, no longer reads a process group id of 1 as missing.
- Troubleshooting’s Detect and Test rumble pick up a controller plugged in after the page opened and say why rumble is unavailable. Settings search takes Enter and Escape and opens the matching collapsed section.
- A huge client media timestamp gap no longer slips past the five-second coverage check and publishes loss evidence that had no coverage.
- The timing benchmark forgets raw samples thirty minutes after a run ends, lets a reconnected device start a new run instead of being blocked by its old one, and refuses a start for a session generation that’s gone.
- From-source builds in a warm CMake tree pick up a new prepared FFmpeg pin instead of downloading the old archive and failing the hash check, and a tag or URL you typed yourself stays what you typed. (#791)
- Ending a stream from Moonlight no longer times out after 30 seconds when the stream has its own private session. Polaris answers End first and then stops the session; until that cleanup finishes, the host says so and holds new launches back.
- With headless boot on, the Polaris service skips its desktop tray, so closing Desktop Mode no longer ends the host through the tray and makes the service restart.
- A SteamOS HEVC check that gets back video Polaris can’t read no longer offers HEVC, and a failed HEVC check takes HDR HEVC with it. On the Steam Deck tested, the host offered H.264 only; making HEVC work there is still open.
- Doctor no longer counts Nova’s PyroWave CPU call time as decode latency, or frames handed to the screen as frames shown. Those readings stay unavailable, including from older Nova builds, and Doctor needs two windows that both have them before it judges a stream or offers a change.
- Leave Game Mode Before Launch got the fixes its first Deck runs found. It reads SteamOS Manager from SteamOS’s own package database, waits until the new desktop is really there before launching, checks desktop Steam again just before the launch and refuses a private Steam that already quit, waits for a Steam that is still starting before asking it to close, without starting a new one, and stops the stream’s media before a Close from the console returns the Deck to Game Mode.
From beta.1: PyroWave gets the bits it needs
Section titled “From beta.1: PyroWave gets the bits it needs”It’s a hungry codec. Now the host knows how hungry.
- Polaris carries the bitrate model PyroWave’s author published. For a TV or monitor it aims for what the author calls good quality, and for the device’s own screen a lower target, matched to what looked right on a Retroid Pocket 6. At 1920x1080 and 60 fps in 4:2:0 that’s about 101 Mbps on the device’s own screen and 246 on a TV or monitor (109 and 298 in 4:4:4), at the default 10% FEC with stereo audio.
- When a PyroWave stream runs more than a tenth below the lower of those figures and the network is clean, Doctor offers to raise it in guarded steps, with Undo. Apart from Live Tuning lifting a request below
adaptive_bitrate_min(2 Mbps by default) to that floor, it’s the only thing that goes above the bitrate you asked for, and never past 300 Mbps or yourmax_bitrate. With Live Tuning on, which is the default, Doctor says what to set instead. This is the clean-network PyroWave quality raise, separate from the sustained-loss recovery step below. - Doctor quotes one figure: the bitrate to set in your client, FEC and audio included. With Live Tuning on it names the live bitrate instead, a little lower, because a live change skips the FEC and audio. Control on the Retroid Pocket 6 at 1920x1080, 120 fps and 4:4:4 looked right at 200 Mbps. The figure there is 215, so 200 reads healthy.
- Where 300 Mbps or your
max_bitrateis less than PyroWave asks, as at 3840x2160 and 120 fps in 4:4:4 on the device’s own screen, and most frames still fill the codec’s byte budget, Doctor says so and suggests a lower resolution or frame rate, or HEVC. If only Doctor’s 300 stands in the way, it adds that you can set more yourself. - Polaris takes a bitrate you set yourself up to 500 Mbps now, up from 300, and tells your client it does. Doctor’s raise, and anything else Polaris recommends on its own, still stops at 300.
- The Stability preset, a device profile and a saved paired profile stop capping a PyroWave request to H.264 sizes. Only
max_bitratedoes, and the log names any cap that applied. - Live Tuning stops at half the advice, and Doctor suggests HEVC or a lower mode from there.
- In Nova’s 1.5.0 beta, the handheld target is 31 dB too: at 1920x1080, 120 fps and 4:4:4 the request is about 214.9 Mbps, or 192.4 Mbps of video after the default FEC and stereo audio. Auto and Use recommended stay at or below 300 Mbps. A bitrate you enter yourself can reach the host’s advertised 500 Mbps limit; an older host that does not advertise it keeps the 300 Mbps limit. This is advice for that picture and link, not a promise that Wi-Fi can carry it.
- A client can see how your bitrate splits on any codec, not just PyroWave: what you asked for, any cap the host put on it, what the encoder gets, what it runs at right now, and the audio and FEC around it. PyroWave advice asked for during a stream counts that stream’s own audio too, so 5.1 asks a little more than stereo.
From beta.1: turned away up front, with a reason
Section titled “From beta.1: turned away up front, with a reason”A stream that can’t work shouldn’t connect and then show you nothing.
- Host Virtual Display no longer looks available on GNOME Wayland just because EVDI can add a connector. Polaris also checks that it can capture that exact screen. A forced or stale choice is turned away with the reason before adding a display. Use Mirror Desktop for the existing GNOME desktop, or Private Stream for an app on its own screen. GNOME virtual-screen streaming is not added in this release.
- On a KDE desktop in HDR with
capture = kms, PyroWave used to connect and carry nothing, because it can’t read the sixteen bit float KWin scans out. Now the host refuses it before the stream, and tells a client that names its codec at launch what to do instead. Private Stream captures its own session, so it keeps offering PyroWave. capture = nvfbcrefuses PyroWave by name too, and so does a second stream that would share the host’s one capture with another codec, which used to get no picture.- A client that leaves during video setup, like one whose GPU can’t run PyroWave, gets named: for fifteen minutes Doctor and the support report lead with the failed start and a next step, not two
Initial Ping Timeouterrors.
From beta.1: no more falling back in silence
Section titled “From beta.1: no more falling back in silence”- When a stream mode or host rule sets your capture backend aside, the log says which mode, what you chose and for how long.
- The System page has a Capture row under Host Now: where DRM/KMS capture stands for the capture this host is really set to, and the one step still missing, with a Copy button.
- Doctor’s network-path check tells you what it tested. A check the host runs against itself covers local listeners and UDP hints, not the streaming device’s loss, latency or bitrate ceiling. Missing client measurements stay unavailable; another stream’s readings are not a clean bill of health for yours.
- Settings > Encoder Profiles has PyroWave and 4:4:4 rows: whether this host can stream PyroWave, why not when it can’t and which launches it turns away, the advice and what it assumes while a PyroWave stream runs, and which encoder here gives you 4:4:4.
- A settings file Polaris won’t read says why, in the log and the console, with the fix. Settings used to sit on its loading placeholder.
From beta.1: clearer for Moonlight players
Section titled “From beta.1: clearer for Moonlight players”- Moonlight players can opt in to Close Steam on the host to start games for each paired device. It is off by default, asks desktop Steam to quit before a private Steam launch, and refuses the launch if Steam does not finish closing. It leaves SteamOS Game Mode and unsaved game state alone. Nova for Android keeps asking the player at launch. (#797)
- Each app has a Launch as setting, so a Moonlight library can mix a private game, your real desktop and a desktop on a screen of its own. It replaces Mirror the host desktop and Always create Virtual Display, which did nothing on a Private Stream host and left you in an empty session. A mode the host can’t run is greyed out, and a launch that needs it is turned away with the reason.
- Refusals Moonlight shows word for word name the setting to change, instead of sending you to Nova.
- Mission Control says whether each live stream is Nova or Moonlight / Artemis.
- Session Snapshot on Doctor & Support has a Client type tile, Nova or Moonlight / Artemis (the host can’t tell those two apart), and for Moonlight or Artemis it says what that player can’t use.
- The compatibility guide has one table of what each client gets, and what the host can set for a Moonlight player instead.
Fixed in beta.1
Section titled “Fixed in beta.1”Squashed.
- Desktop Takeover on Hyprland supports the Lua dispatcher interface and restores monitor power even when the desktop has no windows to move. The existing special-workspace safety checks stay in place. (#783)
- With HEVC or AV1 set to Auto, Nova now sees the codecs Polaris detected as available. The paired capability list used the Auto setting itself instead of the encoder result, so a working codec could appear Unavailable before launch. A codec that is disabled or fails its encoder check remains unavailable.
- If End game cannot finish cleaning up a Host Virtual Display session, Polaris keeps its virtual screen and session owner available for another End attempt. Removing the screen first could move a surviving game to your physical monitor. This safeguard also keeps the session when screen removal fails; it does not make an unverified Heroic process safe to terminate. Private Stream keeps its existing shutdown route.
- The mouse lands where you point on a desktop with a rotated or scaled monitor, with wlroots capture, and with KMS capture when Wayland names every output KMS sees. Polaris measured your desktop by each monitor’s resolution before rotation, so a 1920x1080 monitor turned to portrait counted as 1920 wide and 1080 tall instead of 1080 wide and 1920 tall, and the pointer landed off from where you aimed. It measures each monitor the way your compositor lays it out now, and on a HiDPI monitor the pointer still reaches every pixel. This applies when the monitor you stream is not itself rotated 90 or 270 degrees. Streaming a rotated monitor itself behaves as in 1.4.13: its picture looks as it did, usually sideways, and the pointer lands where it did, and a later fix will turn that picture upright. On other streams, touch and pen use the corrected desktop size too, but still leave out where the streamed monitor sits on your desktop. Thanks to ertywastaken, who tracked down the cause (#793).
- Streaming a monitor that sits right of or below another puts the pointer on that monitor, not on the one in the corner of your desktop. This is for wlroots, KMS and X11 capture, NvFBC included. With wlroots or KMS, streaming a monitor rotated 90 or 270 degrees keeps its 1.4.13 input mapping. Portal and KWin capture work as before.
- Doctor holds its verdict. It graded the network one second at a time, so over Wi-Fi the same stream could read as under network pressure and as fine a few seconds apart. It now judges video frame loss and round trip time over the last 20 seconds, calls loss network pressure at 2% and clears it below 1%. Doctor, the Dashboard’s Loss tile and chart, Fix My Stream and the post-session report quote that one figure: the share of video frames that never arrived whole after FEC. With Live Tuning on and loss at that level, Doctor now offers to lower your bitrate one step, with Undo. Taking it turns Live Tuning off for that stream until you undo it, it rolls back, or the stream ends. This is a separate recovery step for sustained media loss, not an automatic PyroWave quality raise. Live Tuning’s own loss handling is unchanged in this release.
- Gamescope Stream starts again on the gamescope your system ships, SteamOS’s included. Since 1.4.12 Polaris asked gamescope to draw the pointer into the stream with an option only Polaris’s own gamescope build has, and a stock gamescope quit on it, so every launch failed. Polaris now checks first and leaves the option out when your gamescope doesn’t have it. Those streams show no pointer, as before 1.4.12. On 1.4.12 and 1.4.13, add
Environment=POLARIS_GAMESCOPE_COMPOSITE_CURSOR=0under[Service]withsystemctl --user edit polarisand restart the service. sudo -H polaris --setup-host --enable-kmsno longer leaves the service unable to start until your next login: it waits for that login, says so, and a second run finishes the job.- Doctor and the Update Center stop calling the
polaris-kmshelper a stale copy, and with betas on and nothing newer out, the Update Center says so. - On Fedora, removing only
polaris-kmskeeps your Spaces setup. The helper ran the main package’s removal step, and every update printed the install message twice. On 1.4.13, update before you remove the helper. - The Ubuntu package depends on PipeWire’s client library now. Without it, on a minimal Ubuntu 24.04, every
polariscommand stopped. On 1.4.13,sudo apt install libpipewire-0.3-0t64fixes it. - The first Space for a launcher works on Docker’s containerd image store, the default on a fresh Docker 29, and a failed Space create names its cause in the host log.
- NVENC with
nvenc_vbv_increaseat 258% or more no longer overflows its buffer at 500 Mbps. - Polaris removes the filler AMD drivers add to H.264 and HEVC at constant bitrate, rather than sending padding the client throws away. In the earlier RX 7900 XTX encoder-output tests, a synthetic still screen at 1080p60 fell from 20 Mbps to about 0.04 Mbps with identical decoded pictures. That was a test of driver output, not a live game-stream measurement or a promise for every AMD card.
- Clients on Tailscale, WireGuard or another tunnel with no MAC of its own now learn the host’s MAC for Wake-on-LAN. Whether a magic packet from outside reaches a sleeping host still depends on your network.
- Private Stream asks the game’s owned windows to close before stopping its display, then waits before escalating to process termination. An already-open desktop app is not signalled. This keeps the existing private-session route; it is not a guarantee that every launcher can close its game cleanly.
- Desktop Takeover on Hyprland no longer hands hyprctl a special workspace name it would read as a different request, like one holding
/--batch. That workspace stays where it is, and the host log says why.
Shipped in 1.4.13, announced now
Section titled “Shipped in 1.4.13, announced now”Its notes forgot these. Sorry about that!
- Peers in the shared
100.64.0.0/10range, Tailscale’s included, get the WAN policy: a LAN-only web console or Browser Stream refuses them, and streaming useswan_encryption_mode. Pairings are kept. - Heroic finds installed Amazon and sideloaded games, and earlier Heroic imports report their platform and runtime without a re-import.
- Doctor & Support has a Spaces checks section, collapsed until you open it, and Mission Control shows running Space sessions.
- Arch and SteamOS releases carry matching debug packages.
Experimental and known limits
Section titled “Experimental and known limits”- Source-paced VRR and Leave Game Mode Before Launch are default-off opt-ins with limited hands-on checks, not wide testing. Turn them on to help test, and expect a named fallback.
- For source-paced VRR, a Moonlight build that asks for VRR reported it on against a KDE host, and KWin ran adaptive sync on that output. The display’s own refresh readout and a frame-by-frame timing trace weren’t recorded, so the cadence it delivers isn’t measured yet. Nova does not request VRR yet.
- For Leave Game Mode, checks on a docked Steam Deck OLED on SteamOS 3.9.2 covered an opted-in launch from Moonlight on a PC, five minutes of picture, sound and controls, and reconnects. The gameplay hold and reconnects ran on an earlier beta.2 build; after the fixes, the updated build passed a separate focused End check that returned the Deck to Game Mode without a manual switch. A failed launch was also checked for return to Game Mode. The observed streams ran H.264 at about 60 fps; HEVC, 120 fps and HDR on the Deck, and other devices, are not checked.
- On the Steam Deck tested as a host, Polaris offered H.264 only. Making HEVC work there is still open.
- Recording is experimental and host only: raw video, no audio or timestamps, 128 MiB or 32,768 packets per replay buffer, and a buffer that empties when its first keyframe expires with no later one. Playback is not qualified.
- The Tailscale peer readout describes the control connection and the stream’s matching peer; it doesn’t verify where video and audio travel. Its direct, relay and split-tunnel cases haven’t been tried on real networks yet.
- The console’s phone and tablet layout was checked in a browser emulating those screens, not on a physical phone or tablet.
- Heroic games on Host Virtual Display still have an unresolved shutdown limitation: Polaris may not be able to prove which game processes it can stop. The display and owner are kept when cleanup is unconfirmed, so you can close the game yourself and try End game again. An accepted End game request is not proof that the game quit. Private Stream remains the recommended default; this update does not switch an existing host’s chosen mode.
- In testing, the
polaris-kmscapture helper crashed once while a Private Stream was stopping. The cause is still being investigated. - The PyroWave advice is an objective metric on four game clips. The device’s own screen figure is matched to one check on a Retroid Pocket 6, the TV figure hasn’t been checked on a big screen yet, and Doctor’s 300 Mbps ceiling may move.
- Live Tuning’s own loss handling is still 1.4.13’s; its redesign is planned for a later feature release. Doctor’s sustained-loss step from beta.1 is unchanged.
Heads up before you update
Section titled “Heads up before you update”Here’s what changes under you.
- Games you imported from Steam, Lutris, Heroic or a ROM folder had Always create Virtual Display on without you setting it. They’re Host default now, and so is any app with a Steam app id, so on a host whose mode isn’t Private Stream they follow that mode instead of getting a virtual display. Set Launch as to Host Virtual Display on any that should keep one.
- On AMD, Auto now tries Vulkan Video first on Gamescope Stream through the portal. A historical report on an RX 9070 XT at 4K60 measured host processing latency of 9 ms with Vulkan Video and 16 ms with VA-API. These are that tester’s readings, not a new beta benchmark or an encoder-only measurement. It costs AV1 and HDR there, and a client that picked AV1 fails as it starts when its launch switches into Gamescope Stream from another mode.
encoder = vaapiorav1_mode = 2keeps VA-API. capture = kwinnow captures through the portal, andcapture = drmthrough KMS. Both used to take whatever the automatic check found.adaptive_bitrate_maxlimits nothing now. With Live Tuning on, its 100 Mbps default cut every stream encoding above that for good, PyroWave included. It still loads, with a warning: move a cap you relied on tomax_bitrate, which now caps live changes too.- A live bitrate set by hand turns Live Tuning off for that stream only, not for every stream after.
- The bitrate in your client includes FEC, audio and packet overhead; the encoder’s live video rate does not. Nova uses the host’s split to convert between them when it is known. If the split is unavailable, the UI keeps the available video or unknown units instead of inventing a request. For example, a 500 Mbps request at the default 10% FEC with stereo audio leaves about 449 Mbps for video. A raw live-bitrate API write uses video units, so it is not the same number.
- Every package builds Polaris with link time optimisation again, as before 1.4.13. Tell us if one misbehaves where 1.4.13 didn’t.
- A host on 1.4.14-beta.1 updates to 1.5.0-beta.2 the ordinary way, and the Update Center offers it with betas on. Betas sort below their release (
1.5.0~beta.2in RPM and DEB,1.5.0beta.2in pacman), so the release replaces a beta through an ordinary upgrade.polaris-kmsneeds its exact Polaris: install both files in one command.
Install (Fedora 44, Arch / CachyOS, Ubuntu 24.04, SteamOS 3.8 and 3.9)
The signed package repositories serve stable releases. To try beta.2, use its attached packages below. If polaris-kms is already installed, download its matching beta package too and install both in the same command; the helper requires the exact Polaris version.
Fedora 44
Section titled “Fedora 44”wget --output-document=./Polaris-fedora44-x86_64.rpm https://github.com/papi-ux/polaris/releases/download/v1.5.0-beta.2/Polaris-fedora44-x86_64.rpm &&sudo dnf install "./Polaris-fedora44-x86_64.rpm" &&sudo -H polaris --setup-host &&systemctl --user restart polarisArch Linux / CachyOS
Section titled “Arch Linux / CachyOS”wget --output-document=./Polaris-arch-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.5.0-beta.2/Polaris-arch-x86_64.pkg.tar.zst &&sudo pacman -U ./Polaris-arch-x86_64.pkg.tar.zst &&sudo -H polaris --setup-host &&systemctl --user restart polarisUbuntu 24.04
Section titled “Ubuntu 24.04”wget --output-document=./Polaris-ubuntu24.04-x86_64.deb https://github.com/papi-ux/polaris/releases/download/v1.5.0-beta.2/Polaris-ubuntu24.04-x86_64.deb &&sudo apt install ./Polaris-ubuntu24.04-x86_64.deb &&sudo -H polaris --setup-host &&systemctl --user restart polarisSteamOS 3.8
Section titled “SteamOS 3.8”Run this in Desktop Mode. It sets up the package keyring when needed and restores the read-only root before starting Polaris.
wget --output-document=./Polaris-steamos3.8-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.5.0-beta.2/Polaris-steamos3.8-x86_64.pkg.tar.zst &&(set -etrap 'sudo steamos-readonly enable' EXITsudo steamos-readonly disable || exit $?sudo pacman-key --init || exit $?sudo pacman-key --populate || exit $?sudo pacman -Sy || exit $?sudo pacman -U ./Polaris-steamos3.8-x86_64.pkg.tar.zst || exit $?sudo -H polaris --setup-host --enable-headless-boot || exit $?sudo steamos-readonly enable || exit $?trap - EXIT) &&systemctl --user enable --now polarisSteamOS 3.9
Section titled “SteamOS 3.9”The same steps with the 3.9 package. Install the package for the release your Deck runs, which VERSION_ID in /etc/os-release names.
wget --output-document=./Polaris-steamos3.9-x86_64.pkg.tar.zst https://github.com/papi-ux/polaris/releases/download/v1.5.0-beta.2/Polaris-steamos3.9-x86_64.pkg.tar.zst &&(set -etrap 'sudo steamos-readonly enable' EXITsudo steamos-readonly disable || exit $?sudo pacman-key --init || exit $?sudo pacman-key --populate || exit $?sudo pacman -Sy || exit $?sudo pacman -U ./Polaris-steamos3.9-x86_64.pkg.tar.zst || exit $?sudo -H polaris --setup-host --enable-headless-boot || exit $?sudo steamos-readonly enable || exit $?trap - EXIT) &&systemctl --user enable --now polarisUpdating an existing DRM/KMS installation
Section titled “Updating an existing DRM/KMS installation”Download the matching Polaris-kms asset alongside the main package. Install the pair together, then restart Polaris. Use the same platform and beta tag for both files:
# Fedora 44sudo dnf install ./Polaris-fedora44-x86_64.rpm ./Polaris-kms-fedora44-x86_64.rpm
# Arch Linux / CachyOSsudo pacman -U ./Polaris-arch-x86_64.pkg.tar.zst ./Polaris-kms-arch-x86_64.pkg.tar.zst
# Ubuntu 24.04sudo apt install ./Polaris-ubuntu24.04-x86_64.deb ./Polaris-kms-ubuntu24.04-x86_64.debOn SteamOS, put the main package and its Polaris-kms package for the same release in the pacman -U line inside the read-only-root block above: Polaris-steamos3.8-x86_64.pkg.tar.zst with Polaris-kms-steamos3.8-x86_64.pkg.tar.zst, or Polaris-steamos3.9-x86_64.pkg.tar.zst with Polaris-kms-steamos3.9-x86_64.pkg.tar.zst. Installing the helper for the first time is optional; follow the KMS setup guide if you need that capture route.
Bazzite users should follow the Bazzite guide and use the Fedora RPM through rpm-ostree. The site’s SteamOS guide describes stable 1.4.13 on SteamOS 3.8, including keeping Polaris running in Game Mode. This beta’s SteamOS guide covers both 3.8 and 3.9.
Assets: Polaris-fedora44-x86_64.rpm · Polaris-arch-x86_64.pkg.tar.zst · Polaris-ubuntu24.04-x86_64.deb · Polaris-steamos3.8-x86_64.pkg.tar.zst · Polaris-steamos3.9-x86_64.pkg.tar.zst
DRM/KMS capture, only if you use it: Polaris-kms-fedora44-x86_64.rpm · Polaris-kms-arch-x86_64.pkg.tar.zst · Polaris-kms-ubuntu24.04-x86_64.deb · Polaris-kms-steamos3.8-x86_64.pkg.tar.zst · Polaris-kms-steamos3.9-x86_64.pkg.tar.zst
Debug symbols, for crash reports: Polaris-debug-arch-x86_64.pkg.tar.zst · Polaris-debug-steamos3.8-x86_64.pkg.tar.zst · Polaris-debug-steamos3.9-x86_64.pkg.tar.zst