Windows Phone 8 SDK on a Virtual Machine with Working Emulator
This article explains how to create a Windows 8 Virtual Machine using VMWare software and install the Windows Phone 8 SDK on Windows 8 running on Virtual Machine. It also explains how to enable Hyper-V and Windows Phone 8 emulator.
Article Metadata
Compatibility
Article
Introduction
One of the prerequisites for using Windows Phone 8 SDK is a machine with Hyper-V capability running (at least) Windows 8 Pro 64 bit edition. Provided your computer has the necessary hardware, it is possible to install the SDK in a virtual environment running Windows 8 and still use the Emulator. This guide demonstrates how to do just that, using VMWare Workstation Trial and Windows 8 Enterprise Developer Evaluation.
If you have a developer unlocked device you won't need the Emulator, but can instead install the SDK and then use the device for testing. In this case you can use Windows 8 basic edition (instead of pro/enterprise) and you can skip the instructions on editing manually the .VMX file and the HYPER-V setup.
The guide uses evaluation versions of VMWare Workstation and Windows 8 Enterprise. You can of course use 64 bit licensed versions of VMWare Workstation and Windows 8 Pro (or Windows 8 Enterprise) instead. If you don't need the Emulator you can use Windows 8 Base edition.
What will you need
- 64bit host operating system (This article was done with a Windows 7 64bit)
- At least 8GB of RAM for the host machine so that you can assign 4GB to the Virtual Machine
- 30-40GB of free space. At the end of this article, you will have a Virtual Machine that will have about 15GB in size. Reserve at least some space for it to grow.
You will also need the following software:
- Download Coreinfo tool. This is used to check if your computer is capable of running Windows 8 with Hyper-V. Run the steps described below in First Check – Does my computer support Windows 8 and Hyper-V? section before downloading the remaining softwares so that you don't lose time if your computer is not supported.
- Download Windows 8 Developer Evaluation (be sure to download the 64bit version). You will need to register with your Windows Live ID so that you can also get a key for the evaluation. It will grant you 90 days of evaluation.
- Register on vmware.com. After registering, download a trial of VMWare Workstation 9 or higher. This will grant you a 30 days license.
- Download the Windows Phone 8 SDK. You can do this after installing the VM so that you can download the tool from within it.
First Check – Does my computer support Windows 8 and Hyper-V?
The first step is to check if your computer supports Windows 8 Hyper-V or not. If it does then you will be able to Install VMWare Workstation and enable it on the VM.
Assuming that you have already downloaded the Coreinfo tool, the next steps are:
- Open the command prompt by clicking on start -> type CMD, then right-click "Command Prompt" and Run as administrator
- Go to the folder where you downloaded the tool to and type: coreinfo.exe –v
Example:
C:\Tools>Coreinfo.exe -v
Coreinfo v3.1 - Dump information on system CPU and memory topology
Copyright (C) 2008-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
HYPERVISOR - Hypervisor is present
VMX * Supports Intel hardware-assisted virtualization
EPT * Supports Intel extended page tables (SLAT)
If you have a SLAT enabled CPU (marked by an asterisk), you can proceed with this guide. If not, you may consider upgrading your hardware.
Install VMWare Workstation 9
After downloading VMWare Workstaion 9, install it on your machine. It is a simple wizard-directed procedure.
One of the steps in the installation is to add the key which you got from your trial. Please make sure to have it with you before proceeding further:
Finally you are ready to create your first Virtual Machine.
Create the Virtual Machine
The first step is to select the option to create a new Virtual Machine on this screen
On the next screen make sure you select the Custom (Advanced) option. This is the best way to create your VM so that you will have full control over the settings:
And when it comes to hardware compatibility, select the highest option:
The next step is very important where you need to select the option that you will install the OS later. Do not try to install Windows 8 now otherwise the setup will fail. This is because with the Evaluation edition you don't have a KEY and for some reason VMWare tries to create an automated setup file which, later on, Windows 8 setup will fail to recognize.
Give a name to your VM:
Configure the CPU:
And configure memory. I would recommend at least 4GB. My machine has 8GB. If you can’t use 4GB, use as much as you can.
For "Network Type", use NAT, so that your VM will share your network/Internet connection. It is crucial that your VM has access to the Internet otherwise you won't be able to install the SDK:
I left the default I/O controller selected:
And now it is time to create a new Virtual HD:
Again I left the default type selected:
And I recommend at least 60GB. It is better to reserve more if you can. Also I prefer to keep my VM on a single file:
I store my Virtual HD on a external USB 2.0 or 3.0 hard drive. I found that having the Virtual HD on a separate disk significantly increases performance:
The next step is to customize the hardware. This is very important because we will need to tweak some of the default values:
Make sure you select the option “Virtualize Intel VT-x/EPT or ARM-V/RVI”. This is required to be able to run HYPER-V on your virtual machine.
It is now time to make some changes to the Virtual Machine configuration file before proceeding. Exit VMWare before making this change. If you try to install HYPER-V before doing this step, chances are that you will have problems running it. So to ensure that everything goes smoothly, go to the folder where you created your Virtual Machine and find the file with extension .VMX. In my case it was “Windows 8 x64.vmx”. Edit the file and add the text marked in red (hypervisor.cpuid.v0 = ”FALSE”):
Save the file.
That is it. You are ready for the next and final step. For that you need to start VMWare Workstation again.
Install Windows 8 Virtual Machine
On the CD/DVD select the Windows 8 Enterprise Developer Evaluation ISO you downloaded earlier (or that you will download now):
Run your VM and follow the setup instructions for Windows 8.
Once you run the Windows 8 for the first time, you will be asked to customize it. Follow the wizard to the end and when you have finally access to your Windows 8 installation, open the desktop and select the "Install Tools" option for VMWare:
A Virtual DVD drive will be mounted and Windows 8 may show you a message on the upper right corner with a message. Select that message or open Explorer with the Windows Key + E and find the DVD drive. Run the VMWare setup:
After performing the above steps, restart the Virtual Machine.
When you get Windows 8 VM up and running again, open Control Panel and select the option Turn Windows features on or off:
Then select the HYPER-V options:
Your are all set. Next step is to install the SDK. Go to the download page mentioned at the beginning of this page and run it:
The setup will start. Follow the wizard:
After the installation is complete you will need to register your copy of the SDK. Just follow the link "Register online" and follow the necessary steps.
At the end of the registration, you will be provided with a Key. Copy that key, save it for future reference and future installations and use it on the Product Key box:
All done.
Now to create your first Windows Phone 8 Project
Now to test if everything is working properly, open Visual Studio 2012 express and create a new Windows Phone Project:
Select the Windows Phone 8 as a target:
And you will get a new project similar to this:
Press F5 or the Green arrow to run the project. The emulator will start to load. Be patient because the first time can take a few long seconds:
If your app takes a bit to load, don’t worry. It is normal. Just give it a few more seconds and it will come up:
Congratulations. You now have a fully working Windows 8 with Windows Phone 8 SDK and Windows Phone 8 emulator up and running.
What about connecting my device to the virtual machine?
This should be trivial indeed, most (all?) virtual machines allow forwarding of the USB port from the host OS to the guest one, by simply clicking on the USB status indicator icon. Once you redirect the USB port to the guest OS, Windows 8 will see it and start installing the required drivers, after which the device is available to the IDE.
Under the tips and tricks section of this topic:
- if you are using Oracle VirtualBox make sure to enable USB 2.0 in VM's settings. This will require you to also install the corresponding Oracle VM VirtualBox Extension Pack.
Final Words
So, I hope you liked this guide. I tried to be as simple as possible, and to include as many screenshots as I could, because a picture does worth a thousand words. Feedback and comments are very welcome.


































