У мене була схожа проблема з iMac з 2009 року, мій другий дисплей підключений через адаптер firewire-VGA. Я спробував усе виправити ці проблеми, перезавантаживши nvram, який працював після перезавантаження, але наступного разу монітор "спав", проблема виникала знову. Коли я намагався встановити роздільну здатність вручну, моя роздільна здатність (1920x1080) не була вказана в списку, навіть коли утримується клавіша 'параметр', щоб показати більше роздільних можливостей.
Я знайшов рішення на цій публікації від Андреаса Шварца на embdev.net (див. Посилання в його коді нижче, я не можу розмістити більше 2 посилань) Це не було спрямовано безпосередньо на вирішення проблеми, але це стосується мене.
Проблему можна вирішити, змінивши дані EDID на дисплеї, щоб сказати OS X, що дисплей підтримує лише RGB. Це можна зробити, прочитавши EDID за допомогою "ioreg -l", змінивши оскорблюючі біти (див. Специфікацію у статті Вікіпедії) та створивши файл перезапис конфігурації дисплея для OS X.
Потім він створив рубіновий скрипт, щоб створити цей файл заміни:
#!/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
Виконання цього сценарію в терміналі за допомогою "ruby patch-edid.rb" створює папку під назвою "DisplayXXX"
перемістити міститься папку в / Система / Бібліотека / Дисплеї / Переопределення. Після перезавантаження монітор повинен показати, що використовуються кольори RGB.
Після перезавантаження роздільна здатність була неправильною, але я зміг встановити правильну в налаштуваннях дисплея.
~/Library/Application Support/Preferences/com.apple.desktop.plist
не оновлюється. Але я не впевнений, чи то там, де він також зберігається.