Selfie expression linux

Well.. someday they will fix it :laughing:

(please fix it :sad_but_relieved_face:)

A partial fix that I’ve cooked up in the mean-time (can only work with avatars specifically built for it) is through using the OSC system.

The first functional combo I was able to cook up was:

  • Foxy Face for face tracking
  • This fork of VRCFaceTracking, that rewrites the UI with the platform agnostic Avalonia GUI toolkit (Proton fails to run the original windows only version)
  • Deskymode integrated into my avatar.

Since the OSC protocol is over UDP, it doesnt matter that some of the programs are running in proton and some aren’t.

I’ve not fully worked out the kinks in the setup yet, but I think most of what I have left to solve is calibration tweaking for my camera setup, and model tweaking (my visemes will need reworking)

It won’t work for everyone, since your model needs to support OSC expressions. I’m kinda fortunate in that regard that I make my models myself and have the best control over modifying them, but its at least better than nothing at all. I hope these suggestions are helpful to at least someone trying to deal with similar constraints.

4 Likes

Yeah, I’ve found DeskieMode to be easily implemented in avatars (even if you did not create them, as long as they are correctly rigged/designed I’m not sure)

What’s missing from this setup is the hands tracking which is to me pretty important

1 Like

Related to the VRChat webcam situation discussed here:
I made a Proton-GE build with some MF/DirectShow patches that allow VRChat to use Linux webcams on my system. Camera initialization and OSC/MF face-tracking seem to work.
(This was completed with the help of AI.)

See this comment for details and binaries:

Screenshots:

4 Likes

I’ve integrated a fix for the camera/selfie issue into a custom Proton build. I’m looking for help to test compatibility across different camera models before submitting the patch to WineHQ.

GE-Proton10-32-camera-fixes-dev1

I apologize, the previously compiled v1 version was an incomplete version, only temporarily usable, and contained some hard-coded code, but it did not affect usability. I will provide a complete version later.

:backhand_index_pointing_right: GE-Proton10-32-camera-fixes-dev

anyone else with camera issues help test this?

To provide logs:
Add this to VRChat Launch Options:
WINEDEBUG=+mfplat,+mf,+mfreadwrite,+qcap,+quartz PROTON_LOG=1 %command%

Please report:

  1. Camera Model (e.g., C920, Integrated, etc.)
  2. The steam-438100.log from your Home folder.

The quality of the code is not high, but it works

4 Likes

Heya ! I can confirm it Works On My Machine :tm:

