Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could not get interface from native SteamVR driver - likely version mismatch. SteamVR error code: 105 #11

Closed
HRZaheri opened this issue Jun 3, 2016 · 6 comments

Comments

@HRZaheri
Copy link

HRZaheri commented Jun 3, 2016

Hi!
with the new update for steamVR, the interface to vive seems to be broken.
is there any known solution for this at the moment?

@her001
Copy link
Contributor

her001 commented Jun 4, 2016

I made a pull request that should fix it, would you like to test? I don't have a Windows machine to test on. #12

It broke as part of the OpenVR 0.9.21 release:

  • Added provider method GetInterfaceVersions. This contains all the version numbers of the other interfaces in the driver. Drivers should return vr::k_InterfaceVersions from the version of openvr_driver.h that they were compiled against.
  • GetTrackedDeviceDriver and FindTrackedDeviceDriver no longer take an interface version. The caller will expect the version of the interface returned in GetInterfaceVesions()

It seems unlikely that my patch will be merged as is (see this comment), but it should allow SteamVR to work now.

@rpavlik
Copy link
Member

rpavlik commented Jun 4, 2016

It actually broke before then, that release didn't contain the fixed
version for Windows iirc. It will take a bit of digging to see if the
latest available headers match the most recent drivers, until then all I
can suggest is using the 123412341234 "beta" of steamvr (actually an older
version) to at least copy the lighthouse driver file from, to swap in when
needed. (Unless you feel up to contributing: need to basically run strings
and grep on the driver lighthouse file, which is easiest if you have git
installed since then you can just do it from git bash. Let me know if
you're interested and I'll dig up the script I used to extract the
interface versions from steamvr drivers and check them against headers)

On Fri, Jun 3, 2016, 8:56 PM Andrew Conrad [email protected] wrote:

I made a pull request that should fix it, would you like to test? I don't
have a Windows machine to test on. #12
#12

It broke as part of the OpenVR 0.9.21 release
ValveSoftware/openvr@35e6fd3
:

  • Added provider method GetInterfaceVersions. This contains all the
    version numbers of the other interfaces in the driver. Drivers should
    return vr::k_InterfaceVersions from the version of openvr_driver.h that
    they were compiled against.
  • GetTrackedDeviceDriver and FindTrackedDeviceDriver no longer take an
    interface version. The caller will expect the version of the interface
    returned in GetInterfaceVesions()

