Notes

Short ROCKNIX Steam testing tips for settings knobs, runtime choices, and log capture.

File index

Relevant ROCKNIX and Steam files

/storage/.config/system/configs/system.cfg
EmulationStation's per-game Steam settings, including Steam arch, host-library toggles, and gamescope.
/storage/.local/share/applications/<desktop-file>
The launcher filename used inside steam["<desktop-file>"] keys. Match the existing file name exactly.
/storage/.local/share/Steam/config/config.vdf
Steam's per-game compatibility-tool mapping. This is where the selected Proton or Steam Native tool id is stored for an app.
/storage/.local/share/Steam/compatibilitytools.d/
Custom/local compatibility tools folder. Use compatibilitytool.vdf here for non-official tools only.
/storage/.local/share/Steam/steamapps/common/<Proton tool>/toolmanifest.vdf
Official Steam Proton tool manifest. Its require_tool_appid points to the required Steam Linux Runtime app.
/storage/.local/share/Steam/steamapps/appmanifest_<runtime-appid>.acf
Steam app manifest for the runtime app. Use installdir to map the runtime appid to its folder.
/storage/.local/share/Steam/steamapps/common/<runtime installdir>/toolmanifest.vdf
Steam Linux Runtime manifest. compatmanager_layer_name confirms the runtime layer, such as container-runtime.
/storage/.local/share/Steam/userdata/<user-id>/config/localconfig.vdf
Steam launch options for a user profile, including PROTON_LOG=1 %command%.
/storage/steam-<appid>.log
Per-game Proton log created after Proton logging is enabled and the game starts.
/storage/.local/share/Steam/logs/gameprocess_log.txt
Steam-side launch log for cases where Steam starts but the game or Proton does not clearly run.
/storage/.local/share/Steam/logs/console-linux.txt
Steam client messages for compatibility-tool, library, and general client behavior.
/storage/.local/share/Steam/logs/webhelper-linux.txt
Steam webhelper messages for Steam UI, embedded pages, and launcher web views.
/var/log/exec.log
EmulationStation launch routing log for failures before Steam takes over.

These are the files to know before troubleshooting. Start in the UI when possible, then use the matching path above to confirm what changed.

Example: HELLDIVERS 2

/storage/.local/share/applications/HELLDIVERS™ 2.desktop
/storage/steam-553850.log

Caution: If you modify Steam files via SSH for scripted launch, make sure Steam is not already running so settings can take effect.

ROCKNIX host libraries

Choose Steam x86 or ARM and Host Libraries before the game starts

Use this when you want ROCKNIX to launch a Steam game through x86 or ARM Steam, or when you need to compare host-library toggles before the game starts.

Manual instructions: Navigate to your Steam game in ROCKNIX, press the NORTH button on the controller to open Advanced Settings, then adjust these per-game values before launching Steam.

These ROCKNIX keys belong in /storage/.config/system/configs/system.cfg and are applied per game before Steam starts. The part inside brackets is the desktop launcher filename, not the game title you type from memory. Some setups also mirror values to steam["Steam.desktop"].steam_version=; that mirror is still in system.cfg, not inside the desktop file.

steam_version
Steam architecture path. Use x86 for x86 Steam or arm64 for ARM Steam.
vulkan_host_library
Host Vulkan libraries. Usually 1 for Vulkan, DXVK, and VKD3D games. Try 0 only after recording a baseline.
drm_host_library
Host DRM/libdrm path. Usually 0. Try 1 for display, GPU device, or gamescope isolation.
gl_host_library
Host OpenGL libraries. Usually 0. Try 1 for OpenGL launchers or helper windows.
wayland_client_host_library
Host Wayland client libraries. Usually 0. Try 1 for compositor, windowing, focus, or gamescope issues.
asound_host_library
Host ALSA/asound libraries. Usually 0. Try 1 for audio device, crackle, or latency problems.
gamescope
Handheld Steam compositor path. Usually 1 for normal ROCKNIX Steam launches.

Example: HELLDIVERS 2

steam["HELLDIVERS™ 2.desktop"].steam_version=arm64
steam["HELLDIVERS™ 2.desktop"].vulkan_host_library=1
steam["HELLDIVERS™ 2.desktop"].drm_host_library=0
steam["HELLDIVERS™ 2.desktop"].gl_host_library=0
steam["HELLDIVERS™ 2.desktop"].wayland_client_host_library=0
steam["HELLDIVERS™ 2.desktop"].asound_host_library=0
steam["HELLDIVERS™ 2.desktop"].gamescope=1

Helper notes for automated Steam game testing

Test one thing at a time. Start with a baseline, then change one variable so runtime, Steam arch, host libraries, and launch options do not blur together.

Resource snapshot

Capture CPU, GPU, RAM, zram, thermals, and kernel clues

uptime#Load average and uptime
free -h#RAM and swap overview
zramctl#Zram DATA, COMPR, TOTAL, and DISKSIZE
ps -eo pid,ppid,stat,wchan,etime,pcpu,pmem,rss,comm,args --sort=-pcpu | head -20#Top CPU and wait-state processes
ps -eo pid,ppid,stat,wchan,etime,pcpu,pmem,rss,comm,args --sort=-rss | head -15#Top RAM/RSS processes
cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage#Adreno GPU busy percentage
cat /sys/class/kgsl/kgsl-3d0/cur_freq#Adreno GPU current frequency
cat /sys/class/thermal/thermal_zone*/type#Thermal sensor names
cat /sys/class/thermal/thermal_zone*/temp#Thermal sensor readings
dmesg | tail -80#Recent kernel faults, OOM, GPU, DRM, and IO lines

Run a quick snapshot while the game is running, hung, or immediately after it exits. Record RAM, zram, top CPU/RSS processes, blocked or waiting process clues from wchan, GPU load or frequency, thermals, and any fresh kernel fault lines.

zramctl is more useful than swap-used alone: DATA is real uncompressed payload, COMPR is compressed size, TOTAL is allocator usage, and DISKSIZE is capacity.

These commands come from the RP6 reference scripts. If one path is missing on your build, write not available and keep the rest of the snapshot. Do not change test settings just to make the snapshot cleaner.

Example: HELLDIVERS 2

Usage: RAM used 5.2G / available 1.1G; zram DATA 1.8G, COMPR 650M, TOTAL 760M; HELLDIVERS 2 RSS 3.4G; GPU busy 82%; thermals stable; new dmesg faults no.

Log triage

Check logs in the order the launch failed

/storage/steam-<appid>.log
/storage/.local/share/Steam/logs/gameprocess_log.txt
/storage/.local/share/Steam/logs/console-linux.txt
/storage/.local/share/Steam/logs/webhelper-linux.txt
/var/log/exec.log
  • /storage/steam-<appid>.logProton reached the game or launcher.
  • /storage/.local/share/Steam/logs/gameprocess_log.txtSteam launched, but Proton or the app did not clearly start.
  • /storage/.local/share/Steam/logs/console-linux.txtSteam client messages for compatibility-tool, library, and general client behavior.
  • /storage/.local/share/Steam/logs/webhelper-linux.txtSteam UI, embedded page, or launcher web view messages.
  • /var/log/exec.logEmulationStation launch routing failed before Steam took over.
  1. Use the Proton log if the game or launcher starts under Proton.
  2. Use Steam logs if Steam opens but the handoff to Proton or the app is unclear.
  3. Use /var/log/exec.log if the launch never reaches Steam.

Example: HELLDIVERS 2

/storage/steam-553850.log
/storage/.local/share/Steam/logs/gameprocess_log.txt
/storage/.local/share/Steam/logs/console-linux.txt
/storage/.local/share/Steam/logs/webhelper-linux.txt
/var/log/exec.log

Launch game

Launch from EmulationStation for comparable results

/storage/.local/share/applications/<desktop-file>
/usr/bin/runemu.sh "/storage/.local/share/applications/<desktop-file>" -Psteam --core=steam --emulator=steam

The desktop file is the launcher name EmulationStation uses. Launching through EmulationStation applies the per-game system.cfg settings and the ROCKNIX Steam wrapper. The runemu.sh command is useful for scripted launches because it still uses that ROCKNIX path.

A bare Steam URL launch can skip parts of that path, so avoid it when comparing reports or troubleshooting host-library settings.

Example: HELLDIVERS 2

/storage/.local/share/applications/HELLDIVERS™ 2.desktop
/usr/bin/runemu.sh "/storage/.local/share/applications/HELLDIVERS™ 2.desktop" -Psteam --core=steam --emulator=steam

Steam desktop mode

Open regular Steam instead of Big Picture

/storage/.config/system/configs/system.cfg
steam["<desktop-file>"].steam_version=x86
steam["<desktop-file>"].gamescope=0

Use the same ROCKNIX Advanced Settings screen where you choose the Steam version. Set the Steam version you want, such as x86, then turn Gamescope off so Steam launches in the regular desktop interface instead of Big Picture mode.

Manual instructions: Navigate to the Steam game in ROCKNIX, press NORTH to open Advanced Settings, confirm the Steam version, then set Gamescope to off before launching.

Desktop Steam is easier for some compatibility setup and debugging, but controller navigation can be rough. Depending on your device, plug in a USB mouse so you can reach Steam menus reliably.

Example: HELLDIVERS 2

steam["HELLDIVERS™ 2.desktop"].steam_version=x86
steam["HELLDIVERS™ 2.desktop"].gamescope=0

Enable Proton log

Proton logging is a Steam launch option

PROTON_LOG=1 %command%
/storage/steam-<appid>.log

Add the Proton log option in Steam game Properties, General, Launch Options. Proton writes the log after the game starts. Turn the option off again for normal play or performance testing.

Start with PROTON_LOG=1. Avoid broad WINEDEBUG unless you know what extra signal you need, because it can create huge logs and slow the game enough to change the result.