Contents
Kiran10182 - Hyper-V reference
Hi João,
First of all, thanks for the comprehensive article. :)
I sub-edited the article and made few minor changes. I tried to reference Hyper-V to the Wikipedia article. If you have some better(concise and precise) reference for it then please edit the article and update my relevant edits.
Also, the article talks about Windows 8 Pro version for the Windows Phone 8 SDK installation as a prerequisite. Can you edit it so that it gives developers some idea about which version is suitable for Windows Phone 8 SDK depending on their needs? My understanding is that, you may need Pro version only when you want an emulator support, otherwise basic version will do the job fine.
Thanks again.kiran10182 14:38, 4 November 2012 (EET)
Joaocardoso - About Windows 8 Pro
Hi Kiran,
I didnt mentioned the non-pro version because this articles was focused on having the emulator running in a VM. But I do see the merits of at least mentioning it, so I will. :)
Thanks for your comments and you edit.joaocardoso 14:43, 4 November 2012 (EET)
Caio Proiete - Nice!
Great post João!!
Thanks for sharing.Caio Proiete 04:31, 5 November 2012 (EET)
Joaocardoso - @Caio
Thanks,
Nice to see you around :)joaocardoso 12:18, 5 November 2012 (EET)
Kiran10182 - Re: About Windows 8 Pro
Hi João,
Thanks for clarifying the need for Windows 8 Pro edition w.r.t emulator support. :)
Cheers.kiran10182 09:50, 6 November 2012 (EET)
Hamishwillee - Excellent article - subedited
Hi Joao
This is excellent. I like the way you've introduced this and the methodical and structured approach. I have subedited the introduction to make it a little more concise. There are a few other very minor subedit changes - but please check them out and confirm that you're happy.
Only "technical" check, according to instructions here "Hyper-V on Windows 8 requires that your BIOS supports Hardware-assisted virtualisation, Second Level Address Translation (SLAT), and Hardware-based Data Execution Prevention (DEP)". You only cover "SLAT" - is that an omission, or does the VM cover some of these for you? Might be worth linking to that article too.
As this is your first wiki article with pictures, a few more notes just FYI:
Thank you!
regards
Hamishhamishwillee 05:35, 8 November 2012 (EET)
Joaocardoso - @hamish - Thanks!!!
Thanks a lot for your input and thanks for the edits. I'll look into that technical aspect of Hyper-V just to make sure I'm not missing anything. I'm also going to add the steps for Mac Users (I don't have any want to make the screenshots but there are some references on how to do it, so I'll link to it)
I'm writing another article and I'm finding it much harder than I first though :) And that's a good thing. I'm appreciating much more the effort of everyone that contributes to the wiki :) and everyone that reviews articles. And at the same time I'm learning new stuff because when writing we need to double check, cross-check and test. Not only that we need to understand why something works or not. Really cool if you ask me :)
Cheers
joaocardoso 12:33, 8 November 2012 (EET)
Adi.Stoicuta - I'm lucky :)
I have this proc:
===============
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz Intel64 Family 6 Model 42 Stepping 7, GenuineIntel HTT * Hyperthreading enabled HYPERVISOR - Hypervisor is present VMX * Supports Intel hardware-assisted virtualization SVM - Supports AMD hardware-assisted virtualization EM64T * Supports 64-bit mode
===============
apparently without SLAT. And WP emulator is working !
Host: W7 Pro 64 bit / 8 GB RAM Guest: W8 Enterprise Evaluation / 4 GB RAM
BTW, thank you for this awesome tutorial :)Adi.Stoicuta 16:54, 9 November 2012 (EET)
Joaocardoso - Adi.Stoicuta
Did you run Coreinfo with or without -v?
You need to run it like this:
coreinfo -V
The output you get is different if you run it without the -V.
Without -V on mine:
Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
HTT * Hyperthreading enabled
HYPERVISOR - Hypervisor is present
VMX * Supports Intel hardware-assisted virtualization
SVM - Supports AMD hardware-assisted virtualization
EM64T * Supports 64-bit mode
With -V:
The flag you must look for is the one that has EPT, not SVM.Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
Intel64 Family 6 Model 42 Stepping 7, GenuineInte
l HYPERVISOR - Hypervisor is present
VMX * Supports Intel hardware-assisted virtualization
EPT * Supports Intel extended page tables (SLAT)
joaocardoso 19:00, 9 November 2012 (EET)
Adi.Stoicuta -
OK, I run now with -v and is like yours. Maybe some correction in article, because in text is coreinfo.exe – (only dash, without v)
and in output, beellow C:\Tools>Coreinfo.exe -v
and i do'nt read first line in output :)Adi.Stoicuta 19:24, 9 November 2012 (EET)
Joaocardoso - Adi.Stoicuta - Thanks!
Corrected the typo.
If you find an error on a Wiki article, please feel free to correct it. This is a WIKI not a blog, so editing each others articles to improve it its very well accepted and welcomed :)
Cheersjoaocardoso 19:35, 9 November 2012 (EET)
Hamishwillee - Really cool if you ask me :)
Me too. Quality costs time :-)hamishwillee 06:49, 13 November 2012 (EET)
Paraswadehra - WP7.5 emulator
I've already had the WP8 emulator working in my VM, but the WP7.5 emulator does not work - is there a way to get that working with VS 2012 and WP8 SDK in a VM environment?paraswadehra 20:24, 14 November 2012 (EET)
Adi.Stoicuta - Not covering ?
But WP8 emulator is not covering WP7.X also ?Adi.Stoicuta 20:36, 14 November 2012 (EET)
Paraswadehra - WP7.x emulator
No, the WP8 emulator does not cover WP7.x app scenario.paraswadehra 20:51, 14 November 2012 (EET)
Joaocardoso -
Whan you create an app on Windows Phone 8 SDK and target it to Windows Phone 7.1, it will use Windows Phone 8 Emulator to run the Windows Phone 7.1 app. If you want to run a 7.1 app on a 7.1 emulator, you need to use VS2010 + Windows Phone 7.1.1 SDK.joaocardoso 14:46, 20 November 2012 (EET)
Cadlg - How about using other VMWare product or version ?
I use VMWare Server 2 a lot, but installing Workstation 9 forces the uninstallation of VMWare Server, so my questions are: Is it really necessary to use VMWare workstation 9, or can I use VMWare Server ? If Workstation is necessary: I have a Workstation 8 commercial license, Can I use that version, or is version 9 mandatory ?
I know I can try and test, but it will take valuable time, which maybe I can save if you (or anyone else) know the answer.
Thanks, very good article.
-CADLGcadlg 19:10, 26 November 2012 (EET)
Ckruhs -
Great article! Saved me a lot of time :-)
ckruhsckruhs 20:59, 26 November 2012 (EET)
InPulseWorks - VMWare Player 5.0.1 build-894247
I managed to get the emulator working with VMWare Player 5.0.1 build-894247. The trick was to set manually numvcpus = "2" (this option is not available on vmware player config ui).inPulseWorks 11:56, 18 December 2012 (EET)
Adi.Stoicuta - Congratulation for prize
From de second 1 when I reed the title, I say "This is a Lumia 920 winner" :))Adi.Stoicuta 08:12, 8 January 2013 (EET)
Bahaa1985 - Bahaa
My PC Rams are 3 giga bytes, will it work even slowley?bahaa1985 18:11, 12 January 2013 (EET)
Maxim.denisov@nokia.com -
Excellent! I have managed installation of Windows phone 8 sdk on Macbook pro on OS Mountain lion with bootcamp with windows 7. I used 2 gb of 4 gb for Virtual drive for windows 8. Now I have Macbook with OS Mounatin lion + bootcamp Windows 7 with Windows * on virtual machine and Windows phone 8 Sdk with working emulator on it.
Windows phone 8 emulator works fine.
Thank you!maxim.denisov@nokia.com 13:42, 17 January 2013 (EET)
Pierreg -
Excellent step by step tutorial :)
I have a working windows phone 8 emulator running on windows 8 pro 64bits guest in Vmware Player 5 under a Linux 64bits host. One thing is missing: internet connection in the phone emulator.
The win8 guest has internet, but the phone is unable to access it. I have a network adaptor: vEthernet (Internal Ethernet Port Windows Phone Emulator Internal Switch) but no connection
Any suggestion ?pierreg 12:13, 2 February 2013 (EET)
Joaocardoso - Hi Pierreg
I never tested this on a Linux host machine. I do use Linux frequently but never installed VMware on it or ran Windows 8 as a guest operating system.
The fact that you have internet on Windows 8 is good news. Can you get me the full configuration you have for the HYPER-V entry for Windows Phone emulator on your windows 8 machine? Did you made any changed to the default setup? Also did you installed the most recent VMWare tools on the Guess OS?
Cheersjoaocardoso 02:30, 4 February 2013 (EET)
Joaocardoso - @Pierreg
As a followup on this please make sure you have DHCP enabled on the network your VM connects to. The reason for this is that the WP8 emulator requires that you have DHCP for the network.
More on this here: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681694(v=vs.105).aspx
Specially this section:
Cannot connect to network destinations when network settings require manual configuration ________________________________________ To connect to network destinations from the emulator, your network must meet the following requirements: • DHCP. The emulator requires DHCP because it configures itself as a separate device on the network with its own IP address. • Automatically configured DNS and gateway settings. It’s not possible to configure DNS and gateway settings manually for the emulator.
If your network requires manually configured settings, check with your IT administrator to determine how you can enable network connectivity for the emulator.joaocardoso 18:02, 6 February 2013 (EET)
Pierreg -
Hi,
With the same previous configuration, I have 3 icons in the "Network connections" dialog box:
In the host, from vmware options, I set my network adapter as Bridged.
In a cmd terminal, I enter those commands
C:\Users\pierre>ipconfig /release Windows IP Configuration Ethernet adapter vEthernet (Windows Phone Emulator Internal Switch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::58b6:df18:aa0a:9f80%24 Autoconfiguration IPv4 Address. . : 169.254.159.128 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . : 192.168.9.2 Ethernet adapter vEthernet (Intel(R) 82574L Gigabit Network Connection Virtual S witch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::1c24:833f:283e:99c6%22 Default Gateway . . . . . . . . . : Tunnel adapter isatap.{816188D2-DDF0-47C3-B186-B9B9F4EF9DDD}: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter Teredo Tunneling Pseudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter isatap.{95BFC5B3-D6F1-4E31-A6B7-2FCC6301784F}: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :C:\Users\pierre>ipconfig /renew "vEthernet (Intel(R) 82574L Gigabit Network Connection Virtual Switch)" Windows IP Configuration Ethernet adapter vEthernet (Windows Phone Emulator Internal Switch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::58b6:df18:aa0a:9f80%24 Autoconfiguration IPv4 Address. . : 169.254.159.128 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . : 192.168.9.2 Ethernet adapter vEthernet (Intel(R) 82574L Gigabit Network Connection Virtual S witch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::1c24:833f:283e:99c6%22 IPv4 Address. . . . . . . . . . . : 192.168.0.100 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 Tunnel adapter Teredo Tunneling Pseudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter isatap.{95BFC5B3-D6F1-4E31-A6B7-2FCC6301784F}: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :C:\Users\pierre>ipconfig /renew "vEthernet (Windows Phone Emulator Internal Switch)" Windows IP Configuration An error occurred while renewing interface vEthernet (Windows Phone Emulator Int ernal Switch) : unable to contact your DHCP server. Request has timed out. C:\Users\pierre>In the host, using Wireshark, I can see the DHCP offer/answer packets for "vEthernet (Intel(R) 82574L Gigabit Network Connection Virtual Switch)". In the case of the Windows Phone connection, I don't see any packet coming out of the guest.
If I launch the phone emulator, in the Additional Tools -> Network panel, I have
Any idea ?But still, if I try to reach google or bing, there is no connection established.
pierreg 13:43, 29 March 2013 (EET)
/*
Joschl - Cant't deploy to a Samsung Ativ S Windows 8 Phone via USB
A really great article! Thanks a lot!!!
I know, this is a Nokia - Forum, but perhaps has someone a glory hint for me, to get my Samsung Ativ S Windows 8 Phone inside the VMWare-Win 8-Machine visible/accessable.
Host-Os: Win 7 x64 VMWare-Player: 5.0.2 build-1031769 Guest-OS: Win 8 x64 Enterprise (Evaluation) Emulater works fine. Real world smartphone is not working until now.
When i plug in the smartphone a Win 8 Phone is recognized an in the device manager i can see a new "USB-Component" Device.
But i can't redirect or forward it to inside the VM. Does anybody solve this problem? Thanks for reading this!Joschl 19:14, 14 May 2013 (EEST)
PROBLEM SOLVED - Thanks to Ltomuta fpr motivate me to try it again!
The resolution in my case is. I had to connect to my USB 2.0 connector, not to a USB 3 - Hub. I'm wondering why this is a problem, but when i changed the USB-Port, the Virtual Machine recognized the Win 8 Phone.
Again big Thanks to you!!!
Ltomuta - Re: Cant't deploy to a Samsung Ativ S Windows 8 Phone via USB
As I wrote at http://www.developer.nokia.com/Community/Wiki/Windows_Phone_8_SDK_on_a_Virtual_Machine_with_Working_Emulator#What_about_connecting_my_device_to_the_virtual_machine.3F there may be some virtual machine specific settings that you must play with in order to ensure that the device is fully visible, with all its services, but before even considering that you must enable basic USB passthrough. With VMWare products as I remember there's an USB icon to tap on VM's system tray (below guest OS' system try). Did you do that? Are you able to make other USB devices accessible to the guest OS?ltomuta 10:31, 15 May 2013 (EEST)
@Ltomuta: From joschl: Thank you! It works now. I described it in my post.