Bluetooth speakers are great — until they go to sleep. You step away for a few minutes, your monitor enters standby, or there's a gap in audio playback, and suddenly your speaker has disconnected. When you come back, sound is blasting out of your monitor's tinny built-in speakers instead of your desk soundbar.
Windows doesn't help. There's no "keep this device alive" setting. There's no "always reconnect" toggle. There's no "fall back to this other device when my speaker disconnects." You're left manually switching audio devices multiple times a day.
BTSpeakerManager is a system tray app that fixes all of this. It keeps your Bluetooth speaker connected, sets it as the default audio device when it's available, plays a silent keep-alive tone so the speaker never goes to sleep, and automatically falls back to your wired output when the speaker disconnects.
Just want the download? The BTSpeakerManager tool page has the features, install steps, and FAQ in one place.
The Problem
Bluetooth audio devices have aggressive power-saving behavior. Most speakers will enter standby mode after a period of silence — sometimes as short as 30 seconds. When that happens:
- The speaker disconnects from Windows
- Windows silently switches your default audio to whatever's next in line (usually your monitor)
- When the speaker wakes back up, Windows doesn't switch back
- You have to manually open Sound Settings and change the default device
If you work at a desk with a Bluetooth soundbar, this happens multiple times a day. It's maddening.
What BTSpeakerManager Does
How It Works
BTSpeakerManager polls Windows audio endpoints at a configurable interval (30 seconds to 10 minutes). It tracks the connection state of your selected Bluetooth speaker and only takes action on state changes:
- Speaker connects: set it as default audio device, start silent keep-alive
- Speaker disconnects: stop keep-alive, switch default to your fallback (wired) device
- Speaker stays connected: do nothing (no blip)
The keep-alive is a WAV file containing a single sample of silence, played on continuous loop via winsound.SND_LOOP. The speaker sees an active audio stream and stays awake.
Configuration
Everything is stored in config.json next to the executable:
- Speaker selection — pick from detected Bluetooth audio devices
- Polling interval — 30s, 1m, 2m, 5m, or 10m
- Enable/disable polling — pause monitoring from the tray menu
- Enable/disable keep-alive — toggle the silent tone independently
- Auto-start — adds itself to the Windows startup registry
Get BTSpeakerManager
BTSpeakerManager is free and open source. Download the standalone EXE (no Python install needed) or run from source.
GitHub: VAROIndustries/BTSpeakerManager
Run from Source
pip install pystray Pillow pycaw comtypes
python bt_tray.py
Build the EXE
pip install pyinstaller
build.bat
The resulting BTSpeakerManager.exe is a single ~27MB file you can drop anywhere and run.
Check out more free tools and apps at varo.industries/apps.
Frequently Asked Questions
Sources & References
- BTSpeakerManager
- BluFang: Rename Bluetooth Devices and See What They're Actually Doing — VARØ Industries Blog
- ClaudeTray: A Battery Meter for Your Claude Code Rate Limits — VARØ Industries Blog
- KillSwitch: Kill Every Messaging, Video, VPN, and Social App in One Click — VARØ Industries Blog
- PlainText for Claude: Stop Copying Broken URLs from AI Output — VARØ Industries Blog
- EnvForge: A Better Way to Manage Windows Environment Variables — VARØ Industries Blog