For customers who are running Mac OS X 10.9 (Mavericks) or newer in a Virtual Machine, you may have noticed that you can no longer set a custom display resolution beyond the default 1024x768 in either VMware Fusion and vSphere, regardless of the amount of video memory that has been allocated. The reason for this behavior is that Apple has changed the way in which it remembers previously used modes and would automatically fall back to this versus retaining the custom mode using the Display Preferences. Given this is a non-trivial fix, VMware Engineering has been working hard on a providing a workaround which would still allow users to set a custom resolution from within the GuestOS.

The workaround that has been developed is a tiny standalone command-line utility called vmware-resolutionSet which runs within the Mac OS X Guest and allows you to configure a custom display resolution. You will need to ensure you have VMware Tools installed and running before you can use this utility. As of right now, customers can get a hold of this utility by filing an SR with VMware Support and referencing PR 1385761. Although this tool has not been officially released and must go through the standard release process, the plan is to include it in a future update of VMware Tools and will available for use with both VMware Fusion and vSphere.

UPDATE (12/11/15) - Thanks to reader @elvisizer, it looks like the latest VMware Fusion 8.1 release now includes an updated version of VMware Tools (10.0.5) which includes the vmware-resolutionSet utility. You can find it under '/Library/Application Support/VMware Tools'. One thing to note is that there is a known issue right now for VMware Fusion 8.1 related to NAT and port forwarding, you may want to hold off on upgrading if you rely on this feature.

Screen Shot 2015-12-11 at 10.55.18 AM

The syntax for the vmware-resolutionSet utility is pretty straight forward, it accepts a width and height argument. Make sure to use "sudo" if you want the display resolution to persist through a system reboot. For example, to set a 1920x1080 resolution, you would run the following command:

./vmware-resolutionSet 1920 1080

change-mac-osx-vm-display-resolution-vsphere-fusion-0
Note: Ensure you have sufficient video memory configured for your VM for larger display resolutions. In the example above, I have 16MB configured for my Mac OS X VM which would give you a max resolution of 2560x1600. 

If everything was successful, you should see that both the "Requested resolution" and the "Effective resolution" match in the output. If output does not match, it most likely means you need to increase the video memory and you can refer to this VMware KB 1003 for more details. If we take a look at our Mac OS X VM, we should now see that our new custom display has taken effect. Below is a screenshot of a Mac OS X 10.11 (El Capitan) running on vSphere 6.0 Update 1 configured with a 1920x1080 resolution.

change-mac-osx-vm-display-resolution-vsphere-fusion-1
One other thing to note is if you plan on using higher display resolution than 2560x1600, you may need to configure some additional VM Advanced Settings due to use of framebuffers that are larger than 16MB. In this case, you would need to also add the following two advanced settings to the VM which can be done using the vSphere Web/C# Client or the vSphere API. For example, if I want a 2880x1800 display resolution, I would add the following:

svga.maxWidth = "2880"
svga.maxHeight = "1800"

Lastly, I would like to give a big thanks to Michael Udaltsov, the Engineer who is responsible for creating the workaround and providing me with some additional context to this change in behavior. I know our customers will greatly appreciate this workaround!

