• 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.

G3 Blue and White custom startup sound ROM hack -success!!

YES, I have wondered about getting OS 9 booting on a newer MDD myself. One could simply flash it with firmware from an older MDD and "see what happens"! I have one of these MDDs myself but it's still too useful to experiment on.

From what I understand, these are the differences between them:

USB controller is USB 2.0 (though not implemented by Apple!! Runs only at 1.1)

Airport Extreme vs. normal AirPort

Bluetooth expansion port vs. no bluetooth

FireWire 800 vs FireWire 400 only

The logic boards appear nearly identical otherwise.

Also of note is that the Apple Hardware Test disc for the newer MDD boots the Mac using some conglomeration that involves an OS 9 System File and some open firmware script. If memory serves, the script is a hidden file on the disc. There is no OS X on this disc and it boots, so it's definitely something worth poking at. It's non-destructive if you play with it and keep re-burning a CD-RW.

 
Thanks for the sound bite. While I'm at work, I'm stuck on a winbox. I think I'll change the startup sound to this. Maybe it'll cheer me up in the morning to hear that soothing tone.

 
OpenFirmware seems pretty neat-o, though quirky. EFI is blech. It takes BIOS, which while crufty mostly works but needs updates, and then turns it into a monster; becoming a new OS layer entirely, providing drivers and other things which a HW init and bootstrapper should not do.

 
The extra patching to allow newer machines to use OS 9 is definitely interesting, but is not really something up my alley. I hope that someone else can step in to figure that kind of stuff out once I learn more about the firmware update code though! Just patching the startup sound is a lot easier than making code changes and shuffling drivers around... :-) Maybe just flashing the old firmware over the new firmware would work, though (especially after what Dennis Nedry said above...).

Thanks for the sound bite. While I'm at work, I'm stuck on a winbox. I think I'll change the startup sound to this. Maybe it'll cheer me up in the morning to hear that soothing tone.
Nice! Glad to be of assistance :-)

OpenFirmware seems pretty neat-o, though quirky. EFI is blech. It takes BIOS, which while crufty mostly works but needs updates, and then turns it into a monster; becoming a new OS layer entirely, providing drivers and other things which a HW init and bootstrapper should not do.
I know that Open Firmware has drivers as well, but they are pretty minimal. I haven't looked much into EFI but I'll take your word for it!

I messed around this evening with forcing the updater to update the firmware despite the firmware already being up to date. It appears the firmware updater has a "whitelist" of known firmware versions it is allowed to update. I found it in the data fork--looks like just a bunch of NULL-terminated strings in the form of "Apple PowerMac1,1 1.0b4 BootROM built on 11/06/98 at 09:04:50" -- that's a sample from the list. I modified the last entry in that list to match the string from the latest firmware: "Apple PowerMac1,1 1.1f4 BootROM built on 04/09/99 at 13:57:32". That seemed to make the updater get past the "your firmware is up to date" message, and it gave me instructions on how to install the update (clicking a shut down button, holding down the programmer's button while powering it back up, and waiting for a long tone). I vaguely remember doing this process a long, long time ago. A progress bar came up and the chip was flashed. I *believe* it flashed from the standard G3 Firmware file that was in the same folder--that is the file I have to modify.

When the G3 finally booted back up, I got an error saying the firmware update failed, do you want to try again, blah blah blah, which now came up on every reboot. After playing around some more, I believe the problem is that because I've patched the updater to believe the most current version of the firmware is updatable, it doesn't think the update succeeded. What happens is the updater program copies itself into the Startup Items folder. When it runs from the startup items folder, it has a slightly different behavior than if it's just launched normally--it knows someone tried to update the firmware, so it checks the status of it. To get around that problem, I put the original unpatched updater program in its place and rebooted one more time -- it finally told me the firmware is up to date and removed itself from the Startup Items folder. I'm guessing I can just get away with removing it from the Startup Items folder, but there's always a chance it does something funky after detecting a successful firmware update -- so maybe it's a good idea to put the original updater back in to let it do any necessary cleanup. Not sure.

So bottom line is the next thing to try is: encode an IMA 4:1 sound of the same length as the original chime, put it in place of the original chime, re-encode the firmware with the Ascii85 encoding, recalculate the Adler-32 checksums, stick everything in the appropriate place in the G3 Firmware file, and try it out. I don't have everything ready to go quite yet, but it doesn't seem like it's going to be that bad. I just hope I'm not missing out on another checksum inside the ROM code. We'll find out depending on whether or not I brick the G3 motherboard!

 
That's right techknight! Although I don't have an adapter for the TSOP to put in my Willem programmer, but oh well...can't be too bad to find.

HOWEVER, there's no need to worry about that now :D :D :D I have successfully changed the G3 blue and white's startup chime! It now starts with a Quadra 700 chime, taken directly from Dennis Nedry's latest decoding of the 16-bit version of the sound direct from the Quadra 700 ROM. WOOHOO!!!!

It's really as simple as the steps I said earlier. Now I just have to automate it instead of doing a bunch of crap manually -- right now I'm running it through a bunch of programs and then manually copying and pasting the new contents of the firmware update file to the existing G3 Firmware file using BBEdit Lite.

The first time I tried the update, nothing happened, but then I got the blinking question mark with folder icon, and shortly thereafter it booted back into OS 9--as I've now discovered, this is what happens if one of the checksums doesn't match. So whew...the updater doesn't destructively kill the machine if the checksum doesn't match. Once I fixed the checksum glitch, the update worked correctly and I now have a custom chime. The checksum glitch is too weird to explain in detail -- the short version is that I had the checksum calculated correctly, but because of the Ascii85 encoding and padding the end of the (new shorter) sound file with silence to make it the same length of the old sound, there were certain parts of RAM that needed to be explicitly reset back to zeros rather than just assuming it would already be zero (because the firmware update flashes a recovery partition that's about the same length as the firmware before actually flashing the firmware, but it reuses the same RAM while doing it).

BIG THANK YOU to mcdermd for getting those G3 logic boards to me quickly...it definitely sped up the project! YouTube video coming later...

 
QuickSilvers don't have an existing firmware update it appears, so it isn't so easy :(

Hopefully the existing G4 firmware update (for older G4 models) gives us a good foundation to experiment with. There is a risk of bricking the machine, though, so it might not be smart to try it without playing around with a spare motherboard (like I've been doing here).

 
Wait, what??

the Apple Hardware Test disc for the newer MDD boots the Mac using some conglomeration that involves an OS 9 System File and some open firmware script. If memory serves, the script is a hidden file on the disc. There is no OS X on this disc and it boots, so it's definitely something worth poking at.
How very interesting.

 
the Apple Hardware Test disc for the newer MDD boots the Mac using some conglomeration that involves an OS 9 System File and some open firmware script....
I wonder if this is so for Aluminum PowerBooks as well? I'll have to take a look!

Hmmm.....

c

 
OK...here's the video with the proof that it really happened! :-) I've never put a video of myself actually talking on YouTube until now, so that was kind of weird for me!

 
That is just too awesome to put into words!!
Thanks!!! Someone should remove "pipe dream" from the thread title now, haha

put the Q700 hidden chime in there. that would be awesome.
That's a great idea! I need to write some scripts to automate the whole process of creating the new firmware update file, and then I'll try that. Right now it's a mix between a Windows hex editor, some Linux utilities, a USB flash drive, BBEdit Lite, and Super ResEdit :)

 
. . . it's a mix between a Windows hex editor, some Linux utilities, a USB flash drive, BBEdit Lite, and Super ResEdit
:lol: Kinda like Windows 95: Hack Sauce, with Patch and Kluge on Spaghetti Code! ;)

Congrats once more, DQ! :approve:

 
Thanks jt! Haha, no kidding, it's a mess!

I've streamlined the whole process now though -- I made a utility in C++ that automatically does all the encoding/decoding/checksumming. You give it the G3 Firmware file from Apple's update, a raw 16-bit big-endian 44.1 kHz sound, and it does the rest. I ended up writing code for Adler-32, Ascii85, and Apple's IMA 4:1 audio compression. Whew! So now I just run that utility on a computer, copy the generated firmware file over to the G3, use BBEdit Lite to put the file's contents into the data fork of the old G3 Firmware file (it has a resource fork too and I think it probably needs to keep it), and run the firmware updater. Works fine. I just tested it with the Quadra 700 hidden secret chime and it works great!


I think my phone's microphone doesn't do a great job of recording the sound. There's a small chance my IMA 4:1 encoding isn't 100% correct, but I'm pretty sure it's fine...

I'm running into a problem where sometimes the G3 just shuts itself off randomly and sometimes it doesn't want to boot at all--no chime at all and the thing just sits there. I think it's heat-related because yesterday it didn't act up at all, and today the weather got a lot hotter and suddenly it was acting up. I added some thermal paste between the heatsink and CPU (there was already a pad on it though) and hopefully that'll help out, but it's making me nervous because I really don't want it to shut itself off in the middle of a firmware update. I'm opening the case and blowing a fan on the CPU during my firmware updates now as a precaution. Don't worry though -- it's not related to the firmware hacking. It's some kind of hardware issue.

 
Back
Top