iMac G3 mod - Video Connector

DigitalCannon

macrumors newbie
Jan 20, 2016
1
0
United States
If anyone is still interested, I currently have an iMac G3 working as a monitor for a separate PC, with the original iMac motherboard removed. Apart from the motherboard being removed, the rest of the original iMac hardware is intact. It was a bit complicated (there's an Arduino sitting in the iMac making everything talk nicely), but works well. If there's any interest in it I can pop up some details.
I am also very interested! This will be very helpful for my current project.
Thanks in advance!
 

iMacBastler

macrumors newbie
Feb 26, 2016
2
0
Frankfurt / Germany
I'm usually not the 'me too' guy, but in this case ...

One question nevertheless: the pinout shown in this thread's starting post is which side? The connector on the main board or the plug from the video board? And where is pin 1?
 

First Spear

macrumors newbie
Jan 2, 2017
1
1
Happy New Year all!
I have another Raspberry Pi 3, and an iMac DV doing "nothing". I would love to put the Pi inside. I'm willing to pay for a mod service or a kit. Can anyone point me in the right direction?

Thanks!
 
  • Like
Reactions: thomasthegps

rockyhill

macrumors member
Dec 24, 2016
47
35
Miami Fl, United States
If anyone is still interested, I currently have an iMac G3 working as a monitor for a separate PC, with the original iMac motherboard removed. Apart from the motherboard being removed, the rest of the original iMac hardware is intact. It was a bit complicated (there's an Arduino sitting in the iMac making everything talk nicely), but works well. If there's any interest in it I can pop up some details.
Hi cablemunkey,

I,m interested as I'm about to attempt the same thing with an imac G3 I just purchased.
I successfully did this mod with an eMac G4 using an arduino. I call it the piEmac.
I'm curious to see if the initialization sequence you copied is the same as the eMac's

Here's a link to a how-to I'm putting together.At the bottom there are links to the arduino code and various videos. Maybe you can add what you've done with the G3 here?

https://en.wikibooks.org/wiki/How_to_modify_an_eMac_to_use_as_an_external_monitor
 

cablemunkey

macrumors newbie
Dec 7, 2015
4
5
Hi I feel bad that I've not kept up with this thread! The iMac has been in storage since February 2016 and still is, but it was working fine as a monitor, with the power button/ LED and reset buttons all doing their thing. My plan was (still is) to stuff a tiny PC in there, along with a small audio amp to drive the speakers.

Approach was much the same as yours, rockyhill, using an Arduino to talk to the IVAD board over I2C simulating the commands that would usually come from or via the iMac's openfirmware. Also mostly figured out the CRT geometry / alignment commands.

I hadn't bothered to try an emulate the EDID if requested from the computer, as it seemed to work okay without. The iMac's IVAD does hold EDID data, but if I remember rightly it's at a funny address and partially nonsense.

The Arduino sketches I came up with were pretty rough, and I was going to look at using interrupts to make it all a bit less messy. Annoyingly all the I2C info and Arduino sketched etc are also in storage on my 'project' PC.

Bare with me til March/ early April and I'll have access to it all again and time to look at it all!
 

iMacBastler

macrumors newbie
Feb 26, 2016
2
0
Frankfurt / Germany

rockyhill

macrumors member
Dec 24, 2016
47
35
Miami Fl, United States
Hi I feel bad that I've not kept up with this thread! The iMac has been in storage since February 2016 and still is, but it was working fine as a monitor, with the power button/ LED and reset buttons all doing their thing. My plan was (still is) to stuff a tiny PC in there, along with a small audio amp to drive the speakers.

Approach was much the same as yours, rockyhill, using an Arduino to talk to the IVAD board over I2C simulating the commands that would usually come from or via the iMac's openfirmware. Also mostly figured out the CRT geometry / alignment commands.

I hadn't bothered to try an emulate the EDID if requested from the computer, as it seemed to work okay without. The iMac's IVAD does hold EDID data, but if I remember rightly it's at a funny address and partially nonsense.

The Arduino sketches I came up with were pretty rough, and I was going to look at using interrupts to make it all a bit less messy. Annoyingly all the I2C info and Arduino sketched etc are also in storage on my 'project' PC.

Bare with me til March/ early April and I'll have access to it all again and time to look at it all!



I'm excited to see how it turns out.
[doublepost=1486306803][/doublepost]
Didn't have a closer look at the source yet, but this is really cool news and will surely help me a lot!
Thanks a lot for sharing!
No problem, just having fun!
 

ultmtfloydian

macrumors newbie
Aug 2, 2012
18
2
New Hampshire, USA
Hi I feel bad that I've not kept up with this thread! The iMac has been in storage since February 2016 and still is, but it was working fine as a monitor, with the power button/ LED and reset buttons all doing their thing. My plan was (still is) to stuff a tiny PC in there, along with a small audio amp to drive the speakers.

Approach was much the same as yours, rockyhill, using an Arduino to talk to the IVAD board over I2C simulating the commands that would usually come from or via the iMac's openfirmware. Also mostly figured out the CRT geometry / alignment commands.

I hadn't bothered to try an emulate the EDID if requested from the computer, as it seemed to work okay without. The iMac's IVAD does hold EDID data, but if I remember rightly it's at a funny address and partially nonsense.

The Arduino sketches I came up with were pretty rough, and I was going to look at using interrupts to make it all a bit less messy. Annoyingly all the I2C info and Arduino sketched etc are also in storage on my 'project' PC.

Bare with me til March/ early April and I'll have access to it all again and time to look at it all!
I'm so glad others are trying to do this. I have a similar thread going on trying to achieve the same exact thing with an indigo slot loader, but I'm having just about as much luck as everyone else. I was going to go the route of shimmying a entirely different CRT and have the thing always be on, but that's a little too hack jobby for my taste. I was also going to put a Mac mini logic board in it to avoid the Hackintosh scenerio. But if you do end up taking a peek at yours cablemunkey, it would be fantastic to see how you went about doing it because you seem to have figured out half of the hard part.

Let's do this guys. Show all the people with the malformed LCDs what they're missing ;)
 

Richter12x2

macrumors newbie
Apr 18, 2017
1
1
I'm so glad others are trying to do this. I have a similar thread going on trying to achieve the same exact thing with an indigo slot loader, but I'm having just about as much luck as everyone else. I was going to go the route of shimmying a entirely different CRT and have the thing always be on, but that's a little too hack jobby for my taste. I was also going to put a Mac mini logic board in it to avoid the Hackintosh scenerio. But if you do end up taking a peek at yours cablemunkey, it would be fantastic to see how you went about doing it because you seem to have figured out half of the hard part.

Let's do this guys. Show all the people with the malformed LCDs what they're missing ;)
Running the iMac computer off of a Raspberry Pi is on my radar too. Someone I think suggested something similar before, but just to get it working, is it expecting a response to the video signals it sends? Or could you just use the same pins from the Mac logic board, and then the video signal pins from your own source? Just let the old hardware produce the start signal.
 
  • Like
Reactions: thomasthegps

Asayu

macrumors newbie
Aug 18, 2017
4
1
I manage to "start" the crt by connecting pin 4 and 10 of the imac to 5v like the emac do and it work (or at least it make crt noise) but i can't get the video runnig, I try hocking up an arduino to SDA and SDC sending the emac boot sequence, maybe their crt was close enough but that didn't work. Anyone has the proper imac g3 crt boot sequence ? so we can try to start it properly.
 

Attachments

jarayama

macrumors newbie
Aug 22, 2017
2
1
Santiago, Chile
I'm on the same stage as you, don't know how to get the data from the mac to send it to the monitor through the Arduino, if you have some progress please let me know!

thanks

EDIT: as read on Mr Rockyhill on her github eMac CRT init repository a logic analyzer is needed.

I manage to "start" the crt by connecting pin 4 and 10 of the imac to 5v like the emac do and it work (or at least it make crt noise) but i can't get the video runnig, I try hocking up an arduino to SDA and SDC sending the emac boot sequence, maybe their crt was close enough but that didn't work. Anyone has the proper imac g3 crt boot sequence ? so we can try to start it properly.
 
Last edited:

sparpet

macrumors newbie
Aug 23, 2017
4
2
Maybe someone can try to intercept the signals with a thing like this:
http://hackaday.com/2011/05/21/arduino-i2c-sniffer/

