FaceFocusVR
Offline Version
This document is an exported snapshot of the online instructions. For the best experience with interactive images, videos, and the latest updates, please use the website. This PDF is intended as a backup in case the website is unavailable or you have no internet access.
If you need any help, join the Discord (facefocusvr.com/discord).
Essential information before you start installing your FaceFocusVR kit.
Installing the kit is mostly straightforward and should take roughly one to two hours if you follow the instructions carefully, thoughtfully, and at your own pace. There is no need to rush.
The instructions in this guide describe the method I have found to be the most reliable and easiest to install. If you discover a better approach during installation, for example a different cable routing method, you are free to use it. That said, I strongly recommend following my instructions exactly as written, especially on your first attempt.
Regardless of your chosen approach, please keep one important rule in mind: camera cables must never be kinked, twisted, or folded. Gentle bends are perfectly fine, but the cables must remain smooth and free of sharp angles at all times. Damaged cables cannot be repaired and will need to be replaced.
The FaceFocusVR board is the central piece of your kit. It connects all cameras, LEDs, and the fan. Before you start installing, take a moment to familiarize yourself with each connector and its purpose.
Camera Connectors
The three wide ribbon cable connectors are for the cameras: Eye Right and Eye Left at the top, and Face at the bottom. The eye cameras sit inside rings that mount around your headset lenses. The face camera in the face module.
LED Connectors
The three small connectors along the bottom edge are for the infrared LEDs: Eye R and Eye L on the right, Face on the left. They ensure tracking works even in complete darkness.
Fan / Power Button
The fan header at the top powers the cooling fan. The connector on the right side is where the power button connects.
USB
The additional USB port on the front of the board can be used for extra accessories such as a Bluetooth dongle. However, since it is power-limited, I would not recommend using it.
Physical installation of the FaceFocusVR kit into your Valve Index headset.
Before you begin, prepare your headset by adjusting a few settings and removing detachable parts.
Source: ifixit.com
The face gasket bezel needs to come off so you can access the internal components.
Source: ifixit.com
With the bezel removed, carefully detach the eye tube gasket using tweezers.
Source: ifixit.com
With the gasket removed, take off the front cover and motherboard cover to access the internals.
Source: ifixit.com
From this point onward, the process becomes more delicate because you are working with ribbon cables. Take your time!
In the next four steps, you will install the two rings used for eye tracking. Each ring contains a circuit board with LEDs for eye illumination and a camera.
Since it's often easier to work toward a visible goal, the images show what your setup should look like after completing steps 5, 6, 7, and 8.
In step 5, you will route the ribbon cable for the left side through the headset. In step 6, you will do the same for the right side. Steps 7 and 8 will then connect the LED modules.
In the end, there should be four cables coming out of the front of your Index, positioned exactly as shown.
Guide the left ribbon cable through the headset so it exits on the front side.
The ribbon cable should pass behind the blue-marked plastic piece and exit through the bright hole, following the orange arrow shown in the reference image.
If you have difficulty guiding the cable through the hole or seeing it, place a light source in front of the headset to clearly see where the cable should exit.
In the last image, you can see where the ribbon cable should exit. With enough light and some patience, it's quite easy to guide the ribbon cable through the hole.
Once the cable has reached the other side, gently press the ring onto the lens to keep it in place.
Now repeat step 5 for the right side.
The ribbon cable should again pass behind the blue-marked plastic piece and exit through the bright hole, following the orange arrow shown in the reference image.
In the last image, you can see where the ribbon cable should exit.
Once the cable has reached the other side, gently press the ring onto the lens to hold it in place.
Route the flexible LED cable on the left side through the same path used in step 5.
After routing the two ribbon cables for the cameras, route the left flexible LED cable along the same path as shown in step 5.
You may need to slightly lift the ring off the lens to guide the cable through. Be careful not to let the camera ribbon cable slip out while doing so.
After connecting the cable to the ring, press the ring back onto the lens and gently pull any excess cable out from the front.
Route the flexible LED cable on the right side through the same path used in step 6.
Now repeat step 7 for the right side. Route the right flexible LED cable along the same path as shown in step 6.
Again, you may need to slightly lift the ring off the lens to guide the cable through. Be careful not to let the camera ribbon cable slip out while doing so.
After connecting the cable to the ring, press the ring back onto the lens and gently pull any excess cable out from the front.
With all cables routed, reattach the eye tube gasket to the headset.
Source: ifixit.com
With all cables in place, reattach the face gasket bezel to complete the hardware installation.
Source: ifixit.com
To prevent the left ribbon cable from getting caught in the fan, it needs to be routed through a specific gap.
Route the cables through the new frunk and secure it to the headset.
Read the entire step before you start!
This step requires some patience and care, because the cables tend to stand upright or shift out of position.
Sometimes it helps to pre-bend the cables slightly so they naturally fall into the correct position during installation, as shown in the picture.
When attaching the frunk, make sure the cables run roughly as shown in the pictures. The exact routing is not critical, but it is very important that they are not pinched or sharply bent.
Pay special attention to the right cable near the USB port. In my experience, it tends to stand upright in front of the connector. The cable should route away from the USB port, not in front of it.
You should not feel any significant resistance when placing the new frunk. If you have to use force to push it down, one of the ribbon cables is probably being pinched, most likely the right one when looking at the Index from the front.
The cables should extend about 1 cm beyond the edge of the frunk so you can easily connect them later. The exact length is not critical, as long as there is enough cable to plug them in comfortably.
Before tightening the screws, make sure that no ribbon cable has shifted into the path of a screw (see step 11).
Carefully insert the mainboard into the USB connector and secure it in place.
Connect the ribbon cables, LED connectors, and fan.
Attach the front cover with the face tracking module and power switch.
Route the ribbon cable through the holder and mount the arm to complete the installation.
Your hardware installation is complete. Follow the steps below to verify everything is working.
To test if everything is working, power on your Index and switch on your new hardware using the button on the front. A blue LED should light up on the board, visible through the top ventilation slots above the power button.
Next, open the Device Manager. If you see three camera devices listed, as shown in the image on the right, the mainboard is working correctly. If you only see two, simply power-cycle the system once. This can happen because Windows or the USB connection may not initialize all devices on the first attempt.
Now open the Windows Camera app and try switching between all three video streams. If this works, congratulations, your hardware is installed and functioning correctly.
Now move on to the software part.
Configure the tracking software on your PC.
This project focuses on hardware. Your computer sees the three cameras (Eye L, Eye R, Face) as standard UVC webcam streams at 240x240@60 FPS or 320x320@45 FPS on newer revisions. Any software that can process a webcam stream will work.
Popular tracking software includes ETVR, Ryan's Eye Tracking, and Project Babble. All of them are compatible with this hardware. I recommend Baballonia by Project Babble for the best results and ease of use, but feel free to try other options.
This guide covers the Baballonia setup.
VRCFT acts as a translator for VRChat. It converts face-tracking values and eye-tracking data it gets from Baballonia into parameters that VRChat understands, allowing your avatar's expressions and movements to respond accordingly.
If you want to use face tracking (and eye tracking) in VRChat, you will need VRCFT, regardless of whether you are using my hardware or any other face-tracking solution.
Baballonia analyzes the camera streams from your eyes and face to determine your gaze direction, eye openness, and facial expressions, then forwards this data to VRCFT.
All following steps need to be done while you are in VR. Yes, VRChat works too.
For the face camera only, you need to set a crop that keeps your face visible in all extreme positions while including as little background as possible. I recommend the following approach:
It doesn't have to be perfectly precise. From my testing, it's better to include a bit more background rather than accidentally cutting off parts of your face. In the end, your crop will likely look similar to mine shown in the last image.
Video: https://www.youtube.com/watch?v=CmLql1VxT-I
I highly recommend watching the video before starting the calibration process.
The goal is to teach the software what your eyes look like when closed, since this can vary depending on facial expression or headset position.
Eye and face tracking is now ready to use. Try this avatar for testing in VRChat.
If you want to fine-tune your tracking, fix issues with blinking or winking, or exaggerate certain expressions, switch to the Fine-Tuning tab.
Adjust tracking parameters to get the best results for your expressions.
Only adjust these settings if you notice a specific issue, for example incorrect blinking, expressions triggering too early, or expressions not being strong enough. If everything works fine, there is no need to change anything.
If your avatar isn't blinking correctly, or you want smiles and other expressions to appear more or less intense, you can fine-tune them in the Baballonia app by adjusting the threshold settings.
Each parameter, such as LeftEyeLid, RightEyeLid, or any face parameter like smile, has two controls: a minimum (circled in yellow) and a maximum (circled in pink). The red dot shows the current state and moves based on your expression. For example, when your face is relaxed it moves to the left, and when you start smiling it moves to the right.
The minimum value defines when a shape starts activating. Raise it if the shape triggers too early or stays active while idle. The maximum value controls how far the shape can move. Lowering it exaggerates the motion within the new range.
If your avatar's blinking or winking doesn't behave as expected, or it doesn't blink at all, you can raise the minimum value of the eyelids. This makes the blink trigger earlier and appear faster.
The value will likely be higher than the one shown in the image. Based on the calibration, mine is normally between 0.15 and 0.4.
Sometimes you may want an expression to trigger earlier, stay slightly active all the time, or be exaggerated.
A good example is smiling. If you want your avatar to keep a slight smile even when your face is mostly relaxed, simply lower the maximum value for the smile parameter.
I highly recommend just playing VRChat with your avatar, looking in a mirror, and experimenting with the parameter minimums and maximums. The values update live, so you don't need to switch between tabs to see the results.
Sometimes an expression might trigger too early, for example when you open your mouth and your avatar sticks out the tongue even though you are not actually doing that.
In those cases, you can adjust the minimum value of the corresponding parameter so the expression only activates when it should.
I highly recommend just playing VRChat with your avatar, looking in a mirror, and experimenting with the parameter minimums and maximums. The values update live, so you don't need to switch between tabs to see the results.
A web-based tool for interacting with your FaceFocusVR hardware.
FFVR Connect is a web-based tool that lets you interact with your FaceFocusVR hardware directly from your browser. You can adjust the fan speed, change LED brightness, enable and read logs, and in the future also perform firmware updates.
The tool is designed to be intuitive and easy to use. Simply open it in your browser, connect your board, and you are ready to go.
You can access it here: connect.facefocusvr.com
FFVR Connect requires a Chromium-based browser (Google Chrome, Microsoft Edge, Brave). I recommend Google Chrome. Firefox and Safari are not supported.
If your board cannot connect, it is most likely running an older firmware version that does not support the tool. Every board shipped before 15.03.2026 does not have the necessary hardware for fan control, so a manual firmware update is not needed.
If you still feel the need to update, please reach out via Discord.
Fan Speed - The default is 30%, which is also what I recommend. Do not set it below 25%.
LED Brightness - Can be changed, but this is not required. Only adjust if specifically asked by FaceFocusVR support.
Logging - Enable and read device logs for diagnostics.
Firmware Updates - Will be available through FFVR Connect in the future.