Beruflich Dokumente
Kultur Dokumente
This Gist contains the script and generated output file for an Acer B276HUL.
The pre-generated file below is known to work with:
OS X Mavericks
OS X Yosemite
OS X El Capitan
For El Capitan:
1. Restart your Mac while holding Command-R: this puts your Mac into Recovery Mode.
2. When in Recovery Mode, select Utilities > Terminal from the menu bar.
3. In the Terminal type
csrutil
disable
: this disables System Integrity Protection
4. Restart your Mac and log in.
5. Issue the following instructions:
sudo
mkdir
/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-472
sudo
cp
DisplayProductID-361
/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-472
DisplayProductID-361
1
2
3
4
5
6
7
8
9
10
11
12
Sign in
13
14
15
16
17
<integer>1138</integer>
<key>DisplayProductID</key>
<integer>865</integer>
</dict>
</plist>
patch-edid.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/ruby
#
Create
display
override
file
to
force
Mac
OS
X
to
use
RGB
mode
for
Display
#
see
http://embdev.net/topic/284710
require
'base64'
data=`ioreg
-l
-d0
-w
0
-r
-c
AppleDisplay`
edids=data.scan(/IODisplayEDID.*?<([a-z0-9]+)>/i).flatten
vendorids=data.scan(/DisplayVendorID.*?([0-9]+)/i).flatten
productids=data.scan(/DisplayProductID.*?([0-9]+)/i).flatten
displays
=
[]
edids.each_with_index
do
|edid,
i|
disp
=
{
"edid_hex"=>edid,
"vendorid"=>vendorids[i].to_i,
"productid"=>productids[i].to_i
}
displays.push(disp)
end
#
Process
all
displays
if
displays.length
>
1
puts
"Found
%d
displays!
You
should
only
install
the
override
file
for
the
one
which"
%
displays.length
puts
"is
giving
you
problems.","\n"
end
displays.each
do
|disp|
#
Retrieve
monitor
model
from
EDID
data
monitor_name=[disp["edid_hex"].match(/000000fc00(.*?)0a/){|m|m[1]}.to_s].pack("H*")
if
monitor_name.empty?
monitor_name
=
"Display"
end
puts
"found
display
'#{monitor_name}':
vendorid
#{disp["vendorid"]},
productid
#{disp["productid"]},
EDID:\n#{disp["edid_hex"]}"
bytes=disp["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"
%
disp["vendorid"])
rescue
nil
f
=
File.open("DisplayVendorID-%x/DisplayProductID-%x"
%
[disp["vendorid"],
disp["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>#{monitor_name}
-
forced
RGB
mode
(EDID
override)</string>
<key>IODisplayEDID</key>
<data>#{Base64.encode64(bytes.pack('C*'))}</data>
<key>DisplayVendorID</key>
<integer>#{disp["vendorid"]}</integer>
<key>DisplayProductID</key>
<integer>#{disp["productid"]}</integer>
</dict>
</plist>"
f.close
puts
"\n"
end
#
displays.each