MilkJug1 / OculusLinkLinux

OLL(WIP) is a open-source project that aims to allow the Oculus Quest(both 1 & 2) work on Linux wired.
GNU General Public License v2.0
125 stars 2 forks source link

SteamVR Driver #22

Open MilkJug1 opened 1 year ago

MilkJug1 commented 1 year ago

SteamVR

Following the documentation of steamworks, and the gh page for openVR-sdk, which all of these resources are in the src/driver/README.md. Create a very basic--but working SteamVR driver, as we can use adb commands and adb stuff to handle everything related to sending data to receiving data from it.

Along with #17, we can use SteamVR to mainly handle everything when talking to the quest and PC, luckily the quest is already recognized as a USB device, but Linux doesn't really know what to do with it, then comes the adb stuff. We can use it as a way to send and receive data from the Quest to the PC, and also do some other stuff with it, which then the Quest Android app that I still need to work on, would deal with some of that.

The progress for it and other things relating to it, will be updated here.

MilkJug1 commented 1 year ago

Found some new resources to help with the devlopment of the SteamVR driver, 2 of them are already been pushed to the README file in the driver/ folder, but there are 2 extra ones that are still needed to be added.

Also, Steamvr has to build the driver as a library(.so for linux, .dll for windows), the issue with this I then have to set it to compile to a library, -shared flag in the makefile.

The issue is that the project/driver can't just regularly compile to a library, w/o some tinkering. Wondering if I can just make the already existing SteamVR cc files I have and just seperately compile them to then build into a seperate library. The reason for this is the error that I get from just regularly putting the -shared flag into the$(BINARY) section of the Makefile gives me this result:

/usr/bin/ld: src//main.o: warning: relocation against _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation' in read-only section .text._ZNSt8functionIFbcEEC2INSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEEvEEOT_[_ZNSt8functionIFbcEEC5INSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEEvEEOT_]' /usr/bin/ld: src//main.o: relocation R_X86_64_PC32 against symbol _ZSt4cout@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status

So thats off of the table for right now, I can just make as seperate variable to look inside of the driver./ dir and just compile those but idk yet.

Plus there is a whole folder structure for the driver in order for it to even be recognized by steamvr, this also includes already giving SteamVR the path to an external(local) driver, this is something that has to be set, I forget the file that handles it but its somewhere inside of the steamvr dir. Not only this, you have to already have multiple json files that handle the input, where the headset is detected, the bindings for the controller in order for any game to use it, plus some more. Now I could copy the existing stuff from the oculus folder inside of the steamvr driver folder that way I can reuse it, but hopefully I don't have to modify it in any way.