Tato stránka popisuje, jak na Windows 11 automaticky restartovat Voicemeeter Potato po připojení konkrétního Bluetooth zařízení.

Aktualizace (květen 2026): Původní postup z dubna 2026 přestal fungovat po Windows Update. Při ladění se ukázaly dvě příčiny — Windows Update tiše deaktivuje Bluetooth event log, a novější verze Voicemeeteru ignorují parametr -r způsobem, který původní skript předpokládal. Postup byl upraven tak, aby byl odolnější vůči oběma problémům. Změny jsou popsány v každém dotčeném kroku.

Předpoklady

  • Windows 11 s povoleným Bluetooth
  • Voicemeeter Potato nainstalovaný v C:\Program Files (x86)\VB\Voicemeeter\
  • Povolený log Microsoft-Windows-Bluetooth-Policy/Operational v Event Vieweru

1. Povolení Bluetooth Event Logu

Ve výchozím stavu je log vypnutý. Spusť PowerShell jako Administrator:

powershell
wevtutil sl Microsoft-Windows-Bluetooth-Policy/Operational /e:true

Ověření:

powershell
wevtutil gl "Microsoft-Windows-Bluetooth-Policy/Operational"

V výstupu hledej enabled: true.

1a. Zabránění opětovného vypnutí logu po Windows Update (nový krok)

Windows Update tento log po aktualizaci tiše deaktivuje — to byl hlavní důvod, proč původní postup přestal fungovat. Aby se to neopakovalo, vytvoř startup úlohu, která log při každém startu systému znovu zapne:

powershell
$action    = New-ScheduledTaskAction -Execute "wevtutil.exe" -Argument 'sl "Microsoft-Windows-Bluetooth-Policy/Operational" /e:true'
$trigger   = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings  = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 1)
Register-ScheduledTask -TaskName "Enable-BT-Log" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Zapne Bluetooth event log po startu - potrebne pro automaticky restart Voicemeeteru"

Úloha se spustí jako SYSTEM s administrátorskými právy, takže nevyžaduje přihlášeného uživatele.

2. Zjištění adresy Bluetooth zařízení

Připoj cílové BT zařízení a spusť:

powershell
Get-WinEvent -LogName "Microsoft-Windows-Bluetooth-Policy/Operational" -MaxEvents 10 |
  Format-Table TimeCreated, Id, Message -Wrap

Hledej řádek s Event ID 9 (úspěšné připojení) a poznamenej si adresu zařízení (např. A00CE238FE34).

3. Vytvoření spouštěcího skriptu

Vytvoř soubor C:\Scripts\voicemeeter-bt.bata ihned nastav správná oprávnění na složku — Task Scheduler skript spouští automaticky, takže zápis do C:\Scripts\ by měl mít jen administrátor:

batch
@echo off
timeout /t 3 /nobreak >nul
taskkill /F /IM voicemeeter8x64.exe /T 2>nul
taskkill /F /IM VoicemeeterMacroButtons.exe /T 2>nul
timeout /t 1 /nobreak >nul
start "" "C:\Program Files (x86)\VB\Voicemeeter\voicemeeter8x64.exe"

Změna oproti původnímu postupu: Původní skript spouštěl Voicemeeter s parametrem -r, který dříve fungoval správně — nová instance poslala existujícímu Voicemeeteru příkaz k restartu audio enginu a sama se ukončila. Někdy po dubnu 2026 toto chování přestalo fungovat (pravděpodobně aktualizací Voicemeeteru) — parametr -r nově otevírá druhou plnou instanci, která zůstane běžet. Skript proto nyní nejprve všechny instance ukončí (taskkill) a pak spustí čistou novou.

timeout /t 3 na začátku dává BT zařízení čas se plně inicializovat před tím, než Voicemeeter nastartuje.

Nastav oprávnění složky (spusť jako Administrator):

