Hi Everyone. At GTC 2024 some NVIDIA employees presented their thoughts on tools and tips from experiences they’ve had deploying CloudXR in the wild availble here to stream:
https://www.nvidia.com/en-us/on-demand/session/gtc24-s62465/ Because there’s lots of good stuff in there, @AndreusNvidius and I want to callout some of the resources in a clickable or copy-pasteable form:
For both securing connections and simplifying open ports, consider a VPN like WireGuard:
- Following is an Ansible script and example/tutorial
For keeping an up-to-date copy of SteamVR, consider using SteamCMD:
- Download: SteamCMD - Valve Developer Community
- Command-line tool (can be scripted)
- Anonymous login allowed for SteamVR app id 250820
- Microservice idea: check for SteamVR update once a [period], download, upload to private bucket, sync to instance images as needed
Consider the Parsec Cloud Prep Tool: A collection of PowerShell scripts that show how to do a number of needed tasks for CloudXR instances.
- Get the right vGPU drivers for many of the popular CSP’s
- Disable a number of Windows Server features you don’t want (in scripts!)
- Enable auto-login
- Disable GPU devices created by Microsoft Remote Desktop (RDP)
- Enable “the right” GPU for the automatically logged in Desktop
- And more
- GitHub - parsec-cloud/Parsec-Cloud-Preparation-Tool: Launch Parsec enabled cloud computers via your own cloud provider account.
PowerShell. Because it’s always available on Windows, there’s tons of examples like the Parsec Cloud Prep Tool above, and you can do almost anything you need to in a readable and maintainable codebase.
USB over IP tools. If you’re trying to stream to a flight simulator rig or something else with a ton of USB peripherals that need to talk an application on your server, you can use USB over IP to accomplish this. It applies more to situations where you control the VR headset and its operating system, unless you do the significant amount of coding work to add the USB-over-IP stack to your client application.
-
Virtual Here https://www.virtualhere.com/
- Demonstrated success with, e.g., connecting a USB joystick to a Quest 2 HMD directly and playing Microsoft Flight Simulator 2020.
- Servers (used on the CloudXR client side to “serve” USB devices to the CloudXR server) and Clients available for most platforms
- Licensing model not suitable to service deployment.
-
usbipd-win project GitHub - dorssel/usbipd-win: Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.
- Since Microsoft moved WSL2 to a full VM, Microsoft supports/maintains for connecting peripherals from Windows to Linux
- Works with standard usbip (part of Linux kernel ecosystem)
Instance-local storage tools
-
Powershell scripts (sorry, you’ll have to search) for initializing and formatting local SSDs when an instance comes online
-
Rclone + WinFSP to mount almost anything networked as a local drive
- Rclone: https://rclone.org/
- WinFSP https://winfsp.dev/
-
Imdisk for RAM drives
Package managers to help when building/testing/maintaining servers/images
- WinGet Use the winget tool to install and manage applications | Microsoft Learn
- chocolatey Chocolatey Software | Installing Chocolatey
MDM - Mobile Device Management: if you manage Android based VR devices, an MDM will save considerable time managing them.