• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

iMac G3 (Rev A -> C) G4 CPU Upgrade

Hi, I did another quick test. Maybe the speed isn't set as a multiplier but as a fixed value, but in my case it's being complicated by the bus overclock to 83MHz. It doesn't like something.

Up until now, it occasionally wouldn't boot on the first try, but on the second or third try, it always booted. Now I've tried the Lombard EEPROM, and it freezes almost every time I boot up. One time, the "bomb" message appeared saying "bus error." It only booted once, and I was able to verify the cache speed at 200MHz, with the processor at 500MHz (which would also be the Lombard's original 2.5:1 ratio). But it froze. Maybe there's something in the iMac firmware that doesn't like the 83MHz bus. I don't know if it would be more stable if I could reach 100MHz (I have an XPC106@100MHz). I don't know what to try, I don't know how to modify the EEPROM to generate that checksum at the same time.

I see that positions 08, 12, 13, 14, 15, and 1D differ.
 
Interesting research.

I’m guessing this doesn’t apply to the Beige G3 or B/W G3? I don’t see any EEPROM on their ZIF cards.

The MPCPCMEC.pdf mentions that the cache setup can either be done through an SPD EEPROM like on the iMac G3, or through simple pull up and pull down resistor straps. The PowerMac G3 uses the latter.
 
Update:

The stability issue seems to be due to excessive processor speed and likely temperature. The first boot seemed to go well, but as it heated up, it gave problems and wouldn't work. I lowered the bus to 66MHz and adjusted it to 500MHz. Upon boot, the chime sounded, but it wouldn't boot or display an image. So I reset the bus to 83MHz and the processor to 460MHz. It seems completely stable. With the Wallstreet EEPROM, I have the cache at 184MHz, which would be a 2.5:1 ratio. I'm not testing the Lombard one because that's its ratio.

1748797474290.jpg

I know the speed was excessive, but I have the Vcore at 2V, so maybe I should lower it further for testing. Do you think, @herd, lowering the Vcore to 1.8V would work well at 500MHz? It's a 7400 at 466MHz.
I'd made some improvements, reballed it with 0.65mm balls to lower the CPU height a bit, added a 0.5mm copper foil to the heatsink using thermal compound at each side, and also added a small laptop fan.

IMG_20250510_162140.jpg
IMG_20250510_180949.jpg

I'm going to stick with 460MHz for now, but I still think the 83MHz bus is somewhat incompatible with the iMac firmware, because at this speed, if I boot by pressing the "ALT" key, the menu to choose a boot disk never appears; it boots directly from whatever is selected in the control panel.
 
I know the speed was excessive, but I have the Vcore at 2V, so maybe I should lower it further for testing. Do you think, @herd, lowering the Vcore to 1.8V would work well at 500MHz? It's a 7400 at 466MHz.

Setting it to 1.8V is likely to help with stability.
I didn't notice much instability on my machine, which runs the 466MHz 7400 at 500MHz @1.8V on the 83MHz FSB, with the 1MB cache at 250MHz through MCP.
 
Last edited:
Setting it to 1.8V is likely to help with stability.
I didn't notice much instability on my machine, which runs the 466MHz 7400 at 500MHz @1.8V on the 83MHz FSB, with the 1MB cache at 250MHz through MCP.
Luck is not on my side. Adjusted to 1.83V:

bus error.jpgError 7.jpg
 
Is your 7400 die square shaped, or rectangular shaped? I think the one I've got as described above, is the rectangular die.

The die shape changed due to a die shrink, hence the shape change. The older 7400s can't overclock as much as those.
Mine's rectangular too, and at 466MHz like yours. I thought the problem was solved with the 7410s, but I don't know anymore. The strange thing is that I got it to run at 500MHz with a 2V Vcore, and now it's not stable. I can't even boot it.
 
Well, I think all the 500MHz issues have nothing to do with the processor or the bus. I think there's a hardware problem. This problem has gotten worse and worse, and now it's gotten to the point where the iMac boots up but no longer has an L2 cache, and nothing has changed since the last tests. Maybe a cache chip has been damaged, or maybe some trace has been damaged... I don't know.

IMG_20250602_182437.jpg

This daughterboard has been through so many experiments, it's been the guinea pig, and in the end it paid its price. Now I'm without a processor, I don't have another one, and they don't usually come up for sale, so I'll have to end the experiment for myself.

I hope I've at least provided you with some useful information.

Thanks for your help.
 
Well, I think all the 500MHz issues have nothing to do with the processor or the bus. I think there's a hardware problem. This problem has gotten worse and worse, and now it's gotten to the point where the iMac boots up but no longer has an L2 cache, and nothing has changed since the last tests. Maybe a cache chip has been damaged, or maybe some trace has been damaged... I don't know.

I would suspect a cache chip. Can you swap them out?

This daughterboard has been through so many experiments, it's been the guinea pig, and in the end it paid its price. Now I'm without a processor, I don't have another one, and they don't usually come up for sale, so I'll have to end the experiment for myself.

I think @cheesestraws was looking to part with an iMac CPU daughtercard, maybe he can help you out?
 
So far for me the cause of non-working L2 cache has always been the CPU itself. Especially happens on cards that get handled a lot. Putting a heatsink on, taking it off again, repeat… at some point you’ll damage the die. Are there slightly chipped corners on yours? Once that happens the first thing that stops working is the cache for some reason. The chip will likely die completely further down the road.
 
I don't know how these EEPROMs are used or what data they contain.

My B&W G3 has this data in i2c for a Sonnet 1GHz G4 upgrade.
Code:
dev via-cuda
cr 80 0 do 80 0 i 2* read-iic ?dup if cr i . dump cr then loop

54 
ff86b87b: 80 08 00 00 00 40 00 1e 01 00 00 00 00 00 00 00 :.....@..........:
ff86b88b: 02 00 04 c8 00 00 10 00 00 00 00 00 00 00 00 00 :................:
ff86b89b: 01 e8 03 64 00 00 00 00 00 00 00 00 00 00 00 00 :...d............:
ff86b8ab: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :................:
ff86b8bb: 53 4f 4e 54 45 47 56 00 00 00 00 00 00 00 00 00 :SONTEGV.........:
ff86b8cb: 00 00 00 00 00 00 00 00 00 00 00 05 37 34 35 35 :............7455:
ff86b8db: 00 00 00 00 65 53 4f 4e 4e 45 54 20 54 45 43 48 :....eSONNET TECH:
ff86b8eb: 4e 4f 4c 4f 47 49 45 53 00 ff ff ff ff ff ff ff :NOLOGIES........:

This format seems to match the format discussed in the MPCPCMEC.pdf document.

This format does not seem to match the format of any of the EEPROMs discussed in the thread:

Code:
cd "/Volumes/Storage/Downloads/MPCPCMEC ROMs?"
IFS=$'\n'
for thefile in $(find . -iname '*.bin'); do
	echo "$thefile"
	xxd "$thefile"
	echo
done

./1.42GHz-Dual-7455B-2MBL3.BIN
00000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000010: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: c930 0801 3030 392d 3634 3131 0216 9b41  .0..009-6411...A
00000090: 8410 c0bc 8410 ccbc 0000 0000 0112 0611  ................
000000a0: 0000 0000 0115 0661 0578 0200 ed33 08db  .......a.x...3..
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./1Ghz-Single-7455A-1MBL3-MDD-CPU-CARD-SPD-EEPROM-DUMP.bin
00000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000010: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: c930 0801 3030 392d 3634 3535 0116 9b41  .0..009-6455...A
00000090: 8410 c0bc 8410 ccbc 0000 0000 0112 0611  ................
000000a0: 0000 0000 0114 0641 0578 0500 ed7e 08c4  .......A.x...~..
000000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./400MHz1MB.BIN
00000000: 5753 7278 0008 2000 9304 0000 0000 0000  WSrx.. .........
00000010: 0100 866f 2101 0000 0000 0000 9600 1ee1  ...o!...........
00000020: 93ff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./iMacG3_tray_233MHz512K.BIN
00000000: 5753 7278 0008 2000 8104 0000 0000 0000  WSrx.. .........
00000010: 0100 866f 2101 0000 0000 0000 7800 1e11  ...o!.......x...
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./PB_Lombard_400MHz_1MB.BIN
00000000: 5753 7278 0008 2000 0a04 0000 0000 0000  WSrx.. .........
00000010: 0100 b16f 3111 0000 0000 0000 7800 005b  ...o1.......x..[
00000020: 0aff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./PB_Wallstreet2_300_1MB (0xFC).BIN
00000000: 5753 7278 0008 2000 0604 0000 0000 0000  WSrx.. .........
00000010: 0100 fc6f 3111 0000 0000 0000 783c 320a  ...o1.......x<2.
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./PB_Wallstreet2_300_1MB.BIN
00000000: 5753 7278 0008 2000 0604 0000 0000 0000  WSrx.. .........
00000010: 0100 986f 3111 0000 0000 0000 783c 320a  ...o1.......x<2.
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./PM_G4_DA_466.BIN
00000000: 5007 0100 646d 6320 6275 644c 6a61 6269  P...dmc budLjabi
00000010: 0132 0802 14dc 9380 6d6f 746f 8014 c044  .2......moto...D
00000020: 081a 0004 0000 0000 0016 0708 0114 0602  ................
00000030: 2111 09c4 7361 6d73 0000 0000 0000 0000  !...sams........
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: c92c 0801 646d 6320 6275 644c 0116 0000  .,..dmc budL....
00000090: 8014 cca4 8014 c0a4 0100 0000 0114 0621  ...............!
000000a0: 0100 0000 0000 0000 0000 0000 0000 0000  ................
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

./QS_933_2MB_4-1.BIN
00000000: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000010: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000080: c92c 0801 646d 6320 6772 6d00 0216 0000  .,..dmc grm.....
00000090: 8410 c0bc 8410 ccbc 0000 0000 0112 0611  ................
000000a0: 0000 0000 0115 0641 0530 0000 0000 0000  .......A.0......
000000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000c0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000d0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000e0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
000000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................

I have not tried figuring out what these EEPROMSs do, how to read them from software, or what actually uses the information. Are they documented in a PowerPC manual somewhere?

Maybe you can try some i2c commands in Open Firmware. The above works for B&W G3 and maybe similar era G3s such as the iMac and Lombard.

My Power Mac G5 Quad has different i2c methods in Open Firmware:
Code:
" /u4@0,f8000000/i2c@f8001000" 2dup find-device open-dev dup . to my-self
h# 100 buffer: buf
cr 80 0 do buf 80 i 2* 0 read-i2c-at ?dup if i 2* 2 u.r buf swap dump cr then loop 

" /u4@0,f8000000/i2c@f8001000/i2c-bus@1" 2dup find-device open-dev dup . to my-self
h# 100 buffer: buf
cr 80 0 do buf 80 i 2* 0 read-i2c-at ?dup if i 2* 2 u.r buf swap dump cr then loop 

" /ht@0,f2000000/pci@8/mac-io@7/i2c@18000" 2dup find-device open-dev dup . to my-self
h# 100 buffer: buf
cr 80 0 do buf 80 i 2* 0 read-i2c-at ?dup if i 2* 2 u.r buf swap dump cr then loop
I don't think any of the results are CPU related.

Actually, I did a search for WSrx and found an occurrence in the Wallstreet ExceptionTable code (the Start code or boot code). The tbxi command will split the ROM into parts, including the ExceptionTable part. I don't know if this occurrence is related to the EEPROM.
Code:
  1602: FFF03678: 3C80 5753                       lis      r4,0x5753                               "<ÄWS"
  1603: FFF0367C: 6084 7278                       ori      r4,r4,0x7278                            "`Ñrx"
 
Thanks for your answers. And @joevt, you're on a higher level, much higher. I'm sure we can find something with that information.

@croissantking, I also suspect it could be a cache chip failure. It all started happening when the cache reached 200MHz, and from then on, it got worse and worse. When I installed the Lombard EEPROM that made it run at 200MHz, everything got worse. I think the only compatible chips I have now are 200MHz. They won't let me reach 250MHz, but since the most I've achieved with an Apple EEPROM is that speed, I'll have to settle. I need to find a calm moment for this operation, as they're very delicate to handle. And I don't think they sell new ones anymore.

@Bolle, the CPU doesn't look damaged, and installing and removing the heatsink on an iMac G3 tray is very simple. I think the daughterboard suffers more from removing and replacing it on the motherboard. The heatsink is placed on top and secured to the plate with the clip.
 
if I boot by pressing the "ALT" key, the menu to choose a boot disk never appears; it boots directly from whatever is selected in the control panel.
In my experience, I think some of the bits of that feature might exist in the tray loader's firmware in some form, but it's mostly unimplemented, including the OPT/ALT invocation which, as you found, does nothing.

Fun fact: an apparently undocumented, but mostly functional (prototype?) version of the boot picker exists in the Lombard's firmware. You can't invoke it with OPT/ALT like you can later Macs, but if you go into OF and type, I think, "multi-boot", it will open up.

I'm not sure how well it works in practice (probably not very; why else would it have been undocumented?), but it's there to play around with.

c
 
The Option Key is skipped/ignored on early New World Macs, according to https://68kmla.org/bb/index.php?threads/getting-g3-whisper-perch-usb-working.43681/post-479180

multi-boot is text only in the beginning. Later, it got a UI. In the later versions, to get the text menu instead of the GUI menu, enter multi-boot-menu.
https://68kmla.org/bb/index.php?thr...om-usb-from-the-boot-picker.48601/post-546120

More multi-boot notes:
https://68kmla.org/bb/index.php?thr...k-g3-lombard-from-linux-usb.49357/post-555173
https://68kmla.org/bb/index.php?threads/interesting-find-on-pci-bus-booting-nwms.49225/post-553507
 
Well, I have some news, although not very good news.

First, a curious fact. Without an L2 cache, it's not possible to boot with either the original iMac EEPROM or the Lombard EEPROM; neither of them left the factory without an L2 cache. However, with the Wallstreet EEPROM, it's possible to boot without an L2 cache, because, coincidentally, there was a Wallstreet without an L2 cache.

Between yesterday and today, I changed the cache chips for 200MHz ones. I had the Wallstreet EEPROM installed. Set to 460MHz with the cache at 186MHz, it worked. Then I changed the EEPROM to the Lombard EEPROM because it allows the cache to be used at 200MHz with the processor at 500MHz. While it was set to 460MHz, everything worked fine, but when I set it to 500MHz, it was impossible to boot, either hanging on the smiley face or popping up a bomb. After several attempts, I swapped the EEPROM for the Wallstreet one and the L2 cache disappeared again!! Something's happening when I hit 200MHz, something's not right, it seems like I've burned them, I have no L2 cache again!!!! I've run out of chips.

The Lombard EEPROM seems dangerous when the cache reaches 200MHz; both times it's been damaged when it reached that speed.
 
Back
Top