34 thoughts on “Heads Up - Workaround for changing Mac OS X VM display resolution in vSphere & Fusion

    • Dennis,

      Did you file an SR an reference the PR # that’s noted in the blog? I’m trying to see if we can create a KB that includes the download so folks don’t need to go through SR process, but for now that’s the interim workaround

  1. William,

    I want to first say thanks for all the great content you provide, it has been a wonderful resource in getting started virtualizing os x on esxi for my own home lab testing.

    Not sure if this will be helpful or not, but I have been able to change the resolution of my Mac OS X vm’s by using the esxi command line ‘vim-cmd vmsvc/setsreenres’ command. This appears to work for any vm that has vmware-tools installed. I use this command since I often connect to vm’s running on esxi via my 11″ macbook air and it has a screen resolution of 1366×768. By issuing this command I am able to change the VM’s screen resolution. To use the command, log into the host esxi that the vm is running on and issue this command:

    $ vim-cmd vmsvc/setscreenres vmid width height

    • yay for this comment. and note to future googlers, “vim-cmd vmsvc/getallvms” to get the VMID list

    • If your asking if it will work while running OS X under VMWare Workstation on a Windows 7 Machine? Not using this command, the command is specific to the host running ESXi and I have only run it under ESXi 6. However if you are asking if you can change the screen resolution of a Windows 7 Virtual Machine running under ESXi, then yes as long as VMWare tools are installed and the client has enough memory allocated to it’s Video card.

      • Hi Mike, I am asking about running OS X under VMWare Player on a Windows 7. Thanks for clarification. I just updated from Yosemite to El Capitan and I am stuck to 1024×768 resolution despite of the values defined in VMX file which do the job before the update:
        svga.maxWidth = “1920”
        svga.maxHeight = “1080”

  2. I have an Essentials license that does not include VMWare support at the moment so I don’t think I can file an SR to get this utility. Are there any altnernate ways for me to get a copy to install on my Mac Mini 6.0 Update 1 box?

  3. according to my vmware rep, this was included in the fusion 8.1 update . . . .but I don’t see the tool in the application bundle anywhere, and the GUI doesn’t show any different behavior. HAs anyone figured out how to fix this using only Fusion 8.1?

  4. Mark, I was just hunting for the same solution. Just yesterday, I copied the script from my Fusion 8.1 vmware tools folder to one of my ESXi 6 OSX guests. Running that command every time you reboot is obviously not optimal, although… it might have a performance consequence, I don’t know. In my particular application, if there is a slight performance hit, it won’t matter.

    So…. I did some searching on Launch Scripts (had done a few before) and came up with a simple Launch Daemon .plist file to set the resolution I want at boot.

    In /Library/LaunchDaemons as root, create a file named whatever you like with your favorite editor, but end it with .plist.

    I did: sudo nano /Library/LaunchDaemons/vmware-resolution.plist

    The contents of my file are:

    Label
    vmware-resolution.plist
    ProgramArguments

    /Library/Application Support/VMware Tools/vmware-resolutionSet
    1680
    1050

    KeepAlive

    RunAtLoad

    To test it before booting, excute: sudo launchctl load /Library/LaunchDaemons/vmware-resolution.plist

    It should do exactly the same thing as the manual command. Next time you reboot, if you made sure the RunAtLoad is set to “true”, the resolution will be set automatically.

    I suppose you could create an alias in your ~/.bash_profile to do a quick command to change it to default for machines that don’t need the resolution that high all the time. You could also do that in place of create the Launch Daemon too.

    Anyway, hope this helps someone.

  5. I tried the 10.0.5 vmware tools on OSX 10.11.3 running under ESXi 5.5 and the keyboard stops working using both vmrc and thick-client console, so that’s a no-go for me. The earlier tools (9.9.2) do not have this issue.

    • I was able to extract the vmware-resolutionSet utility (using Pacifist) from the 8.1.0 tools iso, and it works fine for El Capitan with VMware tools 9.9.2.

  6. You made my day William, thanks so much. However I wanted to know is there a way to increase VRAM from 128MB?

    Cheers!

  7. Install VMWare Tools in Mac OS X Virtual machine

    This is important. VMWare Tools is set of drivers that make Mac OS X able to:

    Automatically adjust the screen resolution to fit the screen (View -> Autosize -> Autofit Guest).
    Drag and Drop file between Windows and Mac OS X Virtual machine.
    Share data between Windows and Mac OS X.
    How to install? From the Menu –> Removable Devices –> CD/DVD –> Setting –> Choose “Use iso image file” –> Locate VMWare Folder (“C:\Program Files (x86)\VMware\VMware Workstation\”) –> Select Darwin.iso –> Open –> OK.

    Update: At for Mac OS 10.10 and 10.9, we use VMWareTools (darwin-fusion7.iso).

    After all processes finished completely, you will be able to update to Mac OS X 10.10 Yosemite from Mac OS X 10.7 at your demand like the title of this article.

    For Windows guest see http://macdrug.com/install-mac-os-x-yosemite-in-vmware-inside-window-pc/
    I used Darwin-fusion.iso

  8. Dear all,

    Thank you very much for this post.

    After 1 year I can finally use OSX 10.9 – 10.10 – 10.11 at full resolution on my vmware esxi 5.5 free intel home made server!

    Resolution is set automatically after boot using post of Chris.

    Hw I7 4970K + ASUS Z97 MB + 16GB + SSD

    • Glad to hear I could help Tom. In the last few months, I’ve been doing a lot of virtualization with Mac Mini’s and a ’09 Mac Pro. William has helped a lot with all the info found here on this site. I’m glad that I was able to contribute some useful information as well.

    • Can anyone solve this? Apparently, the latest VMware tools does not have the “vmware-resolutionSet” thingy.

      VMware found out we need it, so they got rid of it?

      Can anyone solve this? I am not seeing any previous VMware Tools downloads that have it.

  9. Hi William,
    First, many thanks for your posts.
    Then, it worked simply for me (mac mini esxi server with updated vmware tools and a 10.11 WM) by simply adding more total video memory to 128Mo and setting max resolution to 1920 to 1080. No need to modify the vmx file in this case. Using sudo makes the change persistent.

  10. applescript to the rescue…..

    (choose from list {“1920 1080”, “1366 768”, “2560 1440”} ¬
    with prompt “Select a Resolution”)
    set list_answer to result as text

    do shell script “cd ‘/Library/Application Support/VMware Tools’ ” & “;” & “./vmware-resolutionSet ” & list_answer

  11. Thanks William san.

    This page lead me to how to change resolution 1024 x 768 to 1920 x 1080 on sierra which updated from el capitan.

    There is no vmware-resolutionSet because my Server’s vmware-tools was old , and update for newest.

    Now , sierra available on my vmware. It work well for me as unix environment.

Thanks for the comment!