It seems unlikely that my patch will be merged as is (see this comment
#4 (comment)), but
it should allow SteamVR to work now.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#11 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADuybaLZFDymMBxydwOjKEMdUQt2BC5ks5qINtKgaJpZM4ItkPx
.

Ryan A. Pavlik, Ph.D.
CTO - OSVR Platform
Sensics, Inc.
www.sensics.com

Latest news and blog posts (subscribe here
http://sensics.com/subscribe-to-our-mailing-list/ go get weekly updates):

June 2: Sensics and Oasis VR create a unique network of VR facilities
http://sensics.com/sensics-and-oasis-vr-create-a-unique-network-of-vr-facilities/

June 1: VRguy podcast: CSO of Ergoneers on why eye trackers are expensive
http://sensics.com/vrguy-podcast-episode-13-dr-christian-lange-cso-of-ergoneers-on-eye-tracking/

May 27: How binocular overlap impacts horizontal field of view
http://sensics.com/how-binocular-overlap-impacts-horizontal-field-of-view/

@HRZaheri
Copy link
Author

HRZaheri commented Jun 4, 2016

@her001 thanks for the quick response, I tried your suggestion, but got a bunch of errors:

[ 78%] Building CXX object CMakeFiles/com_osvr_Vive.dir/com_osvr_Vive.cpp.o
../OSVR-Vive/DisplayExtractor.cpp: In function ‘int main()’:
../OSVR-Vive/DisplayExtractor.cpp:296:77: error: no matching function for call to ‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(unsigned int&)’
auto dev = vive.serverDevProvider().GetTrackedDeviceDriver(i);
^
../OSVR-Vive/DisplayExtractor.cpp:296:77: note: candidate is:
In file included from ../OSVR-Vive/DeviceHolder.h:32:0,
from ../OSVR-Vive/DriverWrapper.h:30,
from ../OSVR-Vive/DisplayExtractor.cpp:30:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual vr::ITrackedDeviceServerDriver* vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const char_)
virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t unWhich, const char *pchInterfaceVersion ) = 0;
^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate expects 2 arguments, 1 provided
[ 85%] Building CXX object CMakeFiles/ViveDisplayExtractor.dir/MonoPoints.cpp.o
[ 92%] Building CXX object CMakeFiles/ViveDisplayExtractor.dir/RGBPoints.cpp.o
make[2]: ** [CMakeFiles/ViveDisplayExtractor.dir/DisplayExtractor.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[100%] Building CXX object CMakeFiles/com_osvr_Vive.dir/OSVRViveTracker.cpp.o
make[1]: *** [CMakeFiles/ViveDisplayExtractor.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
../OSVR-Vive/OSVRViveTracker.cpp: In lambda function:
../OSVR-Vive/OSVRViveTracker.cpp:156:78: error: no matching function for call to ‘vr::IServerTrackedDeviceProvider::FindTrackedDeviceDriver(const char
&)’
m_vive->serverDevProvider().FindTrackedDeviceDriver(serialNum);
^
../OSVR-Vive/OSVRViveTracker.cpp:156:78: note: candidate is:
In file included from ../OSVR-Vive/VRSettings.h:31:0,
from ../OSVR-Vive/ServerDriverHost.h:29,
from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1523:38: note: virtual vr::ITrackedDeviceServerDriver_ vr::IServerTrackedDeviceProvider::FindTrackedDeviceDriver(const char_, const char_)
virtual ITrackedDeviceServerDriver* FindTrackedDeviceDriver( const char pchId, const char *pchInterfaceVersion ) = 0;
^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1523:38: note: candidate expects 2 arguments, 1 provided
../OSVR-Vive/OSVRViveTracker.cpp: In member function ‘bool osvr::vive::ViveDriverHost::start(OSVR_PluginRegContext, osvr::vive::DriverWrapper&&)’:
../OSVR-Vive/OSVRViveTracker.cpp:199:73: error: no matching function for call to ‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(unsigned int&)’
m_vive->serverDevProvider().GetTrackedDeviceDriver(i);
^
../OSVR-Vive/OSVRViveTracker.cpp:199:73: note: candidate is:
In file included from ../OSVR-Vive/VRSettings.h:31:0,
from ../OSVR-Vive/ServerDriverHost.h:29,
from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual vr::ITrackedDeviceServerDriver
vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const char_)
virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t unWhich, const char *pchInterfaceVersion ) = 0;
^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate expects 2 arguments, 1 provided
../OSVR-Vive/OSVRViveTracker.cpp: In member function ‘std::pair<vr::ITrackedDeviceServerDriver_, bool> osvr::vive::ViveDriverHost::getDriverPtr(uint32_t)’:
../OSVR-Vive/OSVRViveTracker.cpp:591:77: error: no matching function for call to ‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t&)’
m_vive->serverDevProvider().GetTrackedDeviceDriver(unWhichDevice),
^
../OSVR-Vive/OSVRViveTracker.cpp:591:77: note: candidate is:
In file included from ../OSVR-Vive/VRSettings.h:31:0,
from ../OSVR-Vive/ServerDriverHost.h:29,
from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual vr::ITrackedDeviceServerDriver* vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const char_)
virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t unWhich, const char *pchInterfaceVersion ) = 0;
^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate expects 2 arguments, 1 provided
make[2]: *_* [CMakeFiles/com_osvr_Vive.dir/OSVRViveTracker.cpp.o] Error 1
make[1]: *** [CMakeFiles/com_osvr_Vive.dir/all] Error 2
make: *** [all] Error 2

@rpavlik also installed steamVR beta, still no luck.
basically, I'm trying to find the fastest solution to get the Vive tracking data on Ubuntu, I can start digging into this, but, if there's a better solution, would really appreciate if you could share.

@rpavlik
Copy link
Member

rpavlik commented Jun 4, 2016

Not the regular beta, the osvrsvvr "beta version" which is actually an
archived older release. That is definitely the fastest way to get going.

On Sat, Jun 4, 2016, 4:53 AM HRZaheri [email protected] wrote:

@her001 https://github.com/her001 thanks for the quick response, I
tried your suggestion, but got a bunch of errors:

