See the wiki for an explantion of 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....
Although low risk, things can always go wrong, so be careful.
Static discharge from your hands can destroy electronics so "GROUND THYSELF"
I've documented much of the iMac G3 slot loader chasis connector pinouts on this repo and used it as a guide to make breakout circuit boards than can plug right into the chassis connectors and provide standard connections so that a regular computer can use things like the CRT,speakers, power button, audio jacks, the down-converter board ect..
It wasn't easy but luckily a lot of people have shared their findings online..
There is working code here for both the arduino and raspberry pi to initialize the IVAD board so that you can use it as a monitor.
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
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
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.
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.
ifconfig
If you connected using wifi then the ip address is under wlan0: , inet.
If you connected using a cable the the ip adress is under eth0: inet
sudo apt-get update && sudo apt-get -y install i2c-tools git
Install smbus and RPI.GPIO for python using pip for the python version you have.
sudo pip install smbus RPI.GPIO
Clone the iMac IVAD init repo
git clone https://github.com/qbancoffee/imac_g3_ivad_board_init.git
cd imac_g3_ivad_board_init
Copy init_ivad.py to /usr/local/bin & and make it executeable
sudo cp init_ivad.py /usr/local/bin
sudo chmod +x /usr/local/bin/init_ivad.py
Edit rc.local and add the script. Make sure it's added to the line before "exit 0 " or it will not run. It also needs to be made executable since by default it doesn't do anything.
sudo nano /etc/rc.local
It should look something like this
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
_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
sudo nano /boot/config.txt
# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
dtoverlay=vc4-fkms-v3d
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.
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
Confirm it found address's 46 and 53, if no luck, check the wiring and make sure I2C is enabled. The output should look something like the following.
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- 46 -- -- -- -- -- -- -- -- --
50: -- -- -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Turn on the monitor and run the initialization script.The iMac should make a nice old school "CRT IS ON" sound.
/usr/local/bin/init_ivad.py
If there are errors, make sure the iMac is plugged in and check the wiring.
If there are no errors and there is nothing on the screen, move the mouse or press a key.
The raspberry pi might have turned off the display due to inactivity.
With the IVAD initialized, Reboot the Raspberry Pi.
write here
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...
What it does.
This board works but as of March 23 2020 it needs a slight modification to make it more robust.
What it does.
This board has been tested and mostly worked. I found that the mic was miswired but I've since fixed that.
What it does
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.