We distribute through and APT packages. *Please note that Ubuntu is required below.
First, you need to add FOVE's GPG public key. We self sign our Linux packages.
sudo apt-key add fove_repos.pub
Rumor has it that apt-key is deprecated. But luckily, it still works! Also, if you don't have wget, well, you should apt get it.
Next step would be to add our repo to your sources list, and then, update apt's cache.
echo "deb [arch=amd64] https://repos.fove-inc.com/ fove-focal main" | sudo tee /etc/apt/sources.list.d/fove-focal.list
sudo apt update
From there, you can now see that there are some fove packages available to you:
$ apt search fove
fove-client-dev/fove-focal 1.0-1 amd64
FOVE Development Package
fove-runtime/fove-focal,now 1.0-1 amd64 [installed]
FOVE Runtime Package
fove-runtime is the package that contains the VR platform, including the compositor, drivers, etc.
fove-client-dev contains the C/C++ SDK, with headers and a static library. Since it's statically linked, there's no fove-client package, the code is bundled into the app.
So the final step would be to install the desired packages
sudo apt install fove-runtime fove-client-dev
For the brave, you can try this one-liner:
wget https://repos.fove-inc.com/fove_repos.pub && sudo apt-key add fove_repos.pub && sudo apt-key add fove_repos.pub && echo "deb [arch=amd64] https://repos.fove-inc.com/ fove-focal main" | sudo tee /etc/apt/sources.list.d/fove-focal.list && sudo apt update && sudo apt install fove-runtime fove-client-dev
systemctl --user start fove-service.service
This runs all the software, so the headset will boot up if plugged in. If not plugged in, you can plug it in now.
You should see a starry sky in the headset and you're ready to start building your content.
ProTip: If you only need 3-DOF tracking, you can forgo the position tracking camera and the USB 2.0 headset cable.
ProTip #2: The headset's USB2 cable is power only so it can be plugged into another computer or a wall charger.
Your system has some shiny new fove executables, but what do they do? We present to you, in alphabetical order, the following useful information:
fove-cli -> This is a command line tool to interact with the FOVE system. For example: fove et calibration start to start eye tracking calibration. There's some help menus within.
fove-companion -> This handles drawing calibration and some auxiliary tasks. It's handled automatically so you don't need to call it directly.
fove-compositor -> This is the fove compositor. It connects to the screen, takes buffers from client applications, handles distortion, time warp, and well, compositing, and then draws to the screen. This is also handled automatically, so you don't need to call it directly.
fove-debug-tool -> This is our main gui tool, you can use this to start and stop things, etc.
fove-mirror-client -> This application displays what's in the headset to the monitor.
fove-service -> This is the main service that talks to clients, talks to hardware, runs the eye tracker, and generally, handles things.
fove-systemd-helper -> For systemd interoperation, don't need to worry about this much.
Did someone say systemd?
We've registered our components with systemd, so really all you need to do is launch the service: systemctl --user start fove-service.service
This will enable the service, which will in turn launch the compositor and companion on demand. It will also shut down the extra components as needed so it's no problem to just leave it running if you want.
Systemd is not required, you can also simply run fove-service manually from a user session and it will boot up. But systemd is the standard way to manage services on Ubuntu, so things will work as normal, such as logs going to journald, etc. You're also free to hook FOVE into the init system of your choice.
The debug tool
Most of the important things are displayed in the debug tool, so launch fove-debug-tool. You can see the headset position/orientation, state of eye tracking, calibration buttons, and many other things here. You can also expand the image pains to see the eye and position tracking cameras.
C/C++ & OpenGL/Vulkan
You can build apps directly in C++. Please see our OpenGL example here:
A vulkan example is planned but does not exist yet.
Our Unreal plugin supports Linux. Please get it on github here:
Unity support is coming soon!
OS: Ubuntu Desktop 20.04
This is the only platform we support. There's nothing specific to Ubuntu 20.04 in the code, but simply that we build the binaries from a 20.04 dockerfile, and thus all the dependencies are specific to Ubuntu 20.04.
If you can install all the dependencies listed by ldd `which fove-service` and edit the ELF executable to point to the paths as they are on your system, it will probably work fine on any distro, but that's on you.
GPU: NVIDIA GPU with binary driver
Again, this is the only one we are currently testing. Realistically, it may be the only one that can meet the demands of VR currently. However, we hope to test more drivers in the future.
CPU Architecture: arm64
We support arm64 for NVIDIA Jetson Xavier TX2 in the enterprise edition. However, the desktop version only supports arm64 for the time being.
Software Ecosystem: X11 + Vulkan (Compositor) + Vulkan or OpenGL (Clients)
We hope to add Wayland support soon, but currently we are using xcb/xlib and some X11 specific things in Vulkan such as vkAcquireXlibDisplayEXT.
Our compositor can also run using DRM + EGLstreams (NVIDIA specific, but we listed that already!). This avoids the need for X11 but is generally not recommended except for very custom setups.
ProTip: If you do need support for another platform, we might be able to make that happen. Please contact us. We can't promise support for anything, but we will do our best to accommodate.
Currently, we are not committing to backwards compatibility on Linux yet. This means a Linux Client using SDK 1.0 may not work against v1.1 of the Service.
Having maintained backcompat on Windows for years, we've learned that there's some pain in handling this if not set up properly. So once we clean up a few problem areas, we'll then declare backwards compatibility support from then on.
We are considering Linux support as beta. There are some rough edges. Please get in touch with any problems you have as we are looking to actively resolve things in the priority that our customers need.