cloud phone audio not working: full troubleshooting guide
cloud phone audio not working is a confusing problem because audio paths through cloud phones are more complex than display paths. scrcpy mirrors the screen by default but does not always mirror audio. apps that rely on audio for verification (voice calls, video calls, audio captcha) often fail without obvious reason. this guide walks through the symptoms, causes, and fixes.
the symptoms: what audio failure actually looks like
before diagnosing, identify which audio symptom you are seeing.
- no audio output at all in scrcpy mirror
- audio output works but mic input does not
- audio is choppy or has heavy lag
- audio works in one app but not another
- audio works for the first few minutes then stops
- audio works on the phone but not in the recording you captured
each has different causes. start by being specific.
step 1: confirm scrcpy is set up for audio
scrcpy added audio forwarding in version 2.0 (released 2023). older versions do not forward audio at all.
check your version:
scrcpy --version
if you are below 2.0, update. on macOS: brew upgrade scrcpy. on debian: apt install scrcpy (may need backports for newer version). on windows: download fresh build from scrcpy releases.
after updating, run scrcpy with explicit audio:
scrcpy --audio-codec=opus
if audio still does not work, the issue is phone-side or path-side, not scrcpy.
step 2: check phone-side audio configuration
cloud phones sometimes have audio muted at the system level by default to save bandwidth in shared environments.
diagnostic:
adb shell dumpsys audio | head -30
look for “Stream volumes” lines. all should be non-zero for the streams you care about (typically STREAM_MUSIC, STREAM_VOICE_CALL, STREAM_NOTIFICATION).
fix steps:
- unmute via ADB:
adb shell input keyevent 24(volume up, repeat to raise) - set explicit volume:
adb shell media volume --stream 3 --set 15(where stream 3 is music) - check do-not-disturb is not enabled:
adb shell settings get global zen_mode(should be 0) - verify ringer mode:
adb shell settings get global mode_ringer(1 = normal, 0 = silent, 2 = vibrate)
verify: adb shell dumpsys audio | grep -A1 "Stream volumes" shows non-zero values.
step 3: check audio routing
android can route audio to several outputs (speaker, headphone, bluetooth, USB audio). cloud phones may route incorrectly.
diagnostic:
adb shell dumpsys audio | grep "Active audio devices"
you want to see “speaker” listed for output. if it shows something else (like a stale Bluetooth device that does not exist), audio is being routed nowhere.
fix steps:
- force speaker output:
adb shell input keyevent KEYCODE_HEADSETHOOKonce or twice - unpair stale Bluetooth devices:
adb shell cmd bluetooth_manager disable && adb shell cmd bluetooth_manager enable - reset audio routing:
adb shell setenforce 0; adb shell killall audioserver - reboot phone if routing persists incorrectly:
adb reboot
verify: scrcpy with --audio-codec=opus produces audio output.
step 4: troubleshoot mic input
if you need microphone input on the cloud phone (for voice apps, calls, audio capture), the path is different from output.
most cloud phones do not have a physical microphone. they typically simulate one via a software loopback, file-based input, or by accepting audio injected over ADB.
check what your provider supports:
- web console may have a “mic input” option
- ADB
cmd media_session play-audio-filefor injecting prerecorded audio - some providers allow live audio streaming from your laptop’s mic
if your provider does not support mic input at all, that is a fundamental limit. you cannot fix it locally.
OWASP MAS testing covers some workarounds for audio-dependent app testing.
step 5: app-specific audio issues
some apps detect cloud phones (or simulated audio environments) and behave differently.
common patterns:
- voice apps refuse to call from a cloud phone (no real mic)
- audio captcha fails because the audio path is not real-time enough
- video calls show no audio because the phone presents a virtual mic the app cannot use
- music apps work but video apps do not
fixes:
- test with multiple apps to confirm whether it is app-specific or universal
- check if your provider has a “real audio” tier with hardware audio support
- for testing-only workflows, consider mocking audio rather than expecting real audio to work
- for production workflows that need real audio, you may need a different vendor or a physical phone
numbered fix steps for common scenarios
scenario A: scrcpy shows video but no audio
likely cause: scrcpy version below 2.0, or audio codec not specified.
fix:
1. scrcpy --version to check
2. update to 2.0 or above
3. run scrcpy --audio-codec=opus
4. confirm in audio output (laptop speakers should produce sound)
verify: hear audio in scrcpy that matches the phone’s audio output.
scenario B: audio works in scrcpy but app says no audio
likely cause: phone audio routing or permissions.
fix:
1. check app’s audio permission: adb shell dumpsys package <package> | grep audio
2. grant if missing: adb shell pm grant <package> android.permission.RECORD_AUDIO
3. check audio routing as in step 3 above
4. force-restart the app
verify: app’s audio features work as expected.
scenario C: audio works initially then stops
likely cause: audio service crash or session timeout.
fix:
1. restart audio server: adb shell killall audioserver
2. check kernel logs: adb shell dmesg | grep -i audio
3. reboot phone if audio service keeps dying
4. open vendor support ticket if it persists across reboots
verify: audio holds for full work session.
scenario D: mic input does not work on the phone
likely cause: phone does not support physical mic (most cloud phones do not).
fix: 1. confirm with provider whether mic input is supported 2. if supported, follow vendor docs for enabling 3. if not supported, choose a different vendor or use a physical phone for mic-required workflows
verify: mic-dependent apps work or you have a clear path forward.
the codec angle
audio codecs matter for cloud phone audio quality and compatibility.
cloud phone audio is typically delivered via:
- opus codec via scrcpy (low latency, good quality)
- aac via web console video stream (works on most browsers)
- raw PCM via custom ADB-based forwarding (highest quality, highest bandwidth)
if you have audio quality issues, switch codec:
scrcpy --audio-codec=opus(default, good)scrcpy --audio-codec=aac(more compatible with some workflows)scrcpy --audio-codec=flac(lossless, higher bandwidth)
bandwidth considerations
audio adds bandwidth on top of video. typical numbers:
- video only: 2-8 Mbps depending on resolution and codec
- video + opus audio: add 64-128 kbps
- video + aac audio: add 128-256 kbps
- video + lossless audio: add 1-2 Mbps
if you are on a constrained network, audio can be the difference between smooth and stuttering. balance accordingly.
cloud phone slow performance fix covers related bandwidth diagnostics.
prevention: setup choices that ensure audio works
things to do upfront:
- always run scrcpy 2.0 or above
- confirm with your vendor that audio forwarding is supported on your tier
- if you need mic input, verify it is supported before committing
- test audio in your trial period, not after committing
- keep a backup capture method (web console, screen recording with audio) for critical workflows
when to escalate
escalate to vendor support when:
- audio is supposed to work according to vendor docs but does not
- multiple phones in your fleet have the same audio failure
- audio works but is heavily distorted or laggy
- mic input is documented as supported but does not function
- audio service crashes repeatedly across reboots
include in the ticket: scrcpy version, ADB output of dumpsys audio, app you are trying to use, expected vs actual behavior.
external resources
Android audio architecture documentation from AOSP covers the underlying audio subsystem. useful for understanding why some routing issues happen.
the soft pitch
cloudf.one supports audio forwarding via scrcpy 2.0+ and provides documented audio configuration in the dashboard. start with a free 1-hour trial to test audio in your specific workflow before committing. start at cloudf.one/trial or register an account.
frequently asked questions
why is my cloud phone audio silent in scrcpy?
usually scrcpy version below 2.0 or audio codec not specified. update scrcpy and run with --audio-codec=opus.
can cloud phones receive microphone input from my laptop?
depends on the vendor. most do not by default. check vendor docs before relying on mic input for your workflow.
is audio quality the same on cloud phones as physical phones?
usually yes for output. mic input is often simulated and may not match physical phone behavior.
does audio forwarding add a lot of latency?
opus codec adds 20-40ms typically. acceptable for most workflows but noticeable for real-time voice apps.
why does only one specific app have no audio on my cloud phone?
usually app-side audio permissions or audio API the app uses that does not work in cloud environments. check app permissions and consider reporting to the app developer.