Force the Optoma HD80 projector into quiet 50Hz mode – AppleTV2

I bought an AppleTV2 last week for a few cool reasons:

  • It’s been hacked!
  • You can install XBMC (Media Centre ported to many different OS’s including iOS for the iPads, iPhones & AppleTV2) on it (not perfect yet but getting there as of Nightly Build 2011/04/01).
  • AirPlay is cool (I can instantly watch videos and pictures from my iPhone that I just took or old videos and pictures I have stored)
  • Netflix
  • Uses very little power

I’ve had my 1080p projector the Optoma HD80 hooked up to my linux box with an Nvidia G240 graphics card and it has been doing a fantastic job playing any video I send to it.  Nvidia has had GPU assisted video decoding under Linux for quite awhile now and I’m very happy with it.  I have a Netflix account and I can’t watch it on my Linux box.  Netflix really should come out with a Linux version of API so programmers could do it.  It works on Macs and Boxee (which is a Linux box).

Anyways, I’m a big Apple geek and when I found out I could use XBMC and Netflix on the AppleTV2 I thought for $120 Canadian, why not get it and hack it.  The AppleTV2 is a cool little device but…

The problem I have is that my projector’s fan is too loud when it’s playing back video at 60Hz.  The HD80 is nice and quiet at 50Hz and that is how I have my Linux box version of XBMC setup.

There is no setting on the AppleTV2 to select refresh rates.  It reads the EDID data from your projector/monitor and figures out what is the best refresh rate and displays it’s video signal at that rate.

The HD80 is an NTSC device so it sends the EDID info that it can handle 60Hz and so the AppleTV2 uses 60Hz and my HD80’s fan cranks up and is disturbingly loud.

I had a few options…

  1. Live with the loud fan at 60Hz (not really an option)
  2. Return the AppleTV2
  3. Maybe modify XBMC (if the code existing in the iOS port) to play back at 50Hz.  This is either modifying the source code and compiling myself (big pain, if the refresh rate can even be tweaked) or hand tweak the config files.  This still doesn’t fix the other video features of the AppleTV2 though.
  4. Reprogram my HD80’s EDID so that it tells the AppleTV2 or any other device it attaches to that it only can handle 50Hz
  5. Decode the Apple iOS and modify the firmware  parts that select the refresh rates and make it always use 50Hz.  MAJOR time consuming…  This tweak would need to be done anytime I updated the AppleTV2 firmware.

So option 4 is what I decided todo.  A lot of the info provided below is based on the idea from this post:

http://www.livingcinema.nl/phpBB2/viewtopic.php?p=744

Where the user revo reprogrammed his HD80’s EDID and setup a 24Hz mode.

I fought with this reprogramming the EDID for many days trying to get Powerstrip to program my HD80 but I think something is wrong with the latest version because it kept on giving me errors.  I tried Win 7 and WinXP with four different computers and video cards but it still showed the same error every time.  “Access violation at address 00511B8B.  Read of address 00000000.”  The company that makes Powerstrip EnTech Taiwan say that EDID writing is a hidden and Unsupported feature.  You have to send them your psinfo.ini file just to get them to send you a 4 digit code to enable the writing of EDID info to your monitor.  I gave up with powerstrip at that point (wasted $30).  I new about the above link and I know revo re-wrote the EDID data of his HD80 with another program DDCW.exe but it only writes the first 128 bytes of the EDID and not the extended data that details all the supported resolutions.

I ended up copying his procedure and re-wrote only the first 128 bytes of the EDID and it turns out it’s all I had todo to get the AppleTV working at 50Hz!!  So if you’re still with me here’s the process I used… (links to all the required apps can be found below, all freeware, Yeah!)  This worked for me, use this info at your own risk (warranty may be voided, yada, yada, yada, blah, blah, blah)…

I had my original EDID info from my xorg.conf file (a Linux video tool) and used that with a program called  ELDIM – EDID Viewer I used the info from the EDID wiki to figure out what the Hex codes meant.  You can also use the program Phoenix EDID Designer to help you edit the EDID.  I took the original HD80 EDID data from this file, you can also get it using DDCW.exe as revo explains from his post above using the commands from revo’s post:

ddcw -m 0 > port1.txt
ddcw -m 1 > port2.txt

one of these files now should show:
EDID update utility
use: -f <filename> to specify the text file containing the correct
EDID data for compare and reprogram
use: -c <filename> to specify the text file containing the correct
EDID data for compare ONLY
use: -p to automatically update the first 8 bytes of the A0 EDID to 00 FF FF FF FF FF FF 00
use: -m A to specify the output to use, A=0 (default) for VGA, A=1 for DVI
use: -q to suppress most output
-f -c and -p are mutually exclusive options: use only one of these

EDID read from device:
00 FF FF FF FF FF FF 00 3E 8D 48 37 02 04 00 00 01 0F 01 03 80 23 1A 78 EA 1C 43 A4 57 4B A8 26 0C 49 4E 21 0A 7F 45 59 61 59 81 80 81 99 A9 40 81 C0 90 40 81 CF 01 1D 00 72 51 D0 1E 20 6E 28 54 01 13 8E 21 00 00 18 01 1D 80 18 71 38 16 40 58 2C 25 00 20 C2 31 00 00 9E 00 00 00 FF 00 54 38 31 45 35 30 31 41 31 30 32 36 0A 00 00 00 FC 00 4F 70 74 6F 6D 61 20 48 37 37 0A 0A 0A 00 38
no input file specified – no update check performed

Remember the port used to give a succesfull read, if not successful re-try other DVI port or PC or video card or give up. (Intel and ati do not work with this ddcw.exe tool)

Revo’s EDID is above and mine is below, remember that this info also has serial number info and shouldn’t be copy and pasted into your HD80 unless you don’t care about that…  Feel free to use my working version at the bottom of this post if you want to program your HD80 into 50Hz mode.

My original Unmodified HD80 EDID bytes might come in handy if someone needs to reprogram their HD80 with original NTSC EDID data (includes extended bytes):

(–) NVIDIA(0):   00 ff ff ff ff ff ff 00  3e 14 30 38 5c 00 00 00
(–) NVIDIA(0):   1a 12 01 03 80 00 00 78  0a 1c 43 a4 57 4b a8 26
(–) NVIDIA(0):   0c 49 4e ff ff 80 81 80  90 40 a9 40 01 01 01 01
(–) NVIDIA(0):   01 01 01 01 01 01 02 3a  80 18 71 38 2d 40 58 2c
(–) NVIDIA(0):   45 00 c4 8e 21 00 00 1e  01 1d 00 bc 52 d0 1e 20
(–) NVIDIA(0):   b8 28 55 40 c4 8e 21 00  00 1e 00 00 00 fc 00 4f
(–) NVIDIA(0):   70 74 6f 6d 61 20 48 44  38 30 0a 20 00 00 00 fd
(–) NVIDIA(0):   00 0f 63 0f 78 12 00 0a  20 20 20 20 20 20 01 65
(–) NVIDIA(0):   02 03 16 31 4a 90 1f 05  14 21 22 04 13 03 12 66
(–) NVIDIA(0):   03 0c 00 10 00 80 01 1d  80 18 71 1c 16 20 58 2c
(–) NVIDIA(0):   25 00 c4 8e 21 00 00 9e  01 1d 80 d0 72 1c 16 20
(–) NVIDIA(0):   10 2c 25 80 c4 8e 21 00  00 9e 01 1d 00 72 51 d0
(–) NVIDIA(0):   1e 20 6e 28 55 00 c4 8e  21 00 00 1e 8c 0a d0 90
(–) NVIDIA(0):   20 40 31 20 0c 40 55 00  c4 8e 21 00 00 18 8c 0a
(–) NVIDIA(0):   d0 8a 20 e0 2d 10 10 3e  96 00 c4 8e 21 00 00 18
(–) NVIDIA(0):   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 fd

Using the tools provided I changed the default 1080p and 720p formats to 50Hz and my final HD80 EDID file looks like this:

00 ff ff ff ff ff ff 00 3e 14 30 38 5c 00 00 00
1a 12 01 03 80 00 00 78 0a 1c 43 a4 57 4b a8 26
0c 49 4e ff ff 80 81 80 90 40 a9 40 01 01 01 01
01 01 01 01 01 01 02 3a 80 d0 72 38 2d 40 10 2c
45 80 c4 8e 21 00 00 1e 01 1d 00 bc 52 d0 1e 20
b8 28 55 40 c4 8e 21 00 00 1e 00 00 00 fc 00 4f
70 74 6f 6d 61 20 48 44 38 30 0a 20 00 00 00 fd
00 0f 63 0f 78 12 00 0a 20 20 20 20 20 20 01 74

According to the EDID wiki the last byte of the 128 bytes is a checksum byte that when all the bytes are added together you get a value of 00.  So use a Hex editor like HxD Hex Editor and use it’s checksum feature on your EDID data to figure out the value of the 128th byte.

Once you are happy with your EDID data it’s time to write it to your HD80.  Make a bootable WinXP floppy disk and save the DDCW software on it (over write any existing files on the floppy).  Also copy your HD80 EDID file as HD80.txt.  From what I’ve read DDCW only works with Nvidia cards (I guess if you can read your original data with your graphics card as suggested above then your card is good).  I used a old PC with a FX 5200 based card and hooked up the DVI output with an adapter cable to HDMI port 2 of my HD80.  I used a bootable WinXP floppy which the DDCW documents suggest with the DDCW software and my new HD80.txt file (with my new 50Hz EDID data).  Then I programmed my HD80 using the command:

ddcw -m 1 -f hd80.txt

In the above command “-m 1” is for the DVI port which is what you want to program.  Do not program the SVGA port, from what I have read the EDID data is different on SVGA ports.

Once programming has finished (a minute or so later).  Remember to turn off your projector then let the fan cool it off for a few minutes.  Then Unplug it from the power outlet and leave it for a few minutes.  Then plug it back in and give it a try.  Good Luck!

One other note is the HD80 has two HDMI ports.  I reprogrammed the EDID of port 2 on my HD80 and only that port was affected.  Port 1 of my HD80 is still the original settings.  So if I plug my AppleTV2 in port 1 it outputs video at 60Hz, if I unplug it and plug it back in to port 2 of my HD80 then the AppleTV changes to 50Hz mode again.  So I have both options… Just in case.

Required apps (click to download):
DDCW.exe called EDID_Writer.zip (Download link is the top post of page 2 of the EDID Update forum, posted by JustGreg)
EDLIM EDID Viewer – Excellent EDID data to english viewer
Phoenix EDID Designer – EDID reader and tweaker.
edid-converter.cab – nice program to convert EDID files between different formats
HxD Hex Editor – Nice Hex editor

See this cool blog posting for more EDID programming info.

Advertisements
This entry was posted in AppleTV2, Optoma HD80 and tagged , , , , , , . Bookmark the permalink.

3 Responses to Force the Optoma HD80 projector into quiet 50Hz mode – AppleTV2

  1. Jim says:

    Impressive… I may just give that a shot. Thanks!

  2. J. Nasseri says:

    The second to last link to “edid-converter.cab” doesn’t work. I searched the web, it’s located at http://www.komeil.com/download/2750/
    Thanks for sharing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s