From c12dca950f4c16ee23116e5b1a9915ad6ba8da35 Mon Sep 17 00:00:00 2001 From: Deandre Date: Wed, 10 Dec 2025 17:49:23 -0800 Subject: [PATCH 1/2] Add Pico 4 emulation mode --- alvr/server_openvr/src/props.rs | 10 ++++++++++ alvr/session/src/settings.rs | 2 ++ 2 files changed, 12 insertions(+) diff --git a/alvr/server_openvr/src/props.rs b/alvr/server_openvr/src/props.rs index 6858a8a61c..354ccdab05 100644 --- a/alvr/server_openvr/src/props.rs +++ b/alvr/server_openvr/src/props.rs @@ -124,6 +124,7 @@ fn serial_number(device_id: u64) -> String { HeadsetEmulationMode::Quest1 => "1PASH0X0X00000".into(), HeadsetEmulationMode::Quest2 => "1WMHH000X00000".into(), HeadsetEmulationMode::QuestPro => "230YC0XXXX00XX".into(), + HeadsetEmulationMode::Pico4 => "VRLINKHMDPICO4".into(), HeadsetEmulationMode::Vive => "HTCVive-001".into(), HeadsetEmulationMode::Custom { serial_number, .. } => serial_number.clone(), } @@ -291,6 +292,15 @@ pub extern "C" fn set_device_openvr_props(instance_ptr: *mut c_void, device_id: set_prop(DriverVersionString, "1.55.0"); set_oculus_common_headset_props(); } + HeadsetEmulationMode::Pico4 => { + set_prop(TrackingSystemNameString, "pico"); + set_prop(ModelNumberString, "Pico 4"); + set_prop(ManufacturerNameString, "ByteDance"); + set_prop(RenderModelNameString, "generic_hmd"); + set_prop(RegisteredDeviceTypeString, "pico"); + set_prop(DriverVersionString, ""); + set_icons("{vrlink}/icons/headset_pico4"); + } HeadsetEmulationMode::Vive => { set_prop(TrackingSystemNameString, "Vive Tracker"); set_prop(ModelNumberString, "ALVR driver server"); diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 95247e68e7..95471fa693 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -872,6 +872,8 @@ pub enum HeadsetEmulationMode { Quest2, #[schema(strings(display_name = "Quest Pro"))] QuestPro, + #[schema(strings(display_name = "Pico 4"))] + Pico4, Vive, Custom { serial_number: String, From 96b163a84685f98959cfef35dd4c0cf507705bd0 Mon Sep 17 00:00:00 2001 From: Deandre Date: Wed, 10 Dec 2025 18:04:27 -0800 Subject: [PATCH 2/2] Update props to match controllers --- alvr/server_openvr/src/props.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alvr/server_openvr/src/props.rs b/alvr/server_openvr/src/props.rs index 354ccdab05..40eeee7799 100644 --- a/alvr/server_openvr/src/props.rs +++ b/alvr/server_openvr/src/props.rs @@ -293,8 +293,8 @@ pub extern "C" fn set_device_openvr_props(instance_ptr: *mut c_void, device_id: set_oculus_common_headset_props(); } HeadsetEmulationMode::Pico4 => { - set_prop(TrackingSystemNameString, "pico"); - set_prop(ModelNumberString, "Pico 4"); + set_prop(TrackingSystemNameString, "vrlink"); + set_prop(ModelNumberString, "PICO 4"); set_prop(ManufacturerNameString, "ByteDance"); set_prop(RenderModelNameString, "generic_hmd"); set_prop(RegisteredDeviceTypeString, "pico");