Common issues and fixes for mic passthrough. See setup.md for initial configuration steps.
Symptom: mmsys.cpl → Recording tab does not show "Microphone (Steam Streaming Microphone)" at all, even after starting a stream.
Causes and fixes:
- Steam audio drivers are not installed. Run
tools/install_steam_audio_drivers.batfrom the Apollo install directory as administrator, then check again. The device should appear within a few seconds without a reboot. - Apollo is not running. The virtual device only registers when Apollo's service is active. Confirm Apollo shows in
services.mscas Running. - Wrong Apollo build. Stock Apollo (ClassicOldSong/Apollo upstream) does not include the mic receive path. Confirm your Apollo build is from
JimothySnicket/Apolloon themoonlight-micbranch or a tagged release from this project.
Symptom: "Microphone (Steam Streaming Microphone)" is present in the Recording tab but the level meter doesn't move when speaking.
Causes and fixes:
- One or both ends are not patched. Check the version string in Moonlight Qt's About screen and in Apollo's web UI. Both must be patched builds. A patched client + stock Apollo: the host receives
0x5510packets but has no handler — audio is silently dropped. A stock Moonlight + patched Apollo: no packets are ever sent. - Toggle is off or was changed after stream start. Open Moonlight Settings → Audio → confirm "Stream client microphone to host" is checked. If you changed it while a stream was running, stop and restart the stream.
- No default microphone on the client. Moonlight uses SDL2 to open the OS default recording device. If the client OS has no default mic configured, capture silently does nothing. Check
mmsys.cpl→ Recording on the client and set a default device. - Capability negotiation fell back. If the host did not advertise
SS_FF_MIC_INPUTin its SDP, the client suppresses all0x5510output as a protocol safeguard. This should not happen with a patched Apollo, but if the Apollo config was recently changed or the flags file is corrupt, restarting Apollo resets the negotiation.
Symptom: Audio plays but sounds staccato, repeating, or has a rapid dropout pattern.
Background: The proof-of-concept had a known bug where SDL2-compat returned 960-byte chunks instead of the expected 1920-byte frames, causing the accumulation loop to send half-frames and produce chop. This was diagnosed and fixed in the rewrite.
Fixes:
- Confirm you are using a build from this project (
JimothySnicket/moonlight-mic) and not a manually patched build derived from the POC. - If the chop persists on a release build, file an issue with your client OS and SDL2 version (visible in Moonlight's log output), and include a capture of the audio timing if possible — the accumulation diagnostics log to the client console.
Symptom: The level meter moves in mmsys.cpl but Discord, OBS, or another app shows no audio from "Microphone (Steam Streaming Microphone)".
Causes and fixes:
- App cached the device list at startup. Many apps — including Discord and OBS — enumerate audio devices once at launch and do not re-scan. Start the stream first, then launch the app (or restart it) so it picks up the active device.
- App is set to a different input device. Check the app's audio input setting explicitly — "Default" may resolve to a different device depending on the OS default. Select "Microphone (Steam Streaming Microphone)" by name in the app's settings.
- Exclusive-mode conflict. If another app has opened "Microphone (Steam Streaming Microphone)" in exclusive mode, shared-mode readers are blocked. Check that no other application is holding the device exclusively (rare with a virtual Steam device, but possible with some ASIO or WASAPI exclusive-mode hosts).
This is not a mic-specific issue. Check Apollo's web UI log and Moonlight's log output (%APPDATA%\Moonlight Game Streaming\Moonlight.log on Windows) for the underlying error. Mic passthrough is established after the stream handshake completes — if the stream itself fails, mic is not involved.
Open an issue at JimothySnicket/moonlight-mic. Include:
- Client OS and Moonlight build version (Settings → About)
- Host OS and Apollo version (Apollo web UI → About)
- Whether "Microphone (Steam Streaming Microphone)" appears in
mmsys.cplat all - Moonlight client log and Apollo server log excerpts around the time of the issue