-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
The watchdog prints to its console window. Useful lines:
| Substring | Meaning |
|---|---|
Patch applied. Watching for VRChat overwrites -- Ctrl+C to quit. |
Watchdog up, patched yt-dlp in place |
[relay] listening port {port} |
Trust-gateway HTTP listener bound; the wrapper will route resolved URLs through localhost.youtube.com:{port} so AVPro accepts them in default-public worlds |
[mesh] connected |
Persistent WS to proxy.whyknot.dev established |
[mesh] disconnected -- <reason> |
WS dropped; resolves are falling back to vanilla yt-dlp until the next reconnect |
[mesh] reconnect attempt N in M s |
Backoff window before next reconnect |
[patch] yt-dlp.exe was overwritten -- re-applied. |
VRChat replaced the patched file (typical at launch); watchdog restored within 3 s |
yt-dlp-og.exe was missing -- restored from bundled fallback (vNNN). |
Backup went missing; the bundled vanilla yt-dlp was dropped in to keep the patched build's fallback path functional |
Cannot apply patch -- VRChat hasn't shipped its own yt-dlp.exe yet... |
Launch VRChat once and re-run the watchdog |
When the watchdog isn't running or can't reach the server, the patched yt-dlp.exe falls back to vanilla yt-dlp. So a Loading failed you'd see with the watchdog is also a failure you'd see without it. Check:
- Is the watchdog window open and showing
[mesh] connected? - Did UAC get declined when adding the hosts entry? It's the public-instance trust-list bypass -- re-run
WKVRCProxy.exeand accept the prompt, or add the line manually with admin Notepad:127.0.0.1 localhost.youtube.com. The watchdog's[hosts]ticker will re-prompt on next launch if you decline now.
Watchdog log shows [relay][error] HttpListener.Start failed on port {port} or [relay][warn] could not allocate ephemeral port. The trust gateway's local HTTP listener didn't come up; the port file was deleted, and the wrapper is falling through to emitting raw server URLs (today's behavior in pre-trust-gateway worlds; works in trust-disabled worlds, fails in default-public).
- Most common cause: another process is bound to 127.0.0.1 on the port the watchdog tried. Restart the watchdog -- it picks a different ephemeral port on each launch.
- If
[relay][warn] could not allocate ephemeral portappears: Windows refused to allocate any ephemeral port at all. Rare. Checknetstat -anfor exhaustion or restart the OS. - Symptom in the wrapper trace (
yt-dlp-wrapper.log): every resolve showstrust_gateway=passthroughinstead oftrust_gateway=wrapped. Confirms the wrapper read the missing port file and fell through.
The full Trust-Gateway flow is documented at Trust Gateway.
Hosts entry got removed since the watchdog last ticked (manual edit, AV rewrite, OS rollback). The HostsTicker re-adds within 60 seconds; wait or restart the watchdog. Check %LOCALAPPDATA%Low\WKVRCProxy\logs\watchdog-*.log for [hosts] tick: localhost.youtube.com entry MISSING -- re-adding via UAC re-exec. If UAC was declined, the entry stays missing until the next launch + accept.
If VRChat is open when you start the watchdog, the patcher prints something like [patch] yt-dlp.exe in use by another process -- deferring and waits. Close VRChat (or the Camera capture window if you used "Stop Recording" but the process is still up) and the patcher will engage on the next 3-second tick.
This is intentional -- swapping yt-dlp.exe while VRChat has it open could crash VRChat. The patcher uses a FileShare.None probe to detect the lock and waits the user out.
Console says Cannot apply patch -- VRChat hasn't shipped its own yt-dlp.exe yet, and we have no original to preserve as fallback. -- VRChat hasn't created its Tools/yt-dlp.exe yet. Launch VRChat once (let it sit at the start screen) and re-run the watchdog.
Defensive halt: both the patched yt-dlp and the bundled fallback are missing from this install. Re-extract the release zip.
[mesh] disconnected followed by reconnect attempts. The watchdog connects to proxy.whyknot.dev first and can fall back to the legacy apex discovery path if the proxy host is unavailable before a connection is established. While disconnected, the patched yt-dlp.exe execs the vanilla yt-dlp-og.exe and you get vanilla yt-dlp behaviour -- playback works, but without the server-assisted resolution.
If reconnects never succeed, check that proxy.whyknot.dev and whyknot.dev resolve and are reachable from your network.
The 127.0.0.1 localhost.youtube.com line goes into C:\Windows\System32\drivers\etc\hosts. If UAC was declined, the watchdog logs a hint and continues without it. The HostsTicker re-checks every minute; if the entry is still missing 10 minutes later, it'll re-prompt for UAC (rate-limited so a user who keeps declining doesn't get spammed). To add by hand, open Notepad as administrator, edit the file, append the line, save.
The detached cmd.exe /c rmdir runs after the uninstaller exits. If the install dir is under Program Files, the rmdir runs unelevated and may silently fail. Move the install elsewhere (anywhere outside Program Files) and re-run, or remove the directory by hand.
-
%LOCALAPPDATA%Low\WKVRCProxy\logs\watchdog-<utc>.log-- full watchdog output, captures everything the console printed (and stderr too). Open the most recent file. -
%LOCALAPPDATA%Low\WKVRCProxy\logs\yt-dlp-wrapper.log-- per-invocation trace from the patched yt-dlp wrapper, one line block per video play. Each block is keyed by an[<utc>] [<rid>]correlation id so you can match the wrapper's view of a resolve to the watchdog's. -
%LOCALAPPDATA%Low\WKVRCProxy\crashes\crash-<component>-<utc>.log-- unhandled-exception postmortems.%USERPROFILE%and your username are redacted before write so it's safe to attach to bug reports. -
%LOCALAPPDATA%Low\WKVRCProxy\clean_exit.flag-- present means the previous run shut down cleanly; absent means recovery on next launch. -
VRChat output log --
%LOCALAPPDATA%Low\VRChat\VRChat\output_log_*.txtfor the AVPro side. -
%LOCALAPPDATA%Low\VRChat\VRChat\Tools\--yt-dlp.exeshould be the watchdog's patched wrapper (~3.27 MB AOT);yt-dlp-og.exeshould be VRChat's vanilla copy. No sidecars (.new-*,.stale-*) should remain after a clean shutdown.
Use the bug report template. Include the watchdog console output around the failure verbatim.
Start here
For users
Reference
For maintainers