Open mmorselli opened 5 years ago
The easiest (perhaps only) way to achieve this, is via a "hook" driver that hooks TrackedDeviceAdded and changes the the device type before calling the original TrackedDeviceAdded.
Thank you. I was hoping for a more straightforward path, but I will take a look.
Do you know which properties SteamVR checks to decide it is a GenericTracker?
AFAIK, the decision is made when TrackedDeviceAdded is called by the driver.
Doing the same kind of thing:
@mmorselli There is a more simple way, there is an HTC utility called "ViveTrackerRoleChanger", that will change the firmware(?) of the tracker to make it report itself as a controller. It seems you need the 1.0 version for the older trackers and the 2.0 version for the newer trackers, both of which are very hard to find. It also seems that there may be some difficulty in doing the reverse (change tracker back to tracker), so do some research first.
For my UC, the hook works perfectly, and the utility wouldn't help me as I need to change the type to 'base station'.
I changed the role of a Vive Tracker in order to be detected as a controller. While the properties mimic those of a controller, the device class is still read as a tracker
vr::VRSystem()->GetTrackedDeviceClass(id)
returns _TrackedDeviceClassGenericTracker
this causes issues with some applications (e.g. Beat Saber)
so, my question is:
is there a way to programmatically override the device class with _TrackedDeviceClassController ?
or, alternatively, what could be wrong with the device properties?