[ 78%] Building CXX object CMakeFiles/com_osvr_Vive.dir/com_osvr_Vive.cpp.o
../OSVR-Vive/DisplayExtractor.cpp: In function ‘int main()’:
../OSVR-Vive/DisplayExtractor.cpp:296:77: error: no matching function for
call to ‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(unsigned
int&)’
auto dev = vive.serverDevProvider().GetTrackedDeviceDriver(i);
^
../OSVR-Vive/DisplayExtractor.cpp:296:77: note: candidate is:
In file included from ../OSVR-Vive/DeviceHolder.h:32:0,
from ../OSVR-Vive/DriverWrapper.h:30,
from ../OSVR-Vive/DisplayExtractor.cpp:30:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual
vr::ITrackedDeviceServerDriver*
vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const
char

) virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t
unWhich, const char *pchInterfaceVersion ) = 0; ^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate
expects 2 arguments, 1 provided [ 85%] Building CXX object
CMakeFiles/ViveDisplayExtractor.dir/MonoPoints.cpp.o [ 92%] Building CXX
object CMakeFiles/ViveDisplayExtractor.dir/RGBPoints.cpp.o make[2]: *
*
[CMakeFiles/ViveDisplayExtractor.dir/DisplayExtractor.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[100%] Building CXX object
CMakeFiles/com_osvr_Vive.dir/OSVRViveTracker.cpp.o
make[1]: *** [CMakeFiles/ViveDisplayExtractor.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
../OSVR-Vive/OSVRViveTracker.cpp: In lambda function:
../OSVR-Vive/OSVRViveTracker.cpp:156:78: error: no matching function for
call to ‘vr::IServerTrackedDeviceProvider::FindTrackedDeviceDriver(const
char

&)’ m_vive->serverDevProvider().FindTrackedDeviceDriver(serialNum); ^
../OSVR-Vive/OSVRViveTracker.cpp:156:78: note: candidate is: In file
included from ../OSVR-Vive/VRSettings.h:31:0, from
../OSVR-Vive/ServerDriverHost.h:29, from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1523:38: note: virtual
vr::ITrackedDeviceServerDriver

vr::IServerTrackedDeviceProvider::FindTrackedDeviceDriver(const char_,
const char_)
virtual ITrackedDeviceServerDriver* FindTrackedDeviceDriver( const char

pchId, const char *pchInterfaceVersion ) = 0; ^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1523:38: note: candidate
expects 2 arguments, 1 provided ../OSVR-Vive/OSVRViveTracker.cpp: In member
function ‘bool osvr::vive::ViveDriverHost::start(OSVR_PluginRegContext,
osvr::vive::DriverWrapper&&)’: ../OSVR-Vive/OSVRViveTracker.cpp:199:73:
error: no matching function for call to
‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(unsigned int&)’
m_vive->serverDevProvider().GetTrackedDeviceDriver(i); ^
../OSVR-Vive/OSVRViveTracker.cpp:199:73: note: candidate is: In file
included from ../OSVR-Vive/VRSettings.h:31:0, from
../OSVR-Vive/ServerDriverHost.h:29, from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual
vr::ITrackedDeviceServerDriver

vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const
char

) virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t
unWhich, const char *pchInterfaceVersion ) = 0; ^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate
expects 2 arguments, 1 provided ../OSVR-Vive/OSVRViveTracker.cpp: In member
function ‘std::pair<vr::ITrackedDeviceServerDriver
, bool>
osvr::vive::ViveDriverHost::getDriverPtr(uint32_t)’:
../OSVR-Vive/OSVRViveTracker.cpp:591:77: error: no matching function for
call to
‘vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t&)’
m_vive->serverDevProvider().GetTrackedDeviceDriver(unWhichDevice),
^
../OSVR-Vive/OSVRViveTracker.cpp:591:77: note: candidate is:
In file included from ../OSVR-Vive/VRSettings.h:31:0,
from ../OSVR-Vive/ServerDriverHost.h:29,
from ../OSVR-Vive/OSVRViveTracker.h:31,
from ../OSVR-Vive/OSVRViveTracker.cpp:26:
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: virtual
vr::ITrackedDeviceServerDriver*
vr::IServerTrackedDeviceProvider::GetTrackedDeviceDriver(uint32_t, const
char

) virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t
unWhich, const char *pchInterfaceVersion ) = 0; ^
../OSVR-Vive/vendor/openvr/headers/openvr_driver.h:1520:38: note: candidate
expects 2 arguments, 1 provided make[2]: *
*
[CMakeFiles/com_osvr_Vive.dir/OSVRViveTracker.cpp.o] Error 1
make[1]: *** [CMakeFiles/com_osvr_Vive.dir/all] Error 2
make: *** [all] Error 2

@rpavlik https://github.com/rpavlik also installed steamVR beta, still
no luck.

basically, I'm trying to find the fastest solution to get the Vive
tracking data on Ubuntu, I can start digging into this, but, if there's a
better solution, would really appreciate if you could share.


You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub
#11 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AADuydUnB1eNN__VLME74zAXYzBumSZkks5qIUsLgaJpZM4ItkPx
.

Ryan A. Pavlik, Ph.D.
CTO - OSVR Platform
Sensics, Inc.
www.sensics.com

Latest news and blog posts (subscribe here
http://sensics.com/subscribe-to-our-mailing-list/ go get weekly updates):

June 2: Sensics and Oasis VR create a unique network of VR facilities
http://sensics.com/sensics-and-oasis-vr-create-a-unique-network-of-vr-facilities/

June 1: VRguy podcast: CSO of Ergoneers on why eye trackers are expensive
http://sensics.com/vrguy-podcast-episode-13-dr-christian-lange-cso-of-ergoneers-on-eye-tracking/

May 27: How binocular overlap impacts horizontal field of view
http://sensics.com/how-binocular-overlap-impacts-horizontal-field-of-view/

@her001
Copy link
Contributor

her001 commented Jun 4, 2016

@HRZaheri How did you apply my patch? It looks like the OpenVR headers might not have updated for you. In order for my PR to work, you have to update the OpenVR submodule (which my branch includes).

Edit: You may want to not use my patch and use the older SteamVR "beta" (v1464744840) as suggested by @rpavlik.

@rpavlik
Copy link
Member

rpavlik commented Sep 27, 2016

This was resolved with #15.

@rpavlik rpavlik closed this as completed Sep 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants