qbancoffee / imac_g3_ivad_board_init

iMac G3 IVAD board initialization with an arduino
GNU Lesser General Public License v3.0
146 stars 14 forks source link

Add custom boards to an iMac G3 DV(slot loader) in order to use it as a monitor without having to destroy it.

See the wiki for an explantion of how this was done.

Wiki explaining how this was done.

If you have a dead logic board but a functioning CRT then these boards can let you use your iMac G3 DV as a VGA monitor so that you can use a modern desktop with it. You can even hand wire the whole thing without the need for the boards if you so wish.

Even if you have a perfectly functional iMac G3 DV you can remove your logic board and use these boards to convert your iMac G3 DV into a VGA monitor without harming your iMac G3 and when you want your iMac back, you can remove the custom boards and plug your original logic board back in and still use your iMac G3 as an original apple product. These boards are designed to plug right in without having to modify the case and attached things.

However....

--->DO THIS AT YOUR OWN RISK<--- as thing may break as you dissasemble your iMac and you can get shocked.

Although low risk, things can always go wrong, so be careful.

The current initialization sketch waits for button presses on an arduino pin to send the initialization sequence to the IVAD board but you can just uncomment "initIvadBoard();" in "setup()" to send it as soon as it's powered.


Also, you might have to modify values in the init sequence to get the brightness, contrast and screen geometry just right for your setup. below is an example from the init sketch.

  writeToIvad( 0x46, 0x04, 0x80);//red x-30
  writeToIvad( 0x46, 0x05, 0xB0);// green x
  writeToIvad( 0x46, 0x06, 0x78); //blue x-38

  writeToIvad( 0x46, 0x07, 0xB1); //horizontal position
  writeToIvad( 0x46, 0x08, 0xF8); //vertical size

Goals

The main goal is to convert the iMac G3 into a VGA monitor whithout sacrificing the original CRT and using as much of the iMac as possible. The difficult part is tricking the IVAD board into thinking it is still connected to a G3 logic board. the idea is to capture the init sequence and reimplement it using a microcontoller like an arduino.

Once achieved, one can connect a standard computer to it as if it were a regular monitor with speakers. One can even include a motherboard on the inside of the G3 basically converting it into a modern computer.

Here are the goals

Chassis Connectors and Pinouts

ChassisConnectors

Removing the logic board

The connector drawings in the above diagram represent the cables coming from the CRT analog board that plug into the logic board. To expose these, the logic board must be removed.

Wiring VGA cable

VGACable

Making the cable

This is perhaps the most time consuming part of the whole process because not all VGA cables are made the same so the colors for the cable I used may not be the colors used in your cable. Here are the steps I took.

Preparing the Raspberry Pi

WiringRPI

What to install

sudo apt-get update && sudo apt-get -y install i2c-tools git

Print the IP address

_IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi

/usr/local/bin/init_ivad.py

exit 0


- Ctrl-x to save and exit

- Make rc.local executable
```bash
sudo chmod +x /etc/rc.local

Configure Resolution and Refresh Rate

Newer versions of the Raspberry Pi OS will ignore video modes specified in /boot/config.txt if the EDID sent from the monitor is corrupt or missing. Since we are not sending EDID information to the raspberry pi from the iMac we need to tell the OS to ignore the EDID and set the correct video mode.
- Add the following to the bottom of the file and save.

iMac G3 settings

hdmi_ignore_edid=0xa5000080 hdmi_group=2 hdmi_mode=18

Here is a video where I perform the above steps.
- [Modding an iMac G3 DV using only a Raspberry Pi](https://youtu.be/xSiqchucFE4)
### Wiring The Raspberry Pi and testing the connection

In all cases, the IVAD board needs to be initialized when the power analog board is
turned on for the first time. To do this, the initialization sequence must be sent using the
I2C lines(SDA & SCL) on the Raspberry Pi's GPIO header. Connect the I2C lines according to the diagram
above and connect the VGA cable to the HDMI port using a HDMI to VGA converter.

- Use i2cdetect to probe the IVAD board. Make sure the iMac is plugged in, it does not have to be turned on for this.

```bash
i2cdetect -y 1

Wiring Arduino Uno

WiringArduinoUno

Wiring Arduino Nano

WiringArduinoNano

Loading and Running the initialization sketch

write here

Wiring Arduino Uno to transmit EDID

WiringArduinoUnoToXmitEdid

Wiring Arduino Nano to transmit EDID

WiringArduinoNanotoXmitEdid

Powering the down converter board PAV

WiringPAV

The CRT analog board provides 24v AC to the PAV or down converter board through the logic board via the J22 connector. you can directly connect the PAV board and the analog board through the J22 connector and the PAV board will produce the typical mother board volytages. +12v, +5v +3.3v ect...

Powering the CRT on and off

CRTOnAndOff

See Also

Boards

J20 Board

What it does.

This board works but as of March 23 2020 it needs a slight modification to make it more robust.

Rendition

J20

Board installed

J20Installed

Rendiiton of Rev 2 of the J20 board.

J20REV2

J22 Board

What it does.

This board has been tested and mostly worked. I found that the mic was miswired but I've since fixed that. J22 J22Installed

Down-converter breakout board

What it does

DCB

Rendition

DCB1

Actual Board

DCB2

Board installed

DCB3


Ordering Boards

All PCB manufacturers should accept gerber files to manufacture boards so I've decided to design these in KiCAD which is suite of open source EDA programs to create schematics and design PCBs. There are no limitations to the size of the board and you don't have to order from a specific vendor.

Recently I've been using https://jlcpcb.com/ and the turn arounds are fast for the price. In the "schematics_and_pcbs" folder are the three kicad projects for each board, each in its own folder. I've included the gerber files and zipped them up for convenience, they are in the gerber directory for each project. To order you can just upload the zip file to https://jlcpcb.com/ or whatever company you choose and you should get them in the mail. There is a bill of materials included in each project folder. It's a csv file that includes the reference number, the part number and vendor so you can order the componets to build the boards. I like to buy from digikey but obviously you can find a vendor that fits your needs.

Acknowledgements

Videos