But i dont know how i would interpret the data to write the code for the arduino

I have 2 imacs, one working and the other i messed up the PLL resistor pads for the cpu, an in this condition the logic board does not send the boot sequence to start the crt
 

sparpet

macrumors newbie
Aug 23, 2017
4
2
I did it, guys!!!!!!!
Im very excited, i used the method i proposed above.
can anyone please help me to make sense of it?
Attached is a csv file with the data from the arduino.

EDIT: that only spells 46, which is the address of the i2c chip inside the ivad board, the arduino ran out of memory, however, i have determined that in addition to 0x46, there is also 0x53 as a second device on the bus.
 

Attachments

Last edited:

Asayu

macrumors newbie
Aug 18, 2017
4
1
That's cool we progress. All we need now is a complete dump.
The arduino sketch that i used was made for the emac and even if the sequence in it
didn't work with the imac it has a few similarty, he begin to talk to a chip at 0x46 like our imac
and later to another one but at 0x4C and not at 0x53.
I will modify the adresses int the shetch form 0x4c to 0x53 to see if the message itself
is the same beetween these macs.

the arduino sketch that i mentioned
https://github.com/qbancoffee/emac_ivad_board_init
 

Asayu

macrumors newbie
Aug 18, 2017
4
1
i've try the changes made to the sketch with a powermac as video source to be sure, and the imac wont boot up, but i think we're on the right way
 

LightBulbFun

macrumors 68020
Nov 17, 2013
2,182
2,021
London UK
Just going to throw this out here

remember the eMac and iMac both have a fixed frequency CRT, Basically there not multiscan like most other CRTs out there, so if you select something that is not the 3 resolutions and Frequencies supported by the iMacs CRT, then the display will just go blank, so make sure your choosing the right frequencies and resolutions.
 
  • Like
Reactions: Asayu

cablemunkey

macrumors newbie
Dec 7, 2015
4
5
Hi guys,

I feel awful for starting this thread then more or less ignoring it for 2 years.

After almost 2 years, a house move, a house renovation, 2 new jobs and a marriage, I finally got the iMac out of storage, fired it up and it still works!

It's set up to work as a monitor for an external computer at the moment. I've got myself a Raspberry Pi 3 and I'm going to tweak things slightly to let me fire this inside the iMac and use it standalone.

I've also done a bit of work on the Arduino sketch as it was a bit rough before and not totally reliable. It's a bit cleverer now and, also lets you adjust the monitor settings via the Arduino serial console

I've started writing up what I did (not easy after 2 years!). It will take me a good few weeks to document it properly with images / videos, wiring, pin-outs etc.

If there's anyone left interested in this, please do let me know and I'll pop it on a blog or something.
 

sparpet

macrumors newbie
Aug 23, 2017
4
2
Im interested too, i bought a logic analyzer (cheap one from ebay) but i either suck at writing arduino code or im missing something, so if you please could share how its done it would be great :)
 

jamie-g

macrumors newbie
Jan 6, 2018
2
2
Hi all,

Just a note to say I've been working on getting an eMac CRT going as well, and have had success with the arduino sketch by rockyhill. I've also figured out what some of the i2c commands do (eg. adjusting brightness/geometry), so I'll update the wikibooks at https://en.wikibooks.org/w/index.php?title=How_to_modify_an_eMac_to_use_as_an_external_monitor

