protonscr

Base station power management - any workaround?

steamvropen bug
ValveSoftware/SteamVR-for-Linux#320 · opened 2020-03-29 by vittorioromeo · updated 2026-02-23 · 27 comments · github
Vvittorioromeo 2020-03-29 github

Follow up from #319. The README rightfully says:

Power management of base stations is not currently implemented

Since I use base station power management on my Windows partition, if I want to use SteamVR on my Linux partition I have to:

  • Boot into Windows
  • Disable power management
  • Ensure the base stations are running
  • Boot into Linux

When I am done SteamVR on Linux and I want to turn off the base stations, I have to:

  • Boot into Windows
  • Enable power management
  • Ensure the base stations are turned off

As you can imagine, this process is very tedious, especially if I am developing something which needs to be tested constantly on both OSs, and if I want to minimize the base station noise to be respectful to other people sharing my living space.

Is there any workaround to enable/disable the base stations directly from Linux? I have tried using bluetoothctl as described in #319, but the base stations always failed to pair with error Failed to pair: org.bluez.Error.AuthenticationTimeout..

Has anybody figured out a way to manually control the base stations' power from the command line?

DDerRidda 2020-03-29 github

The base last base stations will go into power save mode as soon as the second to last base station turns off.

So back when I was still on the HTC Vive with two base stations I always unplugged the one closest to me. On Index where I run four base stations that's not nearly as convenient anymore.

So as long as you run only 2 base stations, unplug the one closest to you or get a power strip with a switch on it and hit that.

It's not pretty or very convenient but the best reliable way there is.

ZZamundaaa 2020-03-29 github

There is a project that implements v1 base stations power management: https://github.com/risa2000/lhctrl
I've never used it myself (since I now have the v2 base stations) so I can't say if it actually works though.

Mmmcnutt 2020-03-30 github

I have my lighthouses connected to a tplink hs100 smart plug - I either power them back up with a shell script or from the app on my phone

?ghost 2020-04-02 github

There is a project that implements v1 base stations power management: https://github.com/risa2000/lhctrl
I've never used it myself (since I now have the v2 base stations) so I can't say if it actually works though.

Thanks for this! I'm running the v1 stations, and it works just fine. You'll want to grab bluepy, and run the script like so:
python3 lhctrl.py -b [ID] --lh_b_mac [MAC]

I usually also run it with -v.
I couldn't properly work out if the script wanted the lighthouse physically designated as B on the device, or the one in mode B. Probably the latter, but I just made those match up, running lighthouse B in mode B.

The ID is printed on the lighthouse, and I used blueman to grab the mac address. To figure out which lighthouse is which, I unplugged one, paired to the other in blueman, then marked down which it was by setting a custom name in the gui.

For clarity on what that script does, because it took me a bit of processing: When you run it, it's sending keepalive pings every so often (20 seconds by default). When the script stops, it shuts the stations off. So run the script while you're using them, stop it when you're done.

TTysonChickens 2020-05-16 github

Thanks to brunfunstudios and prefiks for his script for turning on/off the base stations automatically when SteamVR is launched or closed. This is decent workaround and one step closer for a flawless VR experience on Linux.

PPatola 2020-12-11 github

Hi, these solutions work as long as there are only 2 base stations. However I bought a new V2 base station and now SteamVR says there are multiple devices using channel 1, so apparently for the new base station to work properly on SteamVR I need to configure it to channel 3 or whatever. BUT as SteamVR for Linux currently does not even have a bluetooth section, what should I do? Maybe I can use python3's ble code to set something on the station? I am not well versed in the BLE protocol. I do not have windows to dual-boot and set the channel of the third base. I also tried starting SteamVR with the base connected via an USB cable, no dice.

TTiagoTiago 2020-12-11 github

I think the 2.0 have a pin button somewhere (probably in the back) to change channels

TTheDrawingCoder-Gamer 2021-12-28 github

