J'ai eu un problème similaire avec un iMac à partir de 2009, mon deuxième écran est connecté via un adaptateur firewire vers VGA. J'ai tout essayé pour résoudre ce problème, la réinitialisation du nvram a fonctionné après un redémarrage, mais la prochaine fois que le moniteur a «dormi», le problème s'est reproduit. Lorsque j'ai essayé de régler la résolution manuellement, ma résolution (1920x1080) n'était pas répertoriée, même en maintenant la touche «Option» pour afficher plus de résolutions.
J'ai trouvé une solution sur ce post d'Andreas Schwarz sur embdev.net (voir le lien dans son code ci-dessous, je ne peux pas poster plus de 2 liens) Ce n'était pas directement destiné à corriger le problème, mais c'est le cas avec moi.
Le problème peut être résolu en remplaçant les données EDID de l'écran afin d'indiquer à OS X que l'écran ne prend en charge que le RVB. Cela peut être fait en lisant l'EDID avec "ioreg -l", en modifiant les bits incriminés (voir la spécification dans l'article Wikipedia) et en créant un fichier de remplacement de la configuration d'affichage pour OS X.
Il a ensuite fourni un script ruby pour créer ce fichier de remplacement:
#!/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
L'exécution de ce script dans le terminal avec 'ruby patch-edid.rb' crée un dossier nommé "DisplayXXX"
déplacez le dossier contenu dans / System / Library / Displays / Overrides. Après un redémarrage, le moniteur doit montrer que les couleurs RVB sont utilisées.
Après le redémarrage, la résolution n'était pas correcte, mais j'ai pu régler la bonne dans les paramètres d'affichage.
~/Library/Application Support/Preferences/com.apple.desktop.plist
n'est pas mis à jour. Mais je ne sais pas si c'est où il est stocké non plus.