How to Power Off Basestations remotely?



Sadly my DAS 3D printed adapters broke on the hinges, I’m waiting for a new one, so I couldn’t really test it much :slight_smile:
My guess is too many wakeup/ping commands are failing and due to the basic looping too much time passes in between and they go into standby.
I’ve just added a console log output window (very challenging but funny) so you are not left in the dark running the exe and can also copy and send me the log for debugging.
Now I’m moving the discovery and the bs1 and bs2 loops in their own thread.
Let’s see if it’s improving.

I really hope the Pimax guys are reading this and can implement these basic commands in Pitool.
It’s quite a pity, to implement the wakeup it’s a 10 minutes job and there wouldn’t be any need to run it via an external script.
If the Base Stations are being pinged by the script they somehow depend on it for stating awake even with Pitool running, doesn’t make sense.


Piservices are running. Pitool just is the interface to make changes.


The better version of the DAS adapter is the one that clips on pimax hinges for cloth strap vs tge one that clips on both.

@Skynet sent me a set of both styles when @Davobkk had his Studioform contest.


@Heliosurge Yes I actually call all the Pimax software generically Pitool :smile:

I purchased the Pimax second hand with the DAS and the adapter was included, bad PLA.

I’m waiting for this one made with hard PETG (supposedly):

Is this the version you were referring?


The Petg should be better for Strength vs pla.

I think Skynet said he printed with ABS.

This is the @g-coded slide on version that uses the cloth strap hinge.

I believe ones I received were v1 or v2.


No i printed the one i made for you and me with PLA. Don’t ask me if this was a wise decision i really don’t know enough about the different materials but so far for my purposes PLA was good enough for me.
All i know is PLA really doesn’t like heat so don’t leave it in your hot car and don’t wash it under hot water… else you might have a little surprise. PETG should be a bit better than PLA in this regard.


Limited knowledge here but: PETG is way better than PLA, that I know for sure.
Not only temperatures (55 vs 80 celsius?) but especially strength and hardness, also doesn’t take moisture, etc etc.
I broke my adapters just pulling the headset off too vigorously :stuck_out_tongue:
ABS goes up to 100 degrees and it’s even harder but is also stiff and less flexible.
I think being that hard an excessive force could easily break the Pimax hinges which is not nice at all.

About the design: is it better this V3 slide over hinges than the one I ordered?


Ah cool. How does PLA Pro/plus stand up? Supposed to be much improved over standard pla.


Not sure. The slide over has the Benefit though of attaching to the OEM hinges.


@Heliosurge Interesting, didn’t even know the existence of PLA Pro/+ :smile:
I recently printed a case on 3DHub and I don’t remember it being offered.

But from a reddit post in 3dprinting:

When would I use PETG? 1) if I needed a part that was going to be in a heat range that PLA can’t handle. (North of 50c), 2) if I needed some transparency in a print, 3) if I needed a part to be stronger than PLA+. 4) if I need a part relied upon friction to interface with other parts.

Seems for this specific use case PETG it’s still better!
Strength and friction are crucial factors.


I printed my vive DAS adaptors from PLA and with almost daily use 4 months later no issues with reliabiliity/strength. Just my 2cents.


Which adapter Drcube or the Gcoded slip overs?

The DrCube was nice but both sides broke that clipped on Rod.


Drcube I guess because it is clip-on rather than slip-on . Not all PLA is created equal, and it becomes brittle over time if spool left in shelf too long. I actually put strain on my clips when I pick up the pimax from the DAS inself but never an issue.


The ones Skynet sent me were good til one side snapped. The other side broke easy removing it to use the Gcoded slide overs.

But yeah PLA is made from a variety of makers & strength could vary.

I think due to size a resin printer would likely give much better quality for this kind of mod.


Normally there is no interaction between PiTool and the BS. So it should not depend on PiTool either. What could happen, but I cannot confirm it at the moment, if SteamVR tries to run the same control over the BT as it does for example for Vive or Index. It should not, but if it does it could disturb the comm with the tool.

If it drops the tracking, it means that the BS did not get the “live” ping in the time and went to stand-by. This can be possibly tweaked by @ManniX.

