VR & AR

Quest Tools

QuestTools

Quest development often requires a lot of adb command line usage. To simplify my workflow I created Unity Editor bindings for some of the more commonly used options. The only requirements are:

  • Having your Quest set up in Development Mode.
  • Be using a Windows machine.
  • Have installed Android Studio and at least one version of the Android SDK (Quest is currently on 7.1, I recommend using that).

This photo is self-explanatory for supported features, but you can delve into the code if you’re curious about how I’ve implemented the bindings. The gist of it is that a new process is spawned with every command sent to the device using adb.exe, and cleaned up once the command is complete. Screen mirroring works by spawning a process using scrcpy.exe from the scrcpy library mentioned in the notes section below. Note that this code by default currently works with only one headset connected to the computer as I imagine most developers are not using more than one headset for prototyping yet. If there is significant interest for multi-device support I’ll add it in.

QuestTools interface

Import this project an Editor folder at the root level of your Assets direcotry in your project to use it. Make sure the path appears as Assets/Editor/quest-tools. It will then appear in the top toolbar under Oculus Quest. If you have any suggestions on features you’d like to see added (or if you run into any bugs), please post an issue.

A few notes

  • Huge thank you to Genymobile for creating the scrcpy library that is used for screen mirroring.
  • If you wish to build your project with more options than just being a development build, please go through Unity’s Build Settings and not QuestTools.
  • The console output is displayed in a window for convenience.
  • Application.persistentDataPath in Unity returns the /storage/emulated/0/Android/da/storage/emulated/0/Android/data/ta/%packagename%/files/ folder on device. Files are automatically uploaded into this folder, and List Files returns its contents.
  • I’ve put in a few checks to squash most potential avenues of bugs, but I’m sure I forgot a few. If you manage to break the interface please let me know and I’ll patch that issue.
  • If they don’t yet exist, a Build, DeviceFiles, DeviceFiles/Videos/ and Logs folder are generated in the root of your project. Builds, downloaded device files, recorded mirroring videos, and device logs are saved there respectively.
  • Scenes added to the build are taken from the current selected scenes in Unity’s Build Settings.