Ich hatte ein ähnliches Problem mit einem iMac aus dem Jahr 2009, mein zweites Display ist über einen Firewire-zu-VGA-Adapter verbunden. Ich habe alles versucht, um dieses Problem zu beheben. Das Zurücksetzen des NVRAM funktionierte nach einem Neustart, aber als der Monitor das nächste Mal "schlief", trat das Problem erneut auf. Als ich versuchte, die Auflösung manuell einzustellen, wurde meine Auflösung (1920 x 1080) nicht aufgelistet, selbst wenn ich die Optionstaste gedrückt hielt, um weitere Auflösungen anzuzeigen.
Ich habe eine Lösung für diesen Beitrag von Andreas Schwarz auf embdev.net gefunden (siehe den Link in seinem Code unten, ich kann nicht mehr als 2 Links posten). Es war nicht direkt beabsichtigt, das Problem zu beheben, aber es funktioniert mit mir.
Das Problem kann gelöst werden, indem die EDID-Daten der Anzeige überschrieben werden, um OS X mitzuteilen, dass die Anzeige nur RGB unterstützt. Dies kann durch Lesen der EDID mit "ioreg -l", Ändern der fehlerhaften Bits (siehe Spezifikation im Wikipedia-Artikel) und Erstellen einer Überschreibungsdatei für die Anzeigekonfiguration für OS X erfolgen.
Anschließend stellte er ein Ruby-Skript zur Verfügung, um diese Überschreibungsdatei zu erstellen:
#!/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
Wenn Sie dieses Skript im Terminal mit 'ruby patch-edid.rb' ausführen, wird ein Ordner mit dem Namen "DisplayXXX" erstellt.
Verschieben Sie den enthaltenen Ordner in / System / Library / Displays / Overrides. Nach einem Neustart sollte der Monitor anzeigen, dass RGB-Farben verwendet werden.
Nach dem Neustart war die Auflösung nicht korrekt, aber ich konnte die richtige in den Anzeigeeinstellungen einstellen.
~/Library/Application Support/Preferences/com.apple.desktop.plist
nicht aktualisiert wird. Aber ich bin mir nicht sicher, ob es dort auch gespeichert wird.