Genymobile / Genymobile/scrcpy
SCRCPY 4 work with Quest 3 but not Quest 3S under Linux
- 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