Face & Eye Tracking on Linux
Face and eye tracking used to be a Windows-only affair, but the stack now runs natively on Linux. This covers VRCFaceTracking (the app that pushes tracking data into VRChat), Project Babble (mouth/face tracking from a camera), and getting the Bigscreen Beyond's built-in eye cameras working.
VRCFaceTracking (native Linux build)
VRCFaceTracking (VRCFT) is the hub: it reads data from a tracking module and forwards it to VRChat as OSC avatar parameters. The old shipping AppImage was Windows-flavoured .NET and couldn't load newer modules, but there's now an official native Linux build shipping on Steam.
The easy path — Steam beta branch:
- VRCFaceTracking is on Steam (app ID
3329480). - Right-click it in your library → Properties → Betas.
- Select the
avaloniabeta branch. - Let Steam download it. This is a self-contained native-Linux build that auto-updates — no manual builds, no runtime to install.
This build uses an out-of-process module host, which sidesteps the old "modules are compiled for Windows" problem, and it finds VRChat over OSCQuery on loopback (so it doesn't depend on locating VRChat's Proton config directory).
There's also a community AppImage built from the older dfgHiatus/VRCFaceTracking.Avalonia tree. It works, but it needs manual patching for current .NET and it's strictly behind the Steam build now — treat it as a fallback only.
Project Babble (mouth & face tracking)
Project Babble (the app is Baballonia) does mouth/face tracking from a small USB or IR camera pointed at your lower face. Install Babble, then add its module to VRCFaceTracking so the two talk. Once the module is loaded and OSC is connected, your avatar's mouth parameters move in-game.
Bigscreen Beyond eye tracking
The Bigscreen Beyond 2e has built-in eye cameras, but on Linux nothing exposes them out of the box. go-bsb-cams is a small server that reads the Beyond's eye cameras and serves them as an MJPEG stream (default http://localhost:8080/stream) that Babble/VRCFT can consume as an eye-tracking source.
USB permissions: the cameras need a udev rule so a normal user can open them:
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="35bd", ATTRS{idProduct}=="0202", TAG+="uaccess"' | \
sudo tee /etc/udev/rules.d/72-bsb-cams.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
Then run go-bsb-cams and point Babble's eye-tracking input at the stream URL.
Monadeck has a Beyond eye tracking section that appears when a Beyond is detected. It downloads go-bsb-cams, installs the udev rule for you, and runs the server in the background — so you don't have to keep a terminal open. (go-bsb-cams is GPL, so Monadeck runs it as a separate managed binary rather than bundling it.)
Putting it together
- Get the tracking source running: go-bsb-cams for Beyond eyes, and/or a Babble camera for the mouth.
- Launch the native VRCFaceTracking (Steam
avaloniabranch) and load the module(s). - Confirm VRCFT shows OSC connected (
127.0.0.1:9001) and detects your avatar. - Use an avatar with the matching face/eye parameters, and it just works — no SteamVR involved anywhere in this chain.