VMWare & Windows 8.1's Modern UI with Retina Display
Windows 8.1 features automatic scaling based on the physical dimensions your display.
However, in a virtual machine it is typical for device not to report any EDID information at all.
This results in the automatic scaling producing tiny ~96dpi results, even when 200% scaling is turned on for traditional Windows content. Indeed, setting the ‘Larger’ option for metro still suffers from being too small relative to other content.
Luckily, it is still possible to provide Windows with an EDID override in the registry.
The EDID information of any Retina Class display will work just fine.
1. Dump the raw EDID file, from Mac OS X :
ioreg -l | grep IODisplayEDID | awk ‘{print $9}’ | sed ’s/[^0-9a-f]//g’ | perl -ne ’s/([0-9a-f]{2})/print chr hex $1/gie’ > ~/edid.dat
2. Install MonInfo to your Windows VM:
3. Open edid.dat in MonInfo (File -> Open).
This will display summary information about the device.
4. Create an .inf in MonInfo (File -> Create .Inf)
5. Boot Windows 8.1 in ‘Disable Driver Signing Enforcement’ mode
- Win-C to bring up Charms Bar.
- Click (Settings -> Change PC Settings)
- Click (Update & Recovery -> Recovery -> Advanced Setup -> Restart Now)
- Click (Troubleshoot -> Startup Settings -> Restart)
- Press 7 (Disable Driver Signing Enforcement)
6. Change from ’non-pnp monitor’ to monitor.inf edid override.
- Right Click on the ‘Start Menu’ button
- Click on the ‘Device Manager’
- Click on ‘Monitors’
- Right Click on ’non-php monitor’
- Click ‘Update Driver Software…’
- Click ‘Browse My Computer for Driver Software’
- Click ‘Let my pick from a list of device drivers on my computer’
- Click ‘Have disk’
- Navigate to the monitor.inf
- Click ‘OK’ and ‘Next’ and ‘Install this driver software anyway’
- Reboot
Please enjoy Modern UI scaled correctly for a retina display!
P.S. Hey VMWare why not include EDID info in your virtual display drivers?
Take a stand, fight back against the tedium of the above instructions!