I am using a laptop with an integrated camera (ID 0408:4035, Quanta Computer, Inc. ACER HD User Facing)
Here (http://vps-04375e64.vps.ovh.net:5253/raw/accomplished-taut-asiansmallclawedotter.log) is the logfile, I had Selfie Expression enabled on start, disabled and enabled while running

Edit: also worked with OBS virtual camera

Thanks a lot for the update and for sharing the detailed logfile!

I’ve also tested this using a smartphone camera via scrcpy and v4l2loopback (virtual camera). I tested several different resolutions and everything seems to be working perfectly on my end as well.

Hey LilFishyChan, I just want to say a huge thank you for this patch!

I was stuck on this problem for 2 months and had to dual-boot into Windows just to use VRChat with webcam tracking. Your custom Proton build with MF/DirectShow patches finally made it work on Linux!

My setup:

  • CPU: Intel Xeon E5-1650v4
  • RAM: 32GB DDR4 2666MHz
  • GPU: Palit RTX 3070Ti 8GB (NVIDIA 590.48.01 drivers)
  • OS: CachyOS, KDE Plasma 6.6.1, Wayland
  • Proton: proton-cachyos-10.0-20260227 (switched to your build)
  • Phone as webcam: Xiaomi POCO (Android 15) via scrcpy → /dev/video0

VRChat now detects the camera and head/hand tracking works through the built-in OSC tracking. No more dual-booting into Windows!

I really appreciate the work you put into this. Hope the patch gets merged into mainline Proton/Proton-GE soon so more Linux users can benefit from it. Thanks again!

Hey again! Camera works great, thank you once more.

However I found an issue with your build — my home world loads fine, but when I try to join any public/multiplayer world it just goes black screen and hangs forever.

Relevant line from the log:
warn: DxvkMemoryAllocator::createImageResource: Failed to open shared D3DKMT handle

I also tested GE-Proton10-29 — same black screen issue on world join. So the problem seems to be GE-based builds in general on my system.

With stock proton-cachyos-10.0-20260227 everything works perfectly (worlds load fine) — except camera of course, which is why I need your patch.

Is there any chance you could build a version of your camera patch based on proton-cachyos instead of GE? That would likely fix the world loading issue on my end.

  • Working build: proton-cachyos-10.0-20260227 (worlds load, no camera)
  • Your build: GE-Proton10-32-camera-fixes-dev2 (camera works, worlds broken)

Actual magic.

I just hopped on for a quick test but it works like a dream. I don’t have any logs for the moment, but when I get on for a longer session I’ll post some!

Specs (from ProtonDB)
OS: Arch Linux
KERNEL: 6.18.7-arch1-1
CPU: AMD Ryzen 7 7700X 8-Core
GPU: AMD Radeon RX 7900 XT (radeonsi, navi31, LLVM 21.1.6, DRM 3.64, 6.18.7-arch1-1)
GPU DRIVER: 4.6 Mesa 25.3.4-arch1.2
RAM: 32 GB
Webcam: EMeet C960

Hey! I managed to get webcam face tracking working on proton-cachyos for VRChat. The issue was that VRChat uses DirectShow (not Media Foundation) for camera access, so your mf.dll patch alone wasn’t enough — the critical fix was also needed in quartz.dll, qcap.dll, qedit.dll, devenum.dll and avicap32.dll from the GE-Proton camera build.

I put together a hybrid proton-cachyos with your compiled mf.dll and the camera DLLs from GE-Proton. Worlds load fine and face tracking works.

Full write-up and prebuilt DLLs here: https://github.com/P1KaChU337/proton-cachyos-camera-fix-for-vrc

Maybe some of this is useful for upstreaming the fixes. Thanks for the patch!

I have using AI to assist with patching parts of DirectShow and Media Foundation (MF). I’ve discovered that VRChat utilizes DirectShow; testing with DirectShow’s AMCap.exe shows it is working correctly now. However, VLC capture still encounters issues (preliminary analysis suggests it might be using an interface other than video preview). On the other hand, MFCaptureD3D.exe seems to be performing normally at this stage.

I plan to split these changes later and attempt to submit the fixes for the DirectShow and MF preview interfaces first.

I’ve tested it, and on my device, I’m not experiencing any black screens or freezing issues.

It’s already 1:30 AM here. I’ll try to build a version of proton-cachyos with these integrated hotfixes tomorrow.

Good night!

This is my computer configuration

Good night! Great to hear you’re working on an integrated build.

Just a heads up — the black screen issue on my end seems to be NVIDIA-specific. The error in my logs was DxvkMemoryAllocator: Failed to open shared D3DKMT handle, which only appears with GE-based builds on my NVIDIA RTX 3070 Ti.

I put together a working build based on proton-cachyos-10.0-20260227 with the camera DLLs patched in. Worlds load fine and face tracking works on my end.

Full build (1.2GB) and individual DLLs available here: proton-cachyos-camera-fix

If you get a chance to test it, that would be awesome! Looking forward to the official integrated build!

1 Like

hi! first of all thanks yall for working on this fix! i thought i was going to be out of luck. sorry if this is a stupid question, but how do i add the proton-cachyos-camera-fix proton version to my steam compatibility tool list so i can choose it to play VRC with? im on cachyos as well.

Extract the archive to ~/.steam/steam/compatibilitytools.d/:

tar -xzf proton-cachyos-camera.tar.gz -C ~/.steam/steam/compatibilitytools.d/

Then fully restart Steam (not just close the window — make sure the tray icon is gone too). After that go to VRChat → Properties → Compatibility → check “Force the use of a specific Steam Play compatibility tool” → select proton-cachyos-camera (webcam patch) from the list.

1 Like

it works!! thank you SO much for working on this your timing could not have been more perfetct <3

So glad it works for you! Big thanks to LilFishyChan for the original patch — without their work none of this would have been possible. But hey, someone had to figure out that VRChat uses DirectShow, dig through Wine logs at midnight and put it all together! :grinning_face_with_smiling_eyes::folded_hands:

1 Like

It works on Fedora 43 here! But it’s freezing every 10 seconds because the world map can’t load video players with this patch atm

The video player seems to be working?

I’m using ge-proton10-32-camera-fixes-dev1.2.2

Perhaps you could try moving the data file to reinitialize it?

󰪢 0s 󰜥 󰉋   /.local/share/Steam/steamapps/compatdata 
    ls
 0        1116580   2180100   3221180
 438100   1493710   2942950   3329480
󰪢 0s 󰜥 󰉋   /.local/share/Steam/steamapps/compatdata 
    mv 438100 438100_back

I just tried it, and after initialization, the proton-cachyos-camera (webcam patch) video playback works normally.

1 Like