⚠️ USE AT YOUR OWN RISK
Most parameters listed here are undocumented and unsupported by VMware/Broadcom.
Always back up your.vmxfile before editing. Test in non-production environments first.
Parameter availability depends on VMware product version, host OS, andvirtualHW.version.
- File Identity & Versioning
- Virtual Machine Identity
- Memory Configuration
- CPU Configuration
- BIOS / EFI / Firmware
- Chipset & PCI
- DirectX 12 in VMware Workstation
- Display & Graphics (MKS)
- Input Devices
- Storage Controllers
- Network Adapters
- USB Controllers
- Audio
- Serial & Parallel Ports
- CPU Scheduling & Priority
- Memory Scheduling & Optimization
- Virtualization Features
- Security & Isolation
- Anti-Detection / VM Stealth
- Time Synchronization
- Shared Folders (HGFS)
- VMware Tools
- VMCI Interface
- Power Management
- Snapshots & Checkpoints
- Logging & Debugging
- Remote Display (VNC)
- NUMA Topology
- Unity Mode
- Guest Info Variables
- Parameter Dependency Map
- Example Configurations
These parameters define the VMX file format and the emulated hardware generation.
Must appear at the top of every .vmx file.
.encoding = "UTF-8" # File character encoding. Always UTF-8.
config.version = "8" # VMX file format version. Value 8 since Workstation 6; do not change.
virtualHW.version = "22" # Virtual hardware generation. Controls which virtual devices
# and guest-visible features are available.
# Cannot be downgraded after OS installation without
# risking boot failure (equivalent to swapping the boot
# drive into a different physical machine).A .vmx parameter only takes effect when all three layers are satisfied simultaneously.
Parameters not implemented in the running product version are silently ignored — no error is logged.
| Layer | What it controls | Example |
|---|---|---|
| ① Host product version | Whether the VMX key is parsed and implemented at all | mks.enableDX12Renderer exists only in WS 17+ |
② virtualHW.version |
Which virtual devices and guest-visible features are exposed | uefi.secureBoot.enabled needs vHW ≥ 20 |
| ③ Host environment | Physical hardware / OS capabilities on the host machine | vvtd.enable needs host IOMMU; Vulkan renderer needs Vulkan ICD |
Source: Broadcom KB 315655.
Rows marked ESXi-only have no corresponding Workstation / Fusion release at that version.
| vHW | Workstation Pro | VMware Fusion | ESXi / ESX | Notable changes |
|---|---|---|---|---|
| 22 | 25H2 | 25H2 | ESX 9.0 | Current maximum; new YYH# versioning scheme |
| 21 | 17.6 | 13.6 | 8.0 U2 | 16 vGPU/VM; 256 disks/VM (4× vNVMe); NVMe 1.3 |
| 20 | 17.0–17.5 | 13.0–13.5 | 8.0–8.0.1 | vTPM 2.0 improvements; USB 3.1 Gen 2 |
| 19 | 16.2.x | 12.2.x | 7.0 U2 | — |
| 18 | 16.0–16.1 | 12.0–12.1 | 7.0 U1 | — |
| 17 | — | — | 7.0.0 | ESXi-only |
| 16 | 15.x | 11.x | — | No ESXi equivalent |
| 15 | — | — | 6.7 U2 | ESXi-only |
| 14 | 14.x | 10.x | 6.7 | NVMe controller; PVRDMA |
| 13 | — | — | 6.5 | ESXi-only |
| 12 | 12.x | 8.x | — | No ESXi equivalent |
⚠️ A VM withvirtualHW.version = "22"will not power on in Workstation 17.x or older.
displayName = "My VM" # Name shown in VMware UI. Can contain spaces.
guestOS = "windows11-64" # Guest OS hint — affects default hardware settings,
# VMware Tools behavior, and device defaults.
# Common values:
# windows11-64, windows10-64, windows7-64
# ubuntu-64, rhel9-64, centos-64
# darwin21-64 (macOS Monterey), darwin23-64 (Sonoma)
# other-64, other
uuid.bios = "56 4d ... 21" # VM BIOS UUID. Auto-generated on VM creation.
# Changing this value causes Windows to show a
# "virtual machine was moved or copied" dialog on
# next boot, resets the NIC (new MAC assigned), and
# may trigger Windows license reactivation.
# Do not edit manually unless deliberately cloning.
uuid.location = "56 4d ... 21" # Location UUID tied to the .vmx file path.
# Updated automatically when the VM is moved.
memSizemust be ≤ host physical RAM minus OS overhead.
memory.hotaddrequires guest OS support (Windows Server, Linux kernel ≥ 3.x) and VMware Tools.
memSize = "8192" # Guest RAM in MB. Must be a multiple of 4.
memory.hotadd = "TRUE" # Allow RAM increase while VM is running.
# Requires: VMware Tools + guest OS support.
memory.hotremove = "TRUE" # Allow RAM decrease while VM is running.
# Supported on Linux guests only.
memory.maxsize = "32768" # Upper limit for hot-add operations (MB).
memory.minsize = "512" # Lower limit for hot-remove operations (MB).
mem.hotadd = "TRUE" # Older alias for memory.hotadd; use memory.hotadd
# on virtualHW.version ≥ 14.
numvcpusmust be divisible bycpuid.coresPerSocket.
Total vCPUs cannot exceed the host's logical processor count.
Mismatched topology (e.g. 6 vCPUs with 4 cores/socket) causes VMware to refuse power-on.
numvcpus = "4" # Total virtual CPU count (cores × sockets).
cpuid.coresPerSocket = "2" # Cores per virtual socket. Affects OS licensing
# (Windows Server per-socket) and NUMA topology.
# Example: numvcpus=8, coresPerSocket=4 → 2 sockets × 4 cores.
vcpu.hotadd = "TRUE" # Add vCPUs while VM is running (limited guest support).
vcpu.hotremove = "TRUE" # Remove vCPUs while running (experimental; Linux only).
⚠️ cpuid.enable_vmxandcpuid.enable_svmare mutually exclusive by host CPU vendor.
Use VMX on Intel hosts, SVM on AMD hosts. Setting the wrong one has no effect.
vhv.enablevscpuid.enable_vmx— important distinction:
vhv.enable = "TRUE"is the preferred, high-level switch. It enables VT-x/AMD-V exposure
automatically for the correct vendor and also configures related VMCS/VMCB structures.
cpuid.enable_vmx/cpuid.enable_svmare low-level overrides that only set the
CPUID bit without the accompanying architectural setup. Usevhv.enableunless you
specifically need the CPUID bit in isolation (e.g. for CPUID spoofing in anti-detection setups).
vhv.enable = "TRUE" # ← Preferred. Expose hardware virtualization to guest.
# Automatically selects VMX (Intel) or SVM (AMD).
# Required for: running nested VMs, WSL2, Android emulators.
cpuid.enable_vmx = "TRUE" # Low-level: expose VMX CPUID bit only. Intel hosts only.
# Use vhv.enable instead unless you know why you need this.
cpuid.enable_svm = "TRUE" # Low-level: expose SVM CPUID bit only. AMD hosts only.
# Mutually exclusive with cpuid.enable_vmx.
cpuid.numSMT = "2" # SMT threads per core shown to guest (1 or 2).
# Set to 1 to hide hyperthreading from guest.
cpuid.disable_vme = "FALSE" # Keep Virtual-8086 Mode Extensions enabled (legacy).
cpuid.disable_mca = "FALSE" # Keep Machine Check Architecture enabled.
paevm = "TRUE" # Enable PAE for >4 GB on 32-bit guests (legacy; rarely needed).
firmware = "efi"is required for macOS guests, Windows 11, and Secure Boot.
Cannot be changed after OS installation without breaking the boot loader.
Switching from BIOS to EFI on an existing installation requires manual boot loader migration.
firmware = "bios" # Boot firmware: "bios" (legacy MBR) or "efi" (UEFI/GPT).
bios.bootDelay = "5000" # Pause before POST in milliseconds. Useful for
# pressing F2/Del to enter BIOS/EFI setup.
bios.forceSetupOnce = "TRUE" # Force setup screen on next boot only; resets to FALSE after.
bios.bootOrder = "cdrom,hdd" # Boot device priority (comma-separated).
bios.bootRetry.enabled = "TRUE" # Retry boot sequence on failure.
bios.bootRetry.delay = "10000" # Wait before retry (ms).
bios.hddOrder = "scsi0:0" # Hard disk boot priority when multiple disks present.
bios440.filename = "bios440.rom" # Override default BIOS ROM with a custom file.
# EFI-specific
efi.nvram.file = "vm.nvram" # NVRAM file storing EFI variables (auto-created).
uefi.secureBoot.enabled = "FALSE" # Secure Boot. Requires firmware="efi" and
# virtualHW.version ≥ 20 (Workstation 17.x+).chipset.onlineStandby = "FALSE" # Disable S1 standby state. Improves stability
# in VMs that don't need power state transitions.
chipset.useAcpiBattery = "TRUE" # Expose ACPI battery device. Useful when running
# laptop-oriented guest OSes that query battery state.
chipset.useApmBattery = "FALSE" # APM battery — legacy power management interface.
# Mutually exclusive with chipset.useAcpiBattery.
chipset.useHotButtons = "TRUE" # Expose ACPI power/sleep hardware buttons to guest.
chipset.version = "piix4" # Chipset emulation model. piix4 offers the broadest
# compatibility across guest OS generations.
pciBridge.present = "TRUE" # Add PCI bridge to expose additional device slots.
pci.allowPassthrough = "TRUE" # PCI passthrough. ESXi (DirectPath I/O) only;
# not supported in Workstation.
hpet0.present = "TRUE" # High Precision Event Timer. Reduces timer interrupt
# jitter. Recommended for audio, gaming, and any
# workload sensitive to clock resolution.Two entirely separate concepts are frequently confused:
mks.enableDX12Renderer — selects which API the host uses to render the VM window (MKS pipeline). This has no effect on what DirectX version the guest OS sees inside the VM.
Guest DirectX Feature Level — determined by the virtual SVGA3D adapter and its WDDM driver inside the guest. This is what dxdiag and applications actually query and use.
The VMware SVGA3D virtual adapter (vm3d WDDM driver) exposes a maximum of DirectX 11 Feature Level 11_0 to the guest regardless of:
- Host GPU capability
virtualHW.versionvaluemks.enable*Renderersetting- Workstation version (including 25H2)
The guest Windows Display Settings and dxdiag may show "DirectX 12" — this refers to the runtime version installed in Windows, not the capability of the virtual adapter. The actual Feature Level is visible under the Display tab in dxdiag → Feature Levels field.
VMware has not announced native DirectX 12 Feature Level support for the virtual SVGA adapter in any current or announced Workstation release.
| Method | Workstation | ESXi | Guest sees |
|---|---|---|---|
| vm3d WDDM (default) | ✅ | ✅ | DX11 FL 11_0 maximum |
| GPU Passthrough (DirectPath I/O) | ❌ not supported | ✅ | Real GPU → real DX12 |
| vGPU (NVIDIA / AMD MxGPU) | ❌ not supported | ✅ + vendor license | Real DX12 |
| VKD3D-Proton (per-application) | ✅ | ✅ | DX12 API → Vulkan translation |
VKD3D-Proton is an open-source library that translates Direct3D 12 API calls into Vulkan at the application level. It does not require a real DX12-capable adapter — it uses Vulkan (which vm3d does expose) as the backend.
How it works: the application loads d3d12.dll (replaced by VKD3D-Proton) instead of the system one. DX12 draw calls are translated to Vulkan calls on the fly, within the application process. The virtual SVGA adapter handles Vulkan — no changes to VM hardware are needed beyond enabling 3D acceleration.
Required VMX parameters:
mks.enable3d = "TRUE"
svga.3d.enabled = "TRUE"
svga.enableGMR = "TRUE"
svga.enableScreenObject = "TRUE"Installation in guest Windows:
- Download a release from
github.com/HansKristian-Work/vkd3d-proton - Place
d3d12.dll(x64 build) next to the target application's.exe
— or intoC:\Windows\System32\for system-wide installation - No additional VMX changes required
Limitations:
- Compatibility depends on how completely vm3d implements the Vulkan extensions VKD3D-Proton requires
- Titles using DXR (ray tracing) will not work — ray tracing extensions are not exposed by vm3d
- Performance is lower than native: translation overhead and virtualization overhead stack
- Does not affect
dxdiagFeature Level reporting; the adapter still shows FL 11_0
| Scenario | Result |
|---|---|
dxdiag shows "DirectX 12" in guest |
Runtime version only — not adapter capability |
mks.enableDX12Renderer = "TRUE" |
Host-side render pipeline only — invisible to guest |
| vm3d + WDDM | DX11 FL 11_0 — current architectural ceiling in all Workstation versions |
| GPU Passthrough | Full native DX12 — ESXi with DirectPath I/O only |
| VKD3D-Proton | Per-app DX12→Vulkan — works in Workstation with caveats above |
The MKS (Mouse/Keyboard/Screen) subsystem handles all display rendering in VMware Workstation. It runs as a separate sandboxed process (mksSandbox) and communicates with the virtual SVGA adapter inside the guest.
svga.3d.enabledrequiresmks.enable3d = "TRUE"and a host GPU with supported driver.
svga.enableScreenObjectis required for multi-monitor support with VMware Tools ≥ 10.x.
svga.present = "TRUE" # Master switch — must be TRUE for any display output.
svga.vramSize = "268435456" # Video RAM in bytes allocated to the virtual adapter.
# Values: 67108864=64MB, 134217728=128MB,
# 268435456=256MB, 536870912=512MB.
# 512MB recommended for 3D workloads and
# multi-monitor configurations.
svga.autodetect = "TRUE" # Auto-negotiate SVGA capabilities with the guest driver.
svga.maxWidth = "3840" # Maximum display width the guest can request (pixels).
svga.maxHeight = "2160" # Maximum display height the guest can request (pixels).
svga.3d.enabled = "TRUE" # Enable SVGA3D — DirectX 11 / OpenGL acceleration.
# Requires: mks.enable3d = "TRUE".
# Guest sees: DX11 Feature Level 11_0 maximum.
svga.enableGMR = "TRUE" # Guest Memory Regions — required for large framebuffers
# and efficient DMA between guest and host GPU.
svga.enableScreenObject = "TRUE" # Screen Objects API — required for multi-monitor with
# modern VMware Tools (≥ 10.x). Enable alongside svga.3d.
svga.allowFB = "TRUE" # Allow framebuffer fallback when 3D acceleration fails.
svga.numDisplays = "1" # Number of virtual monitors (1–10).
# Requires: svga.enableScreenObject = "TRUE" for > 1.Enable exactly one renderer per platform. If multiple are set to TRUE simultaneously, VMware uses an internal precedence order (DX12 > DX11 > DX9 on Windows; Vulkan > GL on Linux) but this behavior is undocumented and may change between versions. Explicit single selection is always preferred.
All renderers require
svga.present = "TRUE". DX* renderers require Windows host. Vulkan/GL require installed ICD drivers. Metal requires macOS host.
# Windows Host — choose ONE:
mks.enableDX11Renderer = "TRUE" # DirectX 11 — recommended for Windows hosts.
# Stable, broadly supported across GPU vendors.
mks.enableDX12Renderer = "FALSE" # DirectX 12 — lower CPU overhead in theory,
# but known stability issues on some hardware.
# Available in Workstation 17+ only.
mks.enableDX9Renderer = "FALSE" # DirectX 9 — legacy fallback only.
mks.enableDX8Renderer = "FALSE" # DirectX 8 — very old; avoid entirely.
# Linux Host — choose ONE:
mks.enableVulkanRenderer = "TRUE" # Vulkan — best performance on Linux.
# Requires Vulkan ICD (mesa-vulkan or proprietary).
# See Section 32 for known issue with proprietary
# NVIDIA drivers and the Vulkan presentation workaround.
mks.enableGLRenderer = "FALSE" # OpenGL — fallback if Vulkan is unavailable or broken.
# macOS Host:
mks.enableMetalRenderer = "TRUE" # Metal — the only supported renderer on macOS 12+
# and Apple Silicon. Available in Fusion 13+ only.
# Do not use:
mks.enableD3DRenderer = "FALSE" # Legacy D3D wrapper — superseded by DX9+.# Force specific GPU for DX11 renderer (Windows host):
mks.dx11.vendorID = "0x10DE" # NVIDIA (see Appendix for full vendor ID list)
mks.dx11.vendorID = "0x1002" # AMD
mks.dx11.vendorID = "0x8086" # Intel
# Force specific Vulkan device (Linux host):
# Exact device name must come from mksSandbox.log:
# grep -i "vulkan\|name:" ~/vmware/<vm_name>/mksSandbox.log
mks.vk.forceDevice = "..." # Paste exact device name string from mksSandbox.log.
mks.vk.allowUnsupportedDevices = "TRUE" # Override VMware GPU whitelist.
mks.vk.allowUnsupportedDrivers = "TRUE" # Allow proprietary drivers not on VMware whitelist.
# macOS:
mks.metal.allowUnsupportedDevices = "TRUE" # Allow older Metal-capable GPUs.
# Discrete GPU preference (Windows host, multi-GPU laptops):
mks.forceDiscreteGPU = "TRUE" # Prefer discrete GPU over integrated GPU.mks.d3d.disableFlips = "TRUE" # Disable D3D swap-chain flips (fixes tearing
# or corruption on some GPU/driver combinations).
mks.dx11.disableFlips = "TRUE" # Same for DX11 path.
mks.dx12.disableFlips = "TRUE" # Same for DX12 path.
mks.requireHardwareRenderer = "TRUE" # Refuse to start if no hardware renderer is
# available (no software fallback). Recommended
# when 3D acceleration is required for the workload.
mks.allowAcceleratedRenderers = "TRUE"# Allow GPU-accelerated rendering paths.
# Should always be TRUE.On the 60 Hz guest display limit:
The SVGA virtual adapter reports 60 Hz maximum to the guest OS via its virtual EDID, regardless of these settings. This is an architectural limitation of the SVGA protocol — not a driver issue, not avirtualHW.versionissue, and not fixed in 25H2.
mks.maxRefreshRateandmks.maxCompositingFPScontrol the host-side MKS compositing pipeline throughput only. Raising them above 60 improves frame delivery rate to the host display (smoother cursor movement, scrolling) but does not change what the guest OS reports in its Display Settings.
mks.enable3d = "TRUE" # Master switch for 3D acceleration pipeline.
# Required upstream for: svga.3d.enabled,
# hardware renderers, and vramSize > 128MB effectiveness.
mks.maxRefreshRate = "120" # Target compositing rate on the host side (Hz).
# Set to match host monitor refresh rate.
# Default: 60. Guest OS still reports 60 Hz.
mks.lowCompositingFPS = "60" # Minimum compositing FPS floor. Must be ≤ maxRefreshRate.
mks.maxCompositingFPS = "120" # Maximum compositing FPS ceiling.
# Set equal to mks.maxRefreshRate for consistent behavior.
mks.vsync = "TRUE" # Synchronize MKS output to host display VSync.
# TRUE = prevents host-side tearing; adds ~1 frame latency.
# FALSE = uncapped delivery; lower latency; possible tearing
# on host monitor. Prefer FALSE for interactive use.
mks.updateCoalescePeriodUS = "0" # Frame update coalescing window (microseconds).
# 0 = deliver every frame immediately (lowest latency).
# Default ≈ 15000 µs. Set to 0 for gaming or
# latency-sensitive workloads.
mks.skipHookTimeoutCheck = "TRUE" # Skip hook timeout enforcement. Prevents renderer
# stalls from being treated as hangs under CPU pressure.
# Can mask genuine renderer hangs — use with awareness.mks.dx11.enableModernPresentation = "TRUE" # Use DXGI flip model presentation.
# Lower latency on Windows 10+.
# Requires: mks.enableDX11Renderer = "TRUE".
mks.dx11.waitForQueryYieldMS = "1" # GPU fence yield timeout (ms).
# 1 = low CPU waste while waiting for GPU.Applied when
mks.enableGLRenderer = "TRUE"(Linux) or as internal GL sub-backend.
mks.gl.magFilter = "0x2600" # GL_NEAREST magnification filter — sharp pixel scaling.
# Use 0x2703 (GL_LINEAR_MIPMAP_LINEAR) for smooth scaling.
mks.gl.minFilter = "0x2600" # GL_NEAREST minification filter — sharp pixel scaling.
mks.gl.doubleBuffer = "TRUE" # Double buffering — eliminates framebuffer tearing.
mks.gl.fbo = "TRUE" # Use Framebuffer Objects for off-screen rendering.
mks.gl.useFBTexture = "TRUE" # Render into texture (improves compositing efficiency).
mks.gl.dontLogErrors = "TRUE" # Suppress GL error logging (reduces log I/O overhead).
mks.gl.noTimeInfo = "TRUE" # Disable GL timing instrumentation.
mks.gl.allowBlacklistedDrivers = "TRUE" # Override Mesa/Intel driver blacklist.
# Useful on Linux with older Mesa versions.Mutually exclusive per platform. Controls how the rendered frame is delivered to the host display server — separate from renderer selection (Section 8.2).
# Linux Host — choose ONE:
mks.enableVulkanPresentation = "TRUE" # Vulkan WSI swap chain (Wayland + X11).
# ⚠️ Known issue on Linux with proprietary GPU
# drivers: VM may freeze or crash on shutdown.
# Workaround: set FALSE and use X11 presentation.
mks.enableX11Presentation = "FALSE" # Legacy X11 XShm presentation.
# Use as fallback when Vulkan presentation is broken.
# Windows Host:
# Presentation is handled by the DX11/DX12 renderer swap chain directly.
# No separate presentation key is applicable.gui.applyHostDisplayScalingToGuest = "TRUE" # Pass host DPI scaling factor to guest.
# Enables HiDPI rendering in guest.
# Requires VMware Tools with display driver.
gui.fullscreenAtPowerOn = "TRUE" # Launch VM in fullscreen automatically.
gui.viewModeAtPowerOn = "fullscreen" # Initial view: "windowed" or "fullscreen".
pref.autoFit = "FALSE" # Disable window auto-fit on resize.
pref.autoFitGuestToWindow = "FALSE" # Disable guest resolution tracking window size.
pref.autoFitFullScreen = "stretchGuestToHost" # Fullscreen scaling behavior:
# "stretchGuestToHost" = scale up to fill screen
# "fitGuestInWindow" = letterbox if needed
# "keepGuestSize" = no scaling
pref.motionGrab = "FALSE" # Disable mouse capture on cursor hover.
pref.motionUngrab = "FALSE" # Disable mouse release on hover-out.
pref.vmplayer.fullscreen.autohide = "TRUE" # Auto-hide toolbar in fullscreen.
pref.fullscreen.toolbarpixels = "0" # Toolbar pixel height in fullscreen (0 = hidden).
pref.vmplayer.fullscreen.nobar = "TRUE" # Completely suppress toolbar in fullscreen.
pref.vmplayer.deviceBarToplevel = "TRUE" # Float device bar above other windows.
pref.vmplayer.exit.vmAction = "poweroff" # Action on window close:
# "poweroff", "suspend", "disconnect", "ask"
mouse.vusb.*requiresusb.present = "TRUE"andehci.present = "TRUE".
Extra side buttons (back/forward) only exposed whenmouse.vusb.useBasicMouse = "FALSE".
mouse.present = "FALSE" # Disable legacy PS/2 mouse. Recommended when
# using USB mouse to avoid duplicate device conflict.
vmmouse.present = "TRUE" # VMware virtual mouse integration driver.
# Required for seamless cursor movement without
# explicit mouse capture (click-to-grab).
mouse.vusb.present = "TRUE" # Add a virtual USB mouse device.
mouse.vusb.enable = "TRUE" # Activate it. Both .present and .enable are required.
mouse.vusb.useBasicMouse = "FALSE" # FALSE = expose extra buttons (back/forward/side).
# TRUE = standard 3-button mouse only.
mouse.vusb.idVendor = "0x0000" # USB vendor ID (0x0000 = generic auto-detection).
mouse.vusb.idProduct = "0x0000" # USB product ID (0x0000 = generic auto-detection).mks.gamingMouse.policy = "gaming" # Optimize relative mouse input for games.
# "gaming" = raw delta passthrough, bypasses
# VMware pointer acceleration.
# "normal" = standard VMware mouse handling.
mks.useDirectInput = "TRUE" # Use DirectInput API on Windows host for
# lower input sampling latency.
mks.disableTypematic = "TRUE" # Disable OS-level key repeat in guest.
# Useful when the game handles repeat itself.
mks.disableRemoteClientTypematic = "TRUE" # Same, for VMRC / remote console connections.
mks.keyboardFilter = "require" # Intercept all key combinations including system
# hotkeys (Alt+Tab, Win key). Prevents host OS from
# consuming keystrokes intended for the guest.keyboard.present = "TRUE" # PS/2 keyboard device.
keyboard.vusb.present = "TRUE" # Virtual USB keyboard device.
keyboard.vusb.enable = "TRUE" # Activate USB keyboard. Both flags required.
keyboard.allowBothIRQs = "FALSE" # Single IRQ assignment (avoids keyboard IRQ conflicts).
keyboard.typematicMinDelay = "2000000" # Key repeat delay in microseconds (2 s default).touchpad.general.enable = "TRUE"
touchpad.general.motionSpeed = "50" # Pointer speed: 1–100.
touchpad.general.verticalScrolling = "TRUE"
touchpad.tapping.tapToClick = "TRUE"
touchpad.tapping.speed = "medium" # slow / medium / fast
pvscsidelivers the best I/O throughput but requires VMware Tools paravirtual driver in guest.
lsilogicoffers the broadest OS compatibility including older Windows and Linux versions.
Cannot switch controller type on an existing OS installation without driver pre-injection.
scsi0.present = "TRUE"
scsi0.virtualDev = "pvscsi" # pvscsi = best performance (requires VMware Tools)
# lsilogic = broad compatibility (Windows, Linux, BSD)
# lsisas1068 = LSI SAS (Windows Server clustering)
# buslogic = legacy (Windows 9x / DOS only)
scsi0.sharedBus = "none" # none = private; virtual / physical = clustering.
scsi0:0.present = "TRUE"
scsi0:0.fileName = "disk.vmdk"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.mode = "persistent" # persistent = changes saved permanently
# nonpersistent = changes discarded on power-off
# undoable = changes held in redo log
scsi0:0.virtualSSD = "TRUE" # Advertise disk as SSD to guest OS.
# Enables TRIM/UNMAP, affects scheduler hints,
# may improve guest I/O patterns.nvme0.present = "TRUE"
nvme0:0.present = "TRUE"
nvme0:0.fileName = "nvme-disk.vmdk"
nvme0:0.virtualSSD = "TRUE" # NVMe devices are always treated as SSD by default
# but explicit declaration is good practice.sata0.present = "TRUE"
sata0:0.present = "TRUE"
sata0:0.fileName = "disk.vmdk"
sata0:0.deviceType = "sata-hardDisk"
sata0:0.virtualSSD = "TRUE"ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-image" # cdrom-image = ISO file / cdrom-raw = physical drive
ide1:0.fileName = "install.iso"
ide1:0.startConnected = "FALSE" # FALSE = mounted but disconnected; connect at boot if needed.aiomgr.numThreads = "8" # AIO worker thread count. Default 4.
# Setting to match vCPU count can improve throughput
# on I/O-intensive workloads.
aiomgr.unbuf = "TRUE" # Bypass host page cache (O_DIRECT / FILE_FLAG_NO_BUFFERING).
# Reduces latency and double-buffering overhead.
# Increases host RAM pressure — use on SSDs with ample RAM.Used by backup solutions (Veeam, Nakivo, etc.) to track dirty blocks between backups.
cbtmotion.filter.disable = "FALSE" # FALSE = CBT enabled (default). Set TRUE to disable.
cbtmotion.maxIters = "100" # Maximum CBT query iterations per backup cycle.
vmxnet3provides the best throughput and lowest CPU overhead. Requires VMware Tools.
e1000eis plug-and-play (inbox driver in Windows/Linux) but higher CPU overhead.
Good practice: usee1000eduring OS installation, then switch tovmxnet3after Tools install.
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat" # nat = shared host IP via NAT
# bridged = direct access to physical network
# hostonly = isolated LAN between host and VMs
# none = no network (fully isolated)
ethernet0.virtualDev = "vmxnet3" # vmxnet3 = best (requires VMware Tools driver)
# e1000e = Intel 82574L (inbox driver, broad compat.)
# e1000 = Intel 82545EM (older; legacy use)
# vlance = AMD PCnet (Windows 9x / DOS only)
ethernet0.addressType = "generated" # generated = automatic deterministic MAC
# static = manually specified MAC
# vpx = vCenter-assigned (ESXi only)
ethernet0.generatedAddress = "00:0c:29:XX:XX:XX"
ethernet0.startConnected = "TRUE"
ethernet0.noPromisc = "TRUE" # Block promiscuous mode — prevents packet sniffing
# beyond the guest's own traffic. Security hardening.
ethernet0.noForgedSrcAddr = "TRUE" # Block MAC address spoofing from guest.
mouse.vusb.*andkeyboard.vusb.*require at minimumusb.present+ehci.present.
USB 3.x device passthrough additionally requiresxhci.present = "TRUE".
usb.present = "TRUE" # Enable USB 1.1/2.0 controller (UHCI).
# Base requirement for any USB device support.
usb.generic.allowHID = "TRUE" # Pass HID class devices (keyboards, mice) to guest.
usb.generic.autoconnect = "FALSE" # Do not auto-connect newly plugged USB devices.
# FALSE is recommended — explicit connect via UI.
usb.restrictions.defaultAllow = "TRUE" # Allow all USB devices by default.
# Set FALSE for security-hardened VMs.
usb.analyzer.enable = "FALSE" # USB protocol analyzer for debugging.
# High overhead — enable only when diagnosing USB issues.
usb.ccid.disable = "FALSE" # FALSE = enable smart card (CCID) passthrough.
ehci.present = "TRUE" # USB 2.0 High-Speed controller (480 Mbps).
# Required for: mouse.vusb, keyboard.vusb virtual devices.
xhci.present = "TRUE" # USB 3.x SuperSpeed controller (5/10/20 Gbps).
# Required for USB 3.x device passthrough.
usb.vusb.present = "TRUE" # Virtual USB device framework (internal plumbing).
usb.vusb.enable = "TRUE" # Both flags required for virtual USB devices to work.sound.present = "TRUE" # Enable virtual sound card.
sound.autoDetect = "TRUE" # Auto-select host audio backend.
# Must be FALSE when sound.fileName is set manually.
sound.virtualDev = "hdaudio" # Virtual sound chip exposed to guest:
# hdaudio = Intel HD Audio (best quality, widest compat.)
# es1371 = Creative AudioPCI (legacy; use for DOS/Win9x)
sound.fileName = "-1" # Host audio device / backend:
# -1 = system default (PulseAudio / WASAPI)
# "pipewire" = PipeWire session (see below)
# ALSA string = explicit ALSA device (see below)
# ── Linux Host: PipeWire (recommended for modern distros) ──────────────────
# PipeWire acts as a drop-in replacement for both PulseAudio and ALSA.
# Using it avoids VMware holding an exclusive audio lock that blocks other
# applications (browsers, media players, etc.) from playing sound concurrently.
# Requires PipeWire ≥ 0.3 with pipewire-alsa installed on the host.
sound.fileName = "pipewire"
sound.autoDetect = "FALSE" # Must be FALSE when fileName is set explicitly.
# ── Linux Host: PulseAudio ─────────────────────────────────────────────────
sound.fileName = "pulse" # PulseAudio backend. Shares audio with other apps
# similarly to PipeWire, but without PipeWire's
# low-latency routing capabilities.
sound.autoDetect = "FALSE"
# ── Linux Host: ALSA (direct hardware access) ─────────────────────────────
# Direct ALSA bypasses the audio server entirely. VMware will hold the device
# exclusively — other applications cannot use audio simultaneously.
# Use only when PipeWire/PulseAudio are unavailable.
sound.fileName = "surround51:CARD=Live,DEV=0" # 5.1 surround output via ALSA
sound.fileName = "front:CARD=Live,DEV=0" # Stereo front output via ALSA
sound.autoDetect = "FALSE"
# ── Optional MIDI / legacy synthesis ──────────────────────────────────────
sound.opl3.enabled = "TRUE" # OPL3 FM synthesis chip (DOS games / AdLib compat.)
sound.mpu401.host = "TRUE" # MPU-401 MIDI interface passthrough.serial0.present = "TRUE"
serial0.fileType = "pipe" # pipe = named pipe (VM↔VM or VM↔host)
# file = output to file
# device = physical host serial port
# network = TCP/UDP socket
serial0.fileName = "\\.\pipe\com1" # Pipe name (Windows host example).
serial0.pipe.endPoint = "server" # server = this VM creates the pipe; client = connects.
serial0.tryNoRxLoss = "TRUE" # Reduce serial receive data loss under CPU load.
parallel0.present = "TRUE"
parallel0.fileType = "file"
parallel0.fileName = "lpt1.txt"
sched.cpu.latencySensitivity = "high"pins the VM to dedicated CPU resources, eliminating scheduling jitter. The trade-off is significant: the host reserves the full vCPU allocation permanently, even when the VM is idle. Do not use on shared or resource-constrained hosts.
Priority.grabbed = "high" # Host OS process priority when VM window is focused.
Priority.ungrabbed = "normal" # Host OS process priority when VM is not focused.
# Values: low / normal / high / realtime.
# "realtime" can starve other host processes — avoid.
sched.cpu.latencySensitivity = "high" # CPU scheduling class:
# normal = shared pool scheduling (default)
# high = reserved, low-latency scheduling
# (significant host CPU overhead)
# low = background workload, lowest priority
sched.cpu.affinity = "0-7" # Bind vCPUs to specific host logical processors.
# Formats: "0,2,4,6" or "0-3" or "all".
# Use with NUMA-awareness — prefer cores on same
# NUMA node as the VM's memory allocation.
sched.cpu.min = "0" # Minimum CPU reservation (MHz or %).
sched.cpu.max = "unlimited" # CPU usage cap ("unlimited" or MHz value).
sched.cpu.shares = "normal" # Relative priority: low / normal / high / <integer>.
cpuid.numSMT = "2" # SMT threads per core shown to guest (1 or 2).Combining
MemTrimRate = "0"+prefvmx.minVmMemPct = "100"prevents VMware from ever reclaiming VM memory pages, keeping the entire working set resident in host RAM. This maximizes VM performance at the cost of host memory flexibility — only use when the host has enough RAM to accommodate the fullmemSizeas locked memory.
mainMem.useNamedFile = "FALSE" # Disable .vmem file (memory-mapped file on disk).
# FALSE = VM memory lives in host RAM / swap only,
# not as an additional file on the filesystem.
mainMem.backing = "swap" # Memory backing store: "swap" or "file".
mainMem.partialLazySave = "TRUE" # Lazy snapshot save — reduces VM pause duration
# during snapshot by deferring dirty page flush.
mainMem.partialLazyRestore = "TRUE" # Lazy snapshot restore — faster resume from snapshot.
MemTrimRate = "0" # Balloon driver deflation rate (0 = never reclaim).
MemAllowAutoScaleDown = "FALSE" # Prevent VMware from reducing locked memory
# under host memory pressure.
sched.mem.pshare.enable = "FALSE" # Disable Transparent Page Sharing (TPS).
# TPS merges identical pages across VMs to save RAM.
# Disabling improves performance isolation and
# eliminates a minor side-channel attack surface.
prefvmx.useRecommendedLockedMemSize = "TRUE" # Lock VMware's recommended memory amount.
prefvmx.minVmMemPct = "100" # Lock 100% of memSize in host RAM.
# Eliminates memory balloon overhead entirely.
sched.mem.min = "0" # Minimum memory reservation (MB).
sched.mem.max = "unlimited" # Memory usage cap.
sched.mem.shares = "normal" # Memory share priority.
# PCI Hole (32-bit guest support with >3 GB RAM):
pciHole.start = "3072" # PCI memory hole start address (MB).
# Adjust if 32-bit guest cannot address full memSize.
pciHole.use512MB = "FALSE"
pciHole.use1GB = "FALSE"
vhv.enablerequires Intel VT-x or AMD-V on the host (see Section 4 for details).
vvtd.enableadditionally requires host IOMMU (Intel VT-d or AMD-Vi).
Without IOMMU,vvtd.enableis silently ignored even ifvhv.enableworks correctly.
vhv.enable = "TRUE" # Expose hardware virtualization to guest.
# Required for: nested VMs, WSL2, Android emulators,
# Docker with Hyper-V backend inside guest.
vvtd.enable = "TRUE" # Expose virtual VT-d (IOMMU) to guest.
# Required for nested GPU passthrough or nested
# IOMMU-dependent workloads.
# Requires: host IOMMU enabled in firmware + OS.
vmx.allowNested = "TRUE" # Workstation-specific override to permit nested
# hypervisors when vhv.enable alone is insufficient.
featMask.vm.hv.capable = "Min:1" # Force CPUID hypervisor capability bit.
# Syntax: featMask.<scope>.<leaf>.<bit> = "<policy>".
# "Min:1" = ensure bit is at minimum 1 (set).
# "Val:1" = force bit to exactly 1.
# "Val:0" = force bit to exactly 0 (hide).
# Use sparingly — incorrect masks break guest boot.vpmc.enable = "TRUE" # Expose hardware Performance Monitoring Counters.
# Required for profilers: perf, VTune, AMD uProf.
# Has overhead — enable only when profiling.
mce.enable = "TRUE" # Machine Check Exception support.
# Allows guest to receive and handle hardware error events.
hpet0.present = "TRUE" # High Precision Event Timer (see Section 6).
vhu.enable = "TRUE" # VT-x/AMD-V host feature exposure (internal plumbing).ulm.disableMitigations = "TRUE" # Disable Spectre/Meltdown mitigations for this VM.
# ⚠️ Security risk — exposes host to guest attacks.
# Use only in isolated benchmarking environments
# with no sensitive data on the host.
vmGenCounter.enable = "FALSE" # Hide VM Generation Counter (Hyper-V-compatible guests).
# Some anti-cheat and DRM systems detect this counter
# as a VM fingerprint.
⚠️ Most isolation parameters in this section require VMware Tools to be installed in the guest. Without VMware Tools, the guest has no mechanism to receive the isolation policy — clipboard, drag-and-drop, and shared folders simply won't function regardless of these settings, but the restriction intent is also not enforced. For meaningful isolation, always verify VMware Tools is running in the guest.
isolation.tools.copy.disable = "TRUE" # Block clipboard copy: host → guest.
isolation.tools.paste.disable = "TRUE" # Block clipboard paste: guest → host.
# Requires VMware Tools in guest.
isolation.tools.dnd.disable = "TRUE" # Block drag-and-drop in both directions.
# Requires VMware Tools in guest.
isolation.tools.hgfs.disable = "TRUE" # Block Shared Folders (HGFS).
# Overrides all sharedFolder*.enabled settings.
# Requires VMware Tools with HGFS driver.
isolation.tools.diskShrink.disable = "TRUE" # Block disk shrink operations from guest.
isolation.tools.diskWiper.disable = "TRUE" # Block disk wipe operations from guest.
isolation.tools.vixMessage.disable = "TRUE" # Block VIX API automation messages
# (used by automation scripts and orchestrators).
isolation.monitor.control.disable = "TRUE" # Block guest from controlling monitor resolution.isolation.device.connectable.disable = "TRUE" # Block attaching new devices while VM runs.
isolation.device.edit.disable = "TRUE" # Block editing existing device configuration.Guest.Command.Enabled = "FALSE" # Disable guest→host command execution via VIX.
usb.generic.autoconnect = "FALSE" # Block automatic USB device pass-through.
usb.restrictions.defaultAllow = "FALSE" # Deny all USB unless explicitly whitelisted.
⚠️ Anti-cheat and DRM software continuously update their detection methods. These parameters reduce obvious hypervisor fingerprints but do not guarantee full stealth.Side effect warning: Hiding CPUID hypervisor leaves (
hypervisor.cpuid.v0–v3) breaks several VMware Tools subsystems that rely on these leaves for host communication: the memory balloon driver, VMCI heartbeat, and time synchronization may stop working. Evaluate the trade-off between stealth and functionality before applying.
# The hypervisor CPUID leaves expose VMware's presence to any application that queries them:
# Leaf 0x40000000 → hypervisor vendor string ("VMwareVMware")
# Leaf 0x40000001 → hypervisor interface identifier
# Leaf 0x40000002 → version and build number
# Leaf 0x40000003 → feature flags (TSC frequency, APIC bus frequency, etc.)
hypervisor.cpuid.v0 = "FALSE" # Hide leaf 0x40000000 (vendor string).
# ⚠️ Breaks VMware Tools balloon driver and VMCI heartbeat.
hypervisor.cpuid.v1 = "FALSE" # Hide leaf 0x40000001 (interface ID).
hypervisor.cpuid.v2 = "FALSE" # Hide leaf 0x40000002 (version/build).
hypervisor.cpuid.v3 = "FALSE" # Hide leaf 0x40000003 (features / TSC frequency).
# ⚠️ Hiding v3 breaks VMware Tools time synchronization.smbios.reflectHost = "TRUE" # Copy host SMBIOS/DMI tables into guest.
# Guest sees host's motherboard, OEM strings, etc.
hw.model.reflectHost = "TRUE" # Report host's hardware model string to guest.
serialNumber.reflectHost = "TRUE" # Report host's chassis serial number to guest.
smbios.useShortSerialNumber = "TRUE"# Truncate serial to avoid format mismatch warnings.
board-id.reflectHost = "TRUE" # Reflect host motherboard ID (relevant for macOS guests).hw.model = "MacBookPro16,1" # Specific Mac model identifier string.
board-id = "Mac-E1008331FDC96864" # Board ID corresponding to chosen hw.model.
serialNumber = "C02XXXXXXXXX" # Valid Mac serial number format (replace X values).
smbios.reflectHost = "FALSE" # Must be FALSE when manually specifying Mac identity.vmGenCounter.enable = "FALSE" # Hide VM Generation ID (see Section 17).
monitor_control.disable_mmu_largepages = "TRUE" # Disable large pages in guest MMU.
# Obscures some hypervisor memory
# topology detection patterns.All
time.synchronize.*parameters andtools.syncTimerequire VMware Tools to be installed and running in the guest. Without Tools, these keys are inert.Note: hiding CPUID leaf 0x40000003 (Section 19) breaks TSC-based time sync — if using anti-detection settings, disable
time.synchronize.continueand rely on NTP inside the guest instead.
tools.syncTime = "TRUE" # Master switch for VMware Tools time sync.
time.synchronize.tools.enable = "TRUE" # Preferred alias for tools.syncTime.
time.synchronize.tools.startup = "TRUE" # Sync once at guest OS boot.
time.synchronize.continue = "TRUE" # Ongoing periodic sync (every ~60 s).
time.synchronize.restore = "TRUE" # Sync after snapshot restore.
time.synchronize.resume.disk = "TRUE" # Sync after resume from hibernate/disk suspend.
time.synchronize.shrink = "TRUE" # Sync during disk shrink operations.
# Host clock parameters (advanced):
host.cpukHz = "3000000" # Hint: host CPU frequency in KHz for TSC calc.
host.noTSC = "TRUE" # Disable TSC as guest clocksource.
# Use when host TSC is unstable (power states,
# CPU frequency scaling, live migration).
ptsc.noTSC = "TRUE" # Guest clock: don't rely on TSC when unstable.Requires VMware Tools with HGFS driver in guest.
Blocked unconditionally byisolation.tools.hgfs.disable = "TRUE".
sharedFolder.maxNum = "10" # Maximum number of defined shared folders.
sharedFolder0.present = "TRUE"
sharedFolder0.enabled = "TRUE"
sharedFolder0.readAccess = "TRUE"
sharedFolder0.writeAccess = "TRUE"
sharedFolder0.hostPath = "/home/user/projects" # Absolute path on host filesystem.
sharedFolder0.guestName = "projects" # Visible as \\vmware-host\Shared Folders\projects
# on Windows, or /mnt/hgfs/projects on Linux.
# Additional folders follow the same pattern: sharedFolder1.*, sharedFolder2.*, …tools.syncTime = "FALSE" # See Section 20.
tools.upgrade.policy = "manual" # Tools update policy:
# manual = never auto-update
# checkSSL = notify only
# upgradeAtPowerCycle = update at next power-on
tools.remindInstall = "FALSE" # Suppress "please install VMware Tools" reminder.
tools.guest.desktop.autolock = "FALSE" # Don't lock guest screen when host screensaver
# activates.VMCI (Virtual Machine Communication Interface) is the high-speed host↔guest channel used by shared folders, drag-and-drop, VMware Tools heartbeat, and vSockets. Disabling it will break VMware Tools functionality. Only disable in maximum-isolation environments where the trade-off is explicitly accepted.
vmci0.present = "TRUE" # VMCI device presence in the guest.
vmci.available = "TRUE" # Advertise VMCI availability to guest.
vmci.filter.enable = "FALSE" # FALSE = no traffic filtering (better performance).
# TRUE = filter VMCI messages (adds overhead).
vmci0.unrestricted = "TRUE" # Allow unrestricted host↔guest VMCI access.powerType.powerOff = "soft" # Shutdown method:
# "soft" = ACPI graceful shutdown (guest OS shuts down)
# "hard" = immediate power cut (risk of data loss)
powerType.powerOn = "soft" # Boot method.
powerType.suspend = "soft" # Suspend: "soft" = ACPI S3; "hard" = memory snapshot.
powerType.reset = "soft" # Reset: "soft" = ACPI restart; "hard" = force reboot.
suspend.disabled = "FALSE" # TRUE = disable suspend/hibernate from VMware UI.
chipset.onlineStandby = "FALSE" # See Section 6.snapshot.maxSnapshots = "100" # Maximum retained snapshots per VM.
snapshot.periodicScreenshots = "TRUE" # Capture guest screenshot alongside each snapshot.
snapshot.action = "keep" # Post-operation: "keep" or "delete".
mainMem.partialLazySave = "TRUE" # Reduce VM pause during snapshot creation.
# See Section 16 for details.
mainMem.partialLazyRestore = "TRUE" # Faster resume from snapshot.
checkpoint.vmState = "FALSE" # Disable checkpoint state file creation.
# Saves disk space; disables state-based debugging.log.fileName = "vmware.log" # Log file path (relative to .vmx directory).
log.append = "TRUE" # TRUE = append to existing log; FALSE = overwrite.
log.keep = "10" # Number of rotated log files to retain.
log.rotateSize = "102400" # Rotate log when it exceeds this size (bytes).
vmx.buildType = "release" # "release" = normal operation (default)
# "debug" = verbose logging; significant I/O overhead
# "stats" = performance counter collection
debug.vmss = "TRUE" # Enable VMSS (VM Suspend State) debugging.
monitor_control.log_vmsample = "TRUE" # Periodic VM performance sampling written to log.
vmx.scoreboard.enabled = "FALSE" # Disable scoreboard temp files for a cleaner workspace.
⚠️ VNC provides no transport encryption. Use SSH tunneling or a VPN for any remote access.
Assign a unique port per VM when running multiple VMs on the same host.
RemoteDisplay.vnc.enabled = "TRUE"
RemoteDisplay.vnc.port = "5900" # Listening port. Use 5901, 5902, etc. for
# additional VMs to avoid port conflicts.
RemoteDisplay.vnc.password = "s3cr3t" # Stored as plaintext in .vmx — restrict file
# permissions (chmod 600 on Linux).
RemoteDisplay.vnc.keyMap = "en-us" # Keyboard layout: en-us / de / fr / etc.
RemoteDisplay.vnc.throttleConnections = "TRUE" # Rate-limit reconnect attempts.Misconfiguration can force cross-NUMA memory access, significantly degrading performance on multi-socket hosts. Match
cpuid.coresPerSocketto the physical NUMA topology and bindsched.cpu.affinityto cores within the same NUMA node as memory allocation.
numa.nodeAffinity = "0" # Bind VM to NUMA node(s). Comma-separated list
# for multi-node: "0,1".
numa.vcpu.preferHT = "TRUE" # Prefer hyperthreads on the same physical core
# (reduces cross-core LLC contention).
numa.mem.interleave = "FALSE" # Disable memory interleaving across NUMA nodes.
# TRUE may benefit HPC workloads with uniform access.
cpuid.coresPerSocket = "4" # Should match physical NUMA topology for best results.Unity mode allows guest application windows to appear on the host desktop.
Workstation Pro and Fusion only — not available in Player or ESXi.
unity.allowAppWindows = "TRUE" # Show individual guest app windows on host desktop.
unity.customColor = "000000" # Window decoration color (hex RGB, no # prefix).
unity.enableLaunchMenu = "TRUE" # Show guest app launcher in host taskbar/dock.
unity.showBorders = "TRUE" # Show window borders around guest application windows.
unity.showBadges = "TRUE" # Show notification badges on taskbar icons.Injected into the guest via VMware Tools. Readable via
vmtoolsd --cmd "info-get guestinfo.*"or the GuestInfo API. Useful for cloud-init integration and configuration management.
guestinfo.hostname = "myvm"
guestinfo.ip = "192.168.1.100"
guestinfo.dns = "8.8.8.8"
guestinfo.ipv6 = "::1"
# cloud-init integration:
guestinfo.userdata = "base64encodedcloudconfig=="
guestinfo.userdata.encoding = "base64" # Encoding: base64 / gzip+base64 / base64+gzip
guestinfo.metadata = "base64encodedmetadata=="
guestinfo.metadata.encoding = "base64"svga.present = "TRUE"
├── svga.3d.enabled = "TRUE"
│ └── mks.enable3d = "TRUE" ← required upstream
├── svga.enableScreenObject = "TRUE" ← requires VMware Tools ≥ 10.x in guest
├── svga.enableGMR = "TRUE"
└── svga.numDisplays > 1 ← requires svga.enableScreenObject = "TRUE"
mks.enable3d = "TRUE"
├── mks.enableDX11Renderer = "TRUE" ← Windows host (choose one renderer only)
├── mks.enableVulkanRenderer = "TRUE" ← Linux host
├── mks.enableMetalRenderer = "TRUE" ← macOS host (Fusion 13+ only)
└── mks.forceDiscreteGPU = "TRUE"
mks.maxRefreshRate = "120"
├── mks.maxCompositingFPS = "120" ← set equal to maxRefreshRate
└── mks.lowCompositingFPS = "60" ← must be ≤ maxRefreshRate
mks.dx11.enableModernPresentation = "TRUE"
└── mks.enableDX11Renderer = "TRUE" ← required upstream
usb.present = "TRUE" + ehci.present = "TRUE"
├── mouse.vusb.present + .enable
└── keyboard.vusb.present + .enable
xhci.present = "TRUE"
└── USB 3.x device passthrough
vhv.enable = "TRUE" ← requires host Intel VT-x or AMD-V
└── vvtd.enable = "TRUE" ← additionally requires host IOMMU (VT-d / AMD-Vi)
featMask.vm.hv.capable = "Min:1"
└── vhv.enable = "TRUE" ← should be set alongside this mask
cpuid.enable_vmx = "TRUE" ← Intel hosts only; use vhv.enable instead
cpuid.enable_svm = "TRUE" ← AMD hosts only; mutually exclusive with vmx
tools.syncTime / time.synchronize.*
└── VMware Tools must be installed and running in guest
hypervisor.cpuid.v0–v3 = "FALSE" ← hiding these breaks:
├── VMware Tools balloon driver (v0)
├── VMCI heartbeat (v0, v1)
└── Tools time synchronization (v3)
isolation.tools.hgfs.disable = "TRUE"
└── Overrides sharedFolder*.enabled regardless of value
firmware = "efi"
├── uefi.secureBoot.enabled ← EFI required; also needs vHW ≥ 20
└── Required for: macOS guests, Windows 11, GPT boot disks
sched.cpu.latencySensitivity = "high"
└── Permanently reserves vCPU count from host scheduler — high host overhead
# Identity
displayName = "Gaming VM - Windows 11"
guestOS = "windows11-64"
config.version = "8"
virtualHW.version = "22"
firmware = "efi"
# Resources
memSize = "16384"
numvcpus = "8"
cpuid.coresPerSocket = "4"
# Memory locking — full reservation, no balloon/swap
MemTrimRate = "0"
MemAllowAutoScaleDown = "FALSE"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"
prefvmx.minVmMemPct = "100"
mainMem.backing = "swap"
# CPU priority
Priority.grabbed = "high"
Priority.ungrabbed = "normal"
sched.cpu.latencySensitivity = "high"
# Graphics
svga.present = "TRUE"
svga.vramSize = "536870912"
svga.3d.enabled = "TRUE"
svga.enableScreenObject = "TRUE"
svga.enableGMR = "TRUE"
mks.enable3d = "TRUE"
mks.forceDiscreteGPU = "TRUE"
mks.enableDX11Renderer = "TRUE"
mks.dx11.enableModernPresentation = "TRUE"
mks.dx11.waitForQueryYieldMS = "1"
mks.vsync = "FALSE"
mks.maxRefreshRate = "120"
mks.maxCompositingFPS = "120"
mks.lowCompositingFPS = "60"
mks.updateCoalescePeriodUS = "0"
# Input
mks.gamingMouse.policy = "gaming"
mks.useDirectInput = "TRUE"
mks.disableTypematic = "TRUE"
mks.keyboardFilter = "require"
mouse.present = "FALSE"
mouse.vusb.present = "TRUE"
mouse.vusb.enable = "TRUE"
mouse.vusb.useBasicMouse = "FALSE"
keyboard.vusb.present = "TRUE"
keyboard.vusb.enable = "TRUE"
usb.present = "TRUE"
ehci.present = "TRUE"
xhci.present = "TRUE"
# Storage
scsi0.present = "TRUE"
scsi0.virtualDev = "pvscsi"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "disk.vmdk"
scsi0:0.virtualSSD = "TRUE"
# Network
ethernet0.present = "TRUE"
ethernet0.virtualDev = "vmxnet3"
ethernet0.connectionType = "nat"
# Audio
sound.present = "TRUE"
sound.virtualDev = "hdaudio"
sound.autoDetect = "TRUE"
# Overhead reduction
installerDefaults.autoSoftwareUpdateEnabled = "FALSE"
pref.autoSoftwareUpdatePermission = "deny"
tools.syncTime = "FALSE"
devices.hotplug = "FALSE"
suspend.disabled = "TRUE"
# Hardware
hpet0.present = "TRUE"
mce.enable = "TRUE"
vpmc.enable = "TRUE"# Vulkan renderer for Linux host.
# Exact device name must come from mksSandbox.log:
# grep -i "vulkan\|name:" ~/vmware/<vm_name>/mksSandbox.log
mks.enableVulkanRenderer = "TRUE"
mks.vk.forceDevice = "..." # paste exact name from mksSandbox.log
mks.vk.allowUnsupportedDevices = "TRUE" # override VMware GPU whitelist
mks.vk.allowUnsupportedDrivers = "TRUE" # allow proprietary drivers
# Vulkan presentation — disable if VM freezes or crashes on shutdown.
# Known issue on Linux with proprietary GPU drivers (Broadcom-documented workaround).
mks.enableVulkanPresentation = "FALSE"
mks.enableX11Presentation = "TRUE" # fallback presentation layer
# MKS compositing pipeline throughput.
# Guest OS Display Settings will still report 60 Hz (SVGA EDID architectural limit).
# These keys affect host-side frame delivery rate only.
mks.maxRefreshRate = "120"
mks.maxCompositingFPS = "120"
mks.lowCompositingFPS = "60"
mks.updateCoalescePeriodUS = "0"
mks.vsync = "FALSE"
# SVGA
svga.present = "TRUE"
svga.3d.enabled = "TRUE"
svga.enableScreenObject = "TRUE"
svga.enableGMR = "TRUE"
svga.vramSize = "536870912"
mks.enable3d = "TRUE"
mks.requireHardwareRenderer = "TRUE"
# Audio — PipeWire prevents exclusive device lock on Linux host
sound.present = "TRUE"
sound.virtualDev = "hdaudio"
sound.fileName = "pipewire"
sound.autoDetect = "FALSE"displayName = "Sandbox - Isolated"
guestOS = "windows10-64"
config.version = "8"
virtualHW.version = "19"
memSize = "4096"
numvcpus = "2"
# Full host↔guest isolation
# Note: clipboard/DnD/HGFS restrictions require VMware Tools in guest.
isolation.tools.copy.disable = "TRUE"
isolation.tools.paste.disable = "TRUE"
isolation.tools.dnd.disable = "TRUE"
isolation.tools.hgfs.disable = "TRUE"
isolation.tools.diskShrink.disable = "TRUE"
isolation.tools.diskWiper.disable = "TRUE"
isolation.tools.vixMessage.disable = "TRUE"
isolation.device.connectable.disable = "TRUE"
isolation.device.edit.disable = "TRUE"
isolation.monitor.control.disable = "TRUE"
Guest.Command.Enabled = "FALSE"
# Network isolation
ethernet0.present = "TRUE"
ethernet0.connectionType = "hostonly"
ethernet0.noPromisc = "TRUE"
ethernet0.noForgedSrcAddr = "TRUE"
# USB lockdown
usb.generic.autoconnect = "FALSE"
usb.restrictions.defaultAllow = "FALSE"
# Disable VMCI (breaks VMware Tools functionality — accepted trade-off here)
vmci0.present = "FALSE"
vmci.available = "FALSE"
# Extended logging for forensic analysis
log.keep = "20"
log.rotateSize = "10485760"
vmx.buildType = "debug"
monitor_control.log_vmsample = "TRUE"displayName = "Linux Dev VM - Ubuntu 24.04"
guestOS = "ubuntu-64"
config.version = "8"
virtualHW.version = "22"
memSize = "16384"
numvcpus = "8"
cpuid.coresPerSocket = "4"
# Graphics (Linux Vulkan stack)
svga.present = "TRUE"
svga.vramSize = "268435456"
svga.3d.enabled = "TRUE"
svga.enableScreenObject = "TRUE"
svga.enableGMR = "TRUE"
mks.enable3d = "TRUE"
mks.enableVulkanRenderer = "TRUE"
mks.enableVulkanPresentation = "TRUE"
mks.gl.allowBlacklistedDrivers = "TRUE"
mks.maxRefreshRate = "120"
mks.maxCompositingFPS = "120"
mks.updateCoalescePeriodUS = "0"
# Nested virtualization (Docker / KVM / Android emulators)
vhv.enable = "TRUE"
vvtd.enable = "TRUE"
vmx.allowNested = "TRUE"
# Storage
scsi0.present = "TRUE"
scsi0.virtualDev = "pvscsi"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "disk.vmdk"
scsi0:0.virtualSSD = "TRUE"
# Network (bridged for direct LAN access)
ethernet0.present = "TRUE"
ethernet0.virtualDev = "vmxnet3"
ethernet0.connectionType = "bridged"
# Time synchronization
tools.syncTime = "TRUE"
time.synchronize.continue = "TRUE"
time.synchronize.tools.startup = "TRUE"
# Input
mouse.vusb.present = "TRUE"
mouse.vusb.enable = "TRUE"
mouse.vusb.useBasicMouse = "FALSE"
usb.present = "TRUE"
ehci.present = "TRUE"
xhci.present = "TRUE"
# Audio (PipeWire — no exclusive device lock)
sound.present = "TRUE"
sound.virtualDev = "hdaudio"
sound.fileName = "pipewire"
sound.autoDetect = "FALSE"| Value | OS |
|---|---|
windows11-64 |
Windows 11 (64-bit) |
windows10-64 |
Windows 10 (64-bit) |
ubuntu-64 |
Ubuntu Linux (64-bit) |
rhel9-64 |
RHEL / CentOS 9 (64-bit) |
darwin23-64 |
macOS Sonoma |
darwin21-64 |
macOS Monterey |
other-64 |
Unknown 64-bit OS |
other |
Unknown 32-bit OS |
| Hex | Vendor |
|---|---|
0x8086 |
Intel |
0x10DE |
NVIDIA |
0x1002 |
AMD |
0x045E |
Microsoft |
0x046D |
Logitech |
featMask.<scope>.<cpuid_leaf>.<bit_name> = "<policy>"
Scopes: vm = applies to the VM globally
Policies:
Min:0 = bit must be at minimum 0 (no effect if already 0)
Min:1 = bit must be at minimum 1 (force set)
Val:0 = force bit to exactly 0 (hide feature)
Val:1 = force bit to exactly 1 (expose feature)
Example:
featMask.vm.hv.capable = "Min:1" # ensure hypervisor capability bit is set
- Broadcom KB 315655 —
knowledge.broadcom.com/external/article/315655— Authoritative virtualHW.version compatibility table - VMware Workstation Pro Documentation — Official product manual; covers supported
.vmxkeys - VMware ESXi / vSphere Configuration Maximums —
configmax.esp.vmware.com— Hard limits per hardware version - Arch Linux Wiki — VMware —
wiki.archlinux.org/title/VMware— Best community reference for Linux host: module loading, Wayland/Xwayland fixes, audio backends - VMTN Community Forums — Historical catalogue of undocumented parameters contributed by VMware engineers and power users
- PipeWire documentation —
pipewire.pages.freedesktop.org— Backend behaviour and ALSA compatibility layer (pipewire-alsa) - VMware SVGA Device Developer Kit —
github.com/vmware/vmware-svga— Low-level SVGA3D protocol documentation - open-vm-tools source —
github.com/vmware/open-vm-tools— Reference implementation for guest-side Tools-dependent parameter behaviour - VKD3D-Proton —
github.com/HansKristian-Work/vkd3d-proton— DX12→Vulkan translation layer
Parameters marked as undocumented have been sourced from community reverse-engineering, VMTN forum posts by VMware engineers, and the references listed above. Behaviour may differ across product versions, host OS, and GPU driver versions. Always verify in a non-production environment.