Solidworks: activation license mode is not supported in this virtual environment (Qemu-KVM)
Solution 1:
Most current hypervisors that run on Intel hardware use CPUID leaves 0x40000000 et seq. to pass information about the hypervisor from host to guest.
KVM, Xen, VMware and Hyper-V all use this method.
This is in addition to the hypervisor feature flag set in CPUID leaf 0x1, which indicates that the machine is a virtual machine.
It's therefore trivial for a program which can call the CPUID instruction to determine whether it is running under one of these hypervisors.
Recent versions of KVM include a command line option to disable the CPUID 0x40000000 leaf, -cpu kvm=off
.
Solution 2:
I just wanted to share my experience here as well, in case others are in a similar situation (trying to install solidworks on a virtualbox VM)
My attempted setup:
xubuntu 16.04 host OS, VirtualBox, Windows 10, and Solidworks 2015. I was seeing the same error discussed above.
The Solution:
The solution I eventually found was to use the hidevm.bat
script included in the Solidsquad crack, for tricking Solidworks into thinking it isn't running in a VM. you can use the .bat file even if you have a legitimate license (as I would hope you do). the .bat is intended for users running Solidworks inside a VirtualBox VM, with Windows as the host OS as well, however if you're like me trying to run Linux as the host OS, you can still open up the .bat file, pick out the relevant commands, adjust them for linux, and run them. the modified relevant commands are:
VMNAME=[whatever your VM name is]
rand9="abcdefghi" #any 9 character string
rand20="abdcefghijklmnopqrst" #any 20 character string
rand8="abcdefgh" #any 8 character string
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "American Megatrends Inc"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "2.1.0"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "ASUSTek Computer"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" $rand9
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" $rand20
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision" $rand8
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" "SEAGATE ST3750525AS"
In case your VM is configured to use EFI firmware you need to replace pcbios
by efi
in the keys. See 9.12. Configuring the BIOS DMI information.
Solution 3:
The official way of activating Solidworks server on KVM is to apply for a "Activation Exempt licensing for SolidWorks". We do this through the reseller, but possibly could be done directly through Solidworks support.
Solidworks sends a license file that Solidworks License Manager loads through the Advanced Options of the Server Administration tab.
Given that the last two years it has taken more than 2 weeks for Solidworks to send the license file, it would be nice to have them not blacklist KVM.
Solidworks has an "Enhancement Request" open with the title: "Provide SNL Server support for VM KVM Qemu Libvirt." ER # 1-9482749288 I found it by logging in to Solidworks portal, finding the Enhancement Request link, and typing KVM.
Please leave a comment on this Enhancement Request! Hopefully they'll decide KVM is a legitimate virtualization environment.
Solution 4:
'/>
missing on EOL <qemu:arg value='type=1,manufacturer=LENOVO
so here is the complete libvirt config modifications :
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
(...)
... Please notice there is no CPU definition on the top.
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,kvm=off'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P3'/>
</qemu:commandline>
(...)