Skip to content

Convert and iMac G3 slot loader into a standard VGA monitor

Rocky Hill edited this page Mar 18, 2021 · 33 revisions

Welcome to the imac_g3_ivad_board_init wiki

The iMac G3 is a computer designed to be simple powerful and beautiful. It captured the imaginations of many people young and old and although discontinued in 2003 many continued using until even today. Unfortunately the dated hardware and operating system means that you can't enjoy a modern web experience and you can't really install new software. Some people have removed the internals fitting an LCD in place of the CRT and installed modern computer motherboards so that they can have a modern computing experience while keeping the aesthetic of the tear drop design. These are great projects and I do recommend this type of conversion when the CRT is damaged and there isn't an easy way to repair or replace it.

However.....

Maybe it's nostalgia or maybe I'm old fashioned but I really do like the way an image looks on a CRT particularly when I want to do some retro-gaming and completely gutting one of these machines just seemed wasteful to me because most of what I wanted to use was already beautifully included in the slot loading iMac. I wanted to upgrade the computer portion of the iMac without sacrificing the display and I also wanted to make sure that the iMac wasn't modified to the point where it couldn't be restored to its original state. In essence I wanted to convert the iMac G3 DV into a VGA monitor so that any modern computer could use it as a display in a non destructive way. Below I will try and explain in broad strokes how I went about doing this and some of the steps I took in the reverse engineering process. I also want to add that many people have contributed in one way or another to get this working. I have put together an acknowledgements section, please check it out.


Be very careful disassembling the iMac G3 becuase it's old and many plastic parts are brittle. If you're not careful you can end up completely destroying enough of the plastic to the point where it no longer looks nice or even worse, it loses its structural integrity. There are plenty of disassembly videos online or you can always download the service manual


Removing the logic board(the motherboard) exposed two connectors on the chassis that make all of the connections to the rest of the iMac. I called these connectors J20 and J22 because those are the designations on the mating header pins on the logic board. J22 connects the logic board to the analog board(The board that powers the CRT and the logic board), and J20 connects the IVAD board(the small circuit board on the back of the CRT) to the logic board. One can access the speakers, the microphone, the headphone jacks, the power button, and the LEDs via the J22 connector and one can access the IVAD board via the J20 connector. The J20 connector has the logic pins used to turn the analog board on and it has the I2C pins to send the initialization sequence that configures the CRT.

Below is an image of the chassis with the logic board removed exposing the two connectors.

Click here to see the pin descriptions for these two connectors





The analog board provides power to everything in the iMac G3 DV and contains the circuitry that drives the CRT. Without this board you can't use the CRT as a display. The board sits parallel to the logic board on the opposite side of the chassis and directly under the CRT. It is the board you can see when looking through the translucent case.

Below is an image of the analog board and the IVAD board with the CRT removed.




Curiously the logic board isn't powered in the traditional way where one expects there to be a power supply directly connected to the mains power. In the case of the iMac G3 DV the mains goes straight into the analog board where it steps the mains voltage down to 48 volts AC. The 48 VAC is then supplied to the logic board via the J22 connector and routed through the logic board to the Down Converter Board where it is further stepped down and rectified to provide 12 volts DC, 5 volts DC, 3.3 volts DC and then routed back into the logic board so that it can turn on. I have seen people mistakenly call the Down Converter Board the PSU and honestly, I too thought it was the PSU until I started looking into it.

Below is an image illustrating how the power is routed through the Logic board to the Down Converter Board and back into the logic board.


Click here to see the pin descriptions for the Down Converter Board





The IVAD board is powered directly by the analog board and it in turn sends 5 volts DC to the logic board via the J20 connector. This trickle voltage constantly powers a section of the logic board that must always monitor certain things while the iMac is in the off state. Specifically it monitors button presses from the power button and possibly power on signals from the USB connected keyboard. It is this circuitry that initiates the startup sequence that powers on the iMac.

Startup sequence

Having tested and documented what I just described I now had enough information to start figuring out the steps taken by the iMac to startup. I then began measuring and capturing voltages and communications between the logic board and the IVAD board.

Here are the steps the iMac takes to turn on.

While the iMac is off

  • Plug the iMac into mains.
  • Analog board is partially energized.
  • Analog board supplies 5 volts DC to the IVAD board which in turn supplies 5 volts DC trickle voltage to the logic board via the J20 connector.
  • A section of the logic board is powered by the trickle voltage, possibly a small micro controller.
  • Analog board supplies 48 volts AC to the Down Converter Board via the J22 connector routed through the logic board.

User presses power button

  • The partially powered logic board connects pin 6 (trickle voltage) of the J20 connector to pins 10 (PFW) and 12 (LP) of the J20 connector. This connection is what turns on the Down converter board which in turn powers on the logic board by providing 12, 5, and 3.3 volts DC.
  • The logic board is powered on and it then sends the initialization sequence to the IVAD board via pins 1 (SDA) and 2 (SCL) of the J20 connector. Pins 1 and 2 and a ground pin make up the I2C bus which is used for communications between the IVAD board and the logic board. The initialization sequence turns the CRT on and initializes the display by supplying a host of settings like horizontal position, vertical position, contrast, brightness ect...

