@echo off
title Activate Speakers (Unmute + 80% Volume)
:: Uses built-in PowerShell + CoreAudio COM to unmute and set master volume
powershell -NoProfile -NonInteractive -Command ^
"$sig = @'
using System;
using System.Runtime.InteropServices;
[Guid(\"5CDF2C82-841E-4546-9722-0CF74078229A\")]
interface IAudioEndpointVolume {
int RegisterControlChangeNotify(IntPtr pNotify);
int UnregisterControlChangeNotify(IntPtr pNotify);
int GetChannelCount(out uint pnChannelCount);
int SetMasterVolumeLevel(float fLevelDB, Guid pguidEventContext);
int SetMasterVolumeLevelScalar(float fLevel, Guid pguidEventContext);
int GetMasterVolumeLevel(out float pfLevelDB);
int GetMasterVolumeLevelScalar(out float pfLevel);
int SetChannelVolumeLevel(uint nChannel, float fLevelDB, Guid pguidEventContext);
int SetChannelVolumeLevelScalar(uint nChannel, float fLevel, Guid pguidEventContext);
int GetChannelVolumeLevel(uint nChannel, out float pfLevelDB);
int GetChannelVolumeLevelScalar(uint nChannel, out float pfLevel);
int SetMute(bool bMute, Guid pguidEventContext);
int GetMute(out bool pbMute);
int GetVolumeStepInfo(out uint pnStep, out uint pnStepCount);
int VolumeStepUp(Guid pguidEventContext);
int VolumeStepDown(Guid pguidEventContext);
int QueryHardwareSupport(out uint pdwHardwareSupportMask);
int GetVolumeRange(out float pflVolumeMindB, out float pflVolumeMaxdB, out float pflVolumeIncrementdB);
}
[ComImport, Guid(\"1CB9AD4C-DBFA-4C32-B178-C2F568A703B2\")]
class MMDeviceEnumerator { }
enum EDataFlow { eRender, eCapture, eAll }
enum ERole { eConsole, eMultimedia, eCommunications }
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid(\"A95664D2-9614-4F35-A746-DE8DB63617E6\")]
interface IMMDeviceEnumerator {
int NotImpl1();
int GetDefaultAudioEndpoint(EDataFlow dataFlow, ERole role, out IMMDevice ppDevice);
}
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid(\"D666063F-1587-4E43-81F1-B948E807363F\")]
interface IMMDevice {
int Activate(ref Guid iid, int dwClsCtx, IntPtr pActivationParams, out IAudioEndpointVolume ppInterface);
}
'@;
Add-Type -Namespace CoreAudio -Name Audio -MemberDefinition $sig;
$enum = New-Object CoreAudio.MMDeviceEnumerator
$dev = $null
$null = ([CoreAudio.IMMDeviceEnumerator]$enum).GetDefaultAudioEndpoint([int]0,[int]0,[ref]$dev)
$iid = [Guid]::Parse('5CDF2C82-841E-4546-9722-0CF74078229A')
$vol = $null
$CLSCTX_INPROC_SERVER = 1
$null = $dev.Activate([ref]$iid, $CLSCTX_INPROC_SERVER, [IntPtr]::Zero, [ref]$vol)
# Unmute + set to 80%
$vol.SetMute($false, [Guid]::Empty) | Out-Null
$vol.SetMasterVolumeLevelScalar(0.8, [Guid]::Empty) | Out-Null
"
echo.
echo ✅ Speakers unmuted and volume set to 80%%.
echo.
pause