-
Notifications
You must be signed in to change notification settings - Fork 28
Settings guide
This guide lists all settings supported by ALVR and explain what they are, how they work and when to set them.
The user interface divides the settings into basic and advanced settings. To enable advanced settings you have to click Show advanced options
in the top right corner in the Settings tab. Usually you should not touch advanced settings unless you perfectly know what you are doing. Under the hood, basic settings work by modifying some advanced settings.
In this document, settings tagged with [Basic] describe settings that are visible in basic mode, [Advanced] describe settings that are visible only in advanced mode. Some basic settings are also visible in advanced mode.
Document updated for ALVR v15.1.0
Zero-based index of the GPU. For correct compatibility with SteamVR, this must always be set to 0. If you want to change the primary GPU used by SteamVR you have to use the control panel provided by your GPU vendor.
Percentage of the native resolution of the headset to be used for encoding the video to be transmitted to the headset. Setting anything higher than 100% can slightly improve visual quality but at the cost of severely worse network performance. Setting anything lower the 100% can improve latency, stutters and remove encoder errors (especially with the Quest 2), at the cost of worse visual quality.
This corresponds to Video resolution
, but it gives the choice of specifying the resolution by relative scale or absolute value. Absolute width and height values could not respect the native aspect ratio of the headset screen.
This is reported by ALVR to SteamVR as the screen resolution of the virtual headset. SteamVR usually automatically chooses the game rendering resolution based on the available GPU resources, so most of the time only the aspect ratio matters.
Choice between frame rates supported by the Quest headsets screen. If a refresh rate is not supported on the headset (like 90Hz on the Quest 1), the closest supported refresh rate is picked and a warning will appear if this is the case.
Same as Refresh rate
but the value can be directly typed.
Algorithm used to encode the video stream to be transmitted to the headset, where it is decoded. h264 (AVC) and h265 (HEVC) are two codecs that are generally supported by recent GPUs. Sometimes some older GPUs don't support either h264 or HEVC and you get an error message (and a SteamVR crash). In this case try switching the codec or try lowering the video resolution.
Flag used by the android decoder.
Encode the video stream with 10 bit for the luma channel. This is primarily useful for reducing color banding. This flag works only for NVidia graphics cards.
Bitrate used for the video streaming. Higher bitrate can increase image quality, it your network setup supports it. If you experience glitches and freezes of the image you should lower this.
This is a timing variable needed by SteamVR drivers. It is not actually correlated to any real display v-sync.
This is an algorithm used to reduce network usage without sacrificing the image quality too much. You can read more at this page.
Higher value means the foveation effect is more pronounced, but also more flickering artifacts.
Aspect ratio of the central high resolution rectangle. A value greater than 1 produces a rectangle wider than tall.
Move the central high resolution rectangle higher or lower.
Color correction can help to get a more clear image.
This setting produces a shift in the pixel color values. 1 means the image is completely white, -1 means completely black.
Contrast regulates the distance of color channels from gray. -1 means completely gray.
Saturation regulates the vividness of the image. -1 means the image is black and white.
Gamma is a parameter to regulate the density distribution of brightness levels. You can use this parameter to get deeper blacks.
Values greater than 0 crates an embossing effect around elements on screen. This can make text easier to read. Values lower than 0 makes the image more fuzzy.
Play sounds from the PC on the headset.
Audio device used to record the output audio to be sent to the headset. You should keep this to "Default". "Default" uses the currently default output audio device on Windows. You can change the default audio device by going in the system tray in the bottom right, click on the speaker icon then click on the audio device name.
The device selected by ALVR is reported as the virtual headset speaker on SteamVR, so for best compatibility please set "Audio output device" to "Headset" in the SteamVR settings.
If your speakers don't work with ALVR, try selecting another device. If none works, install the Oculus Runtime, then select Headphones (Oculus Virtual Audio Device)
.
Output audio device. It can be selected as default, by name and by index. While basic settings do not allow to select microphones as the game audio device, you can do so by selecting "by name" and writing out the name of the device (it can be just a part of the full name, uppercase or lowercase does not matter).
Mute the selected audio device on the PC. Only the physical device connected to the PC is muted. The streamed audio in unaffected
Mean queue time interval for audio samples. Increase this value if you hear audio stutters.
Audio samples are not immediately played when they are sent from the PC to the headset. Audio samples needs to be played back with high timing accuracy to avoid audio distortions and generally the playback cannot be stopped without causing audible clicks or pops, but when streaming the source of audio the samples can arrive too early or too late. For this reason we need some amount of latency (on top of the transport latency) to keep a sample queue. This queue should be big enough so that it never runs out and it never overflows. If the queue underflows or overflows the playback will be disrupted.
This setting controls the mean time a sample stays in the buffering queue. Because of network jitter, the actual queue time will be in the interval [0; 2 * buffering]
Time interval used to calculate the size of the batch of audio samples to be processed on one go. Lower values reduce latency (marginally), but they can put stress to the Quest when processing audio, that could cause audio artifacts or even crashes. In the current implementation, this setting also controls the duration of fade-in/outs used for pop reduction in case of disruptions (lag, packet loss, packets out of order). A value too low can render the pop reduction algorithm less effective.
Enable microphone on the headset and sends the audio to the PC. You need to install VB-CABLE Virtual Audio Device to be able to stream the microphone.
This is the output audio device used to replay the microphone input captured on the headset. You cannot set this the same as the game audio device. When set to Default
, ALVR searches for Cable Input
.
Virtual microphone input device. It can be selected as default, by name and by index. It's preferred to use the basic setting.
This is the other end of the virtual microphone cable. If you have VB-CABLE installed, leave this to default.
This setting is used only to setup SteamVR microphone device. To make this setting effective you need to leave "Audio input device" to "Headset" in the SteamVR settings.
Virtual microphone input device. It can be selected as default, by name and by index. It's preferred to use the basic setting.
Analog to Audio / Stream game audio / Configuration
.
SteamVR needs some information about the hardware connected to the PC to stream to. Using ALVR, you don't directly connect the headset to the PC, so we can choose to emulate a headset different than the real one. You can choose between Oculus Rift S
, HTC Vive
and Oculus Quest 2
(via Oculus Link). Some SteamVR games don't support the Rift S or the Quest, so if you encounter any problem you should try switching to HTC Vive
.
Currently this setting has a visual bug where Oculus Quest 2
is always selected after a restart. The actual setting is not reverted. It will be fixed after a dashboard rewrite.
This is a parameter needed by SteamVR to decide how to store the Chaperone boundary settings.
These are settings needed by SteamVR to correctly set the headset emulation mode. You should use Headset emulation mode
instead.
This is a signed integer used as offset when choosing the head tracking data to assign to a certain frame returned by SteamVR.
This should be used as last resort if you can't fix the floor height or Chaperone boundary centering by other means.
Discard positional tracking data from the headset. In the game, the head will be stuck in place even if you move it in real life.
Enable controllers. This currently has effect only for the Quest headset.
This is similar to Headset emulation mode
but for the controllers. Usually they should match.
"No handtracking pinch"
means that pinch gestures are not registered. A "pinch" is the gesture of touching the tip of the thumb with the tip of any other finger in the same hand. Each pinch gesture is mapped to a different controller button in-game. Handtracking is enabled automatically when the controllers are disabled, so if you don't want to accidentally make button presses you should select no handtracking pinch.
Currently handtracking does not support the thumbstick for movement.
These are settings needed by SteamVR to correctly set the controller emulation mode. You should use Controller emulation mode
instead.
Regulates the strength of controller pose prediction. Normal
means that the controllers will lag behind but the movement will be smooth, Medium
and Fast
makes the controller more reactive but also more jittery. Oculus prediction
uses another prediction algorithm and corresponds to Fast
.
Why ALVR needs to predict the controller pose? ALVR needs to deal with many sources of latency (Wifi, video encoding, decoding, rendering, etc). Latency causes everything to lag behind. Controller pose is one of the things affected the worst by latency. We cannot predict the future but we can use an algorithm to estimate the controller pose. This algorithm tries looks back at how the controller moved a few instants ago and then tries to continue the movement. This can work decently for low latency and slow movements, since the controller velocity remains almost constant. But fast movements (where the controllers are accelerated back and forth) cause the controllers to jitter, because the acceleration was not taken into account (because acceleration is fundamentally unpredictable).
This is the latency offset value used by Tracking speed
. You can set this value manually to have more control over the controller tracking prediction.
This corresponds to Oculus prediction
.
Position offset used to match the virtual controller position with the real controller position. This is needed because of a long standing bug of SteamVR.
Rotation offset used to match the virtual controller position with the real controller position. This is needed because of a long standing bug of SteamVR.
Regulate the haptics (vibration) intensity. 0 means the haptics are disabled.
The tracking space is the type of anchor used to make the virtual and real world match. Local
means that the anchor between the virtual and real worlds is movable: if you press and hold the Oculus button the world will rotate and translate depending on your position and heading at that moment. Stage
means that the real and virtual worlds are permanently anchored: if you press and hold the Oculus button nothing will happen. If you close the game and reopen it you will be exactly where you left off in the game if you didn't move. Local
is preferred for seated games and Stage
is preferred for room scale games with real space walking.
To reduce stuttering, this must be checked.
If you uncheck this, clients will connect automatically without the need for trusting them. Is is a risk for security and it is off by default.
The IP port used to connect to the dashboard. If this is changed, the launcher will stop working.
A network protocol is a procedure and set of rules used for communication between devices connected in a network.
You can choose between UDP, Throttled UDP and TCP socket protocols:
- UDP has the lowest latency but works best at very low bitrates (<30 Mbps). Higher bitrates cause packet loss and stutter.
- Throttled UDP is an experimental reimplementation of the previous socket. It works best at medium bitrates (~100 Mbps). At low bitrates it could have excessive delay and at higher bitrates is has the same problems as UDP.
- TCP works well up at any bitrate up to 250 Mbps. It has the highest latency (but still lower than the previous ALVR versions). This is the new default.
Port used for streaming (server to client, client to server).
When checked, the encoder is allowed to resend keyframes faster with a timeout of 5ms.
Usually video codecs compress the video stream by sending only what changed in the image to reduce network usage. This means that most frames actually contain incomplete information, that is completed by information retrieved by previous frames. This is why in case of packet loss the image becomes glitchy and blocky. A keyframe (as known as IDR frame) is a special packet that contains a whole video frame. No previous information is needed to reconstruct this frame. Because of this, IDR frames are really heavy and should be sent only when needed, otherwise the network will completely hog.
Specify a command to be run when the server and headset connects. The environment variable ACTION
will be set to the string connect
.
Specify a command to be run when the server and headset disconnects. The environment variable ACTION
will be set to the string disconnect
.
FEC stands for Forward Error Correction. It is an algorithm used by the video streaming pipeline.
This settings MUST NOT be set to false. Support for disabling this feature is incomplete and will likely cause a crash.
Theme used for the dashboard. System
can switch between light and dark mode depending on your system preference.
Simple color invert for the loading room/lobby in the headset. This is applied only after a sleep-wake cycle of the headset.
Show a confirmation dialog before reverting a setting to the default value.
Show a confirmation dialog before restarting SteamVR. When SteamVR restarts, the VR game that was running gets closed and any unsaved progress is lost.
When an update is available, install it immediately without asking. Only happens at startup.
The update channel is a setting that controls what kind of update to receive. No updates
disables updates, Stable
is to receive stable updates, Beta
is to receive pre-release updates that had only limited testing, Nightly
are completely untested releases that may not work at all, but you get the latest features before anyone else.
Save the file session.txt
at the root of the ALVR installation folder. This is useful to get get debug information when a crash happens. By default this is disabled because this file continues to grow as long as ALVR is kept open and it keeps growing until the whole hard-drive is filled.
Select what kind of notification should be displayed in the bottom left corner of the dashboard. Each level contains all levels with higher severity.
This is a legacy setting. It should be set to false for now.