BSManager Ver 2.4.1 - Wakeup and sleep Base Stations auto with HMD

Thanks to @SparkerInVR for the patient testing!

Currently supports Pimax and Vive Pro HS.

  • v2.4.1

    • Fix: Bug in Run at Startup (watch out the AutoUpdater is impacted as well, you may need to update manually!)
  • v2.4.0

    • New: Toast for BS commands progress (so you know if it’s actually doing something), can be disabled from Help and Info Dropdown menu
    • New: Notifications and BLE errors improvements
    • New: Run at Startup executable path will be replaced with the current if different from registry (avoid startup of an old version)
    • New: Moved from .NET 5 to .NET Core 3.1 (less memory requirements, more stable development environment); .NET install now self-contained (bigger file size)
    • New: Improved routine to kill processes
    • Fix: Support for HTC manufactured Base Stations v2
    • Fix: Added support for Pimax LightHouses DB
    • Fix: Bug in Run at Startup
  • v2.3.0

    • New: Option to automatically start & kill Pimax Runtime & close SteamVR components (reduces risk of SteamVR crashes)
    • New: Manage Runtime is an option that can be enabled in the System Tray Icon Dropdown Menu
    • New: Manage Runtime can be enabled if the Pimax Runtime is not in the default directory running only once BSManager with Admin privileges
    • New: Delayed Base Stations control; rebooting HMD or PiService will not trigger a Base Stations power off/on cycle
    • New: Customizable list for processes to be killed gracefully, default: “vrmonitor”, “vrdashboard”, “ReviveOverlay”, “vrmonitor” (twice in the list to repeat)
    • New: Graceful list can be customized using a “BSManager.grace.txt” file in the same directory of BSManager.exe, one process per line (will replace the default)
    • New: Immediate killing list (SIGTERM) can be customized using a “BSManager.kill.txt” file in the same directory of BSManager.exe, one process per line
    • Fix: Improved log files readability
  • v2.2.1

    • New: Unified BLE workflow for BS v1 and v2, no functional changes
  • v2.1.0

    • New: Background thread that will start and stop the BLE Advertisement watcher on demand
    • New: Reduced CPU usage from 0.01-0.02% to almost 0% in idle
    • New: Optimized memory usage, should be stable at about 65MB (Garbage collector every 10 minutes)
  • v2.0.0

    • New: Support for Base Stations v2
    • New: Removed discovery to use BLE Advertisement messages instead
    • New: Icon to display BS status, action pending
    • New: Switch to enable/disable Debug Log
    • Fix: Many fixes and code improvements
6 Likes

Small bugfix, released Ver 1.0.1

  • Introduced a wait of 2.5 seconds between BLE discovery cycles to wait for BLE adapter to be available at system startup
1 Like

If someone is interested in using it with the Base Stations v2 just let me know.
I just need to know with which name they are advertised in Bluetooth and a test with BLEConsole to see if the commands are right to wakeup & sleep.

1 Like

Found an old log sent by a tester with the BS v2 BT names so I’ve blindly added support for v2.
Let me know if it works if you test it.

2 Likes

Thanks, I’ll give it a test with my two v1’s

Regards
Fred

2 Likes

I will soon release a new BSManager version.
Lots of fixes and improvements of course.

What I’m developing now is the Voice Manager function.
It’s a voice assistant; the main focus is obviously to cover what you need while in VR.

I have a racing cockpit and it’s very annoying to do anything with the HeadSet on.
With OVR Toolkit it’s easier to manage some stuff but the main issue is that I only have the racing wheel at hand.
Just trying to find where the controllers or the keyboard are, it’s a long and painful effort.

What about restarting Pitool and SteamVR cause something is messed up?
A tragedy for me, I have to remove the HeadSet, exit the cockpit (it was easier 10 years ago, now I risk a muscle contraption every time…), go to the desk and then back again.

I got the inspiration from the amazing CrewChief which is using the Windows Speech to text libraries.
The problem is that the Windows Speech to Text engine is awful, it doesn’t understand half of what you say.
Especially when racing with the HeadSet and the audio strap, either the HTC Deluxe or Pimax, the wakeword detection is almost useless and the commands detection extremely difficult.
The background noise from the engine running goes back into the microphone and it’s degrading the recognition effectiveness by tenfold.

What I’m going to use for the wakeword detection is PorcuPine; it’s extremely powerful with pre-trained NLP (Neural Language Processing) AI models and on-device, doesn’t need to stream your microphone in the cloud and the CPU usage is minimal.
Runs at 0.01-0.02% CPU usage while listening on my 5950x and up to 0.04% while recognizing the wakeword.
The limitation is the fixed and limited amount of wakewords available. But it’s not a concern considering the intended usage.
Unfortunately the “free usage” of PicoVoice is not at all clear; they have this sick and unprofessional 9,99$ store approach to marketing… shouldn’t have any other limitation on usage but I’m not 100% sure.

PicoVoice also have a “free” intent detection engine. Limited but would have been really nice considering is on-device and uses a very limited amount of CPU. But it’s not free at all.
Quite disappointing considering they claim it is.

Building my own intent detection engine would be too much effort and would need a proper free NLP Speech to Text engine.
The only one free is DeepSpeech from Mozilla but it’s in a quite awful state.
It doesn’t perform well with high background noise and requires a lot of CPU or GPU resources for processing.
This is not good for VR/gaming as you need your system snappy.

So my strategy is to first develop some basic intents (Phase 1) with the Windows Speech API.
I know it’s not going to work so well but it’s a first step and will provide some basic functionalities with zero effort from the user.

The real development will be with the Google Cloud Platform DialogFlow API.

Got the inspiration from OVR Toolkit.
You can configure the Speech To Text engine to GCP and it works amazingly.
The quality is, obviously, top notch and there’s no need for local resources.

The pricing for DialogFlow (Pricing  |  Dialogflow  |  Google Cloud) is quite risible, especially for someone with one or more expensive VR kit :slight_smile:
Considering the limited interaction you should have with the Voice Manager it’s probably going to cost one coffee per year…
The issue is that will require you to subscribe to GCP, create a project, enable DialogFlow, activate invoicing, etc
GCP is a techy thing and Google doesn’t have a “Cloud for the masses” approach.
But if you are really interested it’s nothing impossible. Easier than troubleshooting the most common Pimax HeadSet issues!

If you have use cases you think can be useful, let me know.

Phase 1 - Basic intents with Windows Speech API

What time is it?
Tells you the actual time

Restart Pitool
Restart Pitool and SteamVR

Recenter VR
Recenter VR headset

Voice assistant volume
Control volume level of the Voice Manger responses

Phase 2

Crewchief integration
Control Crewchief

Music
Foobar integration (possibly other players too, depends)

Switch active Window
Voice controlled switch of active Window (when in iRacing mouse control is lost…)

Phase 3

HW Monitoring
Reads temperatures from HWInfo

Discord
if possible integrate Discord

Racelabs
Maybe, companion tool for iRacing

Teamspeak
Maybe, I still use it sometimes

Cheers

1 Like