protonscr

Login stuck on "Waiting for network" — steamui calls SteamClient.System.Network.RegisterForDeviceChanges, which is missing from the client binaries

steamopen Distro Family: Fedora
ValveSoftware/steam-for-linux#13493 · opened 2026-08-06 by armandolara · updated 2026-08-19 · 6 comments · github
Aarmandolara 2026-08-06 github
  • 1785799196 (updater built Aug 3 2026)
  • Fedora Asahi Remix 44, aarch64 (Apple M1 Pro), Steam running under FEX-Emu 2604 inside a muvm 0.6.0 microVM
  • Tested both: No (stable, 1785799196) and Yes/publicbeta (1785347151, built Jul 29 2026) — both affected
  • Checked for system updates? Yes

On a completely clean install (fresh ~/.local/share/Steam, ~/.steam, no prior config or cache), Steam downloads, extracts, and installs successfully, then the login window shows "Waiting for network" indefinitely. Reproduces in both the desktop UI and Big Picture mode (-gamepadui).

cef_log.txt shows:

SteamApp Init - Before Login - SystemNetworkStore - ERROR
TypeError: SteamClient.System.Network.RegisterForDeviceChanges is not a function
source: https://steamloopback.host/library.js

This is not a network problem. connection_log.txt shows every connectivity test passing:

IPv4 connectivity test: OK
IPv6 HTTP connectivity test: SUCCESS
IPv6 UDP connectivity test: SUCCESS
External IPv6 address correctly detected

steamui_login.txt shows the backend is ready and waiting:

SetLoginState: WaitingForCredentials - OK

The UI never advances past this point despite the backend being ready and network connectivity confirmed working.

I checked whether the missing function actually exists in the shipped client files:

$ grep -rl "RegisterForDeviceChanges" ~/.local/share/Steam/steamui/
/home/armando/.local/share/Steam/steamui/chunk~2dcc5aaf7.js

$ strings ~/.local/share/Steam/ubuntu12_64/steamclient.so | grep -c RegisterForDeviceChanges
0

$ strings ~/.local/share/Steam/ubuntu12_64/steamwebhelper | grep -c RegisterForDeviceChanges
0

The steamui JS bundle (chunk~2dcc5aaf7.js) calls a function that does not exist in either steamclient.so or steamwebhelper. SystemNetworkStore therefore fails to initialize and the login UI hangs.

Environment notes:

  • Confirmed DBUS_SESSION_BUS_ADDRESS is correctly set inside the muvm guest (unix:path=/run/user/1000/bus)
  • Confirmed /run/dbus/system_bus_socket exists and is accessible inside the guest
  • FEX-Emu verified working correctly (muvm -- FEXBash -c 'uname -m' returns x86_64)
  • GPU correctly detected by Steam's own sysinfo query (Apple M1 Pro via Honeykrisp Vulkan driver)
  • Reproduces identically on stable (1785799196) and publicbeta (1785347151)

This looks related to #13432 ("Waiting for network" since the July 21 client) and possibly the same bug family as #10813 from 2024 (missing RegisterForComputerActiveStateChange binding, same chunk hash ~2dcc5aaf7).

Steps to reproduce:

  1. Fresh install: sudo dnf install steam (Fedora Asahi Remix 44 steam wrapper package)
  2. Launch: steam
  3. Client downloads, verifies, installs correctly
  4. Login window appears, shows "Waiting for network" and never proceeds

steam-logs-for-bug-report.zip

Possibly the same underlying bug. On Fedora Asahi Remix 44 (aarch64, Apple M1 Pro, Steam running under FEX-Emu + muvm microVM), a completely clean install (fresh ~/.local/share/Steam, no prior config) reproduces this exact symptom on both stable (1785799196, built Aug 3 2026) and publicbeta (1785347151, built Jul 29 2026).

cef_log.txt shows:

SteamApp Init - Before Login - SystemNetworkStore - ERROR
TypeError: SteamClient.System.Network.RegisterForDeviceChanges is not a function
source: https://steamloopback.host/library.js

This isn't a real network problem — connection_log.txt shows every connectivity test passing (IPv4 OK, IPv6 HTTP SUCCESS, IPv6 UDP SUCCESS), and steamui_login.txt shows the backend reports SetLoginState: WaitingForCredentials - OK. The UI just never advances past "Waiting for network."

I checked whether the function exists in the shipped binaries:

$ strings ~/.local/share/Steam/ubuntu12_64/steamclient.so | grep -c RegisterForDeviceChanges
0
$ strings ~/.local/share/Steam/ubuntu12_64/steamwebhelper | grep -c RegisterForDeviceChanges
0

steamui/chunk~2dcc5aaf7.js calls this function, but it doesn't exist in either steamclient.so or steamwebhelper. I've opened a separate issue with full details: [link once posted]

Reproduces in both desktop UI and Big Picture mode (-gamepadui).

