diff --git a/alvr/xtask/flatpak/audio-flatpak-setup.sh b/alvr/xtask/flatpak/audio-flatpak-setup.sh
deleted file mode 100644
index 0d2f2324c4..0000000000
--- a/alvr/xtask/flatpak/audio-flatpak-setup.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-
-# Set either to 0 to prevent from creating audio or microphone sinks and instead you using own headset or microphone
-USE_HEADSET_AUDIO=1
-USE_HEADSET_MIC=1
-
-function get_playback_sink_input_id() {
- get_playback_id sink-inputs 'Sink Input' "$1"
-}
-
-function get_playback_source_output_id() {
- get_playback_id source-outputs 'Source Output' "$1"
-}
-
-function get_playback_id() {
- local last_node_name=''
- local last_node_id=''
- pactl list "$1" | while read -r line; do
- node_id=$(echo "$line" | grep -oP "$2 #\K.+" | sed -e 's/^[ \t]*//')
- node_name=$(echo "$line" | grep -oP 'node.name = "\K[^"]+' | sed -e 's/^[ \t]*//')
- if [[ "$node_id" != '' ]] && [[ "$last_node_id" != "$node_id" ]]; then
- last_node_id="$node_id"
- fi
- if [[ -n "$node_name" ]] && [[ "$last_node_name" != "$node_name" ]]; then
- last_node_name="$node_name"
- if [[ "$last_node_name" == "$3" ]]; then
- echo "$last_node_id"
- return
- fi
- fi
- done
-}
-
-function get_sink_id_by_name() {
- local sink_name
- sink_name=$1
- pactl list short sinks | grep "$sink_name" | cut -d$'\t' -f1
-}
-
-function setup_mic() {
- if [[ $USE_HEADSET_MIC == 1 ]]; then
- echo "Creating microphone sink & source and linking alvr playback to it"
- # This sink is required so that it persistently auto-connects to alvr playback later
- pactl load-module module-null-sink sink_name=ALVR-MIC-Sink media.class=Audio/Sink | tee -a /run/user/1000/alvr-audio
- # This source is required so that any app can use it as microphone
- pactl load-module module-null-sink sink_name=ALVR-MIC-Source media.class=Audio/Source/Virtual | tee -a /run/user/1000/alvr-audio
- # We link them together
- pw-link ALVR-MIC-Sink:monitor_FL ALVR-MIC-Source:input_FL
- pw-link ALVR-MIC-Sink:monitor_FR ALVR-MIC-Source:input_FR
- # And we assign playback of pipewire alsa playback to created alvr sink
- pactl move-sink-input "$(get_playback_sink_input_id 'ALSA plug-in [vrserver]')" "$(get_sink_id_by_name ALVR-MIC-Sink)"
- pactl set-default-source ALVR-MIC-Source
- fi
-}
-
-function unload_modules() {
- echo "Unloading audio, microphone sink & source"
- while read -r line; do
- pactl unload-module "$line"
- done <"/run/user/1000/alvr-audio"
- >/run/user/1000/alvr-audio
-}
-
-function setup_audio() {
- if [[ $USE_HEADSET_AUDIO == 1 ]]; then
- echo "Setting up audio"
- pactl load-module module-null-sink sink_name=ALVR-AUDIO-Sink media.class=Audio/Sink | tee -a /run/user/1000/alvr-audio
- pactl set-default-sink ALVR-AUDIO-Sink
- pactl move-source-output "$(get_playback_source_output_id 'ALSA plug-in [vrserver]')" "$(get_sink_id_by_name ALVR-AUDIO-Sink)"
- fi
-}
-
-case $ACTION in
-connect)
- unload_modules
- setup_audio
- setup_mic
- ;;
-disconnect)
- unload_modules
- ;;
-esac
diff --git a/wiki/ALVR-client-and-streamer-on-separate-networks.md b/wiki/ALVR-client-and-streamer-on-separate-networks.md
index 81ad535817..82b7609681 100644
--- a/wiki/ALVR-client-and-streamer-on-separate-networks.md
+++ b/wiki/ALVR-client-and-streamer-on-separate-networks.md
@@ -1,9 +1,16 @@
# Headset and ALVR streamer on separate networks
-# ALVR v14 and Above
+## ALVR v14 and Above
Here are explained two methods to connect PC and headset remotely, port-forwarding and ZeroTier. The primary purpose of this is connecting the headset to a Cloud PC (like ShadowPC).
+## Important notes on security
+
+* ALVR protocol does not have any encryption or authentication (apart from ALVR device IP address shown in ALVR streamer and the requirement to add devices on ALVR streamer).
+* It is recommended to run ALVR via encrypted tunnel (VPN) over the internet. In case VPN is not an option, access to ALVR streamer (UDP ports 9943 and 9944) should be restricted by Windows Firewall (only connections from known IP addresses of ALVR devices should be allowed) and ALVR streamer should not be left running unattended.
+* **Warning!** SteamVR allows to control desktop from VR headset (i.e. a **malicious ALVR device could take over the PC**).
+* As the license states ALVR IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND (see the file `LICENSE` in this GitHub repository for legal text/definition). You are on your own (especially if you run ALVR over the Internet without VPN).
+
## Port-forwarding
Port-forwarding allows to connect devices that are behind different NATs, i.e. local networks. You need to have administrator access to your router. This method has the best streaming performance.
@@ -16,7 +23,7 @@ Port-forwarding allows to connect devices that are behind different NATs, i.e. l
You can now use ALVR to connect to your remote PC.
-**Note**: The public IP can change often. Every time you want to use ALVR you need to check that your current public IP is the same as the last time. If the IP changed, you can update it using the "Configure client" interface, accessed with the `Configure` button next to your headset name on the streamer.
+**Note**: The public IP can change often. Every time you want to use ALVR you need to check that your current public IP is the same as the last time. If the IP changed, you can update it using the "Edit connection" interface, accessed with the `Edit` button next to your headset name on the streamer.
## ZeroTier
@@ -30,39 +37,39 @@ Pros:
* You don't need to update the public IP often on the streamer.
* The connection in encrypted.
-Cons:
+Cons:
* The streaming performance is worse. You may experience more glitches and loss of quality in the image and audio.
### Requirements
-- [ZeroTier](https://www.zerotier.com/) for your PC
-- ZeroTier APK for your Quest (you can find it online)
-- SideQuest or some other method to install the ZeroTier APK onto your headset
+* [ZeroTier](https://www.zerotier.com/) for your PC
+* ZeroTier APK for your Quest (you can find it online)
+* SideQuest or some other method to install the ZeroTier APK onto your headset
### Installation
-Use the "Install APK" function of SideQuest to install the ZeroTier APK to your Quest, and also download and install ZeroTier on your PC. After you've installed ZeroTier, follow Zerotier's official [Getting Started](https://zerotier.atlassian.net/wiki/spaces/SD/pages/8454145/Getting+Started+with+ZeroTier) guide to setup a network for ALVR. Join the network on both the Quest and the PC. On the Quest, make sure that the network is enabled by switching on the slider on the network in the list in the ZeroTier app (you may be prompted to allow ZeroTier to create a VPN connection).
+Use the "Install APK" function of SideQuest to install the ZeroTier APK to your Quest, and also download and install ZeroTier on your PC. After you've installed ZeroTier, follow Zerotier's official [Getting Started](https://zerotier.atlassian.net/wiki/spaces/SD/pages/8454145/Getting+Started+with+ZeroTier) guide to setup a network for ALVR. Join the network on both the Quest and the PC. On the Quest, make sure that the network is enabled by switching on the slider on the network in the list in the ZeroTier app (you may be prompted to allow ZeroTier to create a VPN connection).
-After both your PC and your Quest are connected to the same ZeroTier network, we'll need to manually add your quest to the ALVR dashboard. To do so, we'll need to find your Quest's ZeroTier IP. There are two ways to do this.
+After both your PC and your Quest are connected to the same ZeroTier network, we'll need to manually add your quest to the ALVR dashboard. To do so, we'll need to find your Quest's ZeroTier IP. There are two ways to do this.
-- Go the the ZeroTier network page, find your quest under "Members", and copy the managed IP from there
-- Or, in the ZeroTier app on your quest, click on the network you created. The IP is under the "Managed IPs" section at the bottom.
+* Go the the ZeroTier network page, find your quest under "Members", and copy the managed IP from there
+* Or, in the ZeroTier app on your quest, click on the network you created. The IP is under the "Managed IPs" section at the bottom.
-The IP should look something like this `192.168.143.195`. If there's a `/` at the end with a couple numbers following it, remove them along with the slash.
+The IP should look something like this `192.168.143.195`. If there's a `/` at the end with a couple numbers following it, remove them along with the slash.
-Next, we'll need to add the Quest to the ALVR dashboard. On your headset, launch ALVR. The on the ALVR dashboard on your PC, click the "Add device manually" button, provide a name and hostname (You can get this from the "trust" screen of ALVR on your Quest), then put in the IP address that we got from ZeroTier.
+Next, we'll need to add the Quest to the ALVR dashboard. On your headset, launch ALVR. The on the ALVR dashboard on your PC, click the "Add device manually" button, provide a name and hostname (You can get this from the "trust" screen of ALVR on your Quest), then put in the IP address that we got from ZeroTier.
At this point, you should be ready to go. Have fun in VR!
### Troubleshooting
-- If you can't get your Quest to connect to ALVR, and are stuck on the "Trust" screen, try to ping your Quest's managed IP address (the one we got earlier). If it says "no route to host" or something similar, your Quest can't see your PC. Try running through the steps above to make sure you didn't miss anything.
+* If you can't get your Quest to connect to ALVR, and are stuck on the "Trust" screen, try to ping your Quest's managed IP address (the one we got earlier). If it says "no route to host" or something similar, your Quest can't see your PC. Try running through the steps above to make sure you didn't miss anything.
## Tailscale
An alternative to ZeroTier with practically the same setup procedure. This could have better latency, depending on your distance to the datacenter.
-https://tailscale.com/
+
## n2n
@@ -72,46 +79,39 @@ Its pros and cons are similar to ZeroTier, but it's self-hosted and open-source
### Requirements
-- Compile [n2n](https://github.com/ntop/n2n) from source
- - Or you can grab pre-built binaries from [here](https://github.com/lucktu/n2n) directly, compiled by lucktu.
- - Some Linux distribution may have n2n, but be sure you're using the same version. Since the source code is v3, the following steps will also use v3 in the example below.
-- [TAP-Windows driver](https://community.openvpn.net/openvpn/wiki/GettingTapWindows) or [OpenVPN](https://openvpn.net/community/) (includes TAP-Windows) if you're using Windows PC
-- [hin2n](https://github.com/switch-iot/hin2n) APK
-- A server with public IP and allow public ports
-- SideQuest or some other method to install the hin2n APK onto your headset
+* Compile [n2n](https://github.com/ntop/n2n) from source
+ * Or you can grab pre-built binaries from [here](https://github.com/lucktu/n2n) directly, compiled by lucktu.
+ * Some Linux distribution may have n2n, but be sure you're using the same version. Since the source code is v3, the following steps will also use v3 in the example below.
+* [TAP-Windows driver](https://community.openvpn.net/openvpn/wiki/GettingTapWindows) or [OpenVPN](https://openvpn.net/community/) (includes TAP-Windows) if you're using Windows PC
+* [hin2n](https://github.com/switch-iot/hin2n) APK
+* A server with public IP and allow public ports
+* SideQuest or some other method to install the hin2n APK onto your headset
### Installation
We're going to use n2n v3, and set the port of _supernode_ to `1234` as the example. You can change `1234` to any port, but below `1024` requires root.
-- Open port `1234` on your server's firewall (usually `iptables`, if you don't know what to do, ask Google).
-- Upload _supernode_ binary to your server, run `./supernode -p 1234`.
-- Install TAP-Windows driver or OpenVPN on your PC if you're using Windows.
-- Upload _edge_ binary to your PC, run `./edge -c [network-name] -k [secret-password] -a 192.168.100.1 -l [your-server-ip]:1234` to connect to the _supernode_, assign the IP `192.168.100.1` to the PC, and use the password you provided for data encryption.
-- Once you see `[OK] edge <<< ================ >>> supernode`, your PC is done, or you need to follow the error logs to see what's wrong.
-- Install _hin2n_ on your Quest and open it, click the plus button at the top-right corner to add a new configuration and assign `192.168.100.2` to your Quest:
- - N2N version: v3
- - Supernode: `[your-server-ip]:1234`
- - Community: `[network-name]`
- - Encrypt key: `[secret-password]`
- - IP address: `192.168.100.2`
- - Subnet mask: `255.255.255.0`
-- Click "Current Setting" under the connect button, select the configuration we created just now, then click the connect button. If you're asked to allow hin2n to create a VPN connection, allow it.
-- Once you see `[OK] edge <<< ================ >>> supernode`, your Quest is done.
-- Open ALVR on your headset, record the hostname it shows.
-- Open ALVR dashboard on your PC, click "Add device manually" button, put the hostname you just recorded, and set IP address to `192.168.100.2` which is assigned to Quest just now.
-- Once it's done, you're all set.
+* Open port `1234` on your server's firewall (usually `iptables`, if you don't know what to do, ask Google).
+* Upload _supernode_ binary to your server, run `./supernode -p 1234`.
+* Install TAP-Windows driver or OpenVPN on your PC if you're using Windows.
+* Upload _edge_ binary to your PC, run `./edge -c [network-name] -k [secret-password] -a 192.168.100.1 -l [your-server-ip]:1234` to connect to the _supernode_, assign the IP `192.168.100.1` to the PC, and use the password you provided for data encryption.
+* Once you see `[OK] edge <<< ================ >>> supernode`, your PC is done, or you need to follow the error logs to see what's wrong.
+* Install _hin2n_ on your Quest and open it, click the plus button at the top-right corner to add a new configuration and assign `192.168.100.2` to your Quest:
+ * N2N version: v3
+ * Supernode: `[your-server-ip]:1234`
+ * Community: `[network-name]`
+ * Encrypt key: `[secret-password]`
+ * IP address: `192.168.100.2`
+ * Subnet mask: `255.255.255.0`
+* Click "Current Setting" under the connect button, select the configuration we created just now, then click the connect button. If you're asked to allow hin2n to create a VPN connection, allow it.
+* Once you see `[OK] edge <<< ================ >>> supernode`, your Quest is done.
+* Open ALVR on your headset, record the hostname it shows.
+* Open ALVR dashboard on your PC, click "Add device manually" button, put the hostname you just recorded, and set IP address to `192.168.100.2` which is assigned to Quest just now.
+* Once it's done, you're all set.
### Troubleshooting
-- Make sure you can access to the supernode, your supernode should be run on a server with public IP, and you can ping it on your PC.
-- If your Quest cannot connect to ALVR dashboard, ping the IP you assigned to Quest in hin2n. If it fails, try redoing the setup steps.
-- If the edge binary or hin2n says the IP has already been assigned and not released by supernode, you can set IP address to another one in the same subnet like `192.168.100.123` to reassign a new IP to the device.
-- If you're playing over WAN, you may see more glitches, higher stream latency, or lagger response with TCP. Use adaptive bitrate and UDP may improve your experience.
-
-**Important notes on security!**
-
-* ALVR protocol does not have any encryption or authentication (apart from ALVR client IP address shown in ALVR streamer and the requirement to click _Connect_ on ALVR streamer).
-* It is recommended to run ALVR via encrypted tunnel (VPN) over the internet. In case VPN is not an option, access to ALVR streamer (UDP ports 9943 and 9944) should be restricted by Windows Firewall (only connections from known IP addresses of ALVR clients should be allowed) and ALVR streamer should not be left running unattended.
-* **Warning!** SteamVR allows to control desktop from VR headset (i.e. a **malicious ALVR client could take over the PC**).
-* As the license states ALVR IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND (see the file `LICENSE` in this GitHub repository for legal text/definition). You are on your own (especially if you run ALVR over the Internet without VPN).
+* Make sure you can access to the supernode, your supernode should be run on a server with public IP, and you can ping it on your PC.
+* If your Quest cannot connect to ALVR dashboard, ping the IP you assigned to Quest in hin2n. If it fails, try redoing the setup steps.
+* If the edge binary or hin2n says the IP has already been assigned and not released by supernode, you can set IP address to another one in the same subnet like `192.168.100.123` to reassign a new IP to the device.
+* If you're playing over WAN, you may see more glitches, higher stream latency, or lagger response with TCP. Use adaptive bitrate and UDP may improve your experience.
diff --git a/wiki/ALVR-in-distrobox.md b/wiki/ALVR-in-distrobox.md
deleted file mode 100644
index 98c0cc791e..0000000000
--- a/wiki/ALVR-in-distrobox.md
+++ /dev/null
@@ -1,112 +0,0 @@
-## Installing ALVR and using SteamVR on Linux through Distrobox
-
-## Disclaimer
-
-1. This is just an attempt to make things easier for Linux users to use ALVR, SteamVR. By no means it's a comprehensive, fully featured and 100% working guide. Please open new issues and pull requests to correct this guide, scripts, etc etc.
-
-2. Slimevr, OpenVRAS, Open Space Calibrator are all possible to launch and use on Linux, but this guide/script is not adjusted yet (Medium priority TODO).
-
-3. Firewall configuration is skipped entirely and setup firewall configuration is broken, so it might not work in case you have strict firewall (alvr docs should have info about that) (Low priority TODO).
-
-4. This script unlikely to work on external disks.
-
-## Installing alvr distrobox
-
-For installing you only really need couple of dependencies on host:
-
-1. `wget` + `curl` (to download podman/distrobox/alvr/etc)
-2. `xhost` (on X11 to allow rootless podman to work with graphical applications)
-3. `sed` (for removing color in logs)
-4. `pipewire` for fully automatic microphone, `pulseaudio` for basic audio support (automatic microphone is unsupported with it)
-5. For nvidia - `CUDA` (distrobox passes through it and driver as well into the container and CUDA contains NVENC encoder for streaming)
-
-After you have installed required dependencies for your installation from above, open terminal in this repository folder and do:
-
-1. `./setup.sh`
-
- That's it. **Follow all green and especially red text carefully from the scripts.**
-
- In case if have errors during installation, please report the full log as-is (remove private info if you happen to have some) as an Issue.
-
- After full installation, you can use `./start-alvr.sh` to launch alvr automatically.
-
- Script also downloads related apk file to install to headset into `installation` folder for you. Use Sidequest or ADB to install it.
-
-## Post-install ALVR & SteamVR Configuration
-
-After installing ALVR you may want to configure it and steamvr to run at best quality for your given hardware/gpu. Open up ALVR using `./start-alvr.sh` script and do the following (each field with input value needs enter to confirm):
-
-### Common configuration:
-
-1. **Resolution:** If you have 6600 XT, 5700 XT, 2060S level GPU you can select Low, and in case you don't mind lower FPS - Medium
-
-2. **Preferred framerate:** If you know that you will have lower fps than usual (for instance, VRChat), run at lower fps. This is because when reprojection (this is what allows for smooth view despite being at low fps) goes lower than twice the amount of specified framerate - it fails to reproject and will look worse. So for example, you can run at 72hz if you know you're expecting low framerate, and 120hz if you are going to play something like Beat Saber, which is unlikely to run at low fps.
-
-3. **Encoder preset:** Speed
-
-4. **Bitrate:** Constant, bitrate: 350-450 mbps for h264 wireless/700 mbit-1 gbit cabled, 100-150 mbps for HEVC (On Pico 4 you can set up to 220 mbps).
-
-5. **Foveated rendering:** This highly depends on given headset, but generally default settings should be OK for Quest 2.
-
- For **pico neo 3** and **pico 4** i would recommend setting center region width to 0.8 and height to 0.75, shifts to 0 and edge ratios can be set at 6-7, and for the same **pico neo 3** disable oculus foveation level and dynamic oculus foveation.
-
-6. **Color correction:** Set sharpening to 1and if you like oversaturated image, bump saturation to 0.6.
-
-7. For **pico neo 3** and **pico 4** left controller offsets (from top to bottom):
-
- Position -0.06, -0.03, -0.1;
-
- Rotation: 0, 3, 17.
-
-8. **Connection -> Stream Protocol:** TCP. This ensures that there would be no heavy artifacts if packet loss happens (until it's too severe), only slowdowns.
-
-### AMD-specific configuration:
-
-1. Preferred codec: HEVC, h264 works too.
-
-2. Reduce color banding: turn on, might make image smoother.
-
-### Nvidia-specific configuration (needs feedback):
-
-1. Preferred codec: h264, HEVC works too
-
-After that, restart your headset using power button and it will automatically restart steamvr once, applying all changes.
-
-### SteamVR configuration:
-
-Inside SteamVR you also may need to change settings to improve experience. Open settings by clicking on triple stripe on SteamVR window and expand Advanced Settings (Hide -> Show)
-
-1. **Disable SteamVR Home.** It can be laggy, crashes often and generally not working nice on linux, so it is recommend disabling it altogether.
-
-2. **Render Resolution:** - Custom and keep it at 100%. This is to ensure that SteamVR won't try to supersample resolution given by ALVR
-
-3. **Video tab: Fade To Grid** on app hang - this will lock your view to last frame when app hangs instead of dropping you into steamvr void, completely optional but you may prefer that.
-
-4. **Video tab: Disable Advanced Supersample Filtering**
-
-5. **Video tab: Per-application video settings** - Use Legacy Reprojection Mode for specific game. **This can drastically change experience from being very uncomfortable, rubber-banding, to straight up perfect**. This essentially disables reprojection on SteamVR side and leaves it to the client. Make sure to enable it for each game you will play.
-
-6. **Developer tab: Set steamvr as openxr runtime** - this ensures that games using openxr (such as Bonelab, or Beat Saber) will use SteamVR.
- But do note that Nvidia owners can't launch openxr unity games due to bug in SteamVR Unity plugin
-
-### Distrobox note:
-
-* Do note that `sudo` inside container doesn't have privliges to do anything as `root`, but that container has almost exactly the same rights as regular user, so deleting user files from that container **is** possible.
-
-* You can add your steam library from outside the container after alvr installation as for container, `/home/user` folder is the same as on your host, so you can add it from inside distrobox steam.
-
-* Do note though, there has been mentioned some issues with mounted devices, symlinks and containers, so in case you have them, please report them to discover if it's the case.
-
-## Updating ALVR & WlxOverlay
-
-In case there was an update for ALVR or WlxOverlay in the repository, you can run `./update-vr-apps.sh` with or without prefix. In case you want to manually update ALVR or WlxOverlay versions, you can change `env.sh` file accordingly and run the same script.
-
-If you want to switch to Nightly version, all you need to do is set `IS_NIGHTLY` in `env.sh` file and re-run `./update-vr-apps.sh`
-
-## Uninstalling
-
-To uninstall this, simply run `./uninstall.sh` and it will automatically remove everything related to locally installed distrobox, it's containers, lilipod and everything inside in `installation-lilipod` or prefixed folder.
-
-## Additional info
-
-Highly recommend using CoreCtrl (install it using your distribution package management) and setting settings to VR profile for **AMD** gpus, as well as cpu to performance profile (if it's old Ryzen cpu). Without setting those gpu profiles, it's highly likely you will have serious shutters/wobbles/possibly crashes (sway users) at random point while playing ([[PERF] Subpar GPU performance due to wrong power profile mode · Issue #469 · ValveSoftware/SteamVR-for-Linux · GitHub](https://github.com/ValveSoftware/SteamVR-for-Linux/issues/469)).
diff --git a/wiki/Building-From-Source.md b/wiki/Building-From-Source.md
index 7dd8fe9869..90eb7b8bbd 100644
--- a/wiki/Building-From-Source.md
+++ b/wiki/Building-From-Source.md
@@ -29,22 +29,19 @@ If you are on Linux, install these additional packages:
* `dev-lang/rust >= 1.72`
* `media-video/pipewire [jacksdk]`
-* **Nix(OS)**
-
- * Use the `shell.nix` in `packaging/nix`.
-
* **Debian 12 / Ubuntu 20.04 / Pop!\_OS 20.04**
```bash
sudo apt install pulseaudio-utils build-essential pkg-config libclang-dev libssl-dev libasound2-dev libjack-dev libgtk-3-dev libvulkan-dev libunwind-dev gcc yasm nasm curl libx264-dev libx265-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libdrm-dev libva-dev libvulkan-dev vulkan-headers libpipewire-0.3-dev libspa-0.3-dev git
```
- * Note: Libpipewire/libspa must be at least 0.3.49 version - make sure to use upstream pipewire https://github.com/pipewire-debian/pipewire-debian
+
+ * Note: Libpipewire/libspa must be at least 0.3.49 version - make sure to use upstream pipewire
* **Fedora**
```bash
sudo dnf groupinstall 'Development Tools' | For c++ and build tools
- sudo dnf install nasm yasm libdrm-devel vulkan-headers pipewire-jack-audio-connection-kit-devel atk-devel gdk-pixbuf2-devel cairo-devel rust-gdk0.15-devel x264-devel vulkan-devel libunwind-devel clang openssl-devel alsa-lib-devel libva-devel pipewire-devel
+ sudo dnf install nasm yasm libdrm-devel vulkan-headers pipewire-jack-audio-connection-kit-devel atk-devel gdk-pixbuf2-devel cairo-devel rust-gdk0.15-devel x264-devel vulkan-devel libunwind-devel clang openssl-devel alsa-lib-devel libva-devel pipewire-devel git
```
If you are using Nvidia, see [Fedora cuda installation](https://github.com/alvr-org/ALVR/wiki/Building-From-Source#fedora-cuda-installation)
@@ -73,7 +70,7 @@ If you want to edit and rebuild the code, you can skip the `prepare-deps` comman
## Fedora CUDA installation
-If you are here for CUDA installation on Fedora you're at the right place! Else continue down to [Client Building](https://github.com/alvr-org/ALVR/wiki/Building-From-Source#client-building)
+If you are here for CUDA installation on Fedora you're at the right place! Else continue down to [Android App Building](https://github.com/alvr-org/ALVR/wiki/Building-From-Source#android-app-building)
### 1. Install Nvidia drivers and Fedora CUDA driver
@@ -109,7 +106,7 @@ export PATH=/usr/local/cuda-12.3/bin${PATH:+:${PATH}}
If your cuda version is different, change it to the version that is installed. You can check installed versions by doing ```ls /usr/local/ | grep "cuda"``` in your terminal
-**Comments**
+#### Note about Nvidia's CUDA
* Disabling the nvidia-driver doesn't disable Nvidia drivers but prevents nvidia dkms from installing over the akmod driver
@@ -128,7 +125,7 @@ Then install gcc11
brew install gcc@11
```
-**Comments**
+#### Notes on installing gcc11 with homebrew
* If brew is not found in your path, run the following separately to add brew to your path:
@@ -148,11 +145,11 @@ From the ALVR directory edit the ./alvr/xtask/src/dependencies.rs, and change tw
You should be good to go! Refer to [Streamer Building](https://github.com/alvr-org/ALVR/wiki/Building-From-Source#streamer-building) for the commands to build ALVR
-# Client Building
+# Android App Building
## 1. Installing necessary packages
-For the client you need install:
+For the app you need install:
* [Android Studio](https://developer.android.com/studio) or the [sdkmanager](https://developer.android.com/studio/command-line/sdkmanager)
* Android SDK Platform-Tools 29 (Android 10)
@@ -161,13 +158,13 @@ For the client you need install:
On Linux, the specific package names for the android tools can differ from distro to distro, see up on the wiki for more information:
* Gentoo:
- * https://wiki.gentoo.org/wiki/Android
+ *
* Arch:
- * https://wiki.archlinux.org/title/Android
+ *
* Debian:
- * https://wiki.debian.org/AndroidStudio
+ *
* Ubuntu:
- * https://help.ubuntu.com/community/AndroidSDK
+ *
* Pop!\_OS:
* N/A
@@ -188,7 +185,7 @@ For Debian, it requires to have the `non-free` repository to be enabled:
sudo apt install android-sdk-platform-tools-common sdkmanager google-android-ndk-r26b-installer
```
- ## 2. Setting environment variables
+## 2. Setting environment variables
For Windows, set the environment variables:
@@ -202,9 +199,9 @@ For Windows, set the environment variables:
For Linux, the correct directories for the environment variables can greatly differ depending on the type of install. See the wiki page of your distro for more information:
* Gentoo:
- * https://wiki.gentoo.org/wiki/Android
+ *
* Ubuntu:
- * https://help.ubuntu.com/community/AndroidSDK#Post-Installation_Configuration
+ *
Distro wikis that weren't listed above does not mention of environment variables, although generally they would be as:
@@ -227,7 +224,7 @@ Move to the root directory of the project, then run this command:
cargo xtask prepare-deps --platform android
```
-Before building the client, Android has to have us to agree to the licenses otherwise building the client will halt and fail. To accept the agreements, follow the instructions for your corresponding OS:
+Before building the app, Android has to have us to agree to the licenses otherwise building the app will halt and fail. To accept the agreements, follow the instructions for your corresponding OS:
* Windows:
@@ -235,6 +232,7 @@ Before building the client, Android has to have us to agree to the licenses othe
cd "%ANDROID_SDK_ROOT%\tools\bin"
sdkmanager.bat --licenses
```
+
* Linux:
```bash
@@ -242,7 +240,7 @@ Before building the client, Android has to have us to agree to the licenses othe
sdkmanager --licenses
```
-Next up is the proper build of the client. Run the following:
+Next up is the proper build of the app. Run the following:
```bash
cargo xtask build-client --release
diff --git a/wiki/Configuration-Information-and-Recommendations.md b/wiki/Configuration-Information-and-Recommendations.md
index bed16f3f19..6e967b5495 100644
--- a/wiki/Configuration-Information-and-Recommendations.md
+++ b/wiki/Configuration-Information-and-Recommendations.md
@@ -1,40 +1,40 @@
# Information and Recommendations
-# PC
+## PC
- A high-end PC is a requirement; ALVR is not a cheap alternative to a PCVR HMD
-- ALVR resolution configuration and SteamVR multi-sampling may be used to influence quality in favor of performance or vice-versa
-- Frequent dropped frames can cause a poor experience on ALVR; this can be verified using a tool such as [OVR Advanced Settings](https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings)
-- Higher bit-rates will cause higher latency
-- Ensure all relevant software is up to date; especially graphics and network drivers
-- A good starting point is 100% resolution and 30mbit- 200kb buffer settings. In this config it should be butter smooth with almost no lag or packet loss; packet loss seen at this point is likely a result of network issues
+- ALVR resolution configuration and SteamVR multi-sampling may be used to influence quality in favor of performance or vice-versa.
+- Frequent dropped frames can cause a poor experience on ALVR; this can be verified using a tool such as [OVR Advanced Settings](https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings).
+- Higher bit-rates will cause higher latency.
+- Ensure all relevant software is up to date - especially graphics and network drivers.
+- A good starting point is 100% resolution (`Very low` resolution preset) and 30mbit constant bitrate. In this config it should be very smooth with almost no lag or packet loss; packet loss seen at this point is likely a result of network issues.
-# Network
+## Network
-- A wired connection from the PC to the network is **strongly recommended**
-- A modern mid to high-end router and / or access point supporting at least 802.11AC (ideally 802.11AX) with regularly updated firmware is recommended
+- A wired connection from the PC to the network is **strongly recommended**.
+- A modern mid to high-end router and / or access point supporting at least 802.11ac (ideally 802.11ax) is recommended.
## Wireless
-### General WiFi configuration best practices:
+### General WiFi configuration best practices
-- Any device that can be wired should be; each wireless device slows down the overall wireless network
-- Devices should have the fewest obstructions and be as close to the access point or router as possible
+- Any device that can be wired should be - each wireless device slows down the overall wireless network
+- Devices should have the least amount of obstructions and be as close to the access point or router as possible
- Any other wireless networks (ex: a printer's default wireless network) should be disabled; each network slows others down
- Any devices that do not need high speeds but support them (ex: a thermostat) should use 2.4Ghz; often middle and higher end access points and routers support methods to "force" clients to use 2.4Ghz, and some can even perform this automatically based on signal strength and connection speed
-- Only WiFi revisions which are necessary should be enabled; older standards such as 802.11B, 802.11G, and to a lesser extent, 802.11N, will slow down all clients
-- Devices that require high speeds should use:
- - 5Ghz only
- - The newest WiFi specifications (802.11AX, followed by 802.11AC)
- - In most environments, the largest channel width possible (160MHz for 802.11AX, 80MHz in practice for 802.11AC) (**note: some vendors do not set this to the maximum by default**)
+- Only WiFi revisions which are necessary should be enabled; older standards such as 802.11b, 802.11g, and to a lesser extent, 802.11n, will slow down all clients
+- Devices that require high speeds (such as standalone headset) should use:
+ - 5GHz only
+ - The newest WiFi specifications (802.11ax, followed by 802.11ac)
+ - In most environments, the largest channel width possible (160MHz for 802.11ax, 80MHz in practice for 802.11ac) (**note: some vendors do not set this to the maximum by default**)
- The lowest utilization, followed by the lowest channel number (sub-frequency) possible
-- **Manually selecting channels should only be done in places with extreme noise, or on older, lower quality, or ISP provided access points or routers** ; modern mid to high-end routers and access points should optimize their channels fairly well, and as a result of other routers and clients "channel hopping", static settings are often less optimal
-- If a specific WiFi channel range is absolutely necessary, use a WiFi scanning tool on a phone or PC to determine the least used channels; mid to high-end access points and routers may provide an interface for this as well, however, this sometimes causes a disconnect when scanning
-- **Manually selecting wifi signal strength should only be done in places with extreme noise**; modern routers and access points do this well, and it is a complex task
-- If a specific transmit power is necessary, keep in mind that stronger is not always better; as transmit power increases, distortion may increase (leading to *lower* speeds), battery life of clients may increase (due to the higher power requested by the access point or router), and issues with sticky clients (devices which stay connected to wifi even with bad signal) may appear
+- **Manually selecting channels should only be done in places with extreme noise, or on older, lower quality, or ISP provided access points or routers** - modern mid to high-end routers and access points should optimize their channels fairly well, and as a result of other routers and clients "channel hopping", static settings are often less optimal
+- If a specific WiFi channel range is absolutely necessary, use a WiFi scanning tool on a phone or PC to determine the least used channels - mid to high-end access points and routers may provide an interface for this as well, however, this sometimes causes a disconnect when scanning
+- **Manually selecting wifi signal strength should only be done in places with extreme noise** - modern routers and access points do this well, and it is a complex task
+- If a specific transmit power is necessary, keep in mind that stronger is not always better - as transmit power increases, distortion may increase (leading to *lower* speeds), battery life of clients may increase (due to the higher power requested by the access point or router), and issues with sticky clients (devices which stay connected to wifi even with bad signal) may appear
- If you have a significant number of devices, some routers and access points support features such as airtime fairness, which help to limit the amount of airtime slower clients take, improving the performance of higher speed clients
-### Things to keep in mind when configuring a wireless network and devices:
+### Things to keep in mind when configuring a wireless network and devices
- All devices on the same frequency impact each other (**including other WiFi networks on the same channel**) because only one device can transmit or receive data at a time, meaning that:
- If one device utilizes WiFi heavily it will impact the latency and throughput of all other clients
@@ -47,22 +47,22 @@
## Routing / Switching / Firewalling / General Info
-- Ideally client and streamer should live on the same logical (layer 2) network and subnet; this allows for no routing overhead, and the correct function of client discovery via mDNS
-- Twisted pair (normal copper ethernet cables) should never be run alongside power cables; this can cause signal noise and result in frame loss and lowered auto-negotiation speeds
-- High quality CAT5E or higher (ideally CAT6A or CAT7) cabling should be used for modern networks
-- In some cases firewall, anti-virus, malware, or EDR (enhanced detection and response) software may interfere with network traffic; Windows Defender and Sophos Endpoint Protection are reported to work without issue
+- Ideally the headset and streamer should exist on the same logical (layer 2) network and subnet - this allows for no routing overhead, and the correct function of device discovery via [mDNS](https://en.wikipedia.org/wiki/Multicast_DNS)
+- Twisted pair (normal copper ethernet cables) should never be run alongside power cables - this can cause signal noise and result in frame loss and lowered auto-negotiation speeds
+- High quality CAT5E or higher (ideally CAT6A or CAT7) gigabit+ cabling should be used for modern networks
+- In some cases firewall, anti-virus, malware, or EDR (enhanced detection and response) software may interfere with network traffic - Windows Defender and Sophos Endpoint Protection are reported to work without issue
- Pause frames should be disabled where possible, as these introduce additional latency and buffering
***
Someone did a few blog-posts on some of the points:
-https://imaginevr.home.blog/author/imaginevrresearch/
+
Some points came from [FingrMastr](https://github.com/FingrMastr)
-# Linux
+## Linux
-## Encoder requirements
+### Encoder requirements
ALVR uses FFmpeg for all encoders, so you will need to make sure the encoder of your choice works with FFmpeg.
Always consult Log tab in dashboard, it will tell you the reason why an encoder failed to initialize.
@@ -97,7 +97,7 @@ vainfo: Supported profile and entrypoints
*VAProfileH264High, VAProfileHEVCMain, VAProfileHEVCMain10* encoders (VAEntrypointEncSlice) required. If you don't see those
in your output, your driver install is incorrect or your distribution decided to build *mesa* without non-free codecs.
-**Test ffmpeg commands**
+#### Test ffmpeg commands (VAAPI)
```sh
# H264
@@ -107,11 +107,11 @@ ffmpeg -vaapi_device /dev/dri/renderD128 -f lavfi -i testsrc -t 30 -vf 'format=n
ffmpeg -vaapi_device /dev/dri/renderD128 -f lavfi -i testsrc -t 30 -vf 'format=nv12,hwupload' -c:v hevc_vaapi vaapi-hevc.mp4
```
-### NVENC (NVidia)
+### NVENC (Nvidia)
Requires *libcuda*.
-**Test ffmpeg commands**
+#### Test ffmpeg commands (Nvidia)
```sh
# H264
@@ -121,18 +121,7 @@ ffmpeg -f lavfi -i testsrc -t 30 -vf 'format=nv12,hwupload' -c:v h264_nvenc nven
ffmpeg -f lavfi -i testsrc -t 30 -vf 'format=nv12,hwupload' -c:v hevc_nvenc nvenc-hevc.mp4
```
-### Software (all GPUs)
+### Software (any GPUs)
Software encoder is mainly used as a fallback and as such should work on all GPUs without any requirements.
Only H264 encoding is currently supported.
-
-## Legacy Reprojection
-
-SteamVR by default will still use async reprojection for all games, which can cause issues such as:
-
-- Ghosting
-- Jumpy framerate
-- Jittery movement
-- General unsmoothness
- And all other sorts of issues. Turning on Legacy Reprojection in the per game video settings inside SteamVR will effectively disable
- any reprojection making the experience far better.
diff --git a/wiki/Controller-latency.md b/wiki/Controller-latency.md
index c65798ab20..7cdca07909 100644
--- a/wiki/Controller-latency.md
+++ b/wiki/Controller-latency.md
@@ -1,3 +1,5 @@
+# Controller latency
+
Controller tracking will always be difficult. There are so many factors that influence the latency and the motion prediction. Its not something like "100ms" constantly, but depends on your movements and even the movement of the headset.
There are many parameters that influence the movement that can be changed:
diff --git a/wiki/Flatpak.md b/wiki/Flatpak.md
index 7085328169..4ed84b65c7 100644
--- a/wiki/Flatpak.md
+++ b/wiki/Flatpak.md
@@ -1,10 +1,10 @@
-## Installing ALVR and using SteamVR on Linux through Flatpak
+# Installing ALVR and using SteamVR on Linux through Flatpak
## Disclaimer
1. This is not a fully-featured version of ALVR! It lacks Nvidia support and has bugs related to Flatpak sandboxing
-2. Nvidia GPUs are currently not supported
+2. Nvidia GPUs are currently not supported (but might be supported with [this PR](https://github.com/alvr-org/ALVR/pull/2207))
3. Native Linux SteamVR utility applications such as OpenVRAS are not supported nor tested, use at your own risk
@@ -16,11 +16,11 @@
7. The ALVR Dashboard is not available in the Applications menu. To run the dashboard, run the following command to run `alvr_dashboard` in the Steam Flatpak environment:
-```
+```sh
flatpak run --command=alvr_dashboard com.valvesoftware.Steam
```
-8. This only works with the Steam Flatpak. For non-Flatpak Steam, use the AppImage instead
+8. This only works with the Steam Flatpak. For non-Flatpak Steam, use the launcher or tar.gz
## Dependencies
@@ -35,7 +35,7 @@ Once Flatpak is installed, the flatpak dependencies must also be installed. They
These can be installed like so:
-```
+```sh
flatpak install flathub org.freedesktop.Sdk//23.08 \
org.freedesktop.Sdk.Extension.llvm16//23.08 \
org.freedesktop.Sdk.Extension.rust-stable//23.08 \
@@ -44,7 +44,7 @@ flatpak install flathub org.freedesktop.Sdk//23.08 \
AMD users may need to install the appropriate Mesa codec extensions as well:
-```
+```sh
flatpak install flathub org.freedesktop.Platform.GL.default//23.08-extra \
org.freedesktop.Platform.GL32.default//23.08-extra
```
@@ -53,7 +53,7 @@ flatpak install flathub org.freedesktop.Platform.GL.default//23.08-extra \
Install SteamVR via the Steam Flatpak. After installing SteamVR, run the following command:
-```
+```sh
sudo setcap CAP_SYS_NICE+eip ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher
```
@@ -63,7 +63,7 @@ This command is normally run by SteamVR, but due to the lack of sudo access with
Download `com.valvesoftware.Steam.Utility.alvr.flatpak` file from one of the latest [nightly](https://github.com/alvr-org/ALVR-nightly/releases) that contains flatpak bundle and install like so:
-```
+```sh
flatpak --user install --bundle com.valvesoftware.Steam.Utility.alvr.flatpak
```
@@ -75,26 +75,26 @@ Alternatively, if the file is not available or a newer version is needed, the fl
First, the dependencies from above must be fulfilled. Then, install `flatpak-builder` like so:
-```
+```sh
flatpak install flathub org.flatpak.Builder
```
Once the dependencies are fulfilled, clone and enter the repository.
-```
+```sh
git clone https://github.com/alvr-org/ALVR.git
cd ALVR
```
Once inside the repository, simply run the following command to build and install the Flatpak.
-```
+```sh
flatpak run org.flatpak.Builder --user --install --force-clean .flatpak-build-dir alvr/xtask/flatpak/com.valvesoftware.Steam.Utility.alvr.json
```
If ALVR is not cloned under the home directory, permission to access the directory may need to be given to the build command. An example of this is given below.
-```
+```sh
flatpak run --filesystem="$(pwd)" org.flatpak.Builder --user --install --force-clean .flatpak-build-dir alvr/xtask/flatpak/com.valvesoftware.Steam.Utility.alvr.json
```
@@ -104,28 +104,12 @@ flatpak run --filesystem="$(pwd)" org.flatpak.Builder --user --install --force-c
To run the ALVR Dashboard, run the following command:
-```
+```sh
flatpak run --command=alvr_dashboard com.valvesoftware.Steam
```
A desktop file named `com.valvesoftware.Steam.Utility.alvr.desktop` is supplied within the `alvr/xtask/flatpak` directory. Move this to where other desktop files are located on your system in order to run the dashboard without the terminal.
-### Automatic Audio & Microphone setup
-
-Currently the game audio and microphone to and from the headset isn't routed automatically. The setup of this script will therefore run every time the headset connects or disconnects to the ALVR dashboard. This is based on [the steps](Installation-guide.md#automatic-audio--microphone-setup) in the installation guide, modified for the Flatpak.
-
-1. In the ALVR Dashboard under All Settings (Advanced) > Audio, enable Game Audio and Microphone.
-
-2. In the same place under Microphone, click Expand and set Devices to custom. Enter `default` for the name for both Sink and Source.
-
-3. Download the [audio-flatpak-setup.sh](../alvr/xtask/flatpak/audio-flatpak-setup.sh) script and place it into the Flatpak app data directory located at `~/.var/app/com.valvesoftware.Steam/`. Make sure it has execute permissions (e.g. `chmod +x audio-flatpak-setup.sh`).
-
-5. In the ALVR Dashboard, under All Settings (Advanced) > Connection, set the On connect script and On disconnect script to the absolute path of the script (relative to the Flatpak environment), e.g. `/home/$USER/.var/app/com.valvesoftware.Steam/audio-flatpak-setup.sh`.
-
-6. In a terminal, run `flatpak override --user --filesystem=xdg-run/pipewire-0 com.valvesoftware.Steam` to allow the script to set and map your headset's microphone
-
-7. Restart both Steam and the ALVR Dashboard
-
### Other Applications
The support for other applications that are not launched via Steam is non-existent due to the Flatpak sandbox.
diff --git a/wiki/Hardware-Video-Encoding.md b/wiki/Hardware-Video-Encoding.md
index 9ac6aca1ea..a6db34c828 100644
--- a/wiki/Hardware-Video-Encoding.md
+++ b/wiki/Hardware-Video-Encoding.md
@@ -2,89 +2,91 @@
FFmpeg hardware video offloading test commands to validate hardware encoding offloading is working.
-Learn more at: https://trac.ffmpeg.org/wiki/HWAccelIntro
+Learn more at:
-### Codecs
+## Codecs
-* **Advanced Video Coding (AVC/h264)** - https://en.wikipedia.org/wiki/Advanced_Video_Coding
+* **Advanced Video Coding (AVC/h264)** -
- Advanced Video Coding (AVC), also referred to as H.264 or MPEG-4 Part 10, is a video compression standard based on block-oriented, motion-compensated coding. It is by far the most commonly used format for the recording, compression, and distribution of video content. It supports a maximum resolution of 8K UHD. Hardware encoding support is widely available.
+ Advanced Video Coding (AVC), also referred to as H.264 or MPEG-4 Part 10, is a video compression standard based on block-oriented, motion-compensated coding. It is by far the most commonly used format for the recording, compression, and distribution of video content. It supports a maximum resolution of 8K UHD. Hardware encoding support is widely available.
-* **High Efficiency Video Coding (HEVC/h265)** - https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding
+* **High Efficiency Video Coding (HEVC/h265)** -
- High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard designed as part of the MPEG-H project as a successor to the widely used Advanced Video Coding (AVC, H.264, or MPEG-4 Part 10). In comparison to AVC, HEVC offers from 25% to 50% better data compression at the same level of video quality, or substantially improved video quality at the same bit rate. It supports resolutions up to 8192×4320, including 8K UHD, and unlike the primarily 8-bit AVC, HEVC's higher fidelity Main 10 profile has been incorporated into nearly all supporting hardware. Hardware encoding support is widely available.
+ High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard designed as part of the MPEG-H project as a successor to the widely used Advanced Video Coding (AVC, H.264, or MPEG-4 Part 10). In comparison to AVC, HEVC offers from 25% to 50% better data compression at the same level of video quality, or substantially improved video quality at the same bit rate. It supports resolutions up to 8192×4320, including 8K UHD, and unlike the primarily 8-bit AVC, HEVC's higher fidelity Main 10 profile has been incorporated into nearly all supporting hardware. Hardware encoding support is widely available.
-* **AOMedia Video 1 (AV1)** - https://en.wikipedia.org/wiki/AV1
+* **AOMedia Video 1 (AV1)** -
- AOMedia Video 1 (AV1) is an open, royalty-free video coding format initially designed for video transmissions over the Internet. It was developed as a successor to VP9 by the Alliance for Open Media (AOMedia). The AV1 bitstream specification includes a reference video codec. Hardware encoding support is limited to latest generation hardware.
+ AOMedia Video 1 (AV1) is an open, royalty-free video coding format initially designed for video transmissions over the Internet. It was developed as a successor to VP9 by the Alliance for Open Media (AOMedia). The AV1 bitstream specification includes a reference video codec. Hardware encoding support is limited to latest generation hardware.
### Graphics Encoding APIs
-* **Video Acceleration API** - https://en.wikipedia.org/wiki/Video_Acceleration_API
+* **Video Acceleration API** -
- Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library libva, combined with a hardware-specific driver, usually provided together with the GPU driver.
-
- Check your current VA-API status with `vainfo`.
+ Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library libva, combined with a hardware-specific driver, usually provided together with the GPU driver.
-* **Vulkan Video** - https://en.wikipedia.org/wiki/Vulkan
+ Check your current VA-API status with `vainfo`.
- Vulkan is a low-level low-overhead, cross-platform API and open standard for 3D graphics and computing. It was intended to address the shortcomings of OpenGL, and allow developers more control over the GPU. It is designed to support a wide variety of GPUs, CPUs and operating systems, it is also designed to work with modern multi-core CPUs. Support is upcoming. See: https://www.khronos.org/blog/khronos-releases-vulkan-video-av1-decode-extension-vulkan-sdk-now-supports-h.264-h.265-encode
+* **Vulkan Video** -
-* **NVENC** - https://en.wikipedia.org/wiki/Nvidia_NVENC
+ Vulkan is a low-level low-overhead, cross-platform API and open standard for 3D graphics and computing. It was intended to address the shortcomings of OpenGL, and allow developers more control over the GPU. It is designed to support a wide variety of GPUs, CPUs and operating systems, it is also designed to work with modern multi-core CPUs. Support is upcoming. See:
- Nvidia NVENC is a feature in Nvidia graphics cards that performs video encoding, offloading this compute-intensive task from the CPU to a dedicated part of the GPU.
+* **NVENC** -
-* **AMD Advanced Media Framework**- https://gpuopen.com/advanced-media-framework/
+ Nvidia NVENC is a feature in Nvidia graphics cards that performs video encoding, offloading this compute-intensive task from the CPU to a dedicated part of the GPU.
- AMD AMF is a SDK for optimal access to AMD GPUs for multimedia processing.
+* **AMD Advanced Media Framework**-
+
+ AMD AMF is a SDK for optimal access to AMD GPUs for multimedia processing.
### Test Source Input Generation
+
Please note that using the test source for input generation induces CPU load. When monitoring for proper GPU offloading, there will still be expected CPU load from FFmpeg.
-```
+```sh
ffmpeg -hide_banner -f lavfi -i testsrc2=duration=30:size=1280x720:rate=90
```
-* **lavfi** - https://ffmpeg.org/ffmpeg-devices.html#toc-lavfi
+* **lavfi** -
- Libavfilter input virtual device. This input device reads data from the open output pads of a libavfilter filtergraph. For each filtergraph open output, the input device will create a corresponding stream which is mapped to the generated output. The filtergraph is specified through the option graph.
+ Libavfilter input virtual device. This input device reads data from the open output pads of a libavfilter filtergraph. For each filtergraph open output, the input device will create a corresponding stream which is mapped to the generated output. The filtergraph is specified through the option graph.
-* **testsrc2** - https://ffmpeg.org/ffmpeg-filters.html#allrgb_002c-allyuv_002c-color_002c-colorchart_002c-colorspectrum_002c-haldclutsrc_002c-nullsrc_002c-pal75bars_002c-pal100bars_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc_002c-testsrc2_002c-yuvtestsrc
+* **testsrc2** -
- The `testsrc2` source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp. This is mainly intended for testing purposes. The `testsrc2` source is similar to `testsrc`, but supports more pixel formats instead of just `rgb24`. This allows using it as an input for other tests without requiring a format conversion.
-
- 1) duration - how long of a clip in seconds
- 2) size - dimensions of the video
- 3) rate - frame rate per second
+ The `testsrc2` source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp. This is mainly intended for testing purposes. The `testsrc2` source is similar to `testsrc`, but supports more pixel formats instead of just `rgb24`. This allows using it as an input for other tests without requiring a format conversion.
+
+ 1) duration - how long of a clip in seconds
+ 2) size - dimensions of the video
+ 3) rate - frame rate per second
### Render Playback
+
Use your favorite video player to verify the video was rendered correctly.
-* MPV - https://en.wikipedia.org/wiki/Mpv_(media_player)
+* MPV -
- mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems (Linux, BSD-based, macOS) and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, PowerPC, x86/IA-32, x86-64, and MIPS architecture.
+ mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems (Linux, BSD-based, macOS) and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, PowerPC, x86/IA-32, x86-64, and MIPS architecture.
-* VLC - https://en.wikipedia.org/wiki/VLC_media_player
+* VLC -
- VLC media player (previously the VideoLAN Client and commonly known as simply VLC) is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for desktop operating systems and mobile platforms, such as Android, iOS and iPadOS. VLC is also available on digital distribution platforms such as Apple's App Store, Google Play, and Microsoft Store.
+ VLC media player (previously the VideoLAN Client and commonly known as simply VLC) is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for desktop operating systems and mobile platforms, such as Android, iOS and iPadOS. VLC is also available on digital distribution platforms such as Apple's App Store, Google Play, and Microsoft Store.
### Nvidia GPU
-Test the Nvidia hardware encoding pipeline. Only NVENC is supported as the current Nvidia VA-API driver (https://github.com/elFarto/nvidia-vaapi-driver) only supports NVDEC. Check your hardware support at https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new for NVENC support.
-Monitoring utilities:
+Test the Nvidia hardware encoding pipeline. Only NVENC is supported as the current Nvidia VA-API driver () only supports NVDEC. Check your hardware support at for NVENC support.
-* **nvtop** - https://github.com/Syllo/nvtop
+Monitoring utilities:
- NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
+* **nvtop** -
-* **nvidia-smi pmon** - https://developer.nvidia.com/nvidia-system-management-interface
+ NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
- The NVIDIA System Management Interface (nvidia-smi) is a command line utility, based on top of the NVIDIA Management Library (NVML), intended to aid in the management and monitoring of NVIDIA GPU devices. The `pmon` command lists the statistics for all the compute and graphics processes running on each device.
+* **nvidia-smi pmon** -
+ The NVIDIA System Management Interface (nvidia-smi) is a command line utility, based on top of the NVIDIA Management Library (NVML), intended to aid in the management and monitoring of NVIDIA GPU devices. The `pmon` command lists the statistics for all the compute and graphics processes running on each device.
Nvenc AVC (h264) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-c:v h264_nvenc -qp 18 \
@@ -93,7 +95,7 @@ nvidia-h264_nvec-90fps-300s.mp4
Nvenc HEVC (h265) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-c:v hevc_nvenc -qp 18 \
@@ -102,7 +104,7 @@ nvidia-hevc_nvec-90fps-300s.mp4
Nvenc AV1 hardware encoding (Ada Lovelace or newer hardware):
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-c:v av1_nvenc -qp 18 \
@@ -110,17 +112,18 @@ nvidia-av1_nvec-90fps-300s.mp4
```
### Intel GPU
-Test the Intel hardware encoding pipeline. Only VA-API is supported with the intel-media-driver (https://github.com/intel/media-driver) on GEN based graphics hardware. Check your hardware support at https://www.intel.com/content/www/us/en/docs/onevpl/developer-reference-media-intel-hardware/1-1/overview.html for encoding codec support.
+
+Test the Intel hardware encoding pipeline. Only VA-API is supported with the intel-media-driver () on GEN based graphics hardware. Check your hardware support at for encoding codec support.
Monitoring utilities:
-* **nvtop** - https://github.com/Syllo/nvtop
+* **nvtop** -
- NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
+ NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
VA-API AVC (h264) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
@@ -130,7 +133,7 @@ intel-h264_vaapi-90fps-300s.mp4
VA-API HEVC (h265) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
@@ -140,7 +143,7 @@ intel-hevc_vaapi-90fps-300s.mp4
VA-API AV1 hardware encoding (Arc A-Series only):
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
@@ -149,17 +152,18 @@ intel-av1_vaapi-90fps-300s.mp4
```
### AMD GPU
-Test the AMD hardware encoding pipeline. Only VA-API is supported with the mesa-va-drivers (https://mesa3d.org/) on AMD based graphics hardware. Check your hardware support at https://en.wikipedia.org/wiki/Unified_Video_Decoder for encoding codec support. Video Core Next (VCN) hardware is required for hardware encoding.
+
+Test the AMD hardware encoding pipeline. Only VA-API is supported with the mesa-va-drivers () on AMD based graphics hardware. Check your hardware support at for encoding codec support. Video Core Next (VCN) hardware is required for hardware encoding.
Monitoring utilities:
-* **nvtop** - https://github.com/Syllo/nvtop
+* **nvtop** -
- NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
+ NVTOP stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Intel and NVIDIA GPUs. It can handle multiple GPUs and print information about them in a htop-familiar way.
VA-API AVC (h264) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
@@ -169,7 +173,7 @@ amd-h264_vaapi-90fps-300s.mp4
VA-API HEVC (h265) hardware encoding:
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
@@ -179,11 +183,10 @@ amd-hevc_vaapi-90fps-300s.mp4
VA-API AV1 hardware encoding (VCN 4.0+, Navi 3x only):
-```
+```sh
ffmpeg -hide_banner \
-f lavfi -i testsrc2=duration=300:size=1280x720:rate=90 \
-vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' \
-c:v av1_vaapi -qp 18 \
amd-av1_vaapi-90fps-300s.mp4
```
-
diff --git a/wiki/Home.md b/wiki/Home.md
index d09dedb107..9f03e12f58 100644
--- a/wiki/Home.md
+++ b/wiki/Home.md
@@ -1,3 +1,3 @@
-ALVR is a piece of software to stream SteamVR games to your standalone VR headset.
+ALVR is a vr streaming software that allows you to stream SteamVR games to your standalone VR headset.
Use the sidebar to navigate the wiki.
diff --git a/wiki/Installation-guide.md b/wiki/Installation-guide.md
index 352d56b516..3b5b577115 100644
--- a/wiki/Installation-guide.md
+++ b/wiki/Installation-guide.md
@@ -1,114 +1,88 @@
# Installation guide
-## Basic installation
+## Launcher (BETA)
-PC side:
+Launcher will allow you to manage old, current and new installations of ALVR streamer and allow to automatically install and upgrade to specific ALVR app version on headset
-* Install SteamVR, **launch it once** then close it. This is to make sure it sets the environment correctly for ALVR.
-* Go to the latest release [download page](https://github.com/alvr-org/ALVR/releases/latest). In the "Assets" section at the bottom download the ALVR Installer.
-* Run the installer. If prompted, allow the execution in the SmartScreen popup. You need to give administrator permissions to install ALVR. For best compatibility do not change the installation folder.
-* Once the installation finished, launch ALVR. You are greeted with a setup wizard. Follow the setup to set the firewall rules and presets.
+### Installation
-**If you have problems launching ALVR, follow the guide below to use the portable version**
-
-Headset side:
-
-* Install SideQuest on your PC and enable developer mode on the headset. You can follow [this guide](https://sidequestvr.com/setup-howto).
-* Connect your headset to Sidequest. If you have an Oculus Quest 1/2 download the ALVR app [here](https://sidequestvr.com/app/9), if you have an Oculus Go download it [here](https://sidequestvr.com/app/2658)
+* Download `alvr_launcher_windows.zip` (on Windows) or `alvr_launcher_linux.tar.gz` (on Linux) from the release [download page](https://github.com/alvr-org/ALVR/releases/latest) and extract into a path that contains only ASCII characters (english only) and has edit permissions without administrator or root rights.
+* Run `ALVR Launcher.exe` (on Windows) or `alvr_launcher_linux/ALVR Launcher` (on Linux)
+* Press `Add version` button
+* For default installation keep channel and version as is and press `Install`
+* Wait until it finishes downloading, installing (depends on your connection)
+* To install ALVR app on headset, use button `Install APK`
+* In the list, to open streamer app (PC) press `Launch`. You will be greeted with a setup wizard. Follow the setup to set the firewall rules and other settings.
### Usage
-* Launch ALVR on your headset. While the headset screen is on, click `Trust` next to the client entry (on the PC) to start streaming.
+* Before launching SteamVR through ALVR, please install it. First time launch will result in steamvr being blank and alvr will not work - close it and start again. It will have registered driver and should work.
+* Launch ALVR app on your headset. While the headset screen is on, click `Trust` next to the device entry (in the ALVR streamer app on PC, in the `Devices` tab) to start streaming.
* You can change settings on the PC in the `Settings` tab. Most of the settings require to restart SteamVR to be applied. Use the apposite button on the bottom right corner.
For any problem visit the [Troubleshooting page](https://github.com/alvr-org/ALVR/wiki/Troubleshooting).
-## Advanced installation
-
-### Portable version
-
-There is also a portable version for the PC that requires more manual steps to make it work.
+### Windows microphone streaming
-* Install SteamVR and launch it once.
-* Download `alvr_streamer_windows.zip` from the latest release [download page](https://github.com/alvr-org/ALVR/releases/latest).
-* Unzip into a path that contains only ASCII characters and has edit permissions without administrator rights.
+To use the microphone you need to install the [VB-CABLE driver](https://vb-audio.com/Cable/).
+Set "CABLE Output" as the default microphone.
+Then you can enable the microphone in the ALVR setting, leave "Virtual microphone input" to Default.
-### Nightly
+## Advanced installation
-If you want to get new features early or you want to help with testing you can install a nightly version.
+### Installing app using Sidequest
-Download the latest nightly streamer [here](https://github.com/alvr-org/ALVR-nightly/releases/latest). Download the latest nightly client from Sidequest ([download](https://sidequestvr.com/app/2281)).
+* Install SideQuest on your PC and enable developer mode on the headset. You can follow [this guide](https://sidequestvr.com/setup-howto).
+* Connect your headset to Sidequest. If you have Quest, Pico, and other compatible device download the ALVR app [here](https://sidequestvr.com/app/9)
-Since nightly releases can be unstable, always use matching versions for PC and headset. They are updated once a day.
+### Manually installing ALVR streamer
-### Windows microphone streaming
+There is also a portable version for the PC that requires more manual steps to make it work.
-To use the microphone you need to install the [VB-CABLE driver](https://vb-audio.com/Cable/). Set "CABLE Output" as the default microphone. Then you can enable the microphone in the ALVR setting, leave "Virtual microphone input" to Default.
+#### Windows
-### Use ALVR together with third-party drivers
+* Download `alvr_streamer_windows.zip` from the latest release [download page](https://github.com/alvr-org/ALVR/releases/latest).
+* Unzip into a path that contains only ASCII characters and has edit permissions without administrator rights.
+* Run
-By default ALVR disables other SteamVR drivers before starting. Among these drivers there is [Driver4VR](https://www.driver4vr.com/) for full body tracking. ALVR disables these drivers to maximize compatibility with every PC setup. You can disable this behavior by manually registering the ALVR driver. Go to the `installation` tab and click on `Register ALVR driver`. The next time you launch ALVR you will be able to use the other drivers concurrently.
+#### Linux
-### Launch ALVR together with SteamVR
+* Download `alvr_streamer_linux.tar.gz` from the release [download page](https://github.com/alvr-org/ALVR/releases/latest), extract it.
+* Run `bin/alvr_dashboard`
-You can skip the ALVR Dashboard and open ALVR automatically together with SteamVR. Open ALVR, go to the `Installation` tab and click on `Register ALVR driver`.
+#### Nightly
-### Connect headset and PC via a USB Cable
+If you want to get new features early or you want to help with testing you can install a nightly version.
-Check out the guide [here](https://github.com/alvr-org/ALVR/wiki/Using-ALVR-through-a-USB-connection).
+Download the latest nightly streamer [here](https://github.com/alvr-org/ALVR-nightly/releases/latest).
-## Linux
+Since nightly releases can be unstable, always use matching versions for PC and headset. They are updated once a day.
### Arch Linux (AUR)
* Install `rustup` and a rust toolchain, if you don't have it: .
-* Install [alvr](https://aur.archlinux.org/packages/alvr)AUR (recommended), or [alvr-git](https://aur.archlinux.org/packages/alvr-git)AUR
+* Install [alvr](https://aur.archlinux.org/packages/alvr)AUR (stable, amdgpu), or [alvr-nvidia](https://aur.archlinux.org/packages/alvr-nvidia)AUR (stable, nvidia), or [alvr-git](https://aur.archlinux.org/packages/alvr-git)AUR(nightly, unstable)
* Install SteamVR, **launch it once** then close it.
* Run `alvr_dashboard` or ALVR from your DE's application launcher.
-### Semi-Automatic Distrobox installation and guidance
-
-Notes:
-
-* This should be used in case you can't install or have issues with ALVR on your system. Do note that on Nvidia it uses host drivers and cuda nvenc, so if you're on older distribution like Debian and having older driver and cuda version, it will not work properly either way.
-
-* Guide also contains fixes, tweaks, additional software like desktop overlay to help you run with steamvr better and workaround it's issues.
-
-Installation:
-
-1. Download zip from https://github.com/alvr-org/ALVR-Distrobox-Linux-Guide, unpack it somewhere in your home directory (steam doesn't like long paths) or `git clone https://github.com/alvr-org/ALVR-Distrobox-Linux-Guide.git`.
-
- If you want to use nightly (potentially unstable, but fresh) builds, set `IS_NIGHTLY=0` variable in `env.sh` to `IS_NIGHTLY=1`.
-
-2. `cd ALVR-Distrobox-Linux-Guide`
-
-3. Carefully follow the [guide](ALVR-in-distrobox.md).
-
-4. Any issues related to this installer/various tweaks/bugs should be reported as issue [here](https://github.com/alvr-org/ALVR-Distrobox-Linux-Guide/issues)
+### Flatpak
-### Other
-
-#### AppImage
-
-You can get appimage for latest stable version from [here](https://github.com/alvr-org/ALVR/releases/latest).
+For Flatpak users, refer to the instructions [here](https://github.com/alvr-org/ALVR/wiki/Flatpak)
-#### Flatpak
+## Advanced usage
-For Flatpak users, refer to the instructions [here](https://github.com/alvr-org/ALVR/wiki/Flatpak)
+### Use ALVR together with third-party drivers
-#### Portable tar.gz
+By default ALVR disables other SteamVR drivers before starting. Among these drivers there is [Driver4VR](https://www.driver4vr.com/) for full body tracking. ALVR disables these drivers to maximize compatibility with every PC setup. You can disable this behavior by manually registering the ALVR driver. Go to the `installation` tab and click on `Register ALVR driver`. The next time you launch ALVR you will be able to use the other drivers concurrently.
-* Install FFmpeg with VAAPI/NVENC + DRM + Vulkan + x264/x265 support. You can use this [ppa:savoury1/ffmpeg5](https://launchpad.net/~savoury1/+archive/ubuntu/ffmpeg5) under Ubuntu.
-* Install SteamVR, **launch it once** then close it.
-* Download `alvr_streamer_linux.tar.gz` from the release [download page](https://github.com/alvr-org/ALVR/releases/latest).
-* Run `bin/alvr_dashboard`
+### Launch ALVR together with SteamVR
-### Automatic Audio & Microphone Setup
+You can skip the ALVR Dashboard and open ALVR automatically together with SteamVR.
-* Must be on v20.5.0+
+**Note:** You can only do that while SteamVR is not already running. Otherwise driver might be unregistered on shutdown.
-* Pipewire required
+Open ALVR, go to the `Installation` tab and click on `Register ALVR driver`.
-* Open installation -> Run setup wizard, skip to part with automatic audio setup
+### Connect headset to PC via a USB Cable
-* Press the button to automatically download and set it
+Check out the guide [here](https://github.com/alvr-org/ALVR/wiki/Using-ALVR-through-a-USB-connection).
diff --git a/wiki/Linux-Support-development-progress.md b/wiki/Linux-Support-development-progress.md
deleted file mode 100644
index 898be240e6..0000000000
--- a/wiki/Linux-Support-development-progress.md
+++ /dev/null
@@ -1,92 +0,0 @@
-**Warning:** This page is very outdated, see [Building From Source](https://github.com/alvr-org/ALVR/wiki/Building-From-Source) instead.
-
-## 2022-01-04
-
-An experimental NVENC fork has successfully been created by [Toxblh](https://github.com/Toxblh), helping fix one of the larger bottlenecks on NVIDIA GPUs. [Pull Request here](https://github.com/alvr-org/ALVR/pull/906)
-
-## 2021-05-18
-
-No special build steps are required for users who can acquire the correct ffmpeg version, read more [here](https://github.com/alvr-org/ALVR/wiki/Build-from-source#linux-experimental-build).
-
-## 2021-04-22
-
-The PR in the last log was proceeded by [#604](https://github.com/alvr-org/ALVR/pull/604) and this new PR was merged into the main branch. Build instructions remain the same, but the `vrenv.sh` patching is no longer needed.
-
-## 2021-04-01
-
-A [PR](https://github.com/alvr-org/ALVR/pull/569) has been made integrating Xytovl's vulkan layer into the main ALVR tree. It doesn't actually stream video yet but it provides a solid base for future work and is compatible with nVidia GPUs.
-
-After you've checked the PR's branch out and [built the streamer](https://github.com/alvr-org/ALVR/wiki/Build-from-source#build-streamer), you can build and install the Vulkan layer like this:
-
-```
-cd alvr/server/cpp/tools/vulkan-layer
-mkdir build && cd build
-cmake ..
-make -j
-```
-
-Add this line: `source "$(cat $XDG_RUNTIME_DIR/alvr_dir.txt | rev | cut -d'/' -f3- | rev)/alvr/server/cpp/tools/vulkan-layer/layer/vrenv.sh"` **before** the last one (`exec "$@"`) to `/path/to/your/SteamLibrary/steamapps/common/SteamVR/bin/vrenv.sh`.
-
-## 2021-03-15
-
-Xytovl's branch has been merged into the main repository. The build steps are unchanged.
-Work has started towards a new frame capturing method using a Vulkan debug layer.
-
-## 2021-03-10
-
-An experimental branch is available at https://github.com/xytovl/ALVR/tree/linux-port-openvr with many limitations
-
-### Adopted solution
-
-We use SteamVR direct rendering mode on a fake screen, and capture the output of the screen. Current implementation only works for AMD (and probably Intel) open source drivers.
-
-### Limitations
-
-- audio streaming is not working
-- foveated encoding is not implemented
-- requires superuser access for setup
-- mostly untested
-- requires a free port on the graphic card
-- TCP streaming seems not to be working
-- position is stuttering
-- only supports open source drivers
-
-### Setup
-
-See [build from source](Build-from-source)
-
-## Usage
-
-Run `build/alvr_streamer_linux/ALVR Dashboard`
-
-On first setup, SteamVR will probably show the VR display on your screen, with the configuration window. If you have dual screen, you can move the configuration window to a visible area (with Alt + drag on most desktop environments).
-
-In the setup, deactivate audio streaming, switch connection to UDP, and deactivate foveated encoding.
-
-On the headset, launch the application, then click trust on the configuration window, which will quit.
-
-The headset says that the streamer will restart, but it will not. You must relaunch it manually.
-
-If you are here, once it is all restarted, you should be able to get the stream on the headset.
-
-## 2021-01-15
-
-The development road has been defined, but we are not completely sure everything will work.
-
-* We can try to extract frames from the VR game using a custom Vulkan validation layer. Examples are:
- * Vulkan tools screenshot: https://github.com/LunarG/VulkanTools/blob/master/layersvt/screenshot.cpp
- * RenderDoc: https://github.com/baldurk/renderdoc
-* For the compositor (layering, color correction and foveated rendering) we are going to use Vulkan as the underlying API. We can use the backend agnostic library gfx-hal, that supports Vulkan and DirectX. Reference: https://github.com/gfx-rs/gfx
-* For the encoder we can use FFmpeg. FFmpeg's hardware acceleration API supports passing pointers to GPU memory buffers directly. FFmpeg supports various acceleration APIs (hardware agnostic or not) but to minimize the effort we can go with Vulkan for Linux and DirectX 11 for Windows. Reference: https://ffmpeg.org/doxygen/trunk/hwcontext_8h.html
-* For audio we are going to use the Rust library CPAL, which is an audio backend abstraction layer. We can switch (maybe even at runtime) between ALSA and JACK. CPAL supports also Windows (WASAPI, ASIO), Android (OpenSL, AAudio), Web (Emscripten) and even macOS (Core Audio) if we need that in the future. Reference: https://github.com/RustAudio/cpal
-
-## Earlier
-
-We cannot find a way of obtaining the frames rendered by the VR game from SteamVR. The OpenVR API exposes methods to do this but they don't work on Linux (at least we were not able to make them work). The two methods to obtain frames with OpenVR are by implementing the interfaces `IVRVirtualDisplay` and `IVRDriverDirectModeComponent`. On Windows, ALVR uses `IVRDriverDirectModeComponent`. On Linux, `IVRVirtualDisplay` crashes on Nvidia GPUs and does nothing on AMD. Similarly `IVRDriverDirectModeComponent` does not work on Linux. We tried to get help from Valve through multiple channels but we were not successful.
-
-References:
-
-* OpenVR driver header: https://github.com/ValveSoftware/openvr/blob/master/headers/openvr_driver.h
-* Main OpenVR issue tracker: https://github.com/ValveSoftware/openvr/issues
-* Virtual display sample issue tracker: https://github.com/ValveSoftware/virtual_display/issues
-* Linux SteamVR issue tracker: https://github.com/ValveSoftware/steam-for-linux/issues
diff --git a/wiki/Linux-Troubleshooting.md b/wiki/Linux-Troubleshooting.md
index 95836b75c6..8dedd8d0cd 100644
--- a/wiki/Linux-Troubleshooting.md
+++ b/wiki/Linux-Troubleshooting.md
@@ -1,10 +1,12 @@
# Linux Troubleshooting
## SteamVR
+
The steam runtimes SteamVR runs in break the alvr driver loaded by SteamVR.
-This causes the screen to stay black on the client or an error to be reported that the pipewire device is missing or can even result in SteamVR crashing.
+This causes the screen to stay black on the headset or an error to be reported that the pipewire device is missing or can even result in SteamVR crashing.
### Fix
+
Add `~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%` to the commandline options of SteamVR (SteamVR -> Manage/Right Click -> Properties -> General -> Launch Options).
This path might differ based on your Steam installation, in that case SteamVR will not start at all. If this is the case you can figure out the actual path by going to Steam Settings -> Storage.
@@ -12,43 +14,74 @@ Then pick the storage location with the star emoji (⭐) and take the path direc
Finally put this entire path into the SteamVR commandline options instead of the other one.
## Amdvlk/AMD
+
If you have Amdvlk installed on your system, it overrides other vulkan drivers and causes SteamVR to break. Use the `vulkan-radeon` driver (aka radv) instead.
### Fix
+
Check if Amdvlk is installed by seeing if `ls /usr/share/vulkan/icd.d/ | grep amd_icd` shows anything. If so, uninstall Amdvlk from your system.
## Nvidia
+
Alvr requires at least driver version 535 and CUDA version 12.1. If this is not the case SteamVR or the encoder might not work.
### Fix
+
Install at least the required versions of the driver and ensure you have CUDA installed with at least version 12.1.
If an error saying CUDA was not detected persists, try using the latest alvr nightly release.
## Hybrid graphics
+
### Amd/Intel integrated gpu + Amd/Intel discrete gpu
+
Put `DRI_PRIME=1 %command%` into SteamVR's commandline options and in those of all VR games you intend to play with ALVR.
### Amd/Intel integrated gpu + Nvidia discrete gpu
+
Put `__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia %command%` into SteamVR's commandline options and in those of all VR games you intend to play with ALVR.
## Wayland
+
When using hyprland or Gnome Wayland you need to put `WAYLAND_DISPLAY='' %command%` into the SteamVR commandline options to force XWayland.
## SlimeVR
+
The view shakes.
### Fix
+
Start the SlimeVR Server only after you connected and got an image to alvr at least once.
## 109 Error
+
The 109 error or others appear.
### Fix
+
Start Steam first before starting SteamVR through alvr. If SteamVR is already started, restart it.
+## No audio or microphone
+
+Even though audio or microphone are enabled in presets, neither seems to appear in devices list
+
+### Fix
+
+Check if you have `pipewire` installed and it's at least version `0.3.49` by using command `pipewire --version`
+For older (<=22.04 or debian <=11) ubuntu or debian based distributions you can check [pipewire-upstream](https://github.com/pipewire-debian/pipewire-debian) page for installing newer pipewire version
+
## Arch AUR
+
The alvr driver doesn't get detected by SteamVR.
### Fix
+
Try using a portable .tar.gz release from the Releases page.
+
+## Low AMDGPU performance and shutters
+
+This might be caused by [[PERF] Subpar GPU performance due to wrong power profile mode · Issue #469 · ValveSoftware/SteamVR-for-Linux · GitHub](https://github.com/ValveSoftware/SteamVR-for-Linux/issues/469).
+
+### Fix
+
+Using CoreCtrl is highly advised (install it using your distribution package management) and in settings set your GPU to VR profile, as well as cpu to performance profile (if it's old Ryzen cpu).
diff --git a/wiki/My-game-is-not-working-properly!-Help!.md b/wiki/My-game-is-not-working-properly!-Help!.md
index 843045eba8..0af691633c 100644
--- a/wiki/My-game-is-not-working-properly!-Help!.md
+++ b/wiki/My-game-is-not-working-properly!-Help!.md
@@ -10,6 +10,6 @@ Most of the time its the overly specific initialization of the game towards a sp
For example, Vivecraft broke because ALVR reported the headset manufacturer as "Oculus driver 1.38.0" and not as "Oculus".
In general, this is a rather bad practice as all relevant data can be accessed trough SteamVR and the game should not make assumptions based on the manufacturer of the hmd. There are many different fields that a game could require to run.
-Nonetheless, we want to play and support those games.
+Nonetheless, we want to play and support those games.
Problem is, that we don't own all games. This is a Open Source without any funding. We can not buy any games just to fix a bug. In the case of Vivecraft, one user (thanks @Avencore) was generous to gift us a copy and the bug could be fixed.
There are no guaranties! Neither on the time it will take nor if the bug will ever be fixed! Please contact us before buying anything.
diff --git a/wiki/Real-time-video-upscaling-experiments.md b/wiki/Real-time-video-upscaling-experiments.md
index e23034207c..1e0ce23897 100644
--- a/wiki/Real-time-video-upscaling-experiments.md
+++ b/wiki/Real-time-video-upscaling-experiments.md
@@ -1,6 +1,6 @@
# Real time video upscaling experiments
-# Why?
+## Why?
The Quest can display a resolution close to 4k. Rendering a game, encoding and decoding these kinds of resolutions is very taxing on both the PC and the Quest. So usually a lower resolution image displayed on the Quest.
@@ -8,19 +8,19 @@ Ideally the output of such an upscaled image should match the screens pixels 1:1
Currently ALVR does no upscaling prior to the image being mapped to an OpenGL texture. This texture gets interpolated to match the screen pixels by OVR. For this process video resolutions above 100% it use bilinear interpolation and for resolutions below 100% it uses nearest neighbor.
-There's a lot of good info on this topic in this issue: https://github.com/alvr-org/ALVR/issues/39
+There's a lot of good info on this topic in this issue:
-# Lanczos resampling
+## Lanczos resampling
This traditional upscaling method seems like a good step up from basic bilinear interpolation and is relatively light on GPU resources.
-A GPL 2 implementation of a Lanczos shader can be found here: https://github.com/obsproject/obs-studio/blob/6943d9a973aa3dc935b39f99d06f4540ea79da61/libobs/data/lanczos_scale.effect
+A GPL 2 implementation of a Lanczos shader can be found here:
-# Neural net image super resolution
+## Neural net image super resolution
I did some basic investigations on the feasibility of using AI upscalers to get even better results than traditional signal processing methods.
-## Hardware acceleration on the XR2
+### Hardware acceleration on the XR2
There seem to be 3 paths towards getting fast NNs running on the Quest's SoC.
There is the [Qualcomm Neural Processing SDK](https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk/tools), which automatically detects what the capabilities of the system are and picks the right hardware to run the NN on (GPU, DSP, AI accelerator).
@@ -31,7 +31,7 @@ Then there is also the [TensorFlow Lite Hexagon delegate](https://www.tensorflow
I only tested an example image super-resolution app from the [tensorflow respository](https://github.com/tensorflow/examples/tree/master/lite/examples/super_resolution) in CPU and generic GPU (OpenCL) accelerated modes. Even upscaling tiny 50x50 images took around 500ms with this. Even though better hardware acceleration could improve this I do not expect 100x improvements. The only hope for NN super-resolution to be viable would be to find a significantly faster neural net, which leads us into the next topic.
-## Existing neural nets
+### Existing neural nets
A well established real-time upscaler is [Anime4K](https://github.com/bloc97/Anime4K/). It states that it can achieve 1080p to 2160p upscaling in 3ms on a Vega64 GPU. A [rough estimate](https://uploadvr.com/oculus-quest-2-benchmarks/) puts the Quest 2 at a 10x performance disadvantage compared to such high end desktop GPUs. It doesn't seem entirely impossible to get this to work with some optimizations and lowering of the upscaling quality, but there is more bad news. Anime4K has a rather bad Peak signal-to-noise ratio (PSNR). It can get away with this because the stylized look anime is quite forgiving in being heavily filtered.
diff --git a/wiki/Roadmap.md b/wiki/Roadmap.md
index 09d3b816a5..2d332158c3 100644
--- a/wiki/Roadmap.md
+++ b/wiki/Roadmap.md
@@ -4,7 +4,7 @@ This post will continue to evolve during ALVR development.
## Long-term goal
-Create a universal bridge between XR devices.
+Create a universal bridge between XR devices.
## What is coming next
diff --git a/wiki/Settings-tutorial.md b/wiki/Settings-tutorial.md
index d32bd9130b..617d95c5b0 100644
--- a/wiki/Settings-tutorial.md
+++ b/wiki/Settings-tutorial.md
@@ -1,24 +1,26 @@
# Settings tutorial
-Written as of 2023/02, should be applicable to ALVR v19 and v20.
+Applicable to ALVR v20.
This tutorial will help you find optimal settings for your hardware and network
as well as give you some pointers to troubleshoot common configuration issues.
## Prerequisites
-* You have installed the ALVR streamer on your PC, and the ALVR client on your HMD.
-* You can reach the SteamVR void (or the SteamVR home) and are able to launch games.
+* You have installed the ALVR streamer on your PC, and the ALVR app on your HMD.
+* You can launch up to the SteamVR void (or up to the SteamVR home) and are able to launch games.
## Step 1: choose resolution, refresh rate, codec
-To get a sharp image, the HMD's native resolution should be used. In ALVR, use the "absolute" setting and type in your HMD's native resolution. For example, the Quest 2 has 1832x1920 pixels per eye, so use a width of 3664 and a height of 1920. Individual games can still have their render scale changed from within the SteamVR overlay setting.
+To get a sharp image, you need combination of high resolution, enough sharpening, good bitrate with chosen codec.
+For example, on good wireless router you can use medium resolution preset (default) with 1.0 sharpening (higher than default) with H.264 set at constant 400-500 mbps, or hevc at costant 100-150 mbps. In wired case, you can go all the way to 800-1000 mbps constant bitrate on H.264.
Next, choose a refresh rate. Obviously higher is better, but on weaker/older hardware it's often preferable to use a lower setting that gives consistent results. For the Quest 2, 120 Hz has to be enabled in its settings.
A few notes on codec choices:
-* HEVC/H.265 is usually best on AMD hardware, and in bitrate constrained scenarios.
+* AV1 works only on latest gen gpus (Nvidia RTX 4xxx and AMD Radeon RX 7xxx) and on Quest 3 only.
+* HEVC/H.265 is usually best for bitrate cosntained scenarious.
* AVC/H.264 (with CAVLC) may save a few milliseconds of decode latency, but needs a much higher bitrate to reach similar image quality.
* Software encoding (x264) can give good results on a beefy high core-count CPU and a very high bitrate. Will require playing with a USB3 cable. The only choice if you don't have a hardware encoder (eg, RX6500).
@@ -40,7 +42,7 @@ Slowly increase bitrate until one of two things happen:
## Step 4: tweak frame buffering
-If you notice micro-stuttering in the client, especially in busy scenes with fast motion, slowly increase maxBufferingFrames until the playback is smooth.
+If you notice micro-stuttering on the headset, especially in busy scenes with fast motion, slowly increase maxBufferingFrames until the playback is smooth.
Keep in mind that increasing maxBufferingFrames will linearly increase latency;
if the value that gives a smooth playback results in too high of a latency for
diff --git a/wiki/Troubleshooting.md b/wiki/Troubleshooting.md
index 86efd61806..b74c79bfc5 100644
--- a/wiki/Troubleshooting.md
+++ b/wiki/Troubleshooting.md
@@ -25,14 +25,14 @@ Trouble starting ALVR
ALVR needs a working graphics driver to be installed in order to work.
-**On linux**, you also need to make sure you have `x264` for base software encoding to work and either `vaapi` on AMD or `cuda` on NVIDIA for hardware encoders to work.
+**On linux**, you also need to make sure you have either `vaapi` on AMD or `cuda` on NVIDIA for hardware encoders to work.
ALVR starts launching, but gets stuck on "ALVR is not responding..."
===
With ALVR versions >= 20.0, some antivirus software can prevent ALVR from launching SteamVR. Try disabling any antivirus other than Windows Defender (McAfee, Norton, etc.), reboot, then try again. If the issue persists, make sure you don't have an instance of ALVR or SteamVR running in the background (check in Task Manager). If you continue having issues, hop in the [ALVR Discord server](https://discord.gg/KbKk3UM), and we'll do our best to help you get it sorted out.
-ALVR starts fine, but...
+ALVR starts fine, but
===
This section has some advice for when ALVR shows an error (or sometimes warning) pop-up. This could be either a yellow pop-up in the setup window (`ALVR Dashboard.exe`) or a separate pop-up when you connect with a headset.
@@ -46,7 +46,7 @@ The latest release can be found [here](https://github.com/alvr-org/ALVR/releases
The version of ALVR available on the SideQuest store is compatible with the latest release on GitHub (the previous link). Keep in mind that the version on SideQuest might take us a while to update after a new version is released on GitHub.
-Failed to initialize CEncoder.
+Failed to initialize CEncoder
---
ALVR currently needs a recent AMD or Nvidia GPU to run, since it utilizes hardware video encoding (see [requirements](https://github.com/alvr-org/ALVR#requirements)). If you get an error saying something like
@@ -78,14 +78,14 @@ ALVR on the headset stuck on `Searching for streamer...`
This issue can have multiple causes. It is likely that the issue is with the PC ALVR application. See below for more specific issues.
-ALVR client list is empty
+ALVR device list is empty
---
-![Empty ALVR client list](images/ALVRexe-no-clients.png)
+![Empty ALVR device list](images/ALVRexe-no-devices.png)
-Check that the PC app and the headset app run on the latest version of ALVR. At the time of writing, the latest version is v20.4.3. If your version is v2.3.1 or v2.4.0-alpha5 then you downloaded ALVR from the wrong link. The correct link is https://github.com/alvr-org/ALVR.
+Check that the PC app and the headset app run on the latest version of ALVR. If your version is v2.3.1 or v2.4.0-alpha5 then you downloaded ALVR from the wrong link. The correct link is .
-Make sure ALVR is running both on the PC and on the headset. To be visible in the client list, ALVR on the headset sends broadcast packets which the PC application listens for. These can be blocked by your firewall or possibly your router, if both headset and PC are connected wirelessly, having AP isolation enabled on the router will cause this.
+Make sure ALVR is running both on the PC and on the headset. To be visible in the device list, ALVR on the headset sends broadcast packets which the PC application listens for. These can be blocked by your firewall or possibly your router, if both headset and PC are connected wirelessly, having AP isolation enabled on the router will cause this.
To fix this, you can try the following:
@@ -94,7 +94,7 @@ To fix this, you can try the following:
* Open ports 9943 and 9944 on your firewall
* Disable the PMF (Protected Management Frames) setting on your Router
-If pinging works but you still don't see the client on the streamer app, then headset and PC might be on separate subnets. To solve this you can add the client manually.
+If pinging works but you still don't see the device on the streamer app, then headset and PC might be on separate subnets. To solve this you can add the device manually.
In the Devices tab press `Add device manually`. Fill in the fields with a name for your headset (you can use the name you want), the hostname (you can read it in the welcome screen in your headset when you open the ALVR app), the IP of the headset and then press `Save`.
SteamVR says "headset not detected"
@@ -112,7 +112,7 @@ Check that SteamVR isn't blocking ALVR (see SteamVR settings, enable advanced se
If you're still getting this message (or otherwise not getting a headset icon in the SteamVR window), a SteamVR log (vrserver.txt) will have some information on why the driver isn't loading. You can find it where you installed Steam, in `Steam\logs\vrserver.txt`.
-#### Some lines to look for and tips for them:
+### Some lines to look for and tips for them
`Unable to load driver alvr_server because of error VRInitError_Init_FileNotFound(103). Skipping.` - This usually means a library that ALVR needs is missing. Make sure you followed installation instructions carefully, installed the latest Visual C++ Redistributable x64 package and no files are missing where you extracted ALVR (especially in the bin\win64 directory).
@@ -127,7 +127,7 @@ ALVR sees the headset, SteamVR shows headset icon
![SteamVR waiting...](images/SteamVR-waiting.png)
-This is a situation where you have ALVR open on both headset and PC, you can see the headset in the client list and trust it. ALVR then starts SteamVR automatically when you try connecting and SteamVR shows an icon for the headset (and controllers).
+This is a situation where you have ALVR open on both headset and PC, you can see the headset in the device list and trust it. ALVR then starts SteamVR automatically when you try connecting and SteamVR shows an icon for the headset (and controllers).
First make sure that SteamVR (more specifically, vrserver.exe) is allowed incoming connections (UDP, port 9944) in your firewall. You can also try disabling your firewall for testing, but you keep it disabled to use ALVR.
@@ -139,7 +139,7 @@ You can try restarting ALVR on both the headset and the PC. On the headset, when
![latency graph of overloaded encoder](images/latency-graphs/overloaded-encoder.png)
-Symptoms: stuttery playback in the client, streamer FPS is stable but below the target refresh rate.
+Symptoms: stuttery playback on the headset, streamer FPS is stable but below the target refresh rate.
Solution: increase foveation settings or decrease refresh rate.
@@ -163,7 +163,7 @@ Solution: check that HMD is using 5G frequency and that no other device is conne
![latency graph of overloaded streamer](images/latency-graphs/overloaded-streamer.png)
-Symptoms: stuttery playback in the client, streamer FPS dips or fluctuates below the target refresh rate.
+Symptoms: stuttery playback on the headset, streamer FPS dips or fluctuates below the target refresh rate.
Solution:
@@ -174,7 +174,7 @@ Solution:
### Micro-stuttering
-![latency graph of client stuttering](images/latency-graphs/not-enough-buffering.png)
+![latency graph of headset stuttering](images/latency-graphs/not-enough-buffering.png)
Symptoms: image is not always smooth especially in high motion or fast scenes.
diff --git a/wiki/Use-ALVR-through-a-USB-connection.md b/wiki/Use-ALVR-through-a-USB-connection.md
index 98b5a63b67..68bbc3cd34 100644
--- a/wiki/Use-ALVR-through-a-USB-connection.md
+++ b/wiki/Use-ALVR-through-a-USB-connection.md
@@ -1,6 +1,6 @@
# ALVR wired setup (ALVR over USB)
-## ALVR Streamer (PC) Configuration:
+## ALVR Streamer (PC) Configuration
* **Switch the connection streaming protocol to TCP** in Settings > Connection.
* If your headset is detected, click "Trust." Click "Edit", "Add new" and change the IP address to `127.0.0.1`.
@@ -12,7 +12,7 @@ The Quest, Pico HMDs are Android devices, therefore, we can use [Android Device
You can accomplish this with some pre-made applications/scripts (just below), or run the commands manually with [SideQuest](https://sidequestvr.com/setup-howto)
-If you haven't already, connect a USB cable from your PC to your headset. USB 2.0 will work fine but 3.0 and higher is best.
+If you haven't already, connect a USB cable from your PC to your headset. USB 2.0 will work fine but 3.0 and higher is best.
**Make sure to enable dev account and authorize the computer in your headset if you're on quest or enable USB Debug on Pico in settings.**
@@ -26,7 +26,7 @@ The following programs serve to wrap and simplify the process of doing manual AD
* Downloads ADB for you
* Cross-platform (Windows & Linux)
-* [**Python Script**](https://gist.github.com/Bad-At-Usernames/684784f42cbb69e22688a21173ec263d)
+* [**Python Script**](https://gist.github.com/Bad-At-Usernames/684784f42cbb69e22688a21173ec263d)
* Lightweight and simple
* Requires [Python 3](https://www.python.org/downloads/) and [PyWin32](https://pypi.org/project/pywin32/)
@@ -38,11 +38,11 @@ The following programs serve to wrap and simplify the process of doing manual AD
* Requires [ADB Platform Tools](https://developer.android.com/studio/releases/platform-tools), edit the path in line 2 to point to the directory where you extracted `platform-tools`
* Needs to be run every time you (re)connect your headset
-### Option 2 - [SideQuest](https://sidequestvr.com/setup-howto):
+### Option 2 - [SideQuest](https://sidequestvr.com/setup-howto)
* Ensure SideQuest is running, and the headset has authorized the USB connection to the PC
* Open the 'Run ADB Commands' menu in SideQuest (top-right, box with an arrow inside it)
-* Click 'Custom Command' and run these adb commands:
+* Click 'Custom Command' and run these adb commands:
* `adb forward tcp:9943 tcp:9943`
* `adb forward tcp:9944 tcp:9944`
* These commands will need to be run every time you (re)connect your headset.
diff --git a/wiki/_Sidebar.md b/wiki/_Sidebar.md
index b5823cc3b2..4a7ab2c260 100644
--- a/wiki/_Sidebar.md
+++ b/wiki/_Sidebar.md
@@ -1,4 +1,4 @@
-**Start here**
+#### Start here
* [Installation guide](https://github.com/alvr-org/ALVR/wiki/Installation-guide)
@@ -8,13 +8,13 @@
***
-**Configuration**
+#### Configuration
* [Settings tutorial](https://github.com/alvr-org/ALVR/wiki/Settings-tutorial)
* [Information and Recommendations](https://github.com/alvr-org/ALVR/wiki/Information-and-Recommendations)
-* [ALVR client and streamer on separate networks](https://github.com/alvr-org/ALVR/wiki/ALVR-client-and-streamer-on-separate-networks)
+* [ALVR headset and streamer on separate networks](https://github.com/alvr-org/ALVR/wiki/ALVR-client-and-streamer-on-separate-networks)
* [Fixed Foveated Rendering (FFR)](https://github.com/alvr-org/ALVR/wiki/Fixed-Foveated-Rendering-(FFR))
@@ -22,7 +22,7 @@
***
-**Troubleshooting**
+#### Troubleshooting
* [Troubleshooting](https://github.com/alvr-org/ALVR/wiki/Troubleshooting)
@@ -38,7 +38,7 @@
***
-**Development**
+#### Development
* [Roadmap](https://github.com/alvr-org/ALVR/wiki/Roadmap)
@@ -46,6 +46,4 @@
* [How ALVR works](https://github.com/alvr-org/ALVR/wiki/How-ALVR-works)
-* [Linux support](https://github.com/alvr-org/ALVR/wiki/Linux-Support-development-progress)
-
* [Real time video upscaling experiments](https://github.com/alvr-org/ALVR/wiki/Real-time-video-upscaling-experiments)
diff --git a/wiki/images/ALVRexe-no-clients.png b/wiki/images/ALVRexe-no-clients.png
deleted file mode 100644
index 6daef18f03..0000000000
Binary files a/wiki/images/ALVRexe-no-clients.png and /dev/null differ
diff --git a/wiki/images/ALVRexe-no-devices.png b/wiki/images/ALVRexe-no-devices.png
new file mode 100644
index 0000000000..8d4292877c
Binary files /dev/null and b/wiki/images/ALVRexe-no-devices.png differ