How to modify an eMac to use as an external monitor
Hardware hacking enthusiasts have talked about updating the eMac's logic board with a more modern Intel based logic board to make a Hackintosh while others have proposed using the eMac as a second monitor. Several have removed the CRT, analog boards and logic board replacing them by a single lcd display. This is described in the eMac LCD conversion personal page.
Using the original CRT and analogs board has proven difficult because the IVAD board that is mounted directly to the back of the CRT needs to be initialized via its I2C interface before a VGA signal can be sent. The initialization sequence was finally recorded and then implemented in software using an arduino uno clone allowing the removal of the logic board.
The pieMac is an apple eMac computer that has had the logic board removed and replaced by a raspberry pi. The pieMac was inspired by a thread on macrumors by patriciooholegu. The idea was to replace the logic board with a raspberry pi but this hack will allow the CRT to be used with just about any device that can provide a VGA signal at eMac resolutions and refresh rates.
Images of how the components were arranged for this pieMac.
Wiring The Video Connector
The eMac uses standard VGA signals simplifying the task of interfacing to the CRT. The wiring was inspired by the Headless eMac project. The Headless eMac project describes how to use an eMac logic board with an external monitor while this article describes how to use the eMac's CRT as an external monitor. The image on the right depicts the eMac VGA connector on the logic board, a DB15 female VGA connector and a map of how to wire the IVAD VGA able to the DB15F VGA connector. This DB15 connector can be swapped for a male connector if plugged directly into a source rather than to a standard VGA monitor cable.
Wiring The Arduino
The image to the right shows the minimum wiring needed to activate the IVAD board using an arduino and a push button. The code for this circuit can be downloaded from https://github.com/qbancoffee/emac_ivad_board_init .This circuit does not show the relay circuit used to power the CRT. The CRT can be turned on by providing 5 volts to the wires that were connected to pins 4 and 10 of the eMac logic board.
I've figured out which hex byte controls some of the properties of the monitor (eg. brightness). Some of these are normally controlled using the settings panel in OSX, I've been trying to implement them using an Arduino. Not all seem to be available in OSX, so presumably some a preset, unless there's some kind of advanced system properties I don't know about. If you send a command out of range it can cause the screen to go blank. Some need to be sent to device 0x46 on the i2c bus and some to 0x4C, see the arduino code linked below for an example of how to send the commands. Not sure about the correct terminology for some of the adjustments below...
|Green backlight (or maybe colour temp)||0x01||0x00-0xFF|
|Blue backlight (colourtemp?)||0x02||0x00-0xFF|
|Red backlight (colourtemp?)||0x03||0x00-0xFF|
|Top pinch/width||0x04||0x00-0x7F, 0x80-0xFF|
|Top 'lean'||0x05||0x00-0x7F, 0x80-0xFF|
|Bottom 'lean'||0x06||0x00-0x7F, 0x80-0xFF|
|Vertical Position||0x09||0x00-0x7F, 0x80-0xFF|
|Shape adjustment, like a sphere||0x0A||0x00-0xFF|
|Horizontal Size||0x0D||0x00-0x7F, 0x80-0xFF|
|Top & Bottom pull left/right||0x0E||0x80-0xFF|
|Gamma (?)||0x10||0x80-0xBF, 0xC0-0xFF|
|Alternate horizontal size (?)||0x12||0x00-0xFF|
|Alternate vertical size (?)||0x14||0x00-0x7F, 0x80-0xFF|
|Bottom pinch/width||0x15||0x00-0x7F, 0x80-0xFF|