In Unreal 5.2 we changed the way the LiveLinkXR plugin receives its tracking data from VR hardware by switching to OpenXR as the VR runtime provider. This course was taken as part of a wider effort to narrow the codebase required for supporting VR across Unreal Engine.
Since then, and in subsequent releases we’ve received feedback that the User Experience for LiveLinkXR had regressed.
Parallel to this, we have been developing the Live Link Hub application - its intended purpose, to make animation streaming easier, more configurable and also to work with UEFN.
In UE 5.5 we have chosen to make a new Plugin that will improve the user experience for users of LiveLinkXR.
This new plugin is called “LiveLinkOpenVR”.
On the surface the interface is exactly the same as LiveLinkXR. The main difference is it only works with the SteamVR runtime.
It supports VR tracking in multiple applications at the same time - meaning you can use, for example, Live Link Hub for tracking and still render to your headset with UE. This has great potential for digital puppetry workflows and indie mocap. LiveLinkOpenVR works with Live Link Hub, so you can now stream VR tracking into UEFN too.
We will continue working towards providing the same functionality with OpenXR, which will make it possible to use any OpenXR runtime for Live Link and Live Link Hub.
With the LiveLinkOpenVR plugin, you can add the LiveLinkOpenVR Input as a subject. How can I actually get the controller input data? It looks like I specifically want the live link input device frame data, as its an available struct node in the Blueprint editor, but I’m having trouble finding some sort of event to read to actually get the input data when it’s recieved.
I tested this again recently with Steam VR version 2.12.24 and Unreal 5.6.1 and could not replicate the issue cited above. Using the Steam Link app from my Quest 3 I was able to get controller and HMD data into Live Link as expected.
Presumably there was a regression in a previous version of Steam VR that has now been fixed.
[2025.09.22-14.05.57:313][918]LogLiveLinkOpenVR: Error: IVRInput::Get*ActionData for ‘LeftAnalog_2D’ failed with result 13
[2025.09.22-14.05.57:313][918]LogLiveLinkOpenVR: Error: IVRInput::Get*ActionData for ‘RightAnalog_2D’ failed with result 13
[2025.09.22-14.05.57:314][918]LogLiveLinkOpenVR: Error: IVRInput::Get*ActionData for ‘SpecialLeft_2D’ failed with result 13
Tested a Controller connected to a Bluetooth Dongle without a Headset, tested a Controller with an Index, still always the same issue. Not quite sure what I’m doing wrong.
Are there any other settings I’m missing? I even tried a very old OpenVR Inspector, and it shows the buttons received correctly. Tracking data is also correctly received.
EDIT:
After some experimenting I somehow got the frame data to show up in the livelink hub now. I have no idea what changed, but will see if I can get it to work with a nulldriver now.
EDIT2:
Okay, this is reeeeeaaally instable: At first, the null driver was not working whatsoever, even though it showed the input being triggered in the SteamVR Controller Settings. What did work in the end was starting SteamVR with my controller being on, then starting livelinkhub and adding the subject. Suddenly I had input, will investigate this a bit further, but it’s a bit sketchy…
@Rich_Graham I investigated this a bit further, and at least on my PC the following happens:
If I have SteamVR running first with an active controller, then add the livelink source, I receive no input.
If I, however, start the livelink source first, then start SteamVR, I get input information. I’ve recorded a video that shows this:
I have no clue how and why that happens, and if it is just on my end… The same occurs when using an actual headset connected.