Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I have recently purchased an external monitor that I am connecting to my MacBook Pro (Late 2009) using the MiniDisplay-to-VGA adapter. I have both the external monitor and the MacBook's monitor set to "Best Available" resolution in OS X Lion. Whenever the computer "wakes up" from its sleeping state, the resolution setting for the external monitor is "forgotten". Every time the computer "wakes up", the resolution of the external monitor is set to match the MacBook's monitor.

The only reason I am using the VGA cable rather than a DVI cable, is because I do not have the MiniDisplay-to-DVI adapter. Will switching to DVI solve the problem? Is there any known way to solve this issue other than getting a utility to reset the resolution manually every time?

Thanks.

share|improve this question
    
Not sure if that is the problem. It sounds like your computer isn't storing the list of previous screen profiles it has been connected to. I know that once i connect to a screen there is a profile stored somewhere that has information like what the resolution it is set to, arrangement of screens, wallpaper, etc. Sounds like thats failing to save. My suspicion is the file ~/Library/Application Support/Preferences/com.apple.desktop.plist isn't getting updated. But I'm not sure if thats where it is getting stored either. –  Chad Marmon Mar 17 '13 at 3:06
    
Out of interest is this issue still fixed? I'm faced with the same thing (now), since a recent update (on 10.8.3 now). I also notice now (since update) that the bluetooth mouse appears to be waking mine from sleep where as it never used to, I only used to be able to wake it using the bluetooth keyboard... PRAM reset didn't fix it for me :/ –  nzcoops Mar 27 '13 at 1:01
    
The issue still happens, but with much less frequency since I reset the NVRAM (as indicated in the approved answer). –  Christian Correa Mar 27 '13 at 15:42

5 Answers 5

up vote 7 down vote accepted
+50

I recommend you reset your NVRAM. This chip stores information on screen resolution and can often become corrupted. You can reset it by starting your Mac while holding down cmd + opt + P + R . You should hear the Mac chime, restart and chime a second time. Then you can release the keys you are holding. More info here.

share|improve this answer
    
Thank you for the information. After resetting the NVRAM with the instructions you mention, the resolution seems to be 'remembered' correctly after the computer comes back from its sleep state. –  Christian Correa Mar 18 '13 at 11:12

I found an easy way around this and I hope it helps people. I tried resetting the NVRAM and it did not help. I am pretty sure it is due to flaw in the OS upgrade.

Here is the fix. Set up video so that when you move to the top left corner, the video shuts off. When you come out of sleep, if the resolution is low, move the mouse to the top left to shut the video off. If you left click the mouse in the position, it should reset the optimal resolution as it does with my MacBook Pro 15"

share|improve this answer
    
"When you come out of sleep" is required to make this solution work, i.e. if your Mac is not sleeping and your external monitor resolution is low then put your Mac to sleep (apple menu), then wake it up, then "if the resolution is low.." –  Ando Jan 28 at 17:13

Well none of this worked for me. This is what I did before I found the issue.

After the computer would come back on after sleep (macbook pro mavericks, screaming computer with 8gigs ram, retina) the right side monitor, out of the 2 monitors I have plugged in by VGA->DVI, continued to be reset from 1600x900 to 800x600. I would:

  • Unplug the DVI port from the mac. No luck.
  • Unplug and power off the monitor, turn back and on and plug back in. No luck.
  • Unplug, power off monitor, restart mac, plug back in, and then power back on. No luck.
  • Go to display settings, push Option to get "Detect Displays", clicked, no change.
  • Turn everything off, restart computer while pushing Command + Option + P + R, turn everything back on, plug back in... STILL not resetting back to best display for that monitor.

Needless to say I was getting pretty frustrated. Until I thought, what about unplugging the VGA from the DVI adaptor? Well I did that, connected back together and voila, screen reset.

So to anyone that has this problem in the future, it could be something in the actual DVI adaptor that could be having the issue too! If all fails, try unplugging the adaptor from your monitor cable and see if that works. It did for me.

share|improve this answer

I found a super easy fix for when this happens to me. My external monitor is plugged into a power strip and if I flip the power of the strip off and then back on again the external monitor shows me options for display resolution if I am in display preferences on my Macbook Pro (Mid 2010). I hope this helps.

share|improve this answer

I had a similar problem with an iMac from 2009, my second display is connected via a firewire-to-VGA adapter. I tried everything to fix this issues, reseting the nvram worked after a reboot but the next time the monitor 'slept' the problem occured again. When i tried to set the resolution manually my resolution (1920x1080) was not listed, even when holding the 'option' key to show more resolutions.

I found a solution on this post by Andreas Schwarz on embdev.net (see the link in his code bellow, i can't post more than 2 links) It's was not directly intended to correct the problem, but it does with me.

The problem can be solved by overriding the EDID data of the display in order to tell OS X that the display only supports RGB. This can be done by reading the EDID with "ioreg -l", modifying the offending bits (see the specification in the Wikipedia article), and creating a display config override file for OS X.

He then provided a ruby script to create this override file :

#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
# 
# Update 2013-06-24: added -w0 option to prevent truncated lines

require 'base64'

data=`ioreg -l -w0 -d0 -r -c AppleDisplay`

edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i

puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}"

bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten

puts "Setting color support to RGB 4:4:4 only"
bytes[24] &= ~(0b11000)

puts "Number of extension blocks: #{bytes[126]}"
puts "removing extension block"
bytes = bytes[0..127]
bytes[126] = 0

bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256
puts 
puts "Recalculated checksum: 0x%x" % bytes[127]
puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}"

Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
f.write '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">'
f.write "
<dict>
  <key>DisplayProductName</key>
  <string>Display with forced RGB mode (EDID override)</string>
  <key>IODisplayEDID</key>
  <data>#{Base64.encode64(bytes.pack('C*'))}</data>
  <key>DisplayVendorID</key>
  <integer>#{vendorid}</integer>
  <key>DisplayProductID</key>
  <integer>#{productid}</integer>
</dict>
</plist>"
f.close

Executing this script in the terminal with 'ruby patch-edid.rb' creates a folder named "DisplayXXX"

move the contained folder into /System/Library/Displays/Overrides. After a reboot, the monitor should show that RGB colors are used.

After rebooting the resolution was not correct, but i was able to set the correct one in the display settings.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.