powershell
icacls "C:\Scripts" /inheritance:r /grant:r "BUILTIN\Administrators:(OI)(CI)(F)" "NT AUTHORITY\SYSTEM:(OI)(CI)(F)" "BUILTIN\Users:(OI)(CI)(RX)"

4. Nastavení úlohy v Task Scheduleru

4.1 Otevření Task Scheduleru

  • Win+Rtaskschd.msc → Enter

4.2 Vytvoření úlohy

  • V pravém panelu klikni na Create Task (ne “Create Basic Task”)

4.3 Záložka General

  • Name: Voicemeeter BT Auto-Start
  • Description: Spustí Voicemeeter Potato po připojení BT zařízení
  • Security options: zaškrtni Run only when user is logged on

4.4 Záložka Triggers

  1. Klikni New…
  2. Begin the task: On an event
  3. Přepni na Custom
  4. Klikni New Event Filter… → záložka XML → zaškrtni Edit query manually
  5. Vlož následující XML (uprav A00CE238FE34 na adresu svého zařízení):
xml
<QueryList>
  <Query Id="0" Path="Microsoft-Windows-Bluetooth-Policy/Operational">
    <Select Path="Microsoft-Windows-Bluetooth-Policy/Operational">
      *[System[EventID=9] and EventData[Data and contains(.,'A00CE238FE34')]]
    </Select>
  </Query>
</QueryList>
  1. Potvrď OK

4.5 Záložka Actions

  1. Klikni New…
  2. Action: Start a program
  3. Program/script: C:\Scripts\voicemeeter-bt.bat
  4. Potvrď OK

4.6 Záložka Conditions

  • Odškrtni “Start the task only if the computer is on AC power” (pokud chceš spouštět i na baterii)

4.7 Záložka Settings

  • Zaškrtni Allow task to be run on demand (pro ruční testování)
  • Zaškrtni If the task is already running, then do not start a new instance
  • Potvrď OK

5. Testování

  1. Odpoj BT zařízení
  2. Znovu ho připoj
  3. Po 2 sekundách by se měl spustit Voicemeeter Potato

Pro diagnostiku zkontroluj:

powershell
Get-WinEvent -LogName "Microsoft-Windows-Bluetooth-Policy/Operational" -MaxEvents 5 |
  Format-Table TimeCreated, Id, Message -Wrap

Historii spouštění úlohy najdeš v Task Scheduleru pod Task Scheduler Library → pravý klik na úlohu → Properties → záložka History.

Řešení problémů

Problém Řešení
Postup přestal fungovat po Windows Update Windows Update deaktivuje Bluetooth event log. Ověř stav: wevtutil gl "Microsoft-Windows-Bluetooth-Policy/Operational" — hledej enabled: true. Pokud je false, znovu zapni (krok 1) a ujisti se, že máš vytvořenou startup úlohu Enable-BT-Log (krok 1a).
Log je prázdný Ověř, že je log povolený (krok 1)
Event ID 9 se neobjevuje Některé BT adaptéry logují jinak – zkontroluj i logy Bluetooth-BthMini a System
Úloha se nespouští Zkontroluj, že XML query odpovídá přesné adrese zařízení; otestuj úlohu ručně přes pravý klik → Run
Voicemeeter se spustí vícekrát Ujisti se, že používáš aktuální verzi skriptu z kroku 3 (s taskkill). V Settings úlohy nastav také “Do not start a new instance”.

Poznámky

  • Pokud chceš reagovat na jakékoli BT zařízení (ne jen jedno), odstraň z XML podmínku and EventData[...] a ponechej pouze *[System[EventID=9]].
  • Skript ukončuje i VoicemeeterMacroButtons.exe — pokud Macro Buttons nepoužíváš, řádek s ním můžeš vynechat. Pokud ho používáš, po restartu se spustí automaticky jako závislý proces Voicemeeteru.
  • Po aktualizaci Windows ověř, že je log stále aktivní (wevtutil gl ...) a že startup úloha Enable-BT-Log existuje a je ve stavu Ready.