PROTON_LOG=1 %command%
/storage/steam-553850.log

LaunchOptions file

Steam stores launch arguments in localconfig.vdf

/storage/.local/share/Steam/userdata/<user-id>/config/localconfig.vdf
"<appid>"
{
  "LaunchOptions"  "PROTON_LOG=1 %command%"
}

The Steam UI is the safest way to edit launch options. Keep %command% in the value so Steam still inserts the real game command. Change one launch option at a time and record the exact text.

The file view is useful for confirming what Steam saved for the app id.

"553850"
{
  "LaunchOptions"  "PROTON_LOG=1 %command%"
}

Graphics artifacts

Try TU_DEBUG=nolrz for flicker, black textures, or broken shadows

TU_DEBUG=nolrz %command%

TU_DEBUG is Mesa Turnip's debug setting for Qualcomm Adreno Vulkan. nolrz disables LRZ, the low-resolution depth rejection path that helps the GPU skip hidden pixels earlier.

Use it when a game launches but has flickering geometry, black textures, broken shadow maps, or depth-related artifacts. It can cost performance, so treat it as one test variable and remove it if it does not clearly help.

Example: HELLDIVERS 2

"553850"
{
  "LaunchOptions"  "TU_DEBUG=nolrz %command%"
}

Runtime version

Proton version is stored in Steam's compat tool mapping

/storage/.local/share/Steam/config/config.vdf
"CompatToolMapping"
{
  "<appid>"
  {
    "name"    "<compat-tool>"
    "config"  ""
    "priority"  "250"
  }
}

Preferred path: Steam game Properties, Compatibility, force a compatibility tool, then choose the Proton or Steam Native runtime. The name value is the selected compatibility tool id for the game.

For official Steam Proton tools, the Steam Linux Runtime is not listed in compatibilitytool.vdf. Follow the tool's toolmanifest.vdf instead: require_tool_appid gives the runtime appid, appmanifest_<appid>.acf gives the installed folder, and the runtime folder's toolmanifest.vdf confirms the runtime layer.

/storage/.local/share/Steam/steamapps/common/Proton - Experimental/toolmanifest.vdf
/storage/.local/share/Steam/steamapps/common/Proton Hotfix/toolmanifest.vdf
/storage/.local/share/Steam/steamapps/common/Proton 11.0/toolmanifest.vdf
/storage/.local/share/Steam/steamapps/common/Proton 10.0/toolmanifest.vdf
"require_tool_appid"  "<runtime-appid>"

Runtime appid map

4183110 -> Steam Linux Runtime 4.0
          /storage/.local/share/Steam/steamapps/common/SteamLinuxRuntime_4
4185400 -> Steam Linux Runtime 4.0 - Arm64
          /storage/.local/share/Steam/steamapps/common/SteamLinuxRuntime_4-arm64
1628350 -> Steam Linux Runtime 3.0 sniper
          /storage/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper
3810310 -> Steam Linux Runtime 3.0 sniper - Arm64
          /storage/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper-arm64
/storage/.local/share/Steam/steamapps/appmanifest_<runtime-appid>.acf
"name"        "<runtime name>"
"installdir"  "<runtime installdir>"

/storage/.local/share/Steam/steamapps/common/<runtime installdir>/toolmanifest.vdf
"compatmanager_layer_name"  "container-runtime"
"CompatToolMapping"
{
  "553850"
  {
    "name"    "proton_experimental"
    "config"  ""
    "priority"  "250"
  }
}

Custom Proton tools

Place local Proton builds in compatibilitytools.d

/storage/.local/share/Steam/compatibilitytools.d/
/storage/.local/share/Steam/compatibilitytools.d/<custom-proton-folder>/
/storage/.local/share/Steam/compatibilitytools.d/<custom-proton-folder>/compatibilitytool.vdf

This folder is for custom or local compatibility tools, such as community Proton builds or device-specific ARM Proton tools. The compatibilitytool.vdf file belongs inside the custom tool's folder. Official Steam Proton tools use their own toolmanifest.vdf lookup instead.

"compat_tools"
{
  "<custom-tool-id>"
  {
    "display_name"  "<custom Proton name>"
  }
                  }

Compatdata cleanup

Let Steam rebuild stale per-game data

/storage/.local/share/Steam/steamapps/compatdata/<appid>
/storage/.local/share/Steam/steamapps/shadercache/<appid>

Switching Steam x86/ARM, Proton major versions, Steam Native, or custom tools can leave a game using old compatibility prefix or shader cache data. If a game only starts failing after those runtime changes, moving aside or removing the per-game folders lets Steam generate clean ones on the next launch.

Caution: Back up first and close Steam before cleanup. These folders can include per-game Proton prefix state, saves stored inside the prefix, and compiled shader data.

Example: HELLDIVERS 2

/storage/.local/share/Steam/steamapps/compatdata/553850
/storage/.local/share/Steam/steamapps/shadercache/553850