The software:
Firmware Updaters
There are Apple firmware updaters for these firmware versions:
3.2.4f1, 3.2.7f2, 4.1.7f4, 4.1.8f5, 4.1.9f1, 4.2.8f1, 4.2.9f1, 5.1.4f0, 5.1.5f2, 5.1.8f7
They can be found at:
https://forums.macrumors.com/threads/powerpc-mac-firmware-boot-rom-updates.2285855/
There may be other firmware updaters.
Each firmware updater can update multiple Mac models. The contents of the firmware update for each Mac model is the same for each firmware version except for the sys (config) section which describes the Mac model. It is unknown if Apple tested each firmware version for all the Mac models listed in each firmware updater. For example, although the 4.2.9f1 firmware updater lists the Pismo, it is unknown if that version is desirable for the Pismo or if it even works with the Pismo.
Firmware updaters > 5.x.x have a list of Open Firmware drivers per Mac model. They also have a list of drivers per Mac model that need to be executed by the firmware updater (mpu-i2c, SPU.1.1.x)
A Firmware updater's contents can be converted to and from a ROM except for the
tst (serial number, MAC address) and
nv (nvram) sections which must come from the Mac.
A Firmware updater can change any part of a New World ROM, including the compressed parts (Open Firmware and Open Firmware drivers).
Firmware Patchers
"NewerTech 7457/7447A/7448 Enabler 3.1b5" is a newer version of the "PowerLogix 7457/7447A Enabler 2.0f1.1"
This patcher can patch any of the uncompressed sections of the New World ROM.
There are 4 patches that the patch can apply:
- 7457 or 7457/7447A HID0
- PLL
- L3CR
- Thermal (in 31b5 only)
Other patch types can be added.
The patches are slightly different for each firmware version. The supported firmware versions are:
4.1.8b5, 4.1.9f1, 4.2.1b2, 4.2.1f2, 4.2.3f1, 4.2.4f1, 4.2.5f1, 4.2.8f1, 4.3.3f2, 4.4.6f2, 4.4.8f2, 4.5.7f1, 4.6.5f3
Versions of the patches for other firmware versions can be added.
To add the 750GX, I created a new version of the HID0 patch which checks for these PVR values:
Code:
000c, 800c : (G4 old family):7400,7410
0003, 0006, 0007 : (603 family):603,603e,603ev,603r
0008, 7000, 7002 : (G3 family):740,750,745,755,750CX,750CXe,750FX,750G
0035 : (POWER4???)
8000, 8001, 8002, 8003, 8004: (G4 new family):7450,7451,7441,7445,7455,7447,7457,7447A,7448
I also added support for firmware version 4.1.8f5 which some Pismo may have.
The patchers include an nvramrc script for Mac OS 9. It only changes the CPU(s) to "7445/7455, v2.1" in the device-tree:
Code:
" /cpus/@0" find-package if drop " /cpus/@0" find-device 80010201 encode-int " cpu-version" property then
" /cpus/@1" find-package if drop " /cpus/@1" find-device 80010201 encode-int " cpu-version" property then
device-end \ PLX-OS9-PATCH
The 31b5 patcher includes a nvramrc script for Mac OS X which is actually a Mac OS X kernel patch.
Mac OS X Kernel Patcher
The 31b5 firmware patcher includes an nvrarmrc script for Mac OS X. The nvramrc script patches the
quiesce word of the
client-services package. When
CallKernel in BootX (see BootX/bootx.tproj/sl.subproj/main.c) calls
quiesce to pass control to the xnu kernel (
/mach_kernel), it will patch the
processor_types table (see xnu/osfmk/ppc/start.s) so that the table entry that accepts the 7447A CPU will also accept the 7448 CPU.
This is the same nvramrc script that
@dosdude1 worked on and was discussed at:
https://forums.macrumors.com/threads/powermac-g4-fun-part-2.2246307/post-31365002
https://forums.macrumors.com/thread...g-a-pencil-to-overclock.1973903/post-30815165
https://forums.macrumors.com/thread...g-a-pencil-to-overclock.1973903/post-33295607
https://discord.com/channels/394224641654259712/948589192835911710/1262139336682635295
My nvramrc script for the 750GX changes the table entry that accepts the 750FX v2 CPU to also accept the 750GX CPU.
Any number of kernel and kext patches can be added. Patching the kernel this way means the kernel file can remain unmodified which is convenient for read-only media.