Fooling the Analog and the IVAD boards

At this point it was clear to me that the Analog and IVAD boards could be "fooled" into "thinking" that an Apple issued logic board was installed and communicating with them. Minimally all that was needed was a way to short pins 6, 10, and 12 of the J20 connector, send the initialization sequence via I2C over pins 1, and 2 of the J20 connector and send video over pins 9, 11, 13, 15, adn 17 of the J20 connector. I just needed to capture the initialization sequence and splice in a VGA cable. luckily, user sparpet on macrumors had already captured the initialization sequence!
See the link below
Initialization sequence captured by sparpet

For my initial tests I unscrewed the J20 connector and cut into the wires. This works but it's messy so I recommend using jumper wires or making a wire harness to plug directly into the J20 connector.

Below is one one of the harnesses I made to plug directly into the J20 connector




VGA cable pinout

Below is a link to a video I made of shorting the pins and sending the initialization sequence. The second arduino you see in the video sends EDID information to a computer that connects to the VGA cable. The EDID information tells the computer what resolution and refresh rate to use but this point it isn't absolutely needed.

Powering the iMac without a logic board

Sending EDID information to a computer.

By this point I was having a lot of fun displaying video from many sources like a raspberry pi, computers running Windows 10, OSX, linux ect... This was really cool but it was really time consuming and error prone because I had to configure the computer with the resolutions and refresh rates supported by the iMac CRT. At times it was frustrating not to see this information magically appear in a drop down list when configuring displays on a computer so I decided to adapt a sketch I wrote in 2017 to trick my computer into thinking an eMac "monitor" was connected to it, this sketch sent an EDID. EDID stands for Extended Display Identification Data and it is a metadata format for display devices to describe their capabilities to a video source(your computer).

Oshimai and I went back in forth creating our own EDID's but oshimai was finally able to extract a good EDID from an iMac G3 DV running linux. He later posted it and this is the one that I use as the default EDID in the sketch. Having an EDID in hand and being able to send it to a computer upon request was the final push to design and order printed circuit boards or PCB's, to connect to the J20 and J22 chassis connectors. In essence these boards convert the iMac into a usable VGA monitor albeit with some quirks here and there.

Designing the PCB's

There are a ton of EDA programs out there that I could have used to design these boards but in the spirit of open source I decided to design the boards using KiCAD which is available to anyone on just about any platform. You can grab the schematics off of this repo and immediately start making changes using KiCAD if you so desired.

There are PDF's of the schematics in the repo to quickly look at the designs but you should really use KiCAD to get more design information.

Below are the boards rendered using KiCAD




Below is the J20 board installed in the iMac.




Below is the J22 board installed in the iMac.




Below is the down converter breakout board installed in the iMac.




Below are the J20 and J22 boards installed in the iMac.

The J20 board you see in this image is the first revision I made which used two micro-controllers, one for sending the EDID and one for sending the initialization sequence. The latest J20 board uses only one micro-controller.




Ordering the boards and components.

Many PCB manufacturers provide proprietary EDA software with nice and helpful features to help the user decrease the time and difficulty when designing a PCB. Unfortunately sometimes these programs will only allow you to order from that specific manufacturer. This is good for the manufacturer because it increases the odds that the person will order from them again because of the amount of time invested in learning to use that specific EDA program.

There are very nice EDA programs that will allow to design a PCB really quickly with fewer errors when it comes to components and footprints. Some of these programs are free to download and use for a trial period but after finishing your design sometimes you'll find that in order to export your design files so that you can actually order the boards you have to purchase a license. Sometimes you'll also find that there is a total area limit on the size of your design unless you buy a license. Companies use these tactics to make money and I really can't blame them because they have to make a living somehow.

I guess the question you might be asking is "Is there a specific PCB manufacturer I must use for a PCB designed with KiCAD?" The answer is no. PCB manufacturers will still take your business even if you've elected to use another piece of software for your design so long as you can provide the Gerber files for your design. The Gerber format is an open ASCII vector format for printed circuit board (PCB) designs. It is the de facto standard used by PCB industry software to describe the printed circuit board images: copper layers, solder mask, legend, drill data, etc.

KiCAD has a bit of learning curve to it but once you are familiar with its quirks you'll find that having no limits on size, layers, components ect for your design is really nice and worth your investment in time. Also, being completely free, having no vendor association, and having no licensing issues means that you can start using right it away without worries and when you're done just create the gerber files.

You can open the PCB design and create the gerber files yourself but I've already done that for each board so all you have to do is download the zip archive and upload it to your PCB manufacturer of choice. Below are links to the gerber files for each board.

There are a ton of PCB manufactures to choose from but recently I've been using JLPCB because the quality is good and they are well priced. JLPCB will even provide an automated online quote once the gerber files are uploaded. Once ordered they should arrive in the mail. Obviously you can use any PCB manufacturer you wish.