Originally posted by @armandolara in [#13432](https://github.com/ValveSoftware/steam-for-linux/issues/13432#issuecomment-5209252957)

Oorisson003 2026-08-11 github

Got the exact same problem on Asahi Fedora Remix. I tried to manually patch ~/.local/share/Steam/steamui/chunk~2dcc5aaf7.js, but the problem persists.

Ooskarsss 2026-08-13 github

I reproduced this issue and confirmed that the “Waiting for network” screen was not caused by a virtio-GPU fence hang.

Tested environment

  • Fedora Asahi Remix 44
  • Apple M1 Max
  • Kernel: 7.1.6-400.asahi.fc44.aarch64+16k
  • Steam client build: 1785799196
  • muvm-0.6.0-3.fc44.aarch64
  • libkrun-1.19.0-1.fc44.aarch64
  • fex-emu-2604-1.fc44.aarch64

Reproduction

This happens when Steam needs to display its login form, for example on a clean installation, after signing out, or after the saved login token expires.

  1. Start Steam normally:

    steam
    
  2. The “Sign in to Steam” window remains indefinitely on:

    Waiting for network...
    
  3. Steam's own logs show that networking is actually functional:

    Connectivity test: result=Connected
    IPv6 HTTP connectivity test ... SUCCESS
    IPv6 UDP connectivity test ... SUCCESS
    ConnectionCompleted(... WebSocket)
    
  4. steamui_login.txt shows that the backend is waiting for credentials:

    SetLoginState: WaitingForCredentials - OK
    
  5. The actual UI failure appears in webhelper_js.txt:

    SteamApp Init - Before Login - SystemNetworkStore - ERROR
    TypeError: SteamClient.System.Network.RegisterForDeviceChanges is not a function
    

The Steam UI bundle calls several SteamClient.System.Network methods that are unavailable in this environment. SystemNetworkStore therefore fails to initialize, and the login UI never replaces the “Waiting for network” screen.

Verified workaround

Exit Steam completely, locate the affected UI bundle, and patch the missing-function checks:

grep -l 'System.Network.RegisterForDeviceChanges' \
    ~/.local/share/Steam/steamui/chunk~*.js

Save the following as fix-steam-network.py:

#!/usr/bin/python3

from datetime import datetime
from pathlib import Path
import shutil
import sys

steam_ui = Path.home() / ".local/share/Steam/steamui"

replacements = {
    b'const t=(0,B.Dp)("System.Network.RegisterForDeviceChanges");':
        b'const t="function"==typeof SteamClient?.System?.Network?.RegisterForDeviceChanges;',

    b'(0,B.Dp)("System.Network.GetProxyInfo")&&SteamClient.System.Network.GetProxyInfo().then':
        b'"function"==typeof SteamClient?.System?.Network?.GetProxyInfo&&SteamClient.System.Network.GetProxyInfo().then',

    b'(0,B.Dp)("System.Network.RegisterForConnectivityTestChanges")&&SteamClient.System.Network.RegisterForConnectivityTestChanges(this.OnConnectivityTestStateChanged)':
        b'"function"==typeof SteamClient?.System?.Network?.RegisterForConnectivityTestChanges&&SteamClient.System.Network.RegisterForConnectivityTestChanges(this.OnConnectivityTestStateChanged)',

    b't||(this.m_bIsAwaitingInitialNetworkState=!1)':
        b't||(this.m_bIsAwaitingInitialNetworkState=!1,this.m_bIsConnectedToANetwork=!0)',
}

candidates = [
    path for path in steam_ui.glob("chunk~*.js")
    if b"System.Network.RegisterForDeviceChanges" in path.read_bytes()
]

if len(candidates) != 1:
    sys.exit(f"Expected one matching Steam UI chunk, found {len(candidates)}")

target = candidates[0]
content = target.read_bytes()

if all(content.count(new) == 1 for new in replacements.values()):
    print(f"Already patched: {target}")
    raise SystemExit(0)

for old, new in replacements.items():
    count = content.count(old)
    if count != 1:
        sys.exit(f"Refusing to patch: expected one match, found {count}: {old!r}")
    content = content.replace(old, new, 1)

timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
backup = target.with_name(f"{target.name}.before-network-fix-{timestamp}")

shutil.copy2(target, backup)
target.write_bytes(content)

print(f"Patched: {target}")
print(f"Backup: {backup}")

Run it:

python3 fix-steam-network.py

Then start Steam once without allowing it to verify and restore the modified bundle:

steam \
  -noverifyfiles \
  -nobootstrapupdate \
  -skipinitialbootstrap \
  -norepairfiles

Result

After applying the patch, the Steam username/password and QR-code login form appeared immediately. I signed in successfully.

After the initial successful login, Steam could be launched normally again.

Steam updates may replace the patched JavaScript bundle. If the saved login expires and the problem returns, the patch may need to be reapplied to the new chunk~*.js file.

Fence diagnosis

The large fence output produced by RUST_LOG=debug was misleading. libkrun scans a shared pending-descriptor collection, while the debug messages print only the fence ID and omit its context and ring. Entries belonging to other rings can therefore look like stale completed fences.

The installed libkrun 1.19.0 code removes completed descriptors for the matching (context, ring) and already contains the out-of-order completion fix. The fence diagnostics could still be improved, but they were not responsible for this Steam login failure.

Aarmandolara 2026-08-13 github

Confirmed on M1 Pro, same client build. Also worth noting: steam -login bypasses the login form entirely and authenticates successfully without patching — though per your point about token expiry, that’s likely only a temporary workaround. steamcmd also logs in cleanly on the same machine.

Replying to https://github.com/ValveSoftware/steam-for-linux/issues/13493#issuecomment-5285196297

Ddbtx 2026-08-13 github

Confirmed patching works on Gentoo amd64 using https://github.com/anyc/steam-overlay
It was a new Steam account having only logged in on the web, on a fresh Gentoo install with a fresh user profile. So after logging in for the first time, I checked "remember me" and then confirmed that 'steam -login' also works, after it repairs / reverts the patch. Thank you!

Sstefan11111 2026-08-16 github

@oskarsss Thank you, the script works. Used on gentoo

CCactusGamingCG 2026-08-19 github

Just happened to me too, can confirm patching works on Void.