SteamVR on Asahi

First of all, I want to give huge kudos to the Asahi devs for just getting linux up and running and getting Steam to work.
And sorry in advance for the long post.

So, I’m trying to get SteamVR to work, and looking for a little help (and also to have a place to document my steps to try to get it to work).

So far, installed steam via dnf. Tried to install SteamVR, it gives a “requires superuser” dialog, which if you press does nothing. So, I stumbled upon this page.

Even though it’s not using flatpak, it needs setcap. So I did:

sudo setcap CAP_SYS_NICE+eip ~/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

and set the launch options for SteamVR to…

~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%
So, now SteamVR finally runs, but it gives me a “headset not detected”. Also, when I try to open the submenus in the hamburger button, I get blank white windows.

Not quite there yet, but we need a streamer. Either ALVR or WiVRn.

ALVR I had to compile from source, but it didn’t seem to work until I did a dnf install of the openvr libraries/dev package.

Launching it let it launch SteamVR, but I’m still getting “headset not detected”.

Ok, so I decided to try WiVRn. But it gives me:
[create_device] vk_create_device: VK_ERROR_EXTENSION_NOT_PRESENT

So, now I’m kind of stuck. I was thinking I might be able to inject an x86_64 ALVR or WiVRn into the VM that’s running Steam via muvm_server, but I don’t know how…

Any ideas?

1 Like

Ok, some more information:

Trying to run wivrn on ARM the error is due to:

DEBUG [comp_main_create_system_compositor] Doing init 0xaaabdadb2af0
WARN [compositor_check_and_prepare_xdev] Had to fill in meshuv on xdev ‘WiVRn HMD’, this should be done in the driver.
DEBUG [compositor_try_window] Target backend (null) initialized!
DEBUG [vk_build_instance_extensions] Using optional instance ext VK_EXT_swapchain_colorspace
DEBUG [should_skip_optional_instance_ext] Skipping optional instance extension VK_EXT_display_surface_counter because VK_KHR_display is not enabled
Steam quit
DEBUG [select_physical_device] Choosing Vulkan device index
DEBUG [select_physical_device] Available GPUs
DEBUG [vk_print_device_info] GPU index 0
name: Apple M2 Max (G14C B1)
vendor: 0x10005
product: 0x0000
deviceType: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
apiVersion: 1.4.303
driverVersion: 0x06400000
DEBUG [vk_print_device_info] GPU index 1
name: llvmpipe (LLVM 18.1.8, 128 bits)
vendor: 0x10005
product: 0x0000
deviceType: VK_PHYSICAL_DEVICE_TYPE_CPU
apiVersion: 1.3.303
driverVersion: 0x00000001
DEBUG [vk_print_device_info] Selected GPU: 0
name: Apple M2 Max (G14C B1)
vendor: 0x10005
product: 0x0000
deviceType: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
apiVersion: 1.4.303
driverVersion: 0x06400000
DEBUG [build_device_extensions] Using required device ext VK_KHR_swapchain
DEBUG [build_device_extensions] Using required device ext VK_KHR_dedicated_allocation
DEBUG [build_device_extensions] Using required device ext VK_KHR_external_fence
DEBUG [build_device_extensions] Using required device ext VK_KHR_external_memory
DEBUG [build_device_extensions] VkPhysicalDevice does not support required extension VK_KHR_external_semaphore
ERROR [create_device] vk_create_device: VK_ERROR_EXTENSION_NOT_PRESENT
Failed to create Vulkan device.
ERROR [comp_main_create_system_compositor] Failed to init compositor 0xaaabdadb2af0
DEBUG [compositor_destroy] COMP_DESTROY
DEBUG [render_shaders_close] Shaders destroyed!
ERROR [create_session] Failed to create system compositor
ERROR [init_all] Could not create system!
INFO [print_linux_end_user_failed_information]

So, I tried running ALVR x86_64 in the muvm by editing vrmonitor.sh in SteamVR. It doesn’t seem to recognize that SteamVR is running.

And, it’s also warning that it will have to use software encoding. Poking around the ALVR source, it seems to just be looking for an AMD/Intel/Nvidia GPU and falling back to software encoding if it doesn’t find one of them.

Further poking around the ALVR code, it appears it connects to it’s SteamVR driver via websockets connected to the loopback interface. I’m not sure why it’s not detecting when I run ALVR dashboard under muvm though.

Anyone care to comment on any of these issues. This thread is more of a soliloquy than a discussion, lol.