• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Internal floppy drive on iMac G3 - Firmware downgrade

max1zzz

Well-known member
Hey, I was working on a project involving putting a iMac G3 Rev.A board in a xbox 360 case and someone happend to tell me that the iMac G3 Rev A / B / C acutualy had a port on the board for a internal floppy drive, a bit of googleing brought up this: viewtopic.php?f=29&t=17920

So it seems it is perfectly possible, but is disabled in newer firmware versions.

So, is there any way to downgrade the firmware? (besides just desoldering the flash chip and re writeing it, which although i have the kit to remove the chip, i don't have anything that could reprogram it)

I would love to be able to do this, just to be able to load floppies into something that looks like a xbox 360 ;)

thanks in advance

-max1zz

 

olePigeon

Well-known member
dougg3 wrote a program to flash his B&W G3, maybe it can be used to flash your iMac to an earlier ROM?

 

max1zzz

Well-known member
ok, will do that then

Then all i need to do is actually hunt down the firmware, hopefully there are some old updaters out there somewhare

 

dougg3

Well-known member
Just thought I'd post what I sent to max1zzz in PM so it'll be around for future reference...

I didn't actually write a new program, I just modified the B&W G3's firmware updater. As long as we can find an older iMac firmware updater for the same model (which includes a firmware version before the floppy was disabled), it should be possible. I had to do a similar thing to the blue and white G3 firmware updater. If it's anything like the B&W G3 updater, it has a "whitelist" of known firmware versions it's allowed to update. I think if we find out the current firmware version, we can add it to the whitelist and then the older firmware updater will think it is allowed to "update" the newer firmware, thus replacing it with the older version.

It's worth a shot!

 

dougg3

Well-known member
Nice find, markyb86! That firmware update is in the exact same format as my Blue and White G3's firmware updater. I'm trying to go back in time to see if I can figure out which firmware version initially added the floppy incompatibility. Here's a MacFixit article dated April 14, 1999 that says the "iMac Firmware Update" broke the floppy compatibility, but they don't mention a version:

after installing the iMac Firmware Update, these drives will no longer work. Apparently, the update removes the needed floppy disk drivers.
Then I found a couple of more articles:

Apple posts iMac Firmware Update 1.0 and iMac Update 1.1 (dated December 18, 1998)

Apple Posts iMac Firmware Update 1.2 (dated February 1, 1999)

So the discovery of the floppy breaking was definitely reported after version 1.2. We just have to hope that the problem also didn't exist in firmware update 1.0 :) Otherwise the only fix would be to find an original iMac that never had any firmware updates installed and dump its firmware, then put it into a firmware update file.

Hopefully downgrading doesn't have any adverse effects--there's always that risk! I'll look at the updater and see if I can force it to allow installing over newer firmware (I'd assume max1zzz's computer currently has Firmware Update 1.2 installed?)

There are three known firmware versions that iMac Firmware Update 1.0 from markyb86's link knows about:

Apple iMac Open Firmware 3.0.f8 built on 08/06/98 at 12:04:16

Apple iMac Open Firmware 3.0.b2 built on 09/17/98 at 15:19:23

Apple iMac Open Firmware 3.0.f3 built on 12/02/98 at 10:25:41

I'm not sure if 3.0.f3 is the version it installs or not...I'd have to do more checking later.

 

max1zzz

Well-known member
so i guess i don't need to send you the one i have now? (it's firmware updater 1.0 and seems to have the 3.0.f3 firmware)

And i'm pretty sure it should be working in firmware 1.0, since it was reported working in a feb 1999 copy of macaddict, and as far as i am aware all the firmwares, except 1.2 are dated from before then, so hopefully should work :)

And yes, my imac is on version 1.2 of the firmware

 

dougg3

Well-known member
OK, all we need to do take the 1.2 firmware's version string and put it into the 1.0 updater's data fork replacing one of the strings of the firmwares it knows it can update. Then you can run the 1.0 updater and hopefully that will trick it into thinking it can install the 1.0 firmware.

I will work on it later tonight and get a patched updater file to you...

 

max1zzz

Well-known member
Awesome, thanks again mate ;)

just prepping the imac, got the socket soldered in and am gonna give it a clean install of 8.5 (since it is currently is on 9.2.2, which afaik won't run of firmware revision 1.0, and anyway, it is in German and i can't understand any of it....)

gonna be fun to see if this works ;)

 

max1zzz

Well-known member
hmm don't know if you have had a chance to look at modifying the updater yet dougg3, but i decided to have a dive into the updaters with resorcerer, more specifically looking at the data fork (not expecting to find anything, as i have never done this kind of modifiaction myself...), and near the end there is what seems to be a list of firmwares:

Code:
Apple iMac Open Firmware 3.0.f8 built on 08/06/98 at 12:04:16 Apple iMac Open Firmware 3.0.b2 built on 09/17/98 at 15:19:23Apple iMac Open Firmware 3.0.f3 built on 12/02/98 at 10:25:41
so i took a look in the 1.2 updater and sure enough near the end:

Code:
Apple iMac Open Firmware 3.0.f8 built on 08/06/98 at 12:04:16 Apple iMac Open Firmware 3.0.b2 built on 09/17/98 at 15:19:23 Apple iMac Open Firmware 3.0.f3 built on 12/02/98 at 10:25:41 Apple iMac Open Firmware 3.0.f9 built on 02/03/99 at 16:45:21 Apple iMac Open Firmware 3.0.f10 built on 03/05/99 at 21:14:19 Apple iMac Open Firmware 3.0.f1 built on 04/01/99 at 16:47:10
so presumabley that is the firmware whitelists? the thing that is throwing me is that firmware updater 1.0 has firmware 3.0.f3 in that list, which is firmware update 1.0?

or i could be compleatley wrong, as i say, i am no expert

 

dougg3

Well-known member
I'm just now ready to take a look at it...yep, that's the "whitelist" I'm talking about.

I'm *thinking* that the very last entry matches the firmware version string that it actually installs, but I'm not sure. Is your currently-installed firmware version 3.0.f1? I don't know if there's an easy way to find it, but I think if you run CopyROMs it will dump that firmware into a 4 MB file (four repetitions of the 1 MB firmware) and the version will be a string in it somewhere. It might actually be a good idea to dump your current firmware anyway, just so in case something goes bad we might be able to reflash your chip with the entire contents of what used to be on it (I have a Willem programmer, we could probably figure it out).

Since the original firmware update 1.0 came out in December 18, 1998, and all the rest of the firmwares after 3.0.f3 in the 1.2 list are dated after that date, I'm pretty sure the very last entry in the 1.0 whitelist is the version that it actually installs (and same with the 1.2 whitelist) -- so you probably have version 3.0.f1 currently installed, since that's the latest version in the 1.2 list.

What I would do is replace the very first entry in the 1.0 whitelist ("Apple iMac Open Firmware 3.0.f8 built on 08/06/98 at 12:04:16") with the very last entry in the 1.2 whitelist ("Apple iMac Open Firmware 3.0.f1 built on 04/01/99 at 16:47:10"). Be sure to leave the NULL byte in place that's directly after it, and don't change the size of the data fork at all. Just replace existing characters.

I can whip it up and send you the file in a sec...this is getting exciting! (P.S. it's weird that 3.0.f1 is actually newer than 3.0.f10...I wonder if they meant to call it 3.0.f11...but it's a good thing they did it that way because it would have lengthened the string and made it more difficult to patch)

Edit: here's the link to the patched updater program:

https://www.dropbox.com/s/3ncm464351gpetk/iMac%20Firmware%201.0%20Downgrade.cpt

Extract it (it's a Compact Pro archive) and it'll give you a new iMac Firmware Updater program. Copy the contents of the 1.0 disk image to a folder on your hard drive, but replace the updater application with the one I just bundled, and run it. It should allow it to install the 1.0 firmware over the 1.2 firmware...

 

max1zzz

Well-known member
I'm pretty sure what I have installed is 3.0.f2, I will cheack that tommrow morning (as I have packed up the iMac for the night, it's in multiple prices atm)

Anyhow, I will grab copyroms tommrow and dump the firmware and see what's on it, if it is f2 rather than f1 it's a simple enough patch

I'm pretty excited about this aswell, gonna be pretty cool if this works, just sucks I will have to wait till the morning to find out....

 

dougg3

Well-known member
Good luck! I'll be excited to hear how it goes. Sorry about not being able to help you until now, it's just that I work during the day :)

You'll probably have to change the date string to match too. I think it compares against the entire string, so hopefully CopyROMs will let you get the string out of it. Alternatively, I can decode the update file from 1.2 and see what version it actually provides. I might do that...

Edit: Actually, if you open up the "iMac Firmware 3.0" file with a text editor, you can kind of see what firmware it installs, I think:

1.2 says "BuildVersion=0x000013F2" -- matches up with 3.0f2?

1.0 says "BuildVersion=0x000012F3" -- matches up with 3.0f3?

I'm thinking maybe the 1.0 update included its own firmware version in the whitelist, but the 1.2 update didn't...I'd be curious if an iMac with 1.0 firmware allows you to rerun the 1.0 updater over and over again. I bet it does.

 

dougg3

Well-known member
One last update:

I decoded the firmware included with 1.2 and you're right, the 1.2 firmware is 3.0f2. Unfortunately the firmware appears to be compressed even after decoding it, so I'm having a hard time extracting the full date. It's something like "04/23/99 at 14:31:0something". The last digit might be 3, but I'm not sure. I think you can see the full string if you boot into Open Firmware. Otherwise, just bruteforce the last digit 0-9 ;-)

 

max1zzz

Well-known member
the 1.2 updated dose indeede seem to be f2, take at the "fmwr" resorce in the 1.2 updater, this is what you get:

Code:
Apple iMac Open Firmware 3.0.f2 built on 04/23/99 at 14:31:03
oddly the 1.0 updater dosen't have this resorce

anyway, i'm gonna dl copyroms and see if i can read the firmware off the imac to get a confirmation of the firmware version

 

max1zzz

Well-known member
well, i have good news and bad,

the good news is that after modifing the updater with the f2 string it ran fine

but, it reboots, i don't get the progress bar and it boots back up and tells me there was a problem and the firmware was not updated.

 
Top