Tôi gặp vấn đề tương tự với iMac từ năm 2009, màn hình thứ hai của tôi được kết nối thông qua bộ chuyển đổi firewire-VGA. Tôi đã thử mọi cách để khắc phục sự cố này, thiết lập lại nvram hoạt động sau khi khởi động lại nhưng lần tiếp theo màn hình 'ngủ' thì vấn đề lại xảy ra. Khi tôi cố gắng đặt độ phân giải theo cách thủ công, độ phân giải của tôi (1920x1080) không được liệt kê, ngay cả khi giữ phím 'tùy chọn' để hiển thị nhiều độ phân giải hơn.
Tôi đã tìm thấy một giải pháp cho bài đăng này của Andreas Schwarz trên embdev.net (xem liên kết dưới mã của anh ấy, tôi không thể đăng nhiều hơn 2 liên kết) Nó không trực tiếp nhằm khắc phục vấn đề, nhưng nó làm với tôi.
Vấn đề có thể được giải quyết bằng cách ghi đè dữ liệu EDID của màn hình để thông báo cho OS X rằng màn hình chỉ hỗ trợ RGB. Điều này có thể được thực hiện bằng cách đọc EDID với "ioreg -l", sửa đổi các bit vi phạm (xem thông số kỹ thuật trong bài viết Wikipedia) và tạo tệp ghi đè cấu hình hiển thị cho OS X.
Sau đó, ông đã cung cấp một tập lệnh ruby để tạo tập tin ghi đè này:
#!/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
Thực thi tập lệnh này trong thiết bị đầu cuối với 'ruby patch-edid.rb' tạo ra một thư mục có tên "DisplayXXX"
di chuyển thư mục chứa vào / Hệ thống / Thư viện / Hiển thị / Ghi đè. Sau khi khởi động lại, màn hình sẽ hiển thị màu RGB được sử dụng.
Sau khi khởi động lại độ phân giải không chính xác, nhưng tôi đã có thể đặt chính xác trong cài đặt hiển thị.
~/Library/Application Support/Preferences/com.apple.desktop.plist
không được cập nhật. Nhưng tôi không chắc đó là nơi nó sẽ được lưu trữ.