Some manufacturers also have assembly services with costs varying based on the number of components, packaging and size of the board. I chose to design these boards using through hole components so that a hobbyist can assemble them using only a soldering iron and solder. Through hole components are much easier to work with because they are sized to handle with ones hands. Because they are designed to be soldered to the board by hand, through hole components make assembly more expensive because a lot of the times a person has to sit with a soldering iron in order to assemble the board. Surface mount components are difficult to solder onto a board by hand but are perfect for automated PCB assembly making it much cheaper when it comes to using an assembly service. I might make a surface mount version of the boards to that one can just order the boards and have them assembled at a reasonable price.

To order the components you'll need a Bill Of Materials or a BOM. I've included a BOM for each board in the repo and just like the gerber files, they will be in the repo once you download it. Below are links to the BOM files for each board.

The BOM includes part numbers so you can order them from a vendor, manufacturer part numbers so can search for the parts sold by other vendors, and other nice pieces of information to help you along.

One of my favorite vendors to use is digikey so I've included digikey part numbers in the BOMS and if you downoad these BOMs, you can directly upload them to digikey and the shopping cart will be automatically populated with these parts.

Assembling the boards

This is the part of the assembly process that some people find intimidating and makes them feel like it's beyond their capabilities. Soldering does require some skill but it really isn't too difficult. There are plenty of soldering tutorials on the internet that do a good job of explaining the basics.

You don't need an expensive soldering station and you can get away with something like this budget soldering iron. These days we solder with RoHS compliant solder because it's better for the environment but if you're new to soldering, an RoHS compliant solder may not be the best choice. Non-RoHS solder is easier to work with because the solder has a lower melting point and it's a better choice when using a budget soldering iron. When you buy a soldering iron and solder, make sure the soldering iron can reach the temperature needed to melt the solder you are using.

Prepare

  • Using the BOM, pick out the componets for the board.
  • Make sure you have enough solder and possibly solder flux.
  • Make sure your soldering iron can melt your solder.
  • Make sure you have a moist sponge or copper sponge to clean the irons' tip.
  • Use the interactive BOM for the board you're assembling to see where each component is placed.

Below are videos I made populating the boards with the components.

Wiring the adapter boards

Most of the original connections in the iMac G3 were routed through the logic board. Since we've removed the logic board, some of these connections have to be made using wires. Below is the basic wiring that will allow you to turn the iMac on with its' own power button

Below is a diagram showing the wiring.


Programming the J20 board.

The micro-controller used in the J20 board is the ATmega328-PU which is the micro-controller used in the Arduino UNO development board which is considered by some to be the flagship Arduino development board and has huge community support. Another nice thing about this chip is that it comes in a DIP package which makes it ideal for hand soldering.

There are a handful of ways we can upload the iMac G3 IVAD sketch to the J20 board which is convenient. The easiest method is just plugging the chip into an Arduino UNO board and programming it via the Arduino IDE the same as you would do with the original Arduino UNO.

Before programming the chip you have to change two values in two files included with the Arduino IDE so you need to know the IDE installation folder. In order for this program to work, the i2c transmit buffer length constants must be changed in two files. The Wire library has two buffers it uses for i2c transmissions "BUFFER_LENGTH" in "arduino_install_folder/hardware/arduino/avr/libraries/Wire/src/Wire.h" and "TWI_BUFFER_LENGTH" in "arduino_install_folder/hardware/arduino/avr/libraries/Wire/src/utility/twi.h" Both of these must be changed from 32 to 128 to be able to transmit the edid byte array in one shot.

Programming the ATmega328-PU by plugging it into an Arduino UNO.

  • Make sure Arduino UNO is not plugged into the computer or powered on.
  • Carefully remove existing ATmega328-PU chip from and Arduino UNO board.
  • Carefully place the blank ATmega328-PU into the empty DIP socket on the board.
  • Open Arduino IDE and select Tools-->Board Arduino/Genuino Uno and make sure the correct port is selected under Tools-->Port.
  • Select Tools-->Burn Bootloader to load the Arduino boot loader.
  • Select Sketch-->Upload to load the program onto the chip.
  • Close the IDE and unplug the Arduino UNO.
  • Carefully remove the newly programmed ATmega328-PU chip from the Arduino UNO board.
  • Carefully place the newly programmed ATmega328-PU chip into the DIP socket on the J20 board.

At this point the J20 board is ready for use.

Programming the ATmega328-PU by using the included ISP(ICSP) header

You can also program the micro-controller while installed in the J20 board and this is a great option when you need to rapidly test things as you're making changes to the code. If you have an ICSP programmer that is supported by the Arduino IDE then it's a matter of plugging the programmer into the ISP header (J3) and programming away. If you don't have an ICSP programmer but you own an Arduino UNO or clone then you're in luck because you can load the Arduino ISP code and use your Arduino as a programmer. Whichever in circuit programming method you decide to program the J20 board with, you must have the board installed and the iMac must be plugged into the mains(but not powered on). This means that the analog board will be providing the trickle voltage necessary to power the J20 board for programming.

This is image illustrates how to wire an Arduino UNO to use as an ISP to program the J20 board.

Here is a video showing it in action.

Additional items you might need in order to add an SBC and/or audio amplifier.