Steam Frame news: official Steam Frame headset and controllers, used for the Frame-EyeCal eye tracking story

Frame-EyeCal: a free tool to check Steam Frame eye tracking

By Gaming On Steam ·

This Steam Frame news is a community tool, not a Valve update. Frame-EyeCal is a free, open-source app that runs on the headset and lets you check whether eye tracking is actually accurate, try a guided recalibration, and compare results with and without prescription lens inserts. It comes from u/Shark1nator on r/SteamFrame, with the code on GitHub at Shark1nat0r/frame-eyecal, and it exists because foveated streaming on the Frame depends on the tracker pointing at the right place.

What Frame-EyeCal actually does

The README is the best description of the tool, and it is more modest than the name might sound. The author says the Frame’s eye tracker already calibrates itself from laser clicks on SteamVR menus and overlays, not from clicks inside games. It assumes you looked at the point you clicked, and it keeps the last seven good clicks until SteamVR restarts. Frame-EyeCal does not add a calibration system of its own. The Calibrate mode just walks you through enough good clicks, at the four corners, left, right and the centre, so that the samples the tracker is holding all came from the app. A reply from the author on the Reddit thread makes the same point: the tool checks SteamVR’s own calibration rather than adding its own tracker, and you do not have to run it every time you put the headset on.

There are two other modes. Test accuracy asks you to look at a dot in nine directions, twice each, with no clicking. The README says that takes about 45 seconds and then shows the error in degrees for each direction. Compare lets you test, calibrate and test again, including a with-and-without lens-inserts pass, and can save a shareable image. Results depend heavily on headset fit, and they change when you reseat the Frame, so the author recommends comparing tests without taking it off and calibrating again after you do.

Valve does not document this click-based behaviour. The README says it was found by testing on SteamVR 2.18.2, and that any SteamOS update can change how it works because SteamVR and the eye tracker come with the OS on the Frame. The app has been tested on SteamOS 0.4.5 (build 20261022.6150929) with SteamVR 2.18.2. Other versions may work, but they are untested. The author is still looking at whether the SteamOS 0.5.7 beta and SteamVR 2.19 change any of this. The project is not affiliated with or endorsed by Valve.

The author’s logs, lens inserts and 45 fps

The reason the tool exists is in the author’s own logs. Over three days, the tracker accepted 41 calibration clicks and rejected 307, mostly with “Fixation limit exceeded.” In one 1.5-hour session, not a single click was accepted, so the headset ran uncalibrated the whole time. That is one person’s log, not a survey, but it is a concrete example of why a guided set of “good” clicks might help.

The same post includes a useful result for anyone using prescription inserts. The author uses VR Optician Comfort edition lenses. Without inserts, a test improved from 2.3 degrees to 1.9 degrees after calibrating. With inserts, the same comparison went from 4.8 degrees down to 1.8 degrees. In other words, the inserts made accuracy worse until calibration, and after calibration they were in the same range as the no-insert result. That matches the headline claim: accuracy improved with prescription lens inserts after calibration. The app’s colour bands (under 2.5 degrees as good, 2.5 to 4 as fair, over 4 as poor) are the author’s first guess, not an official scale.

There is one more hardware quirk worth flagging. In all four of the author’s streaming sessions, the eye cameras ran at 45 fps. Frame-EyeCal gets them to 90 fps, and the README says the app asks SteamVR for 90 Hz for itself only. The author is still investigating whether the 45 fps streaming rate costs accuracy or foveated streaming quality. If you want to check your own tracker log, the post points to ~/.local/share/Steam/logs/eyetracking.txt and the “Accept usercal”, “Reject usercal” and “Set framerate” lines.

Why this Steam Frame news matters for foveated streaming

Eye tracking is not a party trick on this headset. Frame foveated streaming uses gaze to spend bitrate where you are actually looking, which is a big part of how wireless PC play stays sharp. That is also why recent SteamVR betas have focused on sharper streaming. If the tracker is wrong, or sitting on a stale, uncalibrated sample, the high-quality region can drift. Replies on the thread describe exactly that kind of “swimming” foveated area, which is why a test that shows the error in degrees is useful even if you never touch the calibrate button.

The app sits alongside other community projects rather than replacing them. Frametop has an experimental gaze mode for its desktop environment, and FrameEyeCameraFeed exposes the Frame’s eye-camera feeds in a form other eye-tracking software can use. If you already tinker with community Frame software, it is in the same spirit as tools like SFrameOverlay: useful, unofficial, and worth reading the caveats before you install anything.

Install, and the AI-code warning you should not skip

I need to be blunt about the warning, because it is in the README and in the Reddit post. The author says the code was written by AI and has not been reviewed by a human. The app has been tested thoroughly on a Steam Frame, the repo is MIT-licensed and the install is public, but you should treat it as experimental and use it at your own risk. That is the author’s own wording, not me being precious about community tools.

If you still want to try it, the README’s install is a command in a Konsole window on the Frame:

curl -fsSL https://raw.githubusercontent.com/Shark1nat0r/frame-eyecal/main/install.sh | sh

Then start Frame-EyeCal from the SteamVR dashboard under +. A new entry can need a headset restart. Running the same install line again updates the app and keeps your test results. An uninstall script is included in the repo. As always with a curl-to-shell install, read the script first.

For me, the useful part of this release is not a promise that your tracking will suddenly be perfect. It is a way to see whether SteamVR actually accepted a calibration, how far off the tracker is in degrees, and whether lens inserts are helping or hurting once that calibration is in place. Just go in with the limitations in mind: the code was not manually reviewed, the click-based behaviour is undocumented, and a SteamOS update could change how it works.

More videos

View channel →