On my implementation I was pinging the BSes every 20 sec, and set the BS timeout to 60 sec. On top of that, I could also do up to 3 attempts to connect (if the first connection failed for whatever reason) and it also seemed more stable when I disconnected before going to sleep. Never had a problem with dropped tracking.

But I am running it from RPi over its native BT modem, so I cannot really confirm this will work the same way on Windows.

I am usually closing PiTool once the headset is running, I can probably keep it running, but I always thought the less things run in the background the better. But you have a point that if Pimax implements it in PiTool that could be a reason, to keep it running.

But there are already at least two Pimax background processes (and one service) running in the background, one directly monitoring the headset (pi_server), which I guess should be a better adept for the BS control (configuration will be done in PiTool though - as with anything else).


@risa2000 Thanks for the tips about your implementation. Due to my limited testing not showing issues I left the default 30 seconds found in the original script from @TheMalkavien.
I’m going to put the timeout as configurable option in the .ini file.
Do we know the max timeout value that is accepted via the ble command?

The thread pooling the BS will keep track of the time at which the latest successful ping was executed and will attempt re-sending every 5 seconds until near the timeout is reached.
If the ping command can’t be delivered it will revert to wakeup and again to ping if the wakeup is successful.

As pointed out by @Heliosurge is very likely the piservice handling the communication with the HS and its BT module.
Don’t worry, we’ll not need to run Pitool in the background :slight_smile:

I don’t think SteamVR has any knowledge of the BT module in the HS.
The pi_server.exe is interacting with the BS, not only for pairing and tracking; they are put into standby once the HS goes into standby as well and they don’t if Pitool is not running.

pi_server is also pinging with keepalive the BS, for whatever reason @PimaxUSA just didn’t implement the basic wakeup/standby commands…

You can find the pvr_srv_log_* files in %appdata%…\Local\Pimax\runtime folder:

[19-09-07 01:59:00][PSRV] lightHouse:53DC330F16: Triggered keepalive (succeeded)
[19-09-07 01:59:00][PSRV] lightHouse:53DC330F16: Packet received after 0.150s, keepalive (0/1)

They can also query the mode and identify the B station:

[19-09-07 00:41:33][PSRV] prop:Prop_ManufacturerName_String:HTC
[19-09-07 00:41:33][PSRV] prop:Prop_ResourceRoot_String:htc
[19-09-07 00:41:33][PSRV] prop:Prop_ModeLabel_String:B
[19-09-07 00:41:33][PSRV] prop:Prop_ModelNumber_String:HTC V2-XD/XE
[19-09-07 00:41:33][PSRV] prop:Prop_RenderModelName_String:lh_basestation_vive

Hope with the BT analyser I can find it out how and stop pinging the passive BS.

But really, huge thumbs down to @PimaxUSA for this.
I’m having fun coding in Python after so many years but it’s all quite pointless!


Yes the timeout have an arbitrary value of 30 seconds.
But I have set the delay between two pings to timeout/2, because why not… And to have enough time to re-ping in case of errors.
These values worked fine for me, but may need to be adjusted to each situation. I’ve backed up to my poc as I dont have any problems with it.

As you say, all this wonderful work is pointless if not used by the official tool, as a not mandatory module, community add-on or whatever. Waiting Pimax, and the Opensource version of pitool.


Also, you can use acetone to bond the layers together, which will make it stronger and smoother. My friend with a 3D printer just quickly brushes on a thin layer (outdoors, to avoid fumes).


S*it have to remove this now, played In Death on a Challange and ever 30sec or so it turn off the basestations and after 5-10sec they started again :frowning:


The new 1.3 version should work pretty well, I hope :smile:
Tested an half hour and the behavior is much different, my BS never goes into Standby now even if I remove the HS, move it out of tracked area, etc. I hope means good!
Let me know, check the README on GitHub

@risa2000 also added the short timeout Standby command as suggested! :+1:

If it doesn’t work I’ll have to check next week; I’m on a business travel till Tuesday.
But my colleague will bring me a BT sniffer, not “the beast” but hope good enough to catch how to query the BS mode.

Good luck