protonscr

Login UI stuck on "Waiting for network" when RegisterForDeviceChanges is not a function

steamclosed
ValveSoftware/steam-for-linux#13545 · opened 2026-08-24 by santeri · updated 2026-08-24 · 2 comments · github
Ssanteri 2026-08-24 github

System information

  • Steam client version: 1785799196 (updater built Aug 3 2026)
  • Distribution: Omarchy 4.0.1rc2 (Arch Linux ARM / Asahi), Linux 7.1.6 aarch64
  • GPU: Apple M1 Max (Mesa 26.1.7)
  • Steam is the official x86 client, run via muvm + FEX-Emu (Fedora/Asahi fex-steam wrapper)
  • Opted into Steam client beta?: No

Summary

The CEF login UI sticks on “Waiting for network” even though Steam already has working IPv4 connectivity and has reached SetLoginState: WaitingForCredentials.

Cause

steamui/chunk~2dcc5aaf7.js (SystemNetworkStore.Init) does:

const t = (0, B.Dp)("System.Network.RegisterForDeviceChanges");
t && SteamClient.System.Network.RegisterForDeviceChanges(this.OnNetworkDevicesChanged);

B.Dp("System.Network.RegisterForDeviceChanges") is truthy, but SteamClient.System.Network.RegisterForDeviceChanges is not a function. Init() throws:

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

Because the throw happens before

t || (this.m_bIsAwaitingInitialNetworkState = !1)

m_bIsAwaitingInitialNetworkState stays true forever and the login screen never leaves #Login_WaitingForNetwork.

Meanwhile the client itself is online:

Connectivity test (23.36.77.138:80): OK!
Connectivity test: result=Connected
SetLoginState: WaitingForCredentials - OK

Also: client_networkmanager.txtInit: failed to create a NetworkManager client (no system D-Bus NetworkManager inside the muvm guest). That is likely why the Network IPC methods are advertised but not implemented.

Expected

If RegisterForDeviceChanges / GetProxyInfo / RegisterForConnectivityTestChanges are missing, treat them as unavailable (t === false), set m_bIsAwaitingInitialNetworkState = false, and do not block login when the connectivity test already returned Connected.

Workaround that unblocked login

Guard the calls and clear the awaiting flag (then start Steam with -noverifyfiles so the chunk is not restored):

const t = (0, B.Dp)("System.Network.RegisterForDeviceChanges")
  && !!(SteamClient.System && SteamClient.System.Network
        && "function" == typeof SteamClient.System.Network.RegisterForDeviceChanges);
try { t && SteamClient.System.Network.RegisterForDeviceChanges(this.OnNetworkDevicesChanged) } catch (e) {}
try { (0, B.Dp)("System.Network.GetProxyInfo") && SteamClient.System.Network.GetProxyInfo().then(e => this.m_proxyInfo = e) } catch (e) {}
try { (0, B.Dp)("System.Network.RegisterForConnectivityTestChanges") && SteamClient.System.Network.RegisterForConnectivityTestChanges(this.OnConnectivityTestStateChanged) } catch (e) {}
this.m_bIsAwaitingInitialNetworkState = !1;
this.m_bIsConnectedToANetwork = !0;

After this, logs show UI Request: connect and the username/password form appears.

Related: this may be the same spinner as #13491, but that report does not include the RegisterForDeviceChanges TypeError. Happy to split this into a new issue if preferred.

Repro

  1. Run Steam 1785799196 where SteamClient.System.Network.RegisterForDeviceChanges is not a function (Asahi muvm/FEX is sufficient; any environment without the Network IPC would hit it).
  2. Confirm ~/.local/share/Steam/logs/webhelper_js.txt contains the TypeError above.
  3. Confirm connection_log.txt already has Connectivity test: result=Connected.
  4. Login UI remains on “Waiting for network”.
Kkisak-valve maintainer 2026-08-24 github

Hello @santeri, this issue is already being tracked at #13493. Closing as a duplicate.

Ssanteri 2026-08-24 github

Hello @santeri, this issue is already being tracked at [#13493](https://github.com/ValveSoftware/steam-for-linux/issues/13493). Closing as a duplicate.

👍 sorry for the dupe