necromancing this; I have no idea how to find my mac address... even switching to my windows partition I have no idea; it's almost impossible to find the correct device; the Lighthouse FPGA RX device doesn't have a mac address so it isn't very helpful

TTheDrawingCoder-Gamer 2021-12-28 github

oh i did find them; silly me; the other issue I have is directly related to lhctrl so I will make an issue there

TTheDrawingCoder-Gamer 2021-12-28 github

No I still don't fully understand... How did you find it? I have my HTC Vive plugged in but it is failing to connect

Yyaomtc 2023-06-13 github

SteamVR finally has more Bluetooth functionality. Firmware update isn't working for me yet, but power management does.

Ccaseif 2023-08-18 github

Can confirm power management is working on my system as well. If the feature has now been implemented, can this issue be closed?

Ddigitalcircuit 2023-08-29 github

Alas, even with the SteamVR beta 1.27.3, Bluetooth power management still seems to be broken on my Kubuntu 22.04 system with an HTC Vive and Base Stations 1.0. Refreshing (or rescanning) seemingly does nothing.

Screenshot of the SteamVR "Base Station Power Management" window showing a connection failure to two 1.0 base stations

The lighthouses are on the latest firmware version, too - version 436.

Tue Aug 29 2023 19:29:57.072981 [Info] - [Bluetooth Controller] BaseStation Controller Init.
Tue Aug 29 2023 19:29:57.072998 [Info] - [Bluetooth Controller] Radio features: 0x00000001
Tue Aug 29 2023 19:29:57.073111 [Info] - [Bluetooth Controller] Setting system inactivity timeout to 60 minutes.
Tue Aug 29 2023 19:29:57.073165 [Info] - [Bluetooth Controller] Activate BaseStation Controller.
Tue Aug 29 2023 19:29:57.075590 [Info] - [Bluetooth Controller] Power Management: LHB-F1XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:29:57.075612 [Info] - [Bluetooth Controller] Power Management: LHB-D7XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:29:57.078342 [Info] - [Bluetooth Controller] Updated Base Station LHB-D7XXXXXX (Index:1)
Tue Aug 29 2023 19:29:57.078574 [Info] - [Bluetooth Controller] Updated Base Station LHB-F1XXXXXX (Index:2)
Tue Aug 29 2023 19:29:57.253675 [Info] - [Bluetooth Controller] Power Management: LHB-D7XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:29:57.253687 [Info] - [Bluetooth Controller] Radio Property Query: LHB-F1XXXXXX
Tue Aug 29 2023 19:29:57.253708 [Info] - [Bluetooth Controller] Power Management: LHB-F1XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:29:57.254753 [Info] - [Bluetooth Controller] OnWorker_BaseStationReadProperties (Failed) (0.00 seconds)
Tue Aug 29 2023 19:29:57.269851 [Info] - [Bluetooth Controller] LHB-F1XXXXXX, HardwareID:0x09000009 Radio:0 MCU:0 Bootloader:0
Tue Aug 29 2023 19:30:14.079117 [Info] - [Bluetooth Controller] Power Management: LHB-F1XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:30:17.387014 [Info] - [Bluetooth Controller] OnWorker_BaseStationScan "HTC BS" (Failed) (0.00 seconds)
Tue Aug 29 2023 19:30:18.129742 [Info] - [Bluetooth Controller] OnWorker_BaseStationScan "HTC BS" (Failed) (0.00 seconds)
Tue Aug 29 2023 19:35:35.316293 [Info] - [Bluetooth Controller] Power Management: LHB-F1XXXXXX, Not Detected, Operation:On, Result:Fail.
Tue Aug 29 2023 19:35:35.316319 [Info] - [Bluetooth Controller] Power Management: LHB-D7XXXXXX, Not Detected, Operation:On, Result:Fail.
Operating System Version:
Ubuntu 22.04.3 LTS (64 bit)
Kernel Name: Linux
Kernel Version: 6.2.0-31-generic
X Server Vendor: The X.Org Foundation
X Server Release: 12101004
X Window Manager: KWin
Steam Runtime Version: steam-runtime_0.20230606.51628
Video Card:
Driver: AMD AMD Radeon RX 5600 XT (navi10, LLVM 15.0.7, DRM 3.49, 6.2.0-31-generic)
Driver Version: 4.6 (Compatibility Profile) Mesa 23.0.4-0ubuntu1~22.04.1
OpenGL Version: 4.6
Primary VRAM: 6144 MB

VR Hardware:
Headset: HTC Vive. MV (lighthouse)
Base station or sensor: HTC HTC V2-XD/XE (lighthouse)
Base station or sensor: HTC HTC V2-XD/XE (lighthouse)

Let me know if there's any other details that would help!

NNullmatic 2023-09-26 github

This seems to have been fixed in the newest SteamVR beta for 2.0. At least for me.

System Info:
Arch Linux (6.5.4-arch2-1)
KDE Wayland
Mesa (23.1.8-1)
CPU: AMD Ryzen 9 5900X
GPU: AMD Radeon 6950 XT

Ddigitalcircuit 2023-09-26 github

Unfortunately, the SteamVR beta 2.0.1 doesn't seem to fix my Base Stations 1.0s, as I have the same results as before.

The SteamVR beta at least didn't break anything else at first glance, either (asides from textures being flipped upside down and color-inverted for the new menus, I'll try to file a new bug soon), so that's a plus.

KKczBen 2023-11-30 github

Do we know what the official state of this feature is? I haven't seen it mentioned in any of the changelogs on Steam, and it seems everyone here has a slightly different experience with it, making it rather difficult to find a working solution.

My experience is closest to @digitalcircuit and I have a very similar hardware and software setup. Those who have it working, are you using Baste Station 1.0 or 2.0? What's your setup like?

Yyaomtc 2023-12-01 github

I'm using the Index base stations, which are 2.0 (with an Index headset) and SteamVR is able to handle power management of the base stations just fine.

Ccloutier 2024-02-16 github

I can also confirm it is now working on my end, where previously they would stay turned on.

PPatola 2024-02-21 github

I also confirm it's working for me -- SteamVR stable -- it's turning off all my 3 base stations after I quit SteamVR.

PPatola 2024-02-21 github

...and it also turns them on when SteamVR starts

KKczBen 2024-02-21 github

I'm assuming you're using Base Station 2.0s with an Index? It still doesn't work with 1.0s and a Vive on mine, neither on the beta nor stable branch.

PPatola 2024-02-22 github

I'm assuming you're using Base Station 2.0s with an Index? It still doesn't work with 1.0s and a Vive on mine, neither on the beta nor stable branch.

Yes, exactly. Sorry for not being clear on my equipment.

KKczBen 2024-02-23 github

Maybe if somebody with an Index has some V1 base stations around, that could be useful to test? I'm assuming the issue is with the communication between SteamVR and the link box's Bluetooth adapter, but it would be nice to make sure that V1 base stations can work. V2 devices are compatible with V1 stations, so that is theoretically a supported use case too.

RRabcor 2025-04-21 github

There is a project that implements v1 base stations power management: https://github.com/risa2000/lhctrl
I've never used it myself (since I now have the v2 base stations) so I can't say if it actually works though.

Thanks for this! I'm running the v1 stations, and it works just fine. You'll want to grab bluepy, and run the script like so: python3 lhctrl.py -b [ID] --lh_b_mac [MAC]

For v1 basestations this is a good way to do things.

I was helping my brother get his steamvr working on linux and I wrote this script for him to make it easier to work with, figured i'd share it here.

We make a script called vr-basestations and put the following in it:

#!/bin/bash

SCRIPT="/full/path/to/lhctrl.py"

ID1="Insert Basestation 1 ID here"
MAC1="Insert Basestation 1 MAC here"

ID2="Insert Basestation 2 ID here"
MAC2="Insert Basestation 2 MAC here


if [ "$1" == "--on" ]; then
    python3 $SCRIPT -b $ID1 --lh_b_mac $MAC1 &
    python3 $SCRIPT -b $ID2 --lh_b_mac $MAC2 &
    echo "Turning basestations on."
    notify-send "vr-basestations:" "on"
elif [ "$1" == "--off" ]; then
    pkill -SIGTERM -f "python3 $SCRIPT -b $ID1 --lh_b_mac $MAC1"
    pkill -SIGTERM -f "python3 $SCRIPT -b $ID2 --lh_b_mac $MAC2"
    echo "Turning basestations off."
    notify-send "vr-basestations:" "off"
else
    echo "Usage:
vr-basestations [option]

    --on        Turn basestations on
    --off        Turn basestations off"
fi

At the top there are 5 variables, you'll have to edit all of them according to what they currently say.

Once you've edited it, it should look similar to the following example:

SCRIPT="$HOME/Scripts/lhctrl.py"

ID1="6202F1BF"
MAC1="74:F6:1C:04:F3:61"

ID2="6D1478E2"
MAC2="74:F6:1C:04:F2:58"

Then make the script executable.

Once you've done all that, run the script with ./vr-basestations --on and see if it turns on your basestations. If it does then you can run ./vr-basestations --off to turn them off (may take up to a minute to turn off)

Once you verify it's all working, you can copy the file to /usr/bin/, after that you can run the script like any other program (so just vr-basestations --on from any terminal will turn ur basestations on)

Then to automate it for steam games, you set the game's launch options to this:

vr-basestations --on & %command%; vr-basestations --off 

And now when you launch that game, it'll turn on your basestations, and when you turn it off, it'll turn them off too.

Iisbelldl 2025-11-01 github

Maybe if somebody with an Index has some V1 base stations around, that could be useful to test? I'm assuming the issue is with the communication between SteamVR and the link box's Bluetooth adapter, but it would be nice to make sure that V1 base stations can work. V2 devices are compatible with V1 stations, so that is theoretically a supported use case too.

I'm currently running a Valve Index with two V1 base stations on Garuda (Arch) Linux using the Steam (Native) launcher. Base station power management is mostly functional. I often have a headset detection error on first launch, but unplugging & reconnecting the headset solves that. When it works, the base stations power up properly. The larger issue is getting the base stations to go back to sleep. I generally have to go into the base station power management window, & refresh all. As soon as both base stations are shown as detected, I quickly close the window & exit VR mode. Most of the time that works. Occasionally, I have to restart Steam VR & repeat the process a few times to get them to go to sleep. It's not ideal, but it's workable.

KKoli0842 2026-02-22 github

Hey! I am using an android app to toggle my base stations, and while power management apparently works on my Linux install, it feels wrong. On start my base stations wakt from sleep to on, but on shutdown they go to standby instead (brown in the android app opposed to blue/green). In this state the led on the base station is no longer green, and the motors are still running makint it fairly noisy. Is there a settings I'm missing here?

Iisbelldl 2026-02-23 github

I've since stopped using SteamVR. The performance just wasn't good enough. I now use Envision/Monado for VR display. It doesn't have built-in base station power functionality, so I've started using ShayBox/Lighthouse to switch them on & off. I'm sure you can set commands in Envision, but I don't know what I'm doing, & my lighthouses are still iffy with response. I've found the most reliable method is the following:
open my terminal &prep the command
click my bluetooth icon & connect to the "B" base station
As soon as it shows as connected, run the command in terminal
It takes a minute or 2 for both base stations to switch to on or sleep modes, but they do it pretty reliably that way. Not as convenient as it was in Windows, but it works well enough.
https://github.com/ShayBox/Lighthouse

Nothing extracted yet.