The main outstanding issue I have is that because of the fixed horizontal scan rate of the CRT (presumably the refresh rate of the BIOS/UEFI screen is wrong?) I can't get into the BIOS of the PC (Lenovo ThinkCentre M93 Tiny) I'm using to set up the wireless card; unfortunately I don't have another monitor to do it. I will try using the EDID simulator sketch (https://github.com/qbancoffee/edid_simulator) at some point to see if that forces the PC to pick a suitable refresh rate, but my current cheap VGA cable doesn't have the correct i2c pins on.

Below is an extract of the modified code from rockyhill with the function and range of the different commands, incase anyone is interested before the wikibooks gets updated. Some of them seem to have two ranges of 128 levels which do the same thing rather than one range of 256, and some cause the screen to go blank when they're out of range:

writeToIvad(70, 0x01 , 0xAE); //backlight green, range 00-FF
writeToIvad(70, 0x02 , 0xAA); //backlight blue, range 00-FF
writeToIvad(70, 0x03 , value[8]); //backlight red, range 00-FF
writeToIvad(70, 0x04 , 0xBF); //top width/pinch, range 00-7F & 80-FF
writeToIvad(70, 0x05 , 0xBC); //top lean 00-7F & 80-FF
writeToIvad(70, 0x06 , 0x3B); //bottom lean 00-7F & 80-FF
writeToIvad(70, 0x07, value[6]); //horizontal position, 80-FF
writeToIvad(70, 0x08 , value[3]); //vertical size, 80-FF
writeToIvad(70, 0x09 , value[4]); //vertical position, 00-7F, 80-FF
writeToIvad(70, 0x0A , 0x96); //some kind of image adjustment, like a sphere in the centre of screen, 00-FF
writeToIvad(70, 0x0B , value[7]); //keystone, 00-FF
writeToIvad(70, 0x0C , value[2]); //pincushion, 00-FF
writeToIvad(70, 0x0D , value[5]); //horizontal size, 00-7F, 80-FF
writeToIvad(70, 0x0E , 0xC5); //top and bottom pull left & right, 80-FF
writeToIvad(70, 0x0F , value[9]); //paralellogram, 00-FF
writeToIvad(70, 0x10 , 0x8F); //some kind of contrast, possibly gamma? 80-BF & C8-FF
writeToIvad(70, 0x11 , value[0]); //brightness, 00-3F, 40-7F
writeToIvad(70, 0x12 , 0x46); //some kind of horizontal size, 00-FF
writeToIvad(70, 0x14 , 0x37); //some kind of vertical size, 00-7F, 80-FF
writeToIvad(70, 0x15 , 0x43); //bottom width/pinch, 00-7F & 80-FF

writeToIvad(76, 0x00 , 0xD4); //backlight/colour temp blue->red, 00-FF
writeToIvad(76, 0x01 , 0xCE); //backlight/colour temp yellow->blue, 00-FF
writeToIvad(76, 0x02 , 0xCE); //backlight/colour temp magneta->blue/green, 00-FF
writeToIvad(76, 0x03 , 0x9D); //rotation, 00-FF

writeToIvad(70, 0x00 , value[1]); //contrast, 80-FF

Thanks to patriciooholegu and rockyhill for the previous work!

Jamie
[doublepost=1515274222][/doublepost]Also for those working on iMacs in need of a logic analyser, I had some success with https://github.com/rricharz/i2c-sniffer-100kBaud-Arduino-Mega running on an arduino mega. I originally wanted an iMac rather than an eMac but I wasn't going to pay £100 for one to rip apart...
 

Attachments

  • Like
Reactions: LightBulbFun

LightBulbFun

macrumors 68020
Nov 17, 2013
2,182
2,021
London UK
Hi all,

Just a note to say I've been working on getting an eMac CRT going as well, and have had success with the arduino sketch by rockyhill. I've also figured out what some of the i2c commands do (eg. adjusting brightness/geometry), so I'll update the wikibooks at https://en.wikibooks.org/w/index.php?title=How_to_modify_an_eMac_to_use_as_an_external_monitor

The main outstanding issue I have is that because of the fixed horizontal scan rate of the CRT (presumably the refresh rate of the BIOS/UEFI screen is wrong?) I can't get into the BIOS of the PC (Lenovo ThinkCentre M93 Tiny) I'm using to set up the wireless card; unfortunately I don't have another monitor to do it. I will try using the EDID simulator sketch (https://github.com/qbancoffee/edid_simulator) at some point to see if that forces the PC to pick a suitable refresh rate, but my current cheap VGA cable doesn't have the correct i2c pins on.

Below is an extract of the modified code from rockyhill with the function and range of the different commands, incase anyone is interested before the wikibooks gets updated. Some of them seem to have two ranges of 128 levels which do the same thing rather than one range of 256, and some cause the screen to go blank when they're out of range:

writeToIvad(70, 0x01 , 0xAE); //backlight green, range 00-FF
writeToIvad(70, 0x02 , 0xAA); //backlight blue, range 00-FF
writeToIvad(70, 0x03 , value[8]); //backlight red, range 00-FF
writeToIvad(70, 0x04 , 0xBF); //top width/pinch, range 00-7F & 80-FF
writeToIvad(70, 0x05 , 0xBC); //top lean 00-7F & 80-FF
writeToIvad(70, 0x06 , 0x3B); //bottom lean 00-7F & 80-FF
writeToIvad(70, 0x07, value[6]); //horizontal position, 80-FF
writeToIvad(70, 0x08 , value[3]); //vertical size, 80-FF
writeToIvad(70, 0x09 , value[4]); //vertical position, 00-7F, 80-FF
writeToIvad(70, 0x0A , 0x96); //some kind of image adjustment, like a sphere in the centre of screen, 00-FF
writeToIvad(70, 0x0B , value[7]); //keystone, 00-FF
writeToIvad(70, 0x0C , value[2]); //pincushion, 00-FF
writeToIvad(70, 0x0D , value[5]); //horizontal size, 00-7F, 80-FF
writeToIvad(70, 0x0E , 0xC5); //top and bottom pull left & right, 80-FF
writeToIvad(70, 0x0F , value[9]); //paralellogram, 00-FF
writeToIvad(70, 0x10 , 0x8F); //some kind of contrast, possibly gamma? 80-BF & C8-FF
writeToIvad(70, 0x11 , value[0]); //brightness, 00-3F, 40-7F
writeToIvad(70, 0x12 , 0x46); //some kind of horizontal size, 00-FF
writeToIvad(70, 0x14 , 0x37); //some kind of vertical size, 00-7F, 80-FF
writeToIvad(70, 0x15 , 0x43); //bottom width/pinch, 00-7F & 80-FF

writeToIvad(76, 0x00 , 0xD4); //backlight/colour temp blue->red, 00-FF
writeToIvad(76, 0x01 , 0xCE); //backlight/colour temp yellow->blue, 00-FF
writeToIvad(76, 0x02 , 0xCE); //backlight/colour temp magneta->blue/green, 00-FF
writeToIvad(76, 0x03 , 0x9D); //rotation, 00-FF

writeToIvad(70, 0x00 , value[1]); //contrast, 80-FF

Thanks to patriciooholegu and rockyhill for the previous work!

Jamie
[doublepost=1515274222][/doublepost]Also for those working on iMacs in need of a logic analyser, I had some success with https://github.com/rricharz/i2c-sniffer-100kBaud-Arduino-Mega running on an arduino mega. I originally wanted an iMac rather than an eMac but I wasn't going to pay £100 for one to rip apart...
this is some very cool stuff to see happen :)

congratulations on finding this stuff out.

Yeah due to it being a fixed horizontal scan rate Display it wont display most of the common VESA modes that PCs use before a proper display driver is able to take over, so yeah ya gotta watch out there, the iMac G3 and even 17 inch ADC CRT Studio display are all fixed as well (its prolly why there never was really a VGA to ADC adapter for the 17 inch ADC CRT Studio display sadly)