Greetings, everyone.
“It takes less than 1 minute to install.” Very funny. I’ve spent a whole weekend plus a couple of minutes everyday since March 27 trying to make this work. I’ve purchased a used HTC Vive and I have an Acer Nitro 5 with AMD Ryzen 7-5800H and nVidia GTX 1650 (N20C1, AN515-45-R4S3). I’ve been using Copilot with Claude Sonnet 4 (most of the time).
On the first night I mostly found out it would be better to stop trying to make it work on my Debian. I’ve found an old 160 GB HD and, since I had a SATA to USB adapter, I used it to install a “portable” NixOS. I chose the latest stable over the LTS (25.11.8107.1073dad219cb-x86_64-linux). Just to install Simula, it seems there were some issues with using the binary caches and I had to compile some stuff. I had to add swap memory to be able to do that.
After several days of back-and-forth with Copilot, the consensus seems to be that, while Monado starts in direct mode, Simula starts in X11 and they have trouble sharing contexts.
The best result I had was with running the following commands to start each, with the following outputs. Monado starts, the Vive turns on and displays a blank white screen. Simula starts, opens a window with a cloudy sky background and a terminal inside, but I only see this on the laptop. On most other tests, either Simula crashes if Monado is up or starts in desktop mode only if Monado is down.
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia DRI_PRIME=1 simula-monado-service
XDG_CACHE_HOME: /home/vr/.cache
XDG_DATA_HOME: /home/vr/.local/share
XDG_CONFIG_HOME: /home/vr/.config
SIMULA_NIX_DIR: /nix/store/cvd4ir7a5sfj4kmqjddldgl9srxd2ipz-simula-0.0.0
SIMULA_LOG_DIR: /home/vr/.cache/Simula
SIMULA_DATA_DIR: /home/vr/.local/share/Simula
SIMULA_CONFIG_DIR: /home/vr/.config/Simula
INFO [ipc_server_main] Monado(XRT) by Collabora et al 'GIT-NOTFOUND' starting up...
ERROR [svr_estimate_system] Failed to detect Simula One display via edid
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Info: Loaded drivers: GlobalSceneSolver, HTCVive
Info: Adding tracked object HMD from HTC
Info: Device HMD has watchman FW version 1462663157 and FPGA version 262/0/0; named ' steamservices'. Hardware id 0x80020100 Board rev: 128 (len 56)
Info: HMD is treated as HMD device
Info: Detected LH gen 1 system.
Warning: Could not find disambiguator state for HMD
...
Warning: Could not find disambiguator state for HMD
ERROR [opengloves_load_config_file] Failed to load config file
INFO [p_create_system] Creating system:
Builders:
qwerty: Qwerty devices builder
remote: Remote simulation devices builder
simulated: Simulated devices builder
rift_s: Oculus Rift S
rgb_tracking: RGB tracking based devices (PSVR, PSMV, ...)
simula: SimulaVR headset
steamvr: SteamVR proprietary wrapper (Vive, Index, Tundra trackers, etc.) devices builder
lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
north_star: North Star headset
wmr: Windows Mixed Reality
xreal_air: Xreal Air
legacy: Legacy probing system
No builder selected in config (or wasn't compiled in)
Selected lighthouse because it was certain it could create a head
Using builder lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
Got devices:
0: HTC Vive (libsurvive)
In roles:
head: HTC Vive (libsurvive), view count: 2
eyes: <none>
face: <none>
left: <none>
right: <none>
gamepad: <none>
hand_tracking.left: <none>
hand_tracking.right: <none>
Result: XRT_SUCCESS
DEBUG [comp_main_create_system_compositor] Doing init 0x55577a836aa0
WARN [compositor_check_and_prepare_xdev] Had to fill in meshuv on xdev 'HTC Vive (libsurvive)', this should be done in the driver.
DEBUG [check_vulkan_caps] Checking for NVIDIA vulkan driver.
Warning: Could not find disambiguator state for HMD
...
Warning: Could not find disambiguator state for HMD
DEBUG [check_vulkan_caps] Selecting direct NVIDIA window type!
INFO [compositor_init_window_pre_vulkan] Selected NVIDIA Direct-Mode backend!
DEBUG [vk_build_instance_extensions] Using optional instance ext VK_EXT_swapchain_colorspace
DEBUG [should_skip_optional_instance_ext] Not skipping optional instance extension VK_EXT_display_surface_counter because VK_KHR_display is enabled
DEBUG [vk_build_instance_extensions] Using optional instance ext VK_EXT_display_surface_counter
Warning: Could not find disambiguator state for HMD
DEBUG [select_physical_device] Choosing Vulkan device index
DEBUG [select_physical_device] Available GPUs
DEBUG [vk_print_device_info] GPU index 0
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
DEBUG [vk_print_device_info] GPU index 1
name: AMD Radeon Graphics (RADV RENOIR)
vendor: 0x1002
product: 0x1638
deviceType: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
apiVersion: 1.4.318
driverVersion: 0x06402006
DEBUG [vk_print_device_info] GPU index 2
name: llvmpipe (LLVM 21.1.7, 256 bits)
vendor: 0x10005
product: 0x0000
deviceType: VK_PHYSICAL_DEVICE_TYPE_CPU
apiVersion: 1.4.318
driverVersion: 0x06402006
DEBUG [vk_print_device_info] Selected GPU: 0
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
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] Using required device ext VK_KHR_external_semaphore
DEBUG [build_device_extensions] Using required device ext VK_KHR_get_memory_requirements2
DEBUG [build_device_extensions] Using required device ext VK_KHR_external_memory_fd
DEBUG [build_device_extensions] NOT using optional device ext VK_GOOGLE_display_timing
DEBUG [build_device_extensions] Using optional device ext VK_EXT_global_priority
DEBUG [build_device_extensions] Using optional device ext VK_KHR_external_semaphore_fd
DEBUG [build_device_extensions] Using optional device ext VK_KHR_external_fence_fd
DEBUG [build_device_extensions] Using optional device ext VK_KHR_format_feature_flags2
DEBUG [build_device_extensions] Using optional device ext VK_KHR_global_priority
DEBUG [build_device_extensions] Using optional device ext VK_KHR_image_format_list
DEBUG [build_device_extensions] Using optional device ext VK_KHR_maintenance1
DEBUG [build_device_extensions] Using optional device ext VK_KHR_maintenance2
DEBUG [build_device_extensions] Using optional device ext VK_KHR_timeline_semaphore
DEBUG [build_device_extensions] Using optional device ext VK_EXT_calibrated_timestamps
DEBUG [build_device_extensions] Using optional device ext VK_EXT_robustness2
DEBUG [should_skip_optional_device_ext] Not skipping optional instance extension VK_EXT_display_control because VK_EXT_display_surface_counter instance ext is enabled
DEBUG [build_device_extensions] Using optional device ext VK_EXT_display_control
DEBUG [build_device_extensions] Using optional device ext VK_KHR_synchronization2
DEBUG [filter_device_features] Features:
null_descriptor: 0
shader_image_gather_extended: 1
shader_storage_image_write_without_format: 1
timeline_semaphore: 1
synchronization_2: 1
INFO [create_device] Created device and GRAPHICS queue with QUEUE_GLOBAL_PRIORITY_REALTIME.
INFO [vk_print_device_info] Device info:
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
INFO [vk_print_features_info] Features:
timestamp_compute_and_graphics: true
timestamp_period: 1.000000
timestamp_valid_bits: 64
timeline_semaphore: true
INFO [vk_print_external_handles_info] Supported images:
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
color import=true export=true
depth import=true export=true
INFO [vk_print_external_handles_info] Supported fences:
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT: true
VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT: true
INFO [vk_print_external_handles_info] Supported semaphores:
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT(binary): true
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT(binary): true
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT(timeline): false
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT(timeline): true
DEBUG [fill_in_results] Selected 0 with uuid: b5 f7 0f b3 5b a7 41 d5 0a 2d 55 24 b1 8e c1 40
DEBUG [fill_in_results] Suggest 0 with uuid: b5 f7 0f b3 5b a7 41 d5 0a 2d 55 24 b1 8e c1 40 to clients
DEBUG [render_shaders_load] Shaders loaded!
Warning: Could not find disambiguator state for HMD
INFO [comp_target_swapchain_override_extents] Target 'direct' overrides compositor extents with (2160x1200) was (0x0 false)
DEBUG [compositor_try_window] Target backend direct initialized!
DEBUG [comp_window_direct_nvidia_init_swapchain] Will use display: HTC Corporation HTC-VIVE (HDMI-0)
Warning: Could not find disambiguator state for HMD
DEBUG [get_primary_display_mode] Found 8 modes
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 0: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 1: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 2: 640x480@59.94
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 3: 720x480@59.94
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 4: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 5: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 6: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 7: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Auto choosing Vk direct mode 0: 2160x1200@89.53
DEBUG [get_primary_display_mode] found display mode 2160x1200@89.53
DEBUG [get_primary_display_mode] Updating compositor settings nominal frame interval from 11111111 (90.000001 Hz) to 11169814 (89.527000 Hz)
INFO [vk_print_display_surface_create_info] VkDisplaySurfaceCreateInfoKHR:
flags:
displayMode: 0x55577aa7a520
planeIndex: 0
planeStackIndex: 0
transform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
planeIndex: 1.000000
alphaMode: VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR
imageExtent: {2160, 1200}
DEBUG [renderer_ensure_images_and_renderings] Creating images and renderings (force_recreate: false).
DEBUG [find_surface_format] VkSurfaceFormatKHR
picked: [format = VK_FORMAT_A8B8G8R8_SRGB_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
preferred: [format = VK_FORMAT_B8G8R8A8_SRGB, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
INFO [vk_print_surface_info] VkSurfaceKHR info:
caps.minImageCount: 2
caps.maxImageCount: 8
caps.currentExtent: 2160x1200
caps.minImageExtent: 2160x1200
caps.maxImageExtent: 2160x1200
caps.maxImageArrayLayers: 1
caps.supportedTransforms:
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
caps.currentTransform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
caps.supportedCompositeAlpha:
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
caps.supportedUsageFlags:
VK_IMAGE_USAGE_TRANSFER_SRC_BIT
VK_IMAGE_USAGE_TRANSFER_DST_BIT
VK_IMAGE_USAGE_SAMPLED_BIT
VK_IMAGE_USAGE_STORAGE_BIT
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
present_modes(5):
VK_PRESENT_MODE_FIFO_KHR
VK_PRESENT_MODE_IMMEDIATE_KHR
UNKNOWN MODE
VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
formats(5):
[format = VK_FORMAT_A8B8G8R8_UNORM_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A8B8G8R8_SRGB_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A2B10G10R10_UNORM_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A1R5G5B5_UNORM_PACK16, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_B8G8R8A8_UNORM, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
INFO [vk_print_swapchain_create_info] VkSwapchainCreateInfoKHR:
surface: 0x55577b054be0
minImageCount: 2
imageFormat: VK_FORMAT_A8B8G8R8_SRGB_PACK32
imageColorSpace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
imageExtent: {2160, 1200}
imageArrayLayers: 1
imageUsage:
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
imageSharingMode: VK_SHARING_MODE_EXCLUSIVE
queueFamilyIndexCount: 0
preTransform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
compositeAlpha: VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
presentMode: VK_PRESENT_MODE_FIFO_KHR
clipped: VK_TRUE
oldSwapchain: (nil)
DEBUG [check_surface_counter_caps] Supported surface counter flags: 1
DEBUG [create_vblank_event_thread] Started vblank (first pixel out) event thread.
INFO [comp_target_swapchain_create_images] Started vblank event thread!
DEBUG [run_vblank_event_thread] Surface thread starting
DEBUG [renderer_create_renderings_and_fences] Allocating 2 Command Buffers.
DEBUG [comp_main_create_system_compositor] Done 0x55577a836aa0
DEBUG [is_format_supported] Format 'VK_FORMAT_R16G16B16_UNORM' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R16G16B16_SFLOAT' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R8G8B8_SRGB' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R8G8B8_UNORM' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_B8G8R8_UNORM' cannot be sampled from in optimal layout!
INFO [comp_vulkan_formats_log] Supported formats:
VK_FORMAT_R16G16B16A16_UNORM: true
VK_FORMAT_R16G16B16A16_SFLOAT: true
VK_FORMAT_R16G16B16_UNORM: false
VK_FORMAT_R16G16B16_SFLOAT: false
VK_FORMAT_R8G8B8A8_SRGB: true
VK_FORMAT_B8G8R8A8_SRGB: true
VK_FORMAT_R8G8B8_SRGB: false
VK_FORMAT_R8G8B8A8_UNORM: true
VK_FORMAT_B8G8R8A8_UNORM: true
VK_FORMAT_R8G8B8_UNORM: false
VK_FORMAT_B8G8R8_UNORM: false
VK_FORMAT_R5G6B5_UNORM_PACK16: true
VK_FORMAT_R32_SFLOAT: true
VK_FORMAT_D32_SFLOAT: true
VK_FORMAT_D16_UNORM: true
VK_FORMAT_X8_D24_UNORM_PACK32: true
VK_FORMAT_D24_UNORM_S8_UINT: true
VK_FORMAT_D32_SFLOAT_S8_UINT: true
VK_FORMAT_S8_UINT: true
INFO [u_linux_try_to_set_realtime_priority_on_thread] Raised priority of thread 'Multi Client Module' to policy: 'SCHED_FIFO', priority: '99'
DEBUG [compositor_begin_session] BEGIN_SESSION
INFO [print_linux_end_user_started_information]
################################################################################
# #
# The Monado service has started. #
# #
################################################################################
Warning: Could not find disambiguator state for HMD
DEBUG [compositor_end_session] END_SESSION
Warning: Could not find disambiguator state for HMD
...
Warning: Could not find disambiguator state for HMD
(i’ve removed a lot of duplicate Warning: Could not find disambiguator state for HMD)
sudo -u vr DRI_PRIME=1 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia CAP_SYS_NICE=ep PATH=/run/current-system/sw/bin:$PATH simula
XDG_CACHE_HOME: /home/vr/.cache
XDG_DATA_HOME: /home/vr/.local/share
XDG_CONFIG_HOME: /home/vr/.config
SIMULA_NIX_DIR: /nix/store/cvd4ir7a5sfj4kmqjddldgl9srxd2ipz-simula-0.0.0
SIMULA_LOG_DIR: /home/vr/.cache/Simula
SIMULA_DATA_DIR: /home/vr/.local/share/Simula
SIMULA_CONFIG_DIR: /home/vr/.config/Simula
Godot Engine v3.4.beta.custom_build - https://godotengine.org
OpenGL ES 3.0 Renderer: NVIDIA GeForce GTX 1650/PCIe/SSE2
OpenGL ES Batching: ON
ERROR: Condition "status < 0" is true. Returned: ERR_CANT_OPEN
at: init_device (drivers/alsa/audio_driver_alsa.cpp:89)
WARNING: All audio drivers failed, falling back to the dummy driver.
at: initialize (servers/audio_server.cpp:222)
ERROR: Method failed. Returning: nullptr
at: bind_methodfi (core/class_db.cpp:1210)
Haskell GDNative initialized
Haskell NativeScript initialized
Registering class Simula with base Node
Registering method _ready to class Simula
Registering method _process to class Simula
Registering method on_button_signal to class Simula
Registering class SimulaController with base ARVRController
Registering method _process to class SimulaController
Registering method _physics_process to class SimulaController
Registering class SimulaServer with base Spatial
Registering method _ready to class SimulaServer
Registering method _input to class SimulaServer
Registering method _on_WaylandDisplay_ready to class SimulaServer
Registering method _on_WlrXdgShell_new_surface to class SimulaServer
Registering method _on_wlr_key to class SimulaServer
Registering method _on_wlr_modifiers to class SimulaServer
Registering method _on_WlrXWayland_new_surface to class SimulaServer
Registering method _physics_process to class SimulaServer
Registering method _process to class SimulaServer
Registering method _on_simula_shortcut to class SimulaServer
Registering method handle_wlr_compositor_new_surface to class SimulaServer
Registering method seat_request_cursor to class SimulaServer
Registering class SimulaViewSprite with base RigidBody
Registering method _input_event to class SimulaViewSprite
Registering method _ready to class SimulaViewSprite
Registering method _handle_destroy to class SimulaViewSprite
Registering method _handle_map to class SimulaViewSprite
Registering method _process to class SimulaViewSprite
Registering method handle_unmap to class SimulaViewSprite
Registering method handle_unmap_child to class SimulaViewSprite
Registering method handle_unmap_free_child to class SimulaViewSprite
Registering method handle_map_free_child to class SimulaViewSprite
Registering method handle_map_child to class SimulaViewSprite
Registering method handle_set_parent to class SimulaViewSprite
Registering method handle_new_popup to class SimulaViewSprite
Registering method handle_window_menu to class SimulaViewSprite
Registering method handle_wlr_surface_new_subsurface to class SimulaViewSprite
Registering method handle_wlr_surface_destroy to class SimulaViewSprite
Registering method handle_wlr_surface_commit to class SimulaViewSprite
Registering method handle_wlr_subsurface_destroy to class SimulaViewSprite
Registering signal map to class SimulaViewSprite
Registering signal map_free_child to class SimulaViewSprite
Registering class CanvasBase with base Node2D
Registering method _process to class CanvasBase
Registering method _draw to class CanvasBase
Registering method _ready to class CanvasBase
Registering class CanvasSurface with base Node2D
Registering method _process to class CanvasSurface
Registering method _draw to class CanvasSurface
Registering method _ready to class CanvasSurface
Registering class PancakeCamera with base Camera
Registering method _process to class PancakeCamera
Registering method _ready to class PancakeCamera
Registering class CanvasAR with base Node2D
Registering method _process to class CanvasAR
Registering method _draw to class CanvasAR
Registering method _ready to class CanvasAR
PROFILE = Nothing
SIMULA_CONFIG_DIR = Just "/home/vr/.config/Simula"
SIMULA_DATA_DIR = Just "/home/vr/.local/share/Simula"
Running Simula without RR
error: XDG_RUNTIME_DIR is invalid or not set in the environment
Running Wayland server on display simula-0
New DISPLAY=:2
ERROR: Condition "!signal_is_valid" is true. Returned: ERR_INVALID_PARAMETER
at: connect (core/object.cpp:1462)
/bin/sh: line 1: xrdb: command not found
Launching app in location: center
/bin/sh: line 1: wmctrl: command not found
Launching app in location: right
Launching app in location: bottom
Launching app in location: left
Launching app in location: top
Launching default apps: ["launchTerminal","nullApp","nullApp","nullApp","nullApp"]
Attempting to run i3status from: i3status
Using config file: /home/vr/.config/Simula/HUD.config
Loading VR backend: OpenXR
ERROR [ipc_client_socket_connect] Failed to connect to socket /tmp/monado_comp_ipc: Connection refused!
ERROR [ipc_client_connection_init] Failed to connect to monado service process
###
#
# Please make sure that the service process is running
#
# It is called "monado-service"
# In build trees, it is located "build-dir/src/xrt/targets/service/monado-service"
#
###
XR_ERROR_RUNTIME_FAILURE in xrCreateInstance: Failed to create instance '-1'
Error [GENERAL | xrCreateInstance | OpenXR-Loader] : LoaderInstance::CreateInstance chained CreateInstance call failed
Error [GENERAL | xrCreateInstance | OpenXR-Loader] : xrCreateInstance failed
Error [GENERAL | xrResultToString | OpenXR-Loader] : No active XrInstance handle.
ERROR: OpenXR Failed to create XR instance. []
at: xr_result (src/openxr/OpenXRApi.h:351)
Failed to initialize VR interface.
InitVRFailed
Project FPS: 1 (1000.0 mspf)
Project FPS: 131 (7.6 mspf)
Project FPS: 288 (3.4 mspf)
Project FPS: 288 (3.4 mspf)
Project FPS: 288 (3.4 mspf)
(WW) Option "-listen" for file descriptors is deprecated
Please use "-listenfd" instead.
(WW) Option "-listen" for file descriptors is deprecated
Please use "-listenfd" instead.
Project FPS: 288 (3.4 mspf)
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Could not resolve keysym XF86OK
> Warning: Could not resolve keysym XF86GoTo
> Warning: Could not resolve keysym XF86VendorLogo
> Warning: Could not resolve keysym XF86MediaSelectProgramGuide
> Warning: Could not resolve keysym XF86MediaSelectProgramGuide
> Warning: Could not resolve keysym XF86MediaSelectHome
> Warning: Could not resolve keysym XF86MediaLanguageMenu
> Warning: Could not resolve keysym XF86MediaTitleMenu
> Warning: Could not resolve keysym XF86AudioChannelMode
> Warning: Could not resolve keysym XF86MediaSelectPC
> Warning: Could not resolve keysym XF86MediaSelectTV
> Warning: Could not resolve keysym XF86MediaSelectCable
> Warning: Could not resolve keysym XF86MediaSelectVCR
> Warning: Could not resolve keysym XF86MediaSelectVCRPlus
> Warning: Could not resolve keysym XF86MediaSelectSatellite
> Warning: Could not resolve keysym XF86MediaSelectCD
> Warning: Could not resolve keysym XF86MediaSelectTape
> Warning: Could not resolve keysym XF86MediaSelectRadio
> Warning: Could not resolve keysym XF86MediaSelectTuner
> Warning: Could not resolve keysym XF86MediaPlayer
> Warning: Could not resolve keysym XF86MediaSelectTeletext
> Warning: Could not resolve keysym XF86MediaSelectAuxiliary
> Warning: Could not resolve keysym XF86MediaPlaySlow
> Warning: Could not resolve keysym XF86NumberEntryMode
> Warning: Could not resolve keysym XF86RefreshRateToggle
> Warning: Could not resolve keysym XF86Accessibility
> Warning: Could not resolve keysym XF86DoNotDisturb
Errors from xkbcomp are not fatal to the X server
handle_wlr_compositor_new_surface
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Unsupported maximum keycode 708, clipping.
> X11 cannot support keycodes above 255.
> Warning: Virtual modifier Hyper multiply defined
> Using 0, ignoring 0
> Warning: Virtual modifier ScrollLock multiply defined
> Using 0, ignoring 0
> Warning: Could not resolve keysym XF86OK
> Warning: Could not resolve keysym XF86GoTo
> Warning: Could not resolve keysym XF86VendorLogo
> Warning: Could not resolve keysym XF86MediaSelectProgramGuide
> Warning: Could not resolve keysym XF86MediaSelectProgramGuide
> Warning: Could not resolve keysym XF86MediaSelectHome
> Warning: Could not resolve keysym XF86MediaLanguageMenu
> Warning: Could not resolve keysym XF86MediaTitleMenu
> Warning: Could not resolve keysym XF86AudioChannelMode
> Warning: Could not resolve keysym XF86MediaSelectPC
> Warning: Could not resolve keysym XF86MediaSelectTV
> Warning: Could not resolve keysym XF86MediaSelectCable
> Warning: Could not resolve keysym XF86MediaSelectVCR
> Warning: Could not resolve keysym XF86MediaSelectVCRPlus
> Warning: Could not resolve keysym XF86MediaSelectSatellite
> Warning: Could not resolve keysym XF86MediaSelectTape
> Warning: Could not resolve keysym XF86MediaSelectRadio
> Warning: Could not resolve keysym XF86MediaSelectTuner
> Warning: Could not resolve keysym XF86MediaPlayer
> Warning: Could not resolve keysym XF86MediaSelectTeletext
> Warning: Could not resolve keysym XF86MediaSelectAuxiliary
> Warning: Could not resolve keysym XF86MediaPlaySlow
> Warning: Could not resolve keysym XF86NumberEntryMode
> Warning: Could not resolve keysym XF86RefreshRateToggle
> Warning: Could not resolve keysym XF86Accessibility
> Warning: Could not resolve keysym XF86DoNotDisturb
Errors from xkbcomp are not fatal to the X server
Project FPS: 288 (3.4 mspf)
Project FPS: 288 (3.4 mspf)
Project FPS: 286 (3.4 mspf)
SimulaViewSprite()
setShader: res://addons/godot-haskell-plugin/TextShaderOpaque.tres
SimulaViewSprite()
setShader: res://addons/godot-haskell-plugin/TextShaderOpaque.tres
Project FPS: 249 (4.0 mspf)
(xfce4-terminal:4093): xfce4-terminal-WARNING **: 04:59:04.633: Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined
Project FPS: 288 (3.4 mspf)
SimulaViewSprite()
setShader: res://addons/godot-haskell-plugin/TextShaderOpaque.tres
SimulaViewSprite()
setShader: res://addons/godot-haskell-plugin/TextShaderOpaque.tres
handle_wlr_compositor_new_surface
_handle_map
Mapping surface 0x0000000026788270
ERROR: Condition "p_child->data.parent" is true.
at: add_child (scene/main/node.cpp:1131)
ERROR: Condition "p_child->data.parent" is true.
at: add_child (scene/main/node.cpp:1131)
Project FPS: 177 (5.6 mspf)
Project FPS: 288 (3.4 mspf)
Mouse event button: 1
modifiers: 0
Mouse event button: 1
modifiers: 0
Project FPS: 277 (3.6 mspf)
modifiers: 0
modifiers: 33554432
modifiers: 167772160
action detected
Terminating Simula..
_handle_destroy
handle_unmap
handle_unmap_base
handle_unmap_base: normal child path
ERROR: Condition "data.blocked > 0" is true.
at: remove_child (scene/main/node.cpp:1183)
_handle_destroy
_handle_destroy
_handle_destroy
(EE) failed to write to Xwayland fd: Broken pipe
godot: ../src/state.c:894: xkb_state_unref: Assertion `!state || state->refcnt > 0' failed.
(I closed it with Super+Shift+Esc after I confirmed it was “working” in the laptop only)
Also, Monado only starts successfully once per login…
If I try to start Monado without the things suggested by Copilot, I get this:
simula-monado-service
XDG_CACHE_HOME: /home/vr/.cache
XDG_DATA_HOME: /home/vr/.local/share
XDG_CONFIG_HOME: /home/vr/.config
SIMULA_NIX_DIR: /nix/store/cvd4ir7a5sfj4kmqjddldgl9srxd2ipz-simula-0.0.0
SIMULA_LOG_DIR: /home/vr/.cache/Simula
SIMULA_DATA_DIR: /home/vr/.local/share/Simula
SIMULA_CONFIG_DIR: /home/vr/.config/Simula
INFO [ipc_server_main] Monado(XRT) by Collabora et al 'GIT-NOTFOUND' starting up...
ERROR [svr_estimate_system] Failed to detect Simula One display via edid
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Info: Loaded drivers: GlobalSceneSolver, HTCVive
ERROR [lighthouse_open_system_impl] Unable to find HMD
INFO [p_create_system] Creating system:
Builders:
qwerty: Qwerty devices builder
remote: Remote simulation devices builder
simulated: Simulated devices builder
rift_s: Oculus Rift S
rgb_tracking: RGB tracking based devices (PSVR, PSMV, ...)
simula: SimulaVR headset
steamvr: SteamVR proprietary wrapper (Vive, Index, Tundra trackers, etc.) devices builder
lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
north_star: North Star headset
wmr: Windows Mixed Reality
xreal_air: Xreal Air
legacy: Legacy probing system
No builder selected in config (or wasn't compiled in)
Selected lighthouse because it was certain it could create a head
Using builder lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
Result: XRT_ERROR_DEVICE_CREATION_FAILED
ERROR [init_all] Could not create system!
INFO [print_linux_end_user_failed_information]
################################################################################
# #
# The Monado service has failed to start. #
# #
# If you want to report please upload the logs of the service as a text file. #
# You can also capture the output the monado-cli info command to provide more #
# information about your system, that will help diagnosing your problem. The #
# below commands is how you best capture the information from the commands. #
# #
# monado-cli info 2>&1 | tee info.txt #
# monado-service 2>&1 | tee logs.txt #
# #
################################################################################
Info: Adding tracked object HMD from HTC
WARN [_process_event] Device added event, but hotplugging not implemented yet
Info: Device HMD has watchman FW version 1462663157 and FPGA version 262/0/0; named ' steamservices'. Hardware id 0x80020100 Board rev: 128 (len 56)
Info: HMD is treated as HMD device
WARN [_process_event] Device added event, but hotplugging not implemented yet
Info: USB lightcap report is of an unexpected type for HMD: 33 (0x21)
Info: Detected LH gen 1 system.
WARN [_process_event] Device added event, but hotplugging not implemented yet
Warning: Could not find disambiguator state for HMD
ERROR [_process_event] Event for unknown object not handled
Warning: Could not find disambiguator state for HMD
Warning: Could not find disambiguator state for HMD
Warning: Could not find disambiguator state for HMD
Warning: Could not find disambiguator state for HMD
I got to the point where Copilot started suggesting me to
- Edit ~/.config/monado/config_v0.toml to disable direct mode and etc.
- Create udev rules to force Monado to use X11
- Suggested to use WiVRn as an alternative OpenXR Runtime
- Using the AMD integrated graphics card instead of the nVidia GPU
- Using an LLVMpipe software renderer
- “Creating a custom Vulkan ICD that combines both drivers”
- Check for existing issues…
Now I strongly suspect that I shouldn’t be messing with such low-level stuff and that the solution is likely a lot simpler.
Here’s my NixOS configuration:
{ config, pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
# Boot configuration
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable experimental features for SimulaVR
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Networking
networking.hostName = "simulavr-nixos";
networking.networkmanager.enable = true;
# Enable NVIDIA drivers with Wayland support
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false; # Use proprietary driver for better VR support
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
# Enable Wayland and VR-related services
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
displayManager.gdm.wayland = true;
desktopManager.gnome.enable = true;
xkb = {
layout = "br";
variant = "abnt2";
};
};
# Also add console keyboard
console = {
keyMap = "br-abnt2";
};
# Enable internationalization
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_TIME = "pt_BR.UTF8";
};
};
# Enable Vulkan
hardware.opengl = {
enable = true;
};
# VR and USB permissions
hardware.steam-hardware.enable = true;
services.udev.extraRules = ''
# HTC Vive USB devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0664", GROUP="plugdev"
# Lighthouse base stations
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fcf", MODE="0664", GROUP="plugdev"
KERNEL=="hidraw*", ATTRS{idVendor}=="0bb4", MODE="0664", GROUP="plugdev"
'';
# Audio for VR
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Users
users.users.vr = {
isNormalUser = true;
description = "VR User";
extraGroups = [ "networkmanager" "wheel" "plugdev" "audio" "video" "render" "input" ];
};
# SimulaVR and VR packages
environment.systemPackages = with pkgs; [
# VR essentials
vulkan-tools
vulkan-loader
vulkan-validation-layers
# System utilities
nano
git
wget
htop
pciutils
linuxPackages.nvidia_x11
usbutils
xorg.xrdb
wmctrl
i3status
alacritty
firefox
xorg.xhost
# Development tools (in case you need them)
gcc
pkg-config
google-chrome
];
# Enable flakes and allow unfree (for NVIDIA drivers)
nixpkgs.config.allowUnfree = true;
# System state version
system.stateVersion = "23.11";
security.wrappers = {
"simula-monado-service" = {
source = "/home/vr/.nix-profile/bin/simula-monado-service";
capabilities = "cap_sys_nice+ep";
owner = "root";
group = "root";
};
};
}
and the mentioned import:
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "uas" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/7f49efe8-d667-473e-8f73-d6f10a76733c";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/5F71-EC96";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
Update: I messed around some more with Copilot. Still no success, but now I can start Monado without extra parameters. I had to change my configuration.nix to this in order to allow that:
{ config, pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
# Boot configuration
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable experimental features for SimulaVR
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Networking
networking.hostName = "simulavr-nixos";
networking.networkmanager.enable = true;
# Enable NVIDIA drivers with Wayland support
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false; # Use proprietary driver for better VR support
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
# Consolidated graphics configuration
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
# Mesa/RADV with full Vulkan support
mesa
mesa.drivers
# Additional Vulkan packages for VR extensions
vulkan-loader
vulkan-validation-layers
vulkan-extension-layer
vulkan-headers
vulkan-tools
# AMD specific packages
libdrm
# Additional Mesa packages for comprehensive support
mesa_glu
freeglut
# Wayland support
wayland
wayland-protocols
];
extraPackages32 = with pkgs.pkgsi686Linux; [
mesa
vulkan-loader
];
};
# Enable Wayland and VR-related services
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
displayManager.gdm.wayland = true;
desktopManager.gnome.enable = true;
xkb = {
layout = "br";
variant = "abnt2";
};
};
# Also add console keyboard
console = {
keyMap = "br-abnt2";
};
# Enable internationalization
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_TIME = "pt_BR.UTF8";
};
};
# VR and USB permissions
hardware.steam-hardware.enable = true;
services.udev.extraRules = ''
# HTC Vive USB devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0664", GROUP="plugdev"
# Lighthouse base stations
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fcf", MODE="0664", GROUP="plugdev"
KERNEL=="hidraw*", ATTRS{idVendor}=="0bb4", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", ENV{ID_SEAT}="seat0"
SUBSYSTEM=="drm", KERNEL=="controlD[0-9]*", TAG+="uaccess"
ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", ENV{VR_DIRECT_MODE}="false"
# Force HTC Vive to use windowed mode
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", ENV{XRT_COMPOSITOR_FORCE_WINDOWED}="1"
'';
# Audio for VR
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Users
users.users.vr = {
isNormalUser = true;
description = "VR User";
extraGroups = [ "networkmanager" "wheel" "plugdev" "audio" "video" "render" "input" ];
};
# SimulaVR and VR packages
environment.systemPackages = with pkgs; [
# VR essentials
vulkan-tools
vulkan-loader
vulkan-validation-layers
# System utilities
nano
git
wget
htop
pciutils
linuxPackages.nvidia_x11
usbutils
xorg.xrdb
wmctrl
i3status
alacritty
firefox
xorg.xhost
# Development tools (in case you need them)
gcc
pkg-config
google-chrome
];
# Enable flakes and allow unfree (for NVIDIA drivers)
nixpkgs.config.allowUnfree = true;
# System state version
system.stateVersion = "23.11";
security.wrappers = {
"simula-monado-service" = {
source = "/home/vr/.nix-profile/bin/simula-monado-service";
capabilities = "cap_sys_nice+ep";
owner = "root";
group = "root";
};
};
}
and here’s the updated output of simula-monado-service:
XDG_CACHE_HOME: /home/vr/.cache
XDG_DATA_HOME: /home/vr/.local/share
XDG_CONFIG_HOME: /home/vr/.config
SIMULA_NIX_DIR: /nix/store/cvd4ir7a5sfj4kmqjddldgl9srxd2ipz-simula-0.0.0
SIMULA_LOG_DIR: /home/vr/.cache/Simula
SIMULA_DATA_DIR: /home/vr/.local/share/Simula
SIMULA_CONFIG_DIR: /home/vr/.config/Simula
INFO [ipc_server_main] Monado(XRT) by Collabora et al 'GIT-NOTFOUND' starting up...
ERROR [svr_estimate_system] Failed to detect Simula One display via edid
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Warning: Cannot open device "BRD" with vid/pid 0bb4:2c87 error -3 (LIBUSB_ERROR_ACCESS)
Info: Loaded drivers: GlobalSceneSolver, HTCVive
Info: Adding tracked object HMD from HTC
Info: Device HMD has watchman FW version 1462663157 and FPGA version 262/0/0; named ' steamservices'. Hardware id 0x80020100 Board rev: 128 (len 56)
Info: HMD is treated as HMD device
Info: Detected LH gen 1 system.
Info: Locked onto state 4( 7, 800049) at 3375373428 for HMD
Info: OOTX not set for LH 1; attaching ootx decoder using device HMD
ERROR [opengloves_load_config_file] Failed to load config file
INFO [p_create_system] Creating system:
Builders:
qwerty: Qwerty devices builder
remote: Remote simulation devices builder
simulated: Simulated devices builder
rift_s: Oculus Rift S
rgb_tracking: RGB tracking based devices (PSVR, PSMV, ...)
simula: SimulaVR headset
steamvr: SteamVR proprietary wrapper (Vive, Index, Tundra trackers, etc.) devices builder
lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
north_star: North Star headset
wmr: Windows Mixed Reality
xreal_air: Xreal Air
legacy: Legacy probing system
No builder selected in config (or wasn't compiled in)
Selected lighthouse because it was certain it could create a head
Using builder lighthouse: Lighthouse-tracked FLOSS (Vive, Index, Tundra trackers, etc.) devices builder
Got devices:
0: HTC Vive (libsurvive)
In roles:
head: HTC Vive (libsurvive), view count: 2
eyes: <none>
face: <none>
left: <none>
right: <none>
gamepad: <none>
hand_tracking.left: <none>
hand_tracking.right: <none>
Result: XRT_SUCCESS
DEBUG [comp_main_create_system_compositor] Doing init 0x56050e5545f0
WARN [compositor_check_and_prepare_xdev] Had to fill in meshuv on xdev 'HTC Vive (libsurvive)', this should be done in the driver.
DEBUG [check_vulkan_caps] Checking for NVIDIA vulkan driver.
DEBUG [check_vulkan_caps] Selecting direct NVIDIA window type!
INFO [compositor_init_window_pre_vulkan] Selected NVIDIA Direct-Mode backend!
DEBUG [vk_build_instance_extensions] Using optional instance ext VK_EXT_swapchain_colorspace
DEBUG [should_skip_optional_instance_ext] Not skipping optional instance extension VK_EXT_display_surface_counter because VK_KHR_display is enabled
DEBUG [vk_build_instance_extensions] Using optional instance ext VK_EXT_display_surface_counter
DEBUG [select_physical_device] Choosing Vulkan device index
DEBUG [select_physical_device] Available GPUs
DEBUG [vk_print_device_info] GPU index 0
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
DEBUG [vk_print_device_info] GPU index 1
name: AMD Radeon Graphics (RADV RENOIR)
vendor: 0x1002
product: 0x1638
deviceType: VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
apiVersion: 1.4.318
driverVersion: 0x06402006
DEBUG [vk_print_device_info] GPU index 2
name: llvmpipe (LLVM 21.1.7, 256 bits)
vendor: 0x10005
product: 0x0000
deviceType: VK_PHYSICAL_DEVICE_TYPE_CPU
apiVersion: 1.4.318
driverVersion: 0x06402006
DEBUG [vk_print_device_info] Selected GPU: 0
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
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] Using required device ext VK_KHR_external_semaphore
DEBUG [build_device_extensions] Using required device ext VK_KHR_get_memory_requirements2
DEBUG [build_device_extensions] Using required device ext VK_KHR_external_memory_fd
DEBUG [build_device_extensions] NOT using optional device ext VK_GOOGLE_display_timing
DEBUG [build_device_extensions] Using optional device ext VK_EXT_global_priority
DEBUG [build_device_extensions] Using optional device ext VK_KHR_external_semaphore_fd
DEBUG [build_device_extensions] Using optional device ext VK_KHR_external_fence_fd
DEBUG [build_device_extensions] Using optional device ext VK_KHR_format_feature_flags2
DEBUG [build_device_extensions] Using optional device ext VK_KHR_global_priority
DEBUG [build_device_extensions] Using optional device ext VK_KHR_image_format_list
DEBUG [build_device_extensions] Using optional device ext VK_KHR_maintenance1
DEBUG [build_device_extensions] Using optional device ext VK_KHR_maintenance2
DEBUG [build_device_extensions] Using optional device ext VK_KHR_timeline_semaphore
DEBUG [build_device_extensions] Using optional device ext VK_EXT_calibrated_timestamps
DEBUG [build_device_extensions] Using optional device ext VK_EXT_robustness2
DEBUG [should_skip_optional_device_ext] Not skipping optional instance extension VK_EXT_display_control because VK_EXT_display_surface_counter instance ext is enabled
DEBUG [build_device_extensions] Using optional device ext VK_EXT_display_control
DEBUG [build_device_extensions] Using optional device ext VK_KHR_synchronization2
DEBUG [filter_device_features] Features:
null_descriptor: 0
shader_image_gather_extended: 1
shader_storage_image_write_without_format: 1
timeline_semaphore: 1
synchronization_2: 1
INFO [create_device] Created device and GRAPHICS queue with QUEUE_GLOBAL_PRIORITY_REALTIME.
INFO [vk_print_device_info] Device info:
name: NVIDIA GeForce GTX 1650
vendor: 0x10de
product: 0x1f9d
deviceType: VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
apiVersion: 1.4.312
driverVersion: 0x911dc080
INFO [vk_print_features_info] Features:
timestamp_compute_and_graphics: true
timestamp_period: 1.000000
timestamp_valid_bits: 64
timeline_semaphore: true
INFO [vk_print_external_handles_info] Supported images:
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT:
color import=true export=true
depth import=true export=true
INFO [vk_print_external_handles_info] Supported fences:
VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT: true
VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT: true
INFO [vk_print_external_handles_info] Supported semaphores:
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT(binary): true
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT(binary): true
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT(timeline): false
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT(timeline): true
DEBUG [fill_in_results] Selected 0 with uuid: b5 f7 0f b3 5b a7 41 d5 0a 2d 55 24 b1 8e c1 40
DEBUG [fill_in_results] Suggest 0 with uuid: b5 f7 0f b3 5b a7 41 d5 0a 2d 55 24 b1 8e c1 40 to clients
DEBUG [render_shaders_load] Shaders loaded!
INFO [comp_target_swapchain_override_extents] Target 'direct' overrides compositor extents with (2160x1200) was (0x0 false)
DEBUG [compositor_try_window] Target backend direct initialized!
DEBUG [comp_window_direct_nvidia_init_swapchain] Will use display: HTC Corporation HTC-VIVE (HDMI-0)
DEBUG [get_primary_display_mode] Found 8 modes
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 0: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 1: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 2: 640x480@59.94
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 3: 720x480@59.94
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 4: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 5: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 6: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Available Vk direct mode 7: 2160x1200@89.53
DEBUG [choose_best_vk_mode_auto] Auto choosing Vk direct mode 0: 2160x1200@89.53
DEBUG [get_primary_display_mode] found display mode 2160x1200@89.53
DEBUG [get_primary_display_mode] Updating compositor settings nominal frame interval from 11111111 (90.000001 Hz) to 11169814 (89.527000 Hz)
INFO [vk_print_display_surface_create_info] VkDisplaySurfaceCreateInfoKHR:
flags:
displayMode: 0x56050e774450
planeIndex: 0
planeStackIndex: 0
transform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
planeIndex: 1.000000
alphaMode: VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR
imageExtent: {2160, 1200}
DEBUG [renderer_ensure_images_and_renderings] Creating images and renderings (force_recreate: false).
DEBUG [find_surface_format] VkSurfaceFormatKHR
picked: [format = VK_FORMAT_A8B8G8R8_SRGB_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
preferred: [format = VK_FORMAT_B8G8R8A8_SRGB, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
INFO [vk_print_surface_info] VkSurfaceKHR info:
caps.minImageCount: 2
caps.maxImageCount: 8
caps.currentExtent: 2160x1200
caps.minImageExtent: 2160x1200
caps.maxImageExtent: 2160x1200
caps.maxImageArrayLayers: 1
caps.supportedTransforms:
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
caps.currentTransform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
caps.supportedCompositeAlpha:
VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
caps.supportedUsageFlags:
VK_IMAGE_USAGE_TRANSFER_SRC_BIT
VK_IMAGE_USAGE_TRANSFER_DST_BIT
VK_IMAGE_USAGE_SAMPLED_BIT
VK_IMAGE_USAGE_STORAGE_BIT
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
present_modes(5):
VK_PRESENT_MODE_FIFO_KHR
VK_PRESENT_MODE_IMMEDIATE_KHR
UNKNOWN MODE
VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
formats(5):
[format = VK_FORMAT_A8B8G8R8_UNORM_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A8B8G8R8_SRGB_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A2B10G10R10_UNORM_PACK32, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_A1R5G5B5_UNORM_PACK16, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
[format = VK_FORMAT_B8G8R8A8_UNORM, colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR]
INFO [vk_print_swapchain_create_info] VkSwapchainCreateInfoKHR:
surface: 0x56050ee1c280
minImageCount: 2
imageFormat: VK_FORMAT_A8B8G8R8_SRGB_PACK32
imageColorSpace: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
imageExtent: {2160, 1200}
imageArrayLayers: 1
imageUsage:
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
imageSharingMode: VK_SHARING_MODE_EXCLUSIVE
queueFamilyIndexCount: 0
preTransform: VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
compositeAlpha: VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
presentMode: VK_PRESENT_MODE_FIFO_KHR
clipped: VK_TRUE
oldSwapchain: (nil)
DEBUG [check_surface_counter_caps] Supported surface counter flags: 1
DEBUG [create_vblank_event_thread] Started vblank (first pixel out) event thread.
INFO [comp_target_swapchain_create_images] Started vblank event thread!
DEBUG [run_vblank_event_thread] Surface thread starting
DEBUG [renderer_create_renderings_and_fences] Allocating 2 Command Buffers.
DEBUG [comp_main_create_system_compositor] Done 0x56050e5545f0
DEBUG [is_format_supported] Format 'VK_FORMAT_R16G16B16_UNORM' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R16G16B16_SFLOAT' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R8G8B8_SRGB' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_R8G8B8_UNORM' cannot be sampled from in optimal layout!
DEBUG [is_format_supported] Format 'VK_FORMAT_B8G8R8_UNORM' cannot be sampled from in optimal layout!
INFO [comp_vulkan_formats_log] Supported formats:
VK_FORMAT_R16G16B16A16_UNORM: true
VK_FORMAT_R16G16B16A16_SFLOAT: true
VK_FORMAT_R16G16B16_UNORM: false
VK_FORMAT_R16G16B16_SFLOAT: false
VK_FORMAT_R8G8B8A8_SRGB: true
VK_FORMAT_B8G8R8A8_SRGB: true
VK_FORMAT_R8G8B8_SRGB: false
VK_FORMAT_R8G8B8A8_UNORM: true
VK_FORMAT_B8G8R8A8_UNORM: true
VK_FORMAT_R8G8B8_UNORM: false
VK_FORMAT_B8G8R8_UNORM: false
VK_FORMAT_R5G6B5_UNORM_PACK16: true
VK_FORMAT_R32_SFLOAT: true
VK_FORMAT_D32_SFLOAT: true
VK_FORMAT_D16_UNORM: true
VK_FORMAT_X8_D24_UNORM_PACK32: true
VK_FORMAT_D24_UNORM_S8_UINT: true
VK_FORMAT_D32_SFLOAT_S8_UINT: true
VK_FORMAT_S8_UINT: true
INFO [u_linux_try_to_set_realtime_priority_on_thread] Raised priority of thread 'Multi Client Module' to policy: 'SCHED_FIFO', priority: '99'
DEBUG [compositor_begin_session] BEGIN_SESSION
INFO [print_linux_end_user_started_information]
################################################################################
# #
# The Monado service has started. #
# #
################################################################################
DEBUG [compositor_end_session] END_SESSION
Also, I tested it on SteamVR on Windows. Works flawlessly.
So, please, how do I make this work?
Thanks in advance.
Greetings, everyone.
“It takes less than 1 minute to install.” Very funny. I’ve spent a whole weekend plus a couple of minutes everyday since March 27 trying to make this work. I’ve purchased a used HTC Vive and I have an Acer Nitro 5 with AMD Ryzen 7-5800H and nVidia GTX 1650 (N20C1, AN515-45-R4S3). I’ve been using Copilot with Claude Sonnet 4 (most of the time).
On the first night I mostly found out it would be better to stop trying to make it work on my Debian. I’ve found an old 160 GB HD and, since I had a SATA to USB adapter, I used it to install a “portable” NixOS. I chose the latest stable over the LTS (25.11.8107.1073dad219cb-x86_64-linux). Just to install Simula, it seems there were some issues with using the binary caches and I had to compile some stuff. I had to add swap memory to be able to do that.
After several days of back-and-forth with Copilot, the consensus seems to be that, while Monado starts in direct mode, Simula starts in X11 and they have trouble sharing contexts.
The best result I had was with running the following commands to start each, with the following outputs. Monado starts, the Vive turns on and displays a blank white screen. Simula starts, opens a window with a cloudy sky background and a terminal inside, but I only see this on the laptop. On most other tests, either Simula crashes if Monado is up or starts in desktop mode only if Monado is down.
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia DRI_PRIME=1 simula-monado-service(i’ve removed a lot of duplicate
Warning: Could not find disambiguator state for HMD)sudo -u vr DRI_PRIME=1 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia CAP_SYS_NICE=ep PATH=/run/current-system/sw/bin:$PATH simula(I closed it with Super+Shift+Esc after I confirmed it was “working” in the laptop only)
Also, Monado only starts successfully once per login…
If I try to start Monado without the things suggested by Copilot, I get this:
simula-monado-serviceI got to the point where Copilot started suggesting me to
Now I strongly suspect that I shouldn’t be messing with such low-level stuff and that the solution is likely a lot simpler.
Here’s my NixOS configuration:
and the mentioned import:
Update: I messed around some more with Copilot. Still no success, but now I can start Monado without extra parameters. I had to change my
configuration.nixto this in order to allow that:and here’s the updated output of
simula-monado-service:Also, I tested it on SteamVR on Windows. Works flawlessly.
So, please, how do I make this work?
Thanks in advance.