Instructions
Thank you for your interest in or purchase of the kit!
Below you will find instructions on how to install it into your Index, set up the software, and some tips for achieving better tracking results.
Your kit has been fully tested before shipping and includes all the necessary components such as cameras, infrared LEDs, and the mainboard to add both eye and face tracking to your setup. Please read the instructions carefully and follow them step by step. Some parts, especially the camera cables, are quite fragile and can be easily damaged if handled incorrectly.
If you have any questions or need assistance, please join the Discord server and ask for help there!
Basics
Installing the kit is mostly straightforward and should take roughly an hour if you follow the instructions carefully, thoughtfully, and take your time.
The instructions I provide describe the method I’ve found to be the most reliable and easiest to install. However, if during installation you discover a better approach — for example, a different cable routing method — you’re free to use it. That said, I strongly recommend following my instructions exactly as written.
Regardless of your chosen approach, camera cables must not be kinked, twisted, or folded. Gentle bends are acceptable, but the cables must remain smooth and free of sharp angles.
Now, let’s go over what each connector on the board is used for:
Hardware
- M3 Allen key (hex key)
- T5 Torx screwdriver
- (Self-holding) Tweezers
Step 1 – Preparation
- Rotate the field-of-view adjustment knob clockwise until it is fully extended.
- Set the IPD to its minimum value (lenses fully inward).
- Remove the magnetic face cushion.
- Gently pull the tether cable straight out of the headset (only the cable itself; there’s no need to remove the cable clips from the head strap).
Step 2 – Remove the face gasket bezel
- Use a T5 Torx screwdriver to remove the four 6 mm screws securing the faceplate frame to the headset.
- Grab the left edge of the face gasket bezel with your hand and slide it off of the headset.
- Repeat the previous step for the right side of the face gasket bezel.
- Remove the face gasket bezel.
⚠️ Do not try and pry the face gasket bezel off, or you will damage the headset.
Step 3 – Remove the eye tube gasket
- Use a pair of tweezers to separate the left edge of the eye tube gasket from the headset.
- Repeat the process for the right edge of the gasket.
Step 4 – Remove the motherboard cover
- Pull the front cover straight off of the front of the headset. It is held in place by four magnets
- Use a T5 Torx screwdriver to remove the four 5.4 mm screws securing the motherboard cover to the headset.
- Remove the motherboard cover from the headset.
Goal for Step 5,6,7 and 8
From this point onward, the process becomes more delicate because you are working with ribbon cables. Take your time!
In the next four sections, 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 image on the right shows 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 the same way as shown in my setup.
Step 5 – Routing the left ribbon cable
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 cables 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.
Step 6 – Routing the right ribbon cable
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.
Step 7 – Routing the left LED cable
After routing the two ribbon cables for the camera, route the left flexible cable for the LEDs along the same path. The easiest way to do this is by pushing it through from the front.
It is usually easier to remove the ring from the lens before trying to plug in the cable.
⚠️ Pay attention to the connector’s orientation, as it only fits one way, so do not force it!
(The cable colors and wire order do not matter, as they can differ depending on which side of the cable you are looking at. Just make sure the metal contacts of the connector are facing upward when plugging it in, as shown in the second picture.)
After connecting the cable to the ring, press the ring onto the lens and gently pull any excess cable out from the front.
Step 8 – Routing the right LED cable
Now repeat step 7 for the right side. The cable for the LEDs should again follow the same path as the camera ribbon cable.
⚠️ Pay attention to the connector’s orientation, as it only fits one way, so do not force it.
(The cable colors and wire order do not matter, as they can differ depending on which side of the cable you are looking at. Just make sure the metal contacts of the connector are facing upward when plugging it in, as shown in the second picture.)
After connecting the cable to the ring, press the ring onto the lens and gently pull any excess cable out from the front.
Step 9 – Reattach the eye tube gasket
- Use a pair of tweezers to place the left edge of the eye tube gasket onto the small hooks on the headset.
- Repeat the process for the right side of the gasket.
Step 10 – Reattach the face gasket bezel
- Position both sides of the face gasket bezel and carefully slide it onto the headset.
- Use a T5 Torx screwdriver to fasten the four 6 mm screws, securing the bezel to the headset.
⚠️ Make sure the clips on the face gasket bezel are properly aligned with the headset before sliding it fully into place.
Step 11 – Cable routing preparation
To prevent the left ribbon cable from getting caught in the fan, it needs to be routed differently.
- Make sure the field-of-view adjustment is still fully extended and that the IPD is set to the lowest setting (lenses fully inward).
- Guide the LEFT cable (when looking at the Index from the front) through the small gap between the plastic housing of the Index and the threaded insert, as shown in the pictures.
⚠️ Make absolutely sure that the ribbon cable is fully pushed through and not stuck in the gap. If the cable gets caught there, it WILL be permanently damaged beyond repair.
Step 12 – Installing the Frunk
READ THE ENTIRE STEP BEFORE YOU START.
Now the cables need to be routed through the new frunk. It is very important to keep the following in mind:
- Avoid sharp bends: The cables must not be sharply bent or creased. A gentle curve, as shown in the photos, is fine.
- Do not pinch the cables: Make sure the ribbon cables are not pinched when attaching the new frunk. They should lie as flat as possible and must not stand on edge, since this could cause them to be compressed and damaged.
This step requires some patience and finesse, because the cables often tend to stand upright or not stay in the correct 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 on the right.
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).
⚠️⚠️⚠️⚠️⚠️ Make sure the gold contact side of the ribbon cables is facing upward when you feed them through the passthrough ⚠️⚠️⚠️⚠️⚠️
Step 13 – Installing the Mainboard
- Insert the mainboard at a slight angle into the USB connector. As soon as it clears the edge of the frunk, level it out so it slides straight into the USB connector.
- Once the board is fully inserted, press down on the back until it clicks into the hooks.
Due to manufacturing tolerances, the hooks on the left may appear slightly too short, preventing the board from locking in securely. In this case, press the board down and pull it back a little until it engages under the hooks. The adjustment is only a fraction of a millimeter and will not affect the USB connection.
Step 14 – Connect all cables
- Now you can connect the ribbon cables. Do not crease them; instead, bend them gently as shown in the picture.
⚠️ Open the connectors by lifting the black tabs on the sides upward, as demonstrated in this video: https://youtu.be/ChYlUjlmfA0?si=1A9ymmGL_QOpSDcZ
- You can now also plug in the two connectors for the LEDs.
⚠️ Pay attention to the connector’s orientation, as it only fits one way, so do not force it.
(The cable colors and wire order do not matter, as they can differ depending on which side of the cable you are looking at. Just make sure the metal contacts of the connector are facing downward when plugging it in, as shown in the third picture.)
- Lastly, plug in the fan.
Congratulations
You’ve completed all the tricky and annoying steps!
Your Index should now look something like this.
Step 15 – Front cover
- Feed the pre-assembled face tracking module through the front cover and connect it to the board as shown in the photo.
- Connect the power switch to the board.
- Secure the cover using the supplied screws.
Step 16 – Face tracking module arm
- Now feed the ribbon cable through the designated holder and install the arm. The easiest way to do this is to temporarily position the face tracking module at an angle so the cables are not under tension.
- This is also a good time to install the long screw that secures the face tracking module. After adjusting the module so it points toward your face and tightening the screw, the installation is complete.
Step 17 – Cable Guard
- Finally, attach the cable guard by sliding it from below over the camera until it reaches the top and covers the cables of the face tracking module.
Congratulations, you are done!
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 sometimes happens because Windows or the USB connection can be a bit wonky.
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.
Software
Basics
At the moment, this project focuses exclusively on hardware. Technically speaking, your computer recognizes the three cameras (Eye L, Eye R, and Face) as UVC (webcam) streams with a resolution of 240×240 at 60 FPS. Therefore, any software capable of processing a webcam stream can be used.
The most common eye-tracking software solutions in our field are ETVR, Ryan’s Eye Tracking, and Project Babble. Each of these works with my hardware setup. I personally used ETVR for a long time, but since the release of Baballonia—the all-in-one solution for eye and face tracking—I have switched to it.
In my opinion, Baballonia by Project Babble currently provides the best results and is very user-friendly, so I recommend using it. However, everyone is also encouraged to try ETVR or other compatible software to find what works best for them!
This guide will initially cover the setup for Baballonia and will later be expanded to include ETVR once a newer version (Leap 2) is released.
VRCFaceTracking
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.
- You can download VRCFT on Steam:
https://store.steampowered.com/app/3329480/VRCFaceTracking/ - After launching it, navigate to “Module Registry”
- Search for the module „VRCFT-Babble“ and install it
- Restart VRCFT
- The Babble module should now appear on the home page of the VRCFT app, as shown in the last image. No further steps are required in VRCFT
Installing Baballonia
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.
- Download the latest .exe file from GitHub:
https://github.com/Project-Babble/Baballonia/releases/latest - When starting the installation, Windows will display a security warning saying “Windows protected your PC”
- Click “More info” then select “Run anyway” to continue the installation
- Baballonia should install successfully and launch automatically after the installation is complete
Configuring Baballonia
- Open Baballonia and skip the setup wizard.
- Navigate to the VRCFaceTracking tab (the speech bubble icon on the left).
- Change “Set VRCFT Mode” from “Face” to “Both.”
- Navigate back to the home page (the house icon on the left side).
- If you see the message “Important! Newer Babble trackers…”, simply check the box that says “Don’t show this warning again” and click “Dismiss.”
- Open the “Face Camera Settings” and enable both the vertical and horizontal flip options. Do not adjust any camera settings for the eyes!
- Last but not least, make sure your Index and my hardware are powered on, then select the corresponding camera from the dropdown menu.
- Once you’ve selected all the cameras, click “Start Camera” for each one.
- Restart VRCFaceTracking (The Programm on Steam)
Congratulations! You’re almost done. The only remaining steps are cropping the face camera and calibrating the eyes.
For all following steps, you need to be in VR (Yes, VRChat works too).
Face Camera Cropping
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:
- Change the mode for the face camera from “Tracking” to “Cropping.”
- Puff out your cheeks as much as you can — this sets the side boundaries of the crop.
- Open your mouth as wide as possible — this defines the bottom boundary.
- Set the top boundary so that your nose remains visible, but minimize any static parts of the Index headset in the frame.
- Try to keep the crop box as close to a square shape as possible.
- That’s it. Face tracking doesn’t need any calibration. It automatically adjusts itself over time. Just use it for a few minutes and it will calibrate on its own.
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.
Eye Tracking Calibration
I highly recommend watching the video before starting the calibration process
- Stand in the middle of you playspace facing your forward direction. If you’re unsure which way that is, recenter your playspace.
- After clicking “Eye Calibration,” a SteamVR overlay will appear showing a short video of the required head movements.
- Once the 60-second timer ends, repeat those head movements for about 3 minutes. The exact order doesn’t matter — what’s important is that your eyes always stay focused on the ball and that you move your head so your eyes reach their extreme positions.
- When this part is done, you’ll receive feedback. Then a message will appear saying: “When the countdown finishes, close your eyes.”
When the timer reaches 2 seconds, close your eyes and keep them fully closed until you receive another confirmation. - While your eyes are closed, blink or press each eye twice and make two “surprised” expressions (everything with eyes closed). Moving the headset during this phase can also help.
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.
Congratulations, you’re all set and can now use eye and face tracking in VRChat.
I recommend using this avatar for testing: https://vrchat.com/home/avatar/avtr_c2fe062e-ea8b-4d80-bc8e-307beb29dd70
Only continue if you’re not satisfied with the tracking quality, if blinking or winking aren’t working properly, if you want to fine-tune your tracking, or if you’d like to exaggerate certain expressions.
Improving tracking – General
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.
- Navigate to the calibration window in the Baballonia app (pencil icon) and open the parameter group that contains the parameters you want to adjust (for example „smile“).
- DO NOT blindly copy my settings, as they are different for everyone. It’s better to understand what each slider does to achieve the best results.
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.
Improving tracking – Blinking / Winking
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.
I recommend blinking several times and watching how far the red indicator moves to the left. Then move the left minimum slider to that position, or slightly to the right of where the red indicator reaches.
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.
I also recommend enabling the „Stabilize Eyes“ option.
Improving tracking – Exaggerated Expression
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.
Improving tracking – Expression To Early
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.
Troubleshooting (TBD)
TBD















































































