--- title: Asahi Linux --- # Asahi Linux *AKA: Fedora on aarch64 with extra steps* ## Envision Fedora has the `envision` package, as well as the `envision-monado` and `envision-wivrn` metapackages which grab the necessary dependencies for building monado and wivrn, respectively. This *will not* be the most up-to-date with upstream envision, but seeing as Envision doesn't currently build aarch64 AppImages, this is the easiest way to build custom commits of monado/wivrn/opencomposite/xrizer for arm64, specifically. If you are looking to use non-native VR applications, or [Steam Games](#steam-games-under-muvm), you should continue on into the [Multiarch](#multiarch) section. ## Multiarch Depending on what openxr applications you are planning on running, you may need multiple builds of the same component, but for different architectures. You can acquire these builds in multiple ways, such as cross-compiling, or gathering builds from multiple machines. A repo ([vr-multiarch-build]) for cross-compiling these components has been thrown together to make things easier. You will need podman, as well as the typical runtime dependencies. Some sample usage: ```sh git clone https://gitlab.com/lvra/vr-multiarch-build cd vr-multiarch-build # `./setup_wivrn.sh` and `./setup_xrizer.sh` also exist, depending on what you need. ./setup_monado.sh && ./setup_opencomposite.sh sudo ./setcap.sh # you can now start monado by running prefixes/monado-aarch64/bin/monado-service ``` When you want to update a component, you should manually pull the git repos, then rerun the setup scripts. For example: ```sh cd vr-multiarch-build git pull # update the build repository git -C monado pull git -C OpenComposite pull ./setup_monado.sh && ./setup_opencomposite.sh sudo ./setcap.sh ``` ## Steam Games under muvm What worked for me was running `monado-service` manually, with all the environment variables that envision uses, and manually setting up environment variables for steam launch arguments. On my machine, the steam launch arguments look like: `XR_RUNTIME_JSON=~/.config/openxr/1/active_runtime.x86_64.json PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/wivrn/comp_ipc:/run/user/1000/monado_comp_ipc %command%` There are some extra complications caused by muvm putting its `XDG_RUNTIME_DIR` in a weird spot interfering with monado's ability to connect to itself. Therefore, my reccomended launch order is as follows: Lanuch monado-service: ```sh muvm -it -- bash ``` ```sh mkdir -p /run/user/1000/ chmod 700 /run/user/1000/ ln -s $XDG_RUNTIME_DIR/monado_comp_ipc /run/user/1000/ # setup the rest of the environment variables, ensuring XRT_DEBUG_UI is *not* enabled. ./monado-service ``` Launch Steam. Due to a [bug](https://pagure.io/fedora-asahi/steam/issue/18) in the steam launcher wrapper on asahi, the "Launching Steam" window will not stick around, but Steam *is* still launching. If you get a message from OpenComposite complaining that it doesn't support VR Applications of type 6, then you should attempt to re-launch steam, as that will cause Steam to fail to launch. Optionally, `tail -f ~/.steam/steam/logs/console-linux.txt` so you can see errors when a game fails to do the correct thing. Ensure that `openvrpaths.vrpath` has the correct contents. Launch a game. ## wivrn Due to , the terminal that you're running WiVRn within *must* be the one that's starting the VM. Therefore, you should start wivrn before you start steam. The avahi daemon is not available inside of muvm, so you should use `--no-publish-service`. Since I'm managing my active runtimes through [vr-multiarch-build] Here's what I did that worked: ```sh muvm -it -p 9757/udp -p 9759 -- bash ``` ```sh mkdir -p /run/user/1000/wivrn/ chmod 700 /run/user/1000/ ln -s $XDG_RUNTIME_DIR/wivrn/comp_ipc /run/user/1000/wivrn/comp_ipc # setup the rest of the environment variables, ensuring XRT_DEBUG_UI is *not* enabled. ./wivrn-server --no-publish-service --no-manage-active-runtime ``` If you are using a commit of WiVRn before , the build system *will* produce inconsistent commit hashes for its build of monado. To work-around this, you can either `git cherry-pick 5130bdeda51c52137f11e0536273f3bfbb2f7f71` onto your wivrn branch, use a newer commit of wivrn, or add `IPC_IGNORE_VERSION=1` to your steam launch arguments. If you pick the last option, you need to be *extra careful* that you are actually building things off of the same commit of wivrn/monado. [vr-multiarch-build]: https://gitlab.com/lvra/vr-multiarch-build