protonscr

Voice chat never connects: steamwebhelper throws NotFoundError for every microphone

steamopen AudioDistro Family: Arch
ValveSoftware/steam-for-linux#13490 · opened 2026-08-06 by Acct-name · updated 2026-08-06 · 0 comments · github
AAcct-name 2026-08-06 github

Voice chat never connects: steamwebhelper throws NotFoundError for every microphone

Summary

Steam voice chat never connects — the UI sits on "Connecting..." indefinitely. Every
attempt to acquire a microphone in steamwebhelper fails with:

SteamUI: ERROR: Uncaught (in promise) NotFoundError: Requested device not found

This happens for every device in the Voice settings dropdown, including Default.
The client connects to PipeWire's PulseAudio server successfully and is granted
unrestricted access, but never creates a record stream. Because device acquisition
never completes, ICE never starts, and the connection UI hangs forever.

A stock system Chromium on the same machine, using the same Chromium audio backend
against the same audio server, captures from the same devices without any problem
(verified with WebRTC calls on meet.jit.si and with mictests.com).

System

Distro CachyOS Linux
Kernel 7.1.6-1-cachyos
Session Wayland / KDE Plasma — Steam runs under XWayland (X Server Vendor: The X.Org Foundation, X Window Manager: KWin)
Steam Runtime steam-runtime_1.0.20260618.246542
Steam package steam 1.0.0.87-1 (native, not Flatpak or Snap)
Steam client 1785799196 (stable) and 1785979169 (public beta) — both affected
pipewire 1:1.6.8-1.1
pipewire-pulse 1:1.6.8-1.1
pipewire-alsa 1:1.6.8-1.1
wireplumber 0.5.15-1.1
easyeffects 8.2.8-1.1
Microphone Blue Microphones (USB, 046D:0AB7)
Steam → Help → System Information
Computer Information:
Manufacturer: Micro-Star International Co., Ltd.
Model: MEG X570 UNIFY (MS-7C35)
Form Factor: Desktop
Processor Information:
CPU Brand: AMD Ryzen 9 5950X 16-Core Processor
32 logical processors / 16 physical processors
Operating System:
CachyOS (64 bit)
Kernel Version: 7.1.6-1-cachyos
X Server Vendor: The X.Org Foundation
X Window Manager: KWin
Steam Runtime Version: steam-runtime_1.0.20260618.246542
Client Information:
Version: 1785799196
Video Card:
Driver: AMD Radeon RX 6700 XT (radeonsi, navi22, ACO, DRM 3.64, 7.1.6-1-cachyos)
Driver Version: 4.6 (Compatibility Profile) Mesa 26.1.6-arch3.1
Sound card:
Audio device: ATI R6xx HDMI
Memory:
RAM: 32001 Mb

Steps to reproduce

  1. Open Steam → Settings → Voice.
  2. Select any microphone from the dropdown, including Default.
  3. Use the microphone test, or start a voice chat with a friend.

Expected

Microphone is acquired; the level meter responds; voice chat connects.

Actual

The level meter never moves. Voice chat displays "Connecting..." indefinitely and
never progresses. webhelper_js.txt logs a NotFoundError on each attempt.

Logs

~/.local/share/Steam/logs/webhelper_js.txt:

[20:33:33] SteamUI: WARNING: Error reporter does not know how to parse generated stack:
[20:33:33] SteamUI: WARNING: undefined
[20:33:33] SteamUI: ERROR: Uncaught (in promise) NotFoundError: Requested device not found
[20:43:51] SteamUI: ERROR: Uncaught (in promise) NotFoundError: Requested device not found

~/.local/share/Steam/logs/cef_log.txt:

WARNING:capture_device_ranking.h(255)] Can't initialize the value of
  media.audio_input.user_preference_ranking because media.default_audio_capture_device
  isn't registered
INFO:CONSOLE(0)] "Uncaught (in promise) NotFoundError: Requested device not found",
  source: https://steamloopback.host/index.html
INFO:audio_manager_pulse.cc(216)] Not implemented!

~/.local/share/Steam/logs/steamui_audio.txt logs SinkAdded events only — no
corresponding source/input enumeration is ever logged.

Diagnostic evidence

steamwebhelper connects to the audio server and is unrestricted. pw-dump Client:

Chromium input       | unrestricted | steamwebhelper
Steam Voice Settings | unrestricted | steam
Steam                | unrestricted | steam
Chromium input       | unrestricted | chromium     <- works

It never creates a record stream. pactl list source-outputs shows no
source-output belonging to steamwebhelper at any point, including while the Voice
settings mic test is open. The system Chromium, by contrast, creates one immediately
on getUserMedia().

No media UDP is ever opened, consistent with acquisition failing before ICE
gathering. All of steamwebhelper's UDP sockets are mDNS:

UNCONN  224.0.0.251:5353  steamwebhelper
UNCONN  224.0.0.251:5353  steamwebhelper
UNCONN  224.0.0.251:5353  steamwebhelper
UNCONN  224.0.0.251:5353  steamwebhelper
UNCONN      0.0.0.0:27036 steam

Ruled out

Each of these was tested and eliminated:

  • Microphone / audio graph — the same devices capture correctly in system
    Chromium (mictests.com, and a full WebRTC call on meet.jit.si with working
    two-way audio).
  • PipeWire permissions — every client, including steamwebhelper, reports
    pipewire.access = unrestricted. No portal/Flatpak restriction is in effect.
  • Device selection / stale ids — fails on every entry in the dropdown, selected
    fresh from the live list, including Default.
  • Network — STUN reachable (stun.l.google.com:19302 returns a valid
    XOR-MAPPED-ADDRESS); WebRTC media works end-to-end in a browser on the same host.
  • DNS — all Steam hostnames resolve identically to a reference resolver.
  • VPN — a VPN with default-bypass split tunnelling is active, but affected
    traffic egresses over plain LAN, and browser WebRTC over the same path works.
  • Client build — reproduces identically on stable 1785799196 and public beta
    1785979169.
  • Stale client state — reproduces after full client restart with no leftover
    processes, and after the CEF profile directory (config/htmlcache) was recreated
    from scratch.

Notes

The machine has a custom PipeWire loopback node (a virtual microphone mixing mic +
desktop audio). It is not the cause: the failure occurs identically with Default
and with plain hardware devices selected, and third-party browsers capture from both
the hardware device and the virtual node without issue.

Historically this problem appeared intermittently and could be cleared by
unplugging and replugging the USB microphone — which suggests a stale internal
device list in the embedded Chromium. Since early August 2026 that workaround no
longer has any effect and the failure is persistent.

excerpt-cef_log.txt
excerpt-webhelper_js.txt

Nothing extracted yet.