How to Bypass Solidworks KVM Virtualization Detection for License Activation


6 views

When attempting to run Solidworks 2015 PDM in a KVM virtual environment, many users encounter the frustrating "activation license mode is not supported" message. While earlier versions worked fine, the 2015 release introduced stricter virtualization checks that specifically target QEMU-KVM implementations.

Through reverse engineering and testing, we've identified these primary virtualization detection mechanisms:

  • CPUID leaf 0x40000000 (KVM signature)
  • ACPI table vendor strings
  • SMBIOS system information
  • Virtio device drivers
  • Network adapter MAC prefixes

Here's the complete solution that successfully masks KVM virtualization:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>solidworks-vm</name>
  <memory unit='KiB'>16777216</memory>
  <vcpu placement='static'>8</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <qemu:commandline>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='host,kvm=off,hv_vendor_id=null'/>
    <qemu:arg value='-smbios'/>
    <qemu:arg value='type=0,vendor=Dell,version=2.12.0,date=06/14/2022'/>
    <qemu:arg value='-smbios'/>
    <qemu:arg value='type=1,manufacturer=Dell,product=Precision 7820,serial=ABC123456'/>
  </qemu:commandline>
</domain>

For complete virtualization masking, consider these additional measures:

<devices>
  <controller type='virtio' model='none'/>
  <interface type='bridge'>
    <mac address='00:16:3e:5d:c6:45'/>
    <model type='e1000e'/>
  </interface>
  <disk device='disk' type='file'>
    <driver name='qemu' type='qcow2' cache='none'/>
    <source file='/path/to/disk.qcow2'/>
    <target dev='sda' bus='sata'/>
  </disk>
</devices>

After implementing these changes, verify the environment appears physical:

# Check CPU flags
systeminfo | find "Hyper-V Requirements"

# Verify SMBIOS data
wmic bios get manufacturer,serialnumber,version

# Examine ACPI tables
powercfg /a

With these modifications, Solidworks activation should proceed normally, treating the VM as physical hardware. Remember to adjust the SMBIOS values to match your preferred hardware profile.


Many engineering software packages, including SolidWorks, implement hypervisor detection mechanisms to prevent activation in virtualized environments. While this is often framed as a licensing restriction, it creates real challenges for developers and IT teams who rely on virtualization for testing and deployment.

From reverse-engineering and testing, we've identified these primary detection vectors:

  • CPUID leaf 0x40000000 (KVM signature)
  • ACPI table vendor strings
  • SMBIOS information
  • Disk controller type (virtio vs. emulated)
  • Network adapter MAC prefixes

Here's the complete QEMU/KVM configuration that successfully bypasses SolidWorks 2015+ detection:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>solidworks-vm</name>
  <memory unit='KiB'>16777216</memory>
  <vcpu placement='static'>8</vcpu>
  
  <os>
    <type arch='x86_64' machine='pc-q35-5.2'>hvm</type>
    <boot dev='hd'/>
  </os>

  <features>
    <acpi/>
    <apic/>
  </features>

  <qemu:commandline>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='host,kvm=off,hv_vendor_id=AuthenticAMD'/>
    
    <qemu:arg value='-smbios'/>
    <qemu:arg value='type=0,vendor=Dell,version=1.0,date=01/01/2022'/>
    
    <qemu:arg value='-smbios'/>
    <qemu:arg value='type=1,manufacturer=Dell,product=Precision 7820,serial=ABC123456'/>
  </qemu:commandline>
</domain>

The most important elements are:

  • kvm=off: Disables the KVM signature in CPUID
  • hv_vendor_id: Overrides the hypervisor vendor string
  • SMBIOS type 0/1: Provides plausible hardware identification

For better emulation:

  1. Use IDE or SATA controllers instead of virtio for disks
  2. Configure emulated Intel e1000 network adapters
  3. Disable any KVM-specific paravirtualization features
  4. Consider using the following CPU flags for better compatibility:
-cpu host,kvm=off,+ssse3,+sse4.1,+sse4.2,+aes,+xsave,+avx,+fma

To test your configuration before installing SolidWorks:

wmic computersystem get manufacturer,model
wmic cpu get name
systeminfo | find "System Manufacturer"

These should return your spoofed values rather than QEMU/KVM identifiers.

While these changes help with licensing, they may impact performance:

  • Disabling virtio reduces disk I/O throughput
  • CPU feature masking might prevent certain optimizations
  • Emulated devices consume more host resources

For production workloads, consider testing with both optimized and compatibility configurations to find the right balance.