Troubleshooting - SocketSVC Docs
SocketSVC Docs

Troubleshooting

Automatic reconnection, /ssvc status, error messages, developer mode and common problems

Automatic reconnection

While you are still on the same Minecraft server, if voice had connected successfully and then drops because of the network or the voice service, the client automatically requests a new one-use token and reconnects — no /ssvc reconnect needed.

ItemBehavior
Retry delays5, 10, 20, then 30 seconds after each failure, then at most every 30 seconds
TimeoutsWaiting for a token response and opening the WebSocket each time out after 30 seconds
Backoff resetAfter the connection stays up for 30 seconds
Drop detectionA 10-second WebSocket ping/pong detects a dead connection even when nobody is talking; the retry delay starts from then
TokensEvery attempt requests a fresh one-use token; a failed token is never cached or reused. The token's 30-second validity only applies to admission, so established connections need no periodic refresh
Preserved stateMute/deafen and the first-run privacy setting survive recovery
NotificationsRepeated failures notify chat only once until voice recovers; settings shows "Voice will reconnect automatically" and the HUD shows "Reconnecting..."

Even if a proxy doesn't advertise the plugin channel, a game connection that previously connected to voice can still request new tokens; the server must support socketsvc:handshake_request. Servers without SocketSVC simply stay offline, silently.

Automatic retries stop when:

  • You leave or switch Minecraft servers (the schedule is cleared and late responses from the old server are ignored)
  • Voice is stopped explicitly
  • The connection is closed for replacement, quit, rate/policy rejection or an unsupported message (close codes 4000/4003/4008/1008/1003)

Old tokens are never reused, and the client never blindly reconnects to a server not confirmed to run SocketSVC. After retries stop, /ssvc reconnect explicitly starts again. Transient errors and token rejection (4001) retry automatically.

When your microphone disconnects

Unplugging a headset, a USB microphone resetting or a Bluetooth headset dropping out does not end your voice. The client reopens the microphone by itself — there is no need to go back into settings and pick it again.

SituationWhat happens
The microphone comes straight back (a brief reset)Capture resumes within about half a second. Nothing is shown in chat
Your chosen microphone is gone, but another one existsThe system default microphone is used in its place, and chat says so
There is no microphone at allThe client keeps trying — every few seconds at most — and chat says so once
Your chosen microphone is plugged back inThe client switches back to it within a few seconds and chat says it is back
The microphone stays connected but stops sending audioTreated as disconnected after 3 seconds of nothing, and reopened

Switching back relies on your system reporting the device again once it is reconnected. If the chosen microphone does not come back on its own, pick it again under Devices — that always reopens it.

Manual reconnect and status

CommandPurpose
/ssvc statusShows connection state, mute/deafen, mic RMS level and threshold, frames sent this session, and input/output devices
/ssvc reconnectRequests a fresh token without leaving Minecraft; requires an updated server, at most once every 5 seconds

See Controls for details.

Error messages

MessageMeaning
Invalid voice server URL. Ask the server admin to check public-url.The voice URL sent by the server is malformed; the server admin needs to fix public-url
Voice authorization expired or was rejected. Run /ssvc reconnect to request a new token.The token expired or was rejected
Could not connect to voice. Run /ssvc reconnect to retry.The voice listener could not be reached
Could not start voice connection. Check the server URL and try /ssvc reconnect.Opening the connection failed
Voice connection timed out. Run /ssvc reconnect to retry.The connection didn't complete in time
Voice disconnected (reason). Run /ssvc reconnect to retry.The connection dropped; the reason is in parentheses
Invalid voice handshake received. Ask the server admin to check SocketSVC.Malformed handshake data, usually a server-side version or configuration problem
Microphone unavailable. Reopen your input device to resume.The mic was unplugged or can't be opened; choose the microphone again on the General tab
A custom sample is silent, noisy, or reported as "could not be read"Older builds misread 24-bit and 32-bit WAVs and could hand a WAV to the MP3 decoder; both are fixed. If it persists, the file name may match no drum — the drum kit setting lists which drums fell back to the built-in sound and which files went unused, and why
Instrument unavailable: ...line with format PCM_SIGNED... not supportedThe device refused every capture format SocketSVC tried. Usually it is in use by another program — a DAW holding an interface exclusively is the common one — so close that first. The message quotes the device's own reason, which is the part worth reading

While automatic reconnection is in progress, errors that mention /ssvc reconnect usually recover on their own.

Common problems

SymptomCheck first
In game but no voice/ssvc status, the server's status, base URL, listener reachability, proxy negotiation, first-run setup and mute state
Nobody hears me during first-run setupNo mic audio is transmitted until setup is closed with "Get started"
Works locally, but players on other machines can't connectAsk the server admin to make sure public-host/public-url is an address players can reach, not localhost (see Run a server)
Audio tests pass but real calls sound wrongDevice routing, capture/playback settings, and a real two-player test; synthetic tests don't cover every acoustic condition
Others hear an echo of themselvesMake sure Advanced → Echo cancellation is on (an older saved "off" is kept on upgrade); for difficult devices turn off Automatic echo delay and set it manually. Headphones are the most reliable fix
Word beginnings or endings get clippedUse Push to talk, or set Voice detection to Manual and lower the threshold
Background noise or game sound is transmittedTurn on Noise suppression; on supported platforms download the Advanced Noise Cancellation model
Player volume shows "Waiting for players. Older servers do not support this list."The server is too old; voice still works but there's no roster. Update both ends
Nameplates never show the deafened iconDeafen-status sync requires both ends to be updated
Can't tell whether a voice is in front or behindUse stereo headphones with other surround processing disabled; positioning is horizontal only, see Headphone spatial audio
Advanced Noise Cancellation says "Not available on this platform"Only Windows x64, Linux x64 and macOS Apple Silicon are supported; other platforms use RNNoise
Advanced Noise Cancellation model download failedClick to retry; RNNoise is used while downloading and after a failure
The game crashes about when voice connects, with an hs_err_pid log saying EXCEPTION_ACCESS_VIOLATION in msvcp140.dll on the socketsvc-mic-capture threadWindows only: your Java runtime ships an older Microsoft C++ runtime than the Advanced Noise Cancellation model (ONNX Runtime) needs, which crashes the game rather than failing. Turn Advanced Noise Cancellation off. Updated clients detect this and use the default noise suppression instead, showing Blocked by an old Windows runtime. To use the model anyway, run Minecraft with a newer Java 21 build, or install the latest Microsoft Visual C++ Redistributable if the old copy is Windows' own
"Another Voice Chat Mod Detected" on the title screenSimple Voice Chat or Plasmo Voice is also installed. Both can stay; SocketSVC steps aside on servers that don't run it (see Compatibility)
No SocketSVC icon and its keys do nothingSimple Voice Chat or Plasmo Voice is connected to this server and the server doesn't run SocketSVC, so SocketSVC is stepping aside. Expected
No Simple Voice Chat or Plasmo Voice icon, and its keys do nothingThat mod isn't connected, so SocketSVC switches its keys off. If the server does run it, it failed to connect; open its config screen from the mod list
Simple Voice Chat's or Plasmo Voice's V doesn't open its menuMinecraft gave the shared key to SocketSVC; rebind one of the two in Controls (see Compatibility)
Opened a world to LAN but guests have no voiceGuests need the SocketSVC client mod for their own loader, and Advanced → LAN hosting → Host voice chat on LAN must be on; see LAN and singleplayer
Chat says the system default microphone is being usedYour chosen microphone is unplugged or unavailable; it is switched back to automatically when it returns — see When your microphone disconnects
Soundboard says "This server doesn't support the soundboard channel yet…"The server is too old; clips go through your mic channel and can't play concurrently
Others can't hear my soundboardThe server may have soundboard-enabled: false or deny your socketsvc.soundboard permission; deafened listeners don't hear it either
URL download says ffmpeg couldn't be auto-downloadedOn macOS, install ffmpeg yourself (e.g. brew install ffmpeg) and restart the game
Disconnected icon on a server without SocketSVCExpected: there is nothing to connect to. Press H to hide the HUD
HUD shows "Connecting..." on a server without SocketSVCShouldn't happen any more: "Connecting..." only appears once the server advertises SocketSVC or sends its handshake. If it does, the server (or a proxy in front of it) advertises SocketSVC's channel without running it

Developer mode

Advanced → Diagnostics → Developer mode shows local voice statistics at the top right, refreshed twice per second; the setting persists:

  • Packets per second sent (accepted into the WebSocket send queue) and received, plus session totals
  • Local TX drops and their percentage
  • Playback queue frames, source count, rebuffer target, overflow drops and latency trims
  • Decoded frames, decode errors and invalid packets
  • Buffer-ran-dry count (includes ordinary speech pauses) and time since the last audio packet
  • Microphone RMS and whether you're transmitting
  • Echo cancellation state (off / locked with delay / no lock, learning or ducking)
  • Negotiated protocol version (v1/v2), missing frames, successful PLC frames and stale/duplicate frames

Reading it correctly:

  • A sent packet means accepted into the WebSocket send queue, not acknowledged delivery.
  • Missing frames are playout/application sequence gaps, not true TCP network loss; end-to-end latency and server-side drop telemetry aren't available in the overlay.
  • Receiving nothing can simply mean nobody nearby is talking.
  • Latency trims are frames skipped deliberately to give back buffered delay, not frames the link lost. A steady trickle of them means audio keeps arriving in clumps; a count that stops rising means the queue is sitting at its target.
  • Counters reset on each new connection attempt and remain visible after a failure.
  • No tokens, server URLs or player identities are displayed.

When reporting a problem, also turn on "Verbose logging" to write the connection, audio and network trace to latest.log.

Network delay and buffering

These are built-in client behaviors with nothing to configure:

  • Playback adapts its start prebuffer between 60 and 400 ms based on arrival jitter, with a hard 1-second (50-frame) backlog cap per speaker. Arrival gaps raise the target quickly; it holds for one second and then decays a frame every 250 ms.
  • Delay that a stall leaves sitting in the queue is given back. The queue cannot drain on its own - one frame arrives and one frame plays every 20 ms - so audio that piles up behind a hiccup is skipped back out, gently (one 20 ms frame per 240 ms, faster while far behind), until the queue is back to its target. A connection with no backlog is never trimmed. This is the behavior to expect if voice through a tunnel or reverse proxy used to start out fine and get steadily laggier the longer you talked.
  • An instrument's line-in is drained the same way at the capture end, so a momentary stall on your own machine no longer leaves the instrument permanently behind your playing.
  • Gaps of 1–3 frames (up to 60 ms) are concealed with Opus PLC; longer holes reset the decoder and resume with real audio.
  • During temporary WebSocket backpressure, the sender keeps at most 25 packets per speaker and 256 in total, and discards the oldest packets once unsent audio is older than 600 ms.

Arbitrarily long TCP stalls can't be hidden with finite buffering; real cross-region connections still need testing.