Genymobile / Genymobile/scrcpy

SCRCPY 4 work with Quest 3 but not Quest 3S under Linux

Open
#6,897 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
150k
Forks
13.8k
Avg merge
4d 13h
Merged PRs (30d)
2

Description

## Environment

- **OS:** Debian 13
- **Scrcpy version:** 4
- **Installation method:** install script
- **Device model:** Quest 3S

## Describe the bug

I’m using SCRCPY 3 to cast Quest 3 headsets, and it’s been working well ever since I replaced the SCRCPY-SERVER file to fix the [screen flickering issue](https://github.com/Genymobile/scrcpy/issues/6735).

I’ve updated SCRCPY to version 4; it still works with the Quest 3 headsets, but it doesn’t work with the Quest 3S.

I have a specific command line for the Quest 3S which is now returning an error.

```
./start-cast-q3s.sh
scrcpy 4.0
Audio duplication enabled: audio source switched to "playback"
INFO: ADB device found:
INFO: --> (usb) 340YC10G8C012W device Quest_3S
/usr/local/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 310.2 MB/s (732226 bytes in 0.002s)
[server] INFO: Device: [Oculus] oculus Quest 3S (Android 12)
[server] WARN: Audio disabled: audio playback capture source not supported before Android 13
[server] ERROR: Exception on thread Thread[video,5,main]
java.lang.IllegalArgumentException: Crop Rect(1000, 600 - 5000, 1400) exceeds the input area (3664x1920)
at com.genymobile.scrcpy.video.VideoFilter.addCrop(VideoFilter.java:59)
at com.genymobile.scrcpy.video.ScreenCapture.prepare(ScreenCapture.java:96)
at com.genymobile.scrcpy.video.SurfaceEncoder.streamCapture(SurfaceEncoder.java:122)
at com.genymobile.scrcpy.video.SurfaceEncoder.lambda$start$0$com-genymobile-scrcpy-video-SurfaceEncoder(SurfaceEncoder.java:350)
at com.genymobile.scrcpy.video.SurfaceEncoder$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at java.lang.Thread.run(Thread.java:920)
Killed
INFO: Renderer: opengl
INFO: OpenGL version: 4.6 (Compatibility Profile) Mesa 25.0.7-2
INFO: Trilinear filtering enabled
WARN: Could not set window icon: wayland: cannot set icon; required xdg_toplevel_icon_v1 protocol not supported
WARN: Demuxer 'audio': stream explicitly disabled by the device
ERROR: Demuxer error
```

The command (updated for SCRCPY 4) :
`scrcpy --crop 4000:800:1000:600 --render-fit=stretched -f --video-bit-rate=6M --video-codec=h264 --max-fps=60 --keyboard=disabled --no-control -m 1920 -b 25m --angle -0 --no-audio`

the same command under Win10 works perfectly with a Quest 3S.

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the Quest 3S failure on Debian 13 with the reported scrcpy command, then start with VideoFilter.addCrop and ScreenCapture.prepare from the stack trace. Compare the crop behavior with the working Quest 3S run on Windows 10; done means the command accepts the crop and the video stream starts without the reported exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java, linux
Domain
audio-video-rtc, mobile, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.