6.1 KiB
SteamDeck 0.1.4
The main screen got its shape, the desktop can see the phone, the logs survive a crash, and the file manager is Bannerlator's. Install it over 0.1.3; same key, same runtime, nothing to re-download.
The desktop can see your files - and a ROMs folder
A file dialog inside the desktop (RPCS3's "Select Game Folder", say) showed only the runtime's own
tree. The phone's storage was mounted the whole time, at /storage/emulated/0; the dialogs
just could not show it - they list "Computer" from the mount table, where a proot bind never
appears, and open in the home folder, where nothing pointed at the phone.
The home folder now carries two entries every session: Storage, all of internal storage, and
ROMs, the folder chosen with the new ROMs folder tile - anywhere on the device, an SD
card included (it is a bind, not a link). Point an emulator at /root/ROMs once. Both are the
live folders: a save written next to a ROM lands on the phone.
Files - Bannerlator's File Manager, whole
The Files tile is Bannerlator's File Manager carried over as it is: grid and list, sort, search, multi-select, copy / cut / paste with conflict handling and a cancellable progress bar, rename, delete, new folder, properties (read-only, hidden), favourites, and a locations rail with every mounted card, Downloads, the ROMs folder and the session logs. Its pick mode is what chooses the ROMs folder and imports a driver, in place of Android's document picker. Left out, because they have no meaning without a Wine container: run, add to shortcuts, the C: / Z: drives and the archive unpacker.
A cog beside Play and beside Desktop
Everything that only matters for one mode moved behind that mode's cog - a settings window with a rail of sections: Display (resolution up to 1080p by default, 900p, 720p or the panel's own; the shape), HDR, the runtime driver for that mode, the display driver, touch, and for Steam the on-screen controls and audio, for the desktop its renderer. The Graphics drivers and Audio tiles are gone into them, and the main screen is a two-column grid: Play, Desktop and Start offline on top, then Runtime · Desktop & apps · Frame generation · Compatibility tools · Performance · ROMs folder · Files · Session logs.
HDR10 output is a switch that is greyed out, with the reason, on a panel that does not list
HDR10. On, the compositor offers wp_color_manager_v1 with BT.2020 + PQ and 10-bit buffers,
gamescope starts with --hdr-enabled and games get DXVK_HDR=1. The compositor decides this once,
when it starts, so like the display driver it applies after the app is fully closed and opened
again. Wired end to end; not yet seen on a device from this app.
Logs that survive a crash, and a session that always starts
A session's folder used to be finished only at a clean stop; an app crash or an Android kill left
it half-written - a user saw the toast name a log that was not there. The folder is now finished
three ways: the ordinary stop; the app's own crash handler, which writes crash-app.txt and
finishes the folder before the process dies; and a sweep at the next app start for any folder
without its .complete marker (a native crash, a kill), which gets ended-without-teardown.txt
and Android's crash buffer. Session logs on the main screen turns the folder off (it then
lives in the cache and is deleted with the session).
The same user had to force-stop the app before every launch or nothing started: when the app dies,
proot, gamescope and Steam outlive it, holding the rootfs, the GPU and Steam's lock. Every session
start now kills whatever of ours is still running from before, and app.log lists it.
Steam menu from the drawer
The in-session drawer has Steam menu ◉ in Steam mode - the Guide button, for a device whose own home button belongs to Android and a pad the client hides the on-screen controls for. (There is no Quick Access chord on a non-Deck controller that I could confirm, so none is offered.)
Everything from 0.1.3 and before is here
The client's network page · graphics drivers you can import and choose, per mode · Steam's overlay restored and a competing client asked to stop · DirectAudio and the microphone · client and game core masks · four session fixes · a folder of logs per session with credentials scrubbed · a path for Adreno 710 / 720 / 722.
If the client dies with nothing in its log
Android 12 and later kill the extra processes an app starts for itself, and a session is made of
dozens. Some phones have a "restrict child processes" switch in Developer options - turn it off.
Otherwise, once per device: adb shell settings put global settings_enable_monitor_phantom_procs false. device.txt in every session folder records what your phone reports.
Credits
- maxjivi05 (Max) - the gamescope runtime this is built on, the sandbox shims, the controller work and the NetworkManager stand-in, from WinNative.
- The412Banner - the app, the Wayland compositor, the runtime plumbing, the Steam session and the File Manager (from Bannerlator).
- Winlator (brunodev85) - the audio stack, the gamepad model and the shape of a session.
- Vauzi (Vauzi-17/710) - the Adreno 710/720/722 device entries the experimental driver carries.
Frame generation: Win-FG is built in; LSFG uses the shader chain from your own copy of Lossless Scaling, read on device and never redistributed, on groundwork from lsfg-vk (PancakeTAS).
GPL-3.0. gamescope, Mesa, Turnip, Xwayland, labwc, LXQt, PulseAudio, proot and Arch Linux ARM are their own authors'. Not affiliated with Valve - Steam, Proton and Steam Deck are Valve's, and no Valve software is redistributed here: the client is fetched from Valve's own manifest on your device.
APK SteamDeck-0.1.4.apk - 20957823 bytes
sha256 4b53ce6a937f2b51a5b9d2639ea32b816993e4f7b2dc33dd0f3198b81f21e9d2
versionCode 5, built from 8e58e8e by run 35682844106.
Signed with the AOSP test key (v1 + v2 + v3), so it installs over 0.1.3 in place.