scrcpy icon indicating copy to clipboard operation
scrcpy copied to clipboard

Scrcpy is not working on the latest Meta Quest OS versions (Meta Horizon OS >= 74) - Update: Workaround found, but no fix

Open marcynumix opened this issue 9 months ago • 198 comments

Environment

OS: Windows Scrcpy version: 3.1 Installation method: Windows release Device model: Meta Quest 2/3 Android version: 12

Describe the bug

I tested scrcpy on Quest 2 and the Quest 3 with the latest OS version (74) and I have now a black screen. It was working fine with the previous OS versions. Do you have any news about Meta blocking tools such as scrcpy ?

Update (17/11/25):

A workaround has been found for this issue : https://github.com/Genymobile/scrcpy/issues/5913#issuecomment-3092268785

Please note that this is only a workaround — not a perfect solution, and not a definitive fix for the issue.

scrcpy-win64-v3.3.1-quest3-workaround.zip

marcynumix avatar Mar 10 '25 15:03 marcynumix

Update: It seems it is blocking scrpcy only when Quest for Business is installed and configured on the headset

marcynumix avatar Mar 11 '25 08:03 marcynumix

Update: I reached the Meta technical support who told me : "The scrcpy to our knowledge uses hidden AOSP (Android open source project, which is the foundation of the Horizon OS in Meta Quest devices) features, so changes in either can result in the scenario you've encountered. As scrcpy is a third party solution, from Meta's side we are unable to provide any support for it." So I guess this the end of the scrcpy compatibility (with the pro plan at least)

marcynumix avatar Mar 11 '25 14:03 marcynumix

I'm having this problem with Horizon OS 74 and scrpy 3.1 but do not have Quest for Business installed afaik. (Also where do you check to make sure it's not installed, and/or remove it to test this)

jamie-pate avatar Mar 15 '25 16:03 jamie-pate

Meta lists scrcpy in their docs, maybe you can send them this link and request them to escalate?

https://creator.oculus.com/create-build/capturing-video-from-a-quest-headset/#stereoscopic-capture

jamie-pate avatar Mar 15 '25 16:03 jamie-pate

I'm having this problem with Horizon OS 74 but do not have Quest for Business installed afaik. (Also where do you check to make sure it's not installed, and/or remove it to test this)

I also had the issue on non quest for business devices recently, so it seems this issue will concern everyone eventually. You need to pay for the quest for business mode, so it can't be enabled by accident

marcynumix avatar Mar 17 '25 10:03 marcynumix

Meta lists scrcpy in their docs, maybe you can send them this link and request them to escalate?

https://creator.oculus.com/create-build/capturing-video-from-a-quest-headset/#stereoscopic-capture

Thanks for the link, I will send it to Meta

marcynumix avatar Mar 17 '25 10:03 marcynumix

The crop feature does not work anymore

It should work with scrcpy 3.x. (#4162, fixed by #5455)

rom1v avatar Mar 17 '25 12:03 rom1v

Update: Meta support told me they were investigating the issue

marcynumix avatar Mar 18 '25 15:03 marcynumix

v3.x does work! But anything before 3 does not.

3.1 does not work for me 🤔

jamie-pate avatar Mar 18 '25 16:03 jamie-pate

3.1 does not work for me 🤔

You mean cropping is not applied? 🤔

rom1v avatar Mar 18 '25 16:03 rom1v

I mean i get a blank screen. (see the issue description)

I'm not sure how it's related to cropping

Describe the bug I tested scrcpy on Quest 2 and the Quest 3 with the latest OS version (74) and I have now a black screen. It was working fine with the previous OS versions. Do you have any news about Meta blocking tools such as scrcpy ? If so, that really sucks.

jamie-pate avatar Mar 18 '25 20:03 jamie-pate

I got it working with a Quest3 (v76) with Meta For Business MDM, by passing the device id 0 --display-id=0

When listing the displays:

[server] INFO: Device: [Oculus] oculus Quest 3 (Android 14)
[server] INFO: List of displays:
    --display-id=0    (4128x2208)
    --display-id=9    (4128x2208) <-- probably this was creating the issue
    --display-id=11    (1020x125)
    --display-id=107    (1280x800)
    --display-id=121    (1280x800)
    --display-id=137    (1280x800)
    --display-id=141    (1280x800)
    --display-id=167    (1x1)

kevinagnes avatar Apr 03 '25 08:04 kevinagnes

by passing the device id 0 --display-id=0

0 is the default, so passing --display-id=0 should have absolutely no impact.

rom1v avatar Apr 03 '25 09:04 rom1v

I just tested this morning (without the --display-id argument) and scrcpy was suddenly working again with the MDM. Go figure.

marcynumix avatar Apr 03 '25 09:04 marcynumix

Yes, now I am getting mixed results, I recorded a video with some examples.

https://github.com/user-attachments/assets/c8485f1e-8fe3-4ea7-811a-f00a1557514f

kevinagnes avatar Apr 03 '25 12:04 kevinagnes

Also see #5946.

rom1v avatar Apr 03 '25 12:04 rom1v

just want to mention that quest 3 is now on meta os v76 android 14 which now has the flickering issue when you use cropping previous issues persist though (if headset was not awake, the streaming will not start, it's now empty / blank / black) window

JurajVincur avatar Apr 18 '25 19:04 JurajVincur

I can confirm that Q3S and Q2 on Android 14 have the same issue.

kevinagnes avatar Apr 18 '25 21:04 kevinagnes

I also got the flickering issue this morning (Quest 2, v76)

marcynumix avatar Apr 30 '25 08:04 marcynumix

I can confirm that Scrcpy command that used to work before just gives gives me black screen on Quest 3 after OS update.

ravigupta-art avatar May 03 '25 07:05 ravigupta-art

same here, flickering. Would be good if they addressed that or we had a workaround. scrcpy is miles better than their cast thingy

handzlikchris avatar May 18 '25 17:05 handzlikchris

A workaround I found is to not use scrcpy cropping (which seems to cause more flickering) and to start casting only after the headset is worn (when the light sensor detects presence).

kevinagnes avatar May 19 '25 14:05 kevinagnes

Just to verify does the crop take place on device before the data is streamed, or does the full video get streamed over and cropped on the device running scrcpy?

Calvin-Jones3 avatar May 21 '25 16:05 Calvin-Jones3

Just to verify does the crop take place on device before the data is streamed

Of course.

rom1v avatar May 21 '25 16:05 rom1v

We Have Flickering right after we use or open a Meta UI window in VR. Even if we have no crop no nothing just blank start of scrcpy. It happens on quest 2&3 seems the firmware patch causes it on both

pascal-vrfx avatar May 22 '25 14:05 pascal-vrfx

did someone tried to do a firmware downgrade?

overflow avatar May 22 '25 16:05 overflow

It seems that screen flickering occurs when certain UI elements within the Meta OS in VR are triggered. For example:

Pointing at the Horizon Feed app button with the controller pointer

Pointing at the Messenger window with the controller pointer

Opening the Settings menu and closing it with the X Ui button

These interactions with the Meta UI appear to interfere with how scrcpy captures the screen.

Recently, minor issues like a small white rectangle appearing in the lower left have also been observed. However, these issues do not appear on non-VR Android devices, which suggests that Meta OS may have introduced behavior affecting screen capture differently from standard Android, likely due to recent updates.

Ideally, I’d like to roll back to a Meta OS version where this problem didn’t occur, but Meta no longer allows OS downgrades, so that isn’t an option. For now, I’m mitigating the issue by restarting scrcpy whenever the screen flickers.

Even after the recent Meta OS v77 update, scrcpy 3.2 continues to show flickering when interacting with Meta UI. The biggest issue is that once the flickering starts, it doesn’t stop until scrcpy is restarted. I’m currently exploring possible ways to address this.

METoTs avatar May 23 '25 10:05 METoTs

I am also having issues with scrcpy 3.2 and Quest 3 on v76.

It seems related to on device graphics filtering. When --angle or --crop is present then I get heavy flickering, like a double buffering that is out of phase or something like that.

I will leave these commands out for now and do my processing in OBS.

ludzeller avatar Jun 06 '25 12:06 ludzeller

I have the same issue. I de-activated the buton for automatic OS updates on my remaining VR meta headset which still have previous OS version, but Meta whaterver will force all headset to migrate at a defined date in several weeks.

alexisvra avatar Jun 06 '25 13:06 alexisvra

According to you guys, is it an intentionnal moove from Meta to avoid third parties to get screen mirroring or is it an hazardous consequence from those last updates ?

alexisvra avatar Jun 06 '25 13:06 alexisvra