Original Question
I have an old Power Macintosh G3 Minitower (266 Mhz) and I'm looking to install a GPU upgrade so the G3 can output higher resolution video at higher color depths. However, I don't know of any specs for what the max working graphics card specs (mainly VRAM) work for a beige G3. All I know is that the GPU would be installed in a PCI slot. Does anyone know of the maximum graphics card requirements for beige G3s? I could use those to search for graphics cards that would work (preferrably ATI since Apple used graphics cards from them back in the late 90s and early 2000s).Simple Answer
Radeon cards works in all PCI Macs but don't support Core Image. #2Quartz Extreme may be enabled manually. #6
- Rage 128
- Radeon 7000
- Radeon 7500
- Radeon 8500
- Radeon 9000 - #213
- Radeon 9000 Pro - HERCULES #7 #9 #26 #205 #206
- Radeon 9200 - most powerful video card an OldWorld Mac can use #4 #8 #228
Complicated Answer
Nvidia cards that support Core Image can work if their PCI ROM is modified for Old World Macs (see below). #2When a GPU that supports Core Image exists, Core Image will be enabled for all GPUs #482 .
Quartz Extreme is enabled by default. #6
- GeForce 5200
- GeForce 5500
- GeForce 6200 - PNY GeForce 6200 PCI, flashed and working fine in G4 towers. #32 #66 #68 #101 #223
- Modified ROM #15 for @flyproductions 's PNY : #386
- Modified ROM #16 for @DearthnVader 's PNY : #388
- Modified ROMs #17b for those two which should work in all versions of Apple Open Firmware (not suitable for OpenBIOS unless it implements
us
for microsecond delays): #415 - Modified ROM #18,19 for @domii's BFG 6200 bfgr62256ocp: #436 (may require nvstrap/clocks modification #446 ) -> #449 -> #450
- Modified ROM #20 for @DearthnVader 's EVGA 6200 512MB (512P1N402LR) (for all versions of Apple Open Firmware) #656
- GeForce 6600 - #228
- GeForce 7800 GT - #234
- Modified ROM #26 from Mac Edition, 64KB compressed and 128KB uncompressed versions (modified for all versions of Apple Open Firmware but only tested in Quad G5) : #28
- GeForce 7800 GTX
Benchmarks
While OpenMark-results are more or less resolution independent, those of OpenGL Extensions Viewer depend very much on the settings! So only same settings (resolution, color-depth etc.) can be compared to each other. Settings used are: Given resolution and color depth, Fullscreen, Standard-Framebuffer, anything else turned off. Also using the same version of the app is recommended, if results shall be compared. The respective versions of OpenGL Extensions Viewer for testing can be downloaded from post #718.- OpenGL Extensions Viewer 3.0 or 3.1.1 (OpenGL 1.1 scores)
- 166 fps (1680x1050x32) (OpenGL 2.1) - GeForce 6200 PCI in G4 Sawtooth #223
- 170 fps (1680x1050x32) (OpenGL 2.1) - GeForce 6200 AGP in G4 Sawtooth #223
- 172 fps (1680x1050x16) (OpenGL 2.1) - GeForce 6200 PCI in Beige G3 #410
- 240 fps (1920x1080x32) (OpenGL 1.5) - Radeon 9200 in G4 MDD #309
- 269 fps (1680x1050x32) (OpenGL 1.5) - Radeon 9000 Pro PCI in G4 Sawtooth #223
- 296 fps (1680x1050x32) (OpenGL 1.5) - Radeon 9000 Pro AGP in G4 Sawtooth #223
- 278 fps (1920x1080x32) (OpenGL 1.5) - Radeon 9000 Pro in G4 MDD #309
- 307 fps (1680x1050x16) (OpenGL 1.5) - Radeon 9000 Pro in Beige G3 #410
- 824 fps (1680x1050x32) (OpenGL 2.1) - GeForce 6600GT in G4 QuickSilver #687
- 849 fps (1680x1050x32) (OpenGL 2.1) - Radeon RX 6800 XT in G4 Sawtooth #223
- 1041 fps (1280x1024x32) (OpenGL 2.1) - Radeon 9800 Pro in G5 1.8 #612
- 1668 fps (1280x1024x32) (OpenGL 2.1) - GeForce 7800 GT in G5 1.8 #612
- 2399 fps (1680x1050x32) (OpenGL 2.1) - Gainward Bliss 7800GS 512MB in G4 QuickSilver #687
- 1331 fps (2560x1600x32) (OpenGL 2.1) - GeForce 7800 GTX 512MB in G5 Quad #731
- 4021 fps (1344x1008x32) (OpenGL 2.1) - GeForce 7800 GTX 512MB in G5 Quad #731
- OpenMark
- xbench 1.3 (OpenGL Graphics Test - Spinning Squares)
- 18.22 - 23.12 fps - GeForce 6200
- 11.36 - 11.36 fps - Radeon 9200
PCI Adapters
There exist adapters that may allow using PCIe/AGP/PCI-X/PCI cards in a different kind of slot. #228 #233 #237- PCI to AGP - Use an AGP card (e.g. Radeon 9800) that doesn't use AGP features in a PCI slot #38 #346
- AGP to PCI - Use a PCI card in an AGP slot.
- PCIe to AGP - Use an AGP card in a PCIe slot.
- PCIe to/from PCI - PLX PEX8111 or PLX PEX8112 or IDT Tsi381 has PCIe 2.5 GT/s x1, 32-bit 33 MHz. The IDT has better performance than the PEX8111.
- PCIe to PCI - Use a PCI card in a PCIe slot. ASMedia ASM1083 has PCIe 2.5 GT/s x1, 32-bit 33 MHz (forward only).
- PCI to PCIe - Use a PCIe card (e.g. GeForce 7800 GT or Quadro FX 4500) in a PCI slot. #133
- PCIe to/from PCI-X - PI7C9X130 or PLX PEX8114 has PCIe 2.5 GT/s x4, PCI-X 64-bit 133 MHz. #704
- PCI-X should also allow PCI
PCI Speeds
PCI- 32-bit 33 MHz = 133 MB/s - original PCI Power Macs (7500, 8500, 9500, 9600, etc)
- 32-bit 66 MHz = 267 MB/s - Power Mac G3 (Blue & White), Power Mac G4 (PCI Graphics)
- 64-bit 33 MHz = 267 MB/s - Power Mac G3 (Blue & White), Power Mac G4, Power Mac G5 (PCI)
- 64-bit 66 MHz = 533 MB/s
AGP
- 32-bit 66 MHz 1X = 267 MB/s
- 32-bit 66 MHz 2X = 533 MB/s - Power Mac G4 (AGP Graphics), G4 (Gigabit)
- 32-bit 66 MHz 4X = 1067 MB/s - Power Mac G4 (Digital Audio), G4 (Quick Silver), G4 (Quick Silver), G4 (MDD), G4 (FW 800)
- 32-bit 66 MHz 8X = 2133 MB/s
PCI-X
- 32-bit 100 MHz = 400 MB/s
- 32-bit 133 MHz = 533 MB/s
- 64-bit 100 MHz = 800 MB/s - Power Macintosh G5 (PCI-X)
- 64-bit 133 MHz = 1067 MB/s - Power Macintosh G5 (PCI-X)
PCI-X 2.0
- 32-bit 266 MHz = 1067 MB/s
- 32-bit 533 MHz = 2133 MB/s
- 64-bit 266 MHz = 2133 MB/s
- 64-bit 533 MHz = 4267 MB/s
PCIe
- 2.5 GT/s x1 = 250 MB/s - Power Mac G5 Dual or Quad Core
- 2.5 GT/s x2 = 500 MB/s
- 2.5 GT/s x4 = 1000 MB/s - Power Mac G5 Dual or Quad Core
- 2.5 GT/s x8 = 2000 MB/s - Power Mac G5 Dual or Quad Core
- 2.5 GT/s x16 = 4000 MB/s - Power Mac G5 Dual or Quad Core
- 5.0 GT/s x16 = 8000 MB/s
...
PCI ROM Modifications
Power Macs use Open Firmware in their Boot ROM. Old PCs use BIOS. Intel Macs and newer PCs use UEFI.A PCI card (this includes AGP and PCI-X and PCIe) contains a ROM that has one or more PCI Expansion ROM images. Each image has a type (BIOS, Open Firmware, EFI).
Any GPU that is going to work in a Power Mac requires a ROM that contains an Open Firmware image (also called FCode ROM).
Nvidia cards with 256 MB VRAM like the GeForce 6200 can be used, but they need modifications to their FCode ROMs to work with Old World Macs #386 . Example modified ROMs are linked above.
Old Worlds Macs are those with Open Firmware version 1.x or 2.x. New World Macs have Open Firmware 3 or 4. For Power Macs with Open Firmware 1.0.5, 256 MB doesn't work without the nvramrc patches that are usually added automatically by Mac OS 9 or Mac OS X or XPostFacto. This means the card could stop working after zapping the PRAM until you successfully boot into the Mac OS again.
...add links to XPostFacto nvramrc patches...
Nvidia cards with 512 MB VRAM only work with New World Macs that have Boot ROMs created September 23 2004 or later unless an nvramrc patch is used (with the modified FCode ROM in the case of Old World Macs). #460 #483
Is 512 MB VRAM useful? In some cases, yes #707 . Use OpenGL Driver Monitor to view the VRAM usage. #482
The nvramrc patch depends on the version of Open Firmware:
nvramrc Patches for PowerPC Macs to support GPUs up to 512MB
for Power Mac 7500, 8500, 9500, 8600, 9600, Power Tower Pro, ...
The patch requires all the other map-in and map-out fixes from the Mac OS 9 or Mac OS X default nvramrc.
The default nvramrc added support 256MB BAR (up from 128MB). It should include:
- the helper functions (or aliases)
- the
- the two patches for fcode 8cb
- the two patches for fcode 8c9
- the patch for fcode 8cd
- the patch for fcode 8cc
- the patch for fcode 8c6
(those names are from the XPostFacto nvramrc which may differ from the Mac OS 9 or Mac OS X version).
Don't forget to also change
The patch requires all the other map-in and map-out fixes from the Mac OS 9 or Mac OS X default nvramrc.
The default nvramrc added support 256MB BAR (up from 128MB). It should include:
- the helper functions (or aliases)
$R
and &
(so you can remove those from my patch here).- the
mmr
replacement (with mi
) for fcode 89B map-range
- the two patches for fcode 8cb
(map-in)
which uses mcm
and y
- the two patches for fcode 8c9
(allocate-addresses)
which uses maa
Note: maa
needs to have 1D
changed to 1E
to support 512MB BAR.- the patch for fcode 8cd
probe-alloc
- the patch for fcode 8cc
(map-out)
which uses z
.- the patch for fcode 8c6
(alloc-mem-addr)
. This patch is separate from my patch of the same fcode.(those names are from the XPostFacto nvramrc which may differ from the Mac OS 9 or Mac OS X version).
Code:
: $R BRpatch ;
: & get-token drop ;
: m5 { m } dup 1 1c << mmr 1 1c << + m 4+ ! 0 ;
8c6 & dup 58 + ' m5 4c + swap $R d0 + ' m5 10 + $R
maa
as noted above.for Beige G3
It reserves 2000 MB at the start instead of just 256 MB at a time so the first 5 lines for the patch for fcode 96e
The patch for fcode 971
It reserves 2000 MB at the start instead of just 256 MB at a time so the first 5 lines for the patch for fcode 96e
(alloc-mem-addr)
might not be required.The patch for fcode 971
(allocate-addresses)
allows 512MB BARs to be included in assigned-addresses
property.
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 944 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
96e & dup 3c + ' m5 44 + swap $R 9c + ' m5 c + $R
1e 971 & 1c + code!
for Power Mac 4400 and 7220 and some Motorola StarMax
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 940 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
96a & dup 3c + ' m5 44 + swap $R 9c + ' m5 c + $R
1e 96d & 1c + code!
for Power Mac 5500, 6500, and TAM
It includes a patch that changes the order of PCI slot probing. It probes the ATI GPU (device @12) last instead of first. This fixes a problem where Open Firmware would not probe devices behind a PCI bridge (e.g. the USB and FireWire and ATA controllers of a Sonnet Tempo Trio). The patch should work with any such PCI card (the patches from Sonnet only worked with specific Sonnet cards). See #232
It includes a patch that changes the order of PCI slot probing. It probes the ATI GPU (device @12) last instead of first. This fixes a problem where Open Firmware would not probe devices behind a PCI bridge (e.g. the USB and FireWire and ATA controllers of a Sonnet Tempo Trio). The patch should work with any such PCI card (the patches from Sonnet only worked with specific Sonnet cards). See #232
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 940 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
96a & dup 3c + ' m5 44 + swap $R 9c + ' m5 c + $R
1e 96d & 1c + code!
dev pci1
defer ?p
a3b & to ?p
: ps
0d 17 -1 ?p
0e 19 -1 ?p
0f 1c -1 ?p
11 16 -1 ?p
12 18 -1 ?p
;
' probe-slots dup
284 + ' ps blpatch
dup 288 + swap 2FC + $R
unselect-dev
for Power Express
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 970 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
99a & dup 3c + ' m5 44 + swap $R 9c + ' m5 c + $R
1e 99d & 1c + code!
for Beige G3
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 948 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
973 & dup 3c + ' m5 44 + swap $R a8 + ' m5 c + $R
1e 976 & 1c + code!
for Power Mac G3 (B&W)
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 8BA & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
8E3 & dup 3c + ' m5 44 + swap $R a8 + ' m5 c + $R
1e 8E6 & 1c + code!
for Power Mac G4 (AGP) Sawtooth, Power Mac G4 (Gigabit), Power Mac G4 (Digital Audio)
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 8e1 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
90a & dup 3c + ' m5 44 + swap $R a8 + ' m5 c + $R
1e 90d & 1c + code!
for Power Mac G4 (Mirrored Drive Doors)
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 1707 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
1732 & dup 3c + ' m5 44 + swap $R a8 + ' m5 c + $R
1e 1735 & 1c + code!
for Power Mac G4 (FW 800)
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 17df & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
180a & dup 3c + ' m5 44 + swap $R c8 + ' m5 c + $R
1e 180d & 1c + code!
for Power Mac G5 1.6 (PCI)
Code:
: $R BRpatch ;
: & get-token drop ;
defer mr 18e1 & to mr
: m5 { m } dup 1 1c << mr 1 1c << + m 4+ ! 0 ;
190c & dup 3c + ' m5 44 + swap $R c8 + ' m5 c + $R
1e 190f & 1c + code!
Has support for up to 512MB BAR built-in.
for Power Mac G5 Quad
Has support for up to 512MB BAR built-in.
Has support for up to 512MB BAR built-in.
Tested PCI cards
- 6200 512MB in G4 Sawtooth #605
- Quadro FX 4500 512MB in G3 (Blue & White) #651 (using PCI to PCIe adapter)
- EVGA 6200 512MB (512P1N402LR) in Beige G3 may have problems #686
Notes
- The default nvramrc stored by Mac OS 9 or Mac OS X may already have parts of the provided patches (such as
: $R BRpatch ;
). - Since Mac OS 9 or Mac OS X may overwrite the nvramrc, you may want to include the patch in the
Ofpt
resources that the nvramrc contents originate from. #465 #475 #477 - For some unknown reason,
(allocate-addresses)
for firmwares starting from September 2005 (such as for G5 Quad) loops through BARs by size in reverse order (starting from 512MB) when there's a 512MB BAR. I did not include that change in these patches.(allocate-addresses)
for older Macs always loops from small (16 bytes) to large (128MB originally for OF 1.0.5, then 256MB with the OF 1.0.5 Mac OS 9/Mac OS X nvramrc patch, then 256MB for OF 2.0 and later, now 512MB with this patch or for firmwares starting from September 2004. - Open Firmware 3 is used by Macs with G3 or G4. Open Firmware 4 is used by Macs with G5. Both Open Firmware versions continued to be developed in parallel until their last versions created around at least the end of September 2005 or beginning of October 2005. Open Firmware 3 has versions 4.x.x while Open Firmware 4 has versions 5.x.x. #627
Troubleshooting
- Test the patch without the 512MB GPU. The Power Mac should boot into Mac OS 9 or Mac OS X.
- Provide output from
dev / ls unselect-dev " devalias" evaluate " printenv" evaluate dump-device-tree words
. This will provide info about the hardware and some info about the Open Firmware environment.printenv
outputs nvramrc only in some versions of Open Firmware. If the words we want to patch are not in thewords
output, then theget-token
method of finding the words to patch will be used. - For a specific GPU device the output of
.properties
before and after the patch may be interesting. In particular, we want to see a BAR in thereg
andassigned-addresses
properties with size of20000000
or larger. - Provide a rom dump (4MB for Old World Macs and 1MB for New World Macs #88 #95 ). A rom dump gives access to fcode images which can be translated to Open Firmware Forth code for easier readability. It will include visible and invisible forth word definitions. A rom dump will also include nvramrc contents. See "Dumping the New World Rom.txt" in the attachment at #137 . Also see #682 .
Some Mac ROMs:- G4 Sawtooth #143
- PowerTower Pro 225, Tsunami based #426 #434 (bad rom dumps)
- G4 FW800 #510
- G4 MDD #528 #530
- Quad G5 #533
- Mac Mini G4 (PowerMac10,1) #580
- iBook G4 (PowerBook6,5) #580
- PowerBook G4 DLSD (PowerBook5,8) #580
- G5 1.6Ghz PCI (PowerMac7,2) #692
- Provide a Open Firmware dictionary dump. See #137 #506 #682 . The fcode images are compiled into the Open Firmware dictionary as PowerPC instructions. The patches modify the PowerPC instructions in the Open Firmware dictionary.
- Have a method of zapping the pram ready (how do you zap the pram of B&W G3 if the keyboard's not working? unplugging the power and battery for awhile should work).
List of Open Firmware versions
Code:
BAR Boot Boot Boot Sound
Mac OF version ATY,Fcode versions max FW USB GPT Arch Notes
==============================================================================================================================================================================================================
TNT Development A5c1 Open Firmware, 0.992j None 128 No No No
7500,9500,8600,9600,Power Tower Pro, etc. Open Firmware, 1.0.5 None 128 No No No 256MB requires Mac OS 9 or Mac OS X nvramrc patches (see PowerSurge.of of joevt/XPostFacto for documentation of patches)
Power Mac 5400,6400 Open Firmware, 2.0 None 256 No No No
Beige G3 Desktop Open Firmware, 2.0f1 1.49, 1.49 256 No No No
Beige G3 Minitower Open Firmware, 2.0f1 1.49, 1.53 256 No No No
PowerBook G3 Wallstreet Open Firmware, 2.0.1 1.54 256 No No No
PowerBook G3 Wallstreet PDQ Open Firmware, 2.0.1 1.54, 1.59 256 No No No
Power Mac 4400 and 7220, Motorola StarMax Open Firmware, 2.0.2 APL-1.0b33 256 No No No
Power Mac 6500,TAM Open Firmware, 2.0.3 APL-1.0b33 256 No No No
Power Express Open Firmware 2.0a9 None 256 No No No
Power Express Open Firmware 2.3 None 256 No No No
Beige G3 (v3) Open Firmware, 2.4 1.49, 1.53 256 No No No
Power Mac G3 (Blue & White) Yosemite OpenFirmware 3.1.1 None 256 No No No Apple PowerMac1,1 1.1f4 BootROM built on 04/09/99 at 13:57:32
Power Mac G4 (PCI Graphics) Yikes OpenFirmware 3 ? 256 ? ? No Apple PowerMac1,2
PowerBook G3 (FireWire) Pismo OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 ? ? No 0x0e+0x12 Apple PowerBook3,1 4.1.8f5 BootROM built on 03/21/01 at 11:49:53
iMac iMac G3 (Slot Loading) OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 Yes Yes No 0x0e+0x12 Apple PowerMac2,1 4.1.9f1 BootROM built on 09/14/01 at 13:18:04
Power Mac G4 Cube OpenFirmware 3 ? ? ? ? No ? Apple PowerMac5,1 3.2f1 BootROM built on 07/10/00 at 17:11:57
OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 Yes Yes No 0x0e+0x12 Apple PowerMac5,1 4.1.9f1 BootROM built on 09/14/01 at 13:18:04
Power Mac G4 (AGP Graphics) Sawtooth OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 Yes Yes No 0x0e+0x12 Apple PowerMac3,1 4.2.8f1 BootROM built on 10/11/01 at 14:12:47
Power Mac G4 (Gigabit Ethernet) OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 Yes Yes No Apple PowerMac3,3 4.2.8f1 BootROM built on 10/11/01 at 14:12:47
Power Mac G4 (Digital Audio) OpenFirmware 3 1.69, 1.69, 1.73, 1.77, 1.77 256 Yes Yes No Apple PowerMac3,4 4.2.8f1 BootROM built on 10/11/01 at 14:12:47
Power Mac G4 (Quicksilver) OpenFirmware 3 ? 256 ? ? No Apple PowerMac3,5 4.2.3f1 BootROM built on 08/01/01 at 11:14:42
OpenFirmware 3 ? 256 ? ? No Apple PowerMac3,5 4.2.5f1 BootROM built on 08/16/01 at 22:19:35
Power Mac G4 (Mirrored Drive Doors) OpenFirmware 3 1.73, 1.77, 1.83, 1.86, 1.86 256 Yes Yes No 0x0e+0x12 Apple PowerMac3,6 4.4.8f2 BootROM built on 09/30/02 at 10:24:31
Power Mac G4 (FW 800) OpenFirmware 3 None 256 Yes Yes No 0x0e+0x12 Apple PowerMac3,6 4.6.0f1 BootROM built on 02/20/03 at 13:52:27
iMac G4/1.0 17" (Flat Panel) OpenFirmware 3 Apple PowerMac6,1 4.6.8f4 BootROM built on 08/22/03 at 13:45:20
Power Mac G5 1.6 (PCI) OpenFirmware 4 None 256 Yes Yes No 0x0e+0x12 Apple PowerMac7,2 5.1.5f2 BootROM built on 09/21/04 at 11:58:53
Power Mac G5 1.8 (PCI-X) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,2
Power Mac G5 2.0 DP (PCI-X) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,2
Power Mac G5 1.8 DP (PCI-X) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,2
iBook G4 OpenFirmware 3 1.94 512 Yes Yes No 0x0e+0x12 Apple PowerBook6,5 4.8.7f1 BootROM built on 09/23/04 at 16:13:38
Power Mac G5 ? (one of the following 3) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,3 5.1.8f7 BootROM built on 10/26/04 at 16:30:32
Power Mac G5 1.8 DP (PCI) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,3
Power Mac G5 2.0 DP (PCI-X 2) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,3
Power Mac G5 2.5 DP (PCI-X) OpenFirmware 4 ? ? ? ? No Apple PowerMac7,3
PowerBook G4 15 inch Early 2005 A1106 OpenFirmware 3 ? ? ? ? No Apple PowerBook5,6 4.9.1f1 BootROM built on 01/21/05 at 10:51:16
Mac mini G4 OpenFirmware 3 1.95 512 Yes Yes No 0x0e+0x12 Apple PowerMac10,1 4.8.9f4 BootROM built on 03/23/05 at 14:22:23
Mac mini G4 1.5GHz Radeon 9200 OpenFirmware 3 1.95 512 Yes Yes Yes 0x0e+0x12 Apple PowerMac10,1 4.9.4f1 BootROM built on 07/12/05 at 16:57:27 ; last firmware to always allocate BARs by ascending size
PowerBook G4 DLSD OpenFirmware 3 1.95 512 Yes Yes Yes 0x0e+0x12 Apple PowerBook5,8 4.9.5f3 BootROM built on 09/22/05 at 16:17:32 ; allocates BARs by descending size when 512MB BAR exists
Power Mac G5 Quad OpenFirmware 4 None 512 Yes Yes Yes 0x0e+0x12|0x12 Apple PowerMac11,2 5.2.7f1 BootROM built on 09/30/05 at 15:31:03 ; allocates BARs by descending size when 512MB BAR exists
PowerBook ? OpenFirmware 3 ? ? ? ? ? Apple PowerBook5,9 4.9.6f0 BootROM built on 10/05/05 at 16:45:50
==============================================================================================================================================================================================================
- BARs are allocated by ascending size except where noted.
- Patches exist to support 512MB BARs on all Power Macs.
- sound-architecture is in the config-block (0x100 bytes at 0xfff03f00 in the ROM) at offset 0x0e in the 3 most significant bits. If that is 7 than the byte at 0x12 is added.
NVStraps
Every Nvidia card is different. You may need to modify the Nvidia soft straps in the Open Firmware image using the same info from a BIOS image. #243For 512MB VRAM, you may need to modify the Nvidia soft straps to make sure the BAR1 reports as 512MB. #578 #581
The soft straps has a checksum #586 . There are some bytes that are unknown #631 .
Here's a script for dumping soft straps and checksum from a ROM file #589 #594 #601 .
The ROM code creates an NVDA,BMP property which contains performance info. This may also need to be updated #32 . Check the ROM Maker thread. #430
Incorrect info in the straps or BMP may cause issues in some apps. #410 #446 #449 #451
Also check device-id, subvendor-id, and subsystem-id #654
More info:
http://themacelite.wikidot.com/nv-rom
Editing nvramrc in Open Firmware
Use thenvedit
command in Open Firmware. There are special keys for navigation #185 . Type Control-C when done. Type nvstore
to save changes. See below for more nvramrc notes.Disabling a PCI device
You may find it useful to disable the onboard graphics. This can be done by settingpci-probe-list
. #11 #15 #18 #20 #156 XPostFacto might reset pci-probe-list #22 Therefore, you may want to put the setenv command in the nvramrc #29 . XPostFacto may change the nvramrc, so you may want to put the setenv command in the OFpt resource of XPostFacto where the nvramrc originates. #24 #25 Or maybe you don't have to #26 . Or maybe you do #58 #61 #87 .The setting is renamed
pci-probe-mask
on New World Macs. #28 #137 #158There exists
pci-probe-history
in some versions of Open Firmware. Bits can be set to cause probe-all to skip or redo a device. #49OS Support
The ROM of a Power Mac PCI card has an Open Firmware image which contains code for outputting video to a display connected to the GPU while in the Open Firmware environment.Power Mac GPUs may include a NDRV in the Open Firmware image which contains code that is used by Mac OS 9 or Mac OS X for outputting video to a display connected to the GPU while in the OS environment. If it doesn't include an NDRV, then one from the OS may be used. The OS might not have an NDRV to use. #409 #455 #470 #472
Additional code is required in the OS for 3D acceleration, etc. You may need to run an Nvidia or Radeon installer for anything that is not included in the OS. #13
In a New World Mac, the Mac OS 8.6 TBXI Version 2.5.1 won't work with a GeForce FX 5200 or 6200 so I'd not be surprised if the even older Old World TBXI's also don't work so Mac OS 9 not booting may be a separate issue. #389 #194
New World Macs running Mac OS 9.2 should have no problem with the 6200 or 6600GT AGP (except there's no acceleration though). #391 #392 #411
Old World Macs have no boot picker, so holding the Option key just load defaults. #394
For 6200, I get CI support as long as I don't connect a display to an AGP CI supported card when I'm using the PCI card too. Seems to be a bug in OS X. #401
You may need to delete the kext cache #403 #407 .
In my brief testing with a G3 Blue & White a few years ago, you can boot 10.4.11 with a GeForce 6200 with a G3 CPU, but some 3D applications may fall over and die IIRC #408 .
One further quick note after "using" the Beige with the 6200 for a few days now:
- Dual displays works fine!
- If the Mac was turned off for some time, at the first attempt it allmost allways boots into a black screen. A second boot, either by holding the power button to hard shut down or rebooting via Screen Sharing when fully booted, usually brings it back to life. #425 #474
CPU Support
A G4 may be required for OpenGL with the GeForce 6200. #458Open Firmware Tools
- In Open Firmware
- Some newer versions of Open Firmware may have a
fcode-verbose?
option to help debugging Open Firmware code. The way to use it is not documented. #40 Instead, Trace for Open Firmware was created. It works in all versions of Apple's Open Firmware. This has evolved starting from #123 #331 #356 #361 - lspci for Open Firmware can list all PCI devices in Open Firmware for the currently selected PCI root. It extracts all PCI configuration space values and tests all the BARs. A bash script can interpret the results using lspci from pciutils. This has evolved starting from #50 #55 #64 #87 #97 #144 #273 #565
- Sawtooth with 6800 xt on AGP, 6200 on the second of the PCI slots, a SATA controller on the last one #150
- list-partitions - lists partitions of a hard disk in Open Firmware. #222 #225
- dump-fields - list fields of some structures in Open Firmware. #25
- Some newer versions of Open Firmware may have a
- In macOS #543
- detok - from OpenBIOS - modified for Mac Boot ROM or PCI expansion ROM dumping.
- toke - from OpenBIOS - modified for creating PCI Expansion ROMs from Open Firmware code. #129
- lzss - from Apple Open Source - modified for decompressing Open Firmware stuff from New World Macs. #147 #151
- DumpMacRom.sh dumps the Open Firmware parts of Mac ROMs (both Old World and New World).
- DumpPCIRom.sh converts PCI Expansion ROM to Open Firmware Forth code which can be converted to FCode using toke #129 . The script can also extract individual images and concatenate them into a single expansion ROM #643 #720 .
Open Firmware Notes
Using dingusppc for Open Firmware Development
dingusppc is a new emulator currently in development. I don't think it boots into Mac OS 9 or Mac OS X yet but it is useful for doing Apple Open Firmware testing. It works with Open Firmware 1.0.5, 2.0f1, and 2.4. I used it to develop some of the Open Firmware tools. #88 #117 #120 #124Connecting to Open Firmware
Connect to the Power Mac that will be running Open Firmware using serial or telnet #54 so you can paste commands from the other Mac or copy the output of Open Firmware commands.- Telnet only works with newer Power Macs (G4 and later) that have a telnet package. #60 #130 #131
The Terminal.app doesn't have useful text pacing options so you may need to copy commands one line at a time #574 . - Serial: Use a Mac printer cable #62 .
- The devalias is either ttya or scca #167 .
- The default baud rate is 38.4Kbps but you can set 57.6Kbps. A nvramrc patch can be used to get 115.2 Kbps or 230.4 Kbps #64 #70 #76 #90 #107 #110 #112 . The patch depends on the version of Open Firmware.
- Some Power Macs with a serial controller don't have a serial port. You may be able to install an adapter attached to an internal modem port. #615
- For modern Macs that you want to connect to the Power Mac that is running Open Firmware, you can use a USB to serial adapter. These will be limited to 115.2Kbps. #196
- Serial apps: #196
- cu - terminal command
- screen - terminal command
- Z-Term - for old macOS
- Serial.app - for modern macOS
Loading Files in Open Firmware
In New World Macs, you can load files in Open Firmware from HFS+ formatted hard disk partitions.In Old World Macs, this might be possible from FAT formatted floppy disks #59 #73 or from IDE CD-ROM drive with ISO9660 formatted CD #263 . floppy-emu might be convienent #272 .
The bootx file will load Open Firmware code for additional file systems #61 but I don't know how to get back into Open Firmware when that's loaded.
The
load
command can load an Open Firmware Forth script (begins with a comment which in Forth is a \
followed by a space) or it can load FCode. #71load hd:,\6200debug.rom
The file is loaded at
load-base
and has size load-size
If you load a PCI ROM file which begins with a PCI header, then the load command may report an error and it will unmap the memory region (doesn't happen with OF 1.0.5 #267 ). You may be able to remap it using
load_alloc
. Examine the start to see if it contains the PCI header.load-base 50 dump
The PCI Header starts with 55 AA. There's a PCIR signature at the start of the PCI Data Structure. The FCode starts with an F1 at offset 0x40 for the Nvidia ROMs we're testing.
Code:
00800000: 55 aa 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |U.@.............|
00800010: 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 |........ .......|
00800020: 50 43 49 52 de 10 92 00 00 00 20 00 00 00 00 03 |PCIR...... .....|
00800030: a8 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 |................|
00800040: f1 08 16 5b 00 01 4f 4c 12 2a 00 00 00 00 00 00 |...[..OL.*......|
Instead of using
load
, you may be able to use (load)
(which only works if (load)
is a visible word, such as in Open Firmware 2.4) #305 #326 :" ide0/@0:1,\TEST5.ROM" (load)
Executing Files in Open Firmware
Once the file is loaded (see above), it can be executed.If the code in the loaded file is to be applied to a specific device (such as for a PCI device), then before you execute it, you may need to do the following:
Select the device:
dev pci/@e
Override the default open word:
: open true ;
Fix some properties that the driver will expect (for example, the 7800GT Mac ROM requires subsystem-id to match the PCI config space value which is 0x52 - the driver will change this property to 0x10):
52 encode-int " subsystem-id" property
Open an instance and store the result in my-self #77 :
" pci/@e" open-dev to my-self
Optionally, set
fcode-debug?
so any named words will keep their names even if they are not external:setenv fcode-debug? true
If it's a Forth script, then this will execute it:
load-base load-size evaluate
If it's FCode, then this will execute it:
load-base 1 byte-load
If it's a PCI option ROM where the FCode image starts at offset 0x40 (as it does in the PowerMac Nvidia ROMs we're testing), then this will execute it:
load-base 40 + 1 byte-load
Another option would be to remove the first 0x40 bytes. #266
After executing the ROM, undo some stuff #270 :
Code:
unselect-dev \ This should be all that is needed
device-end \ but we do this to be sure
0 to my-self \ and we do this too, just to be sure
PCI ROM Flashing
After creating a ROM and testing it using file loading or emulator, you'll want to flash the ROM to the PCI card. A PCI card's ROM chip has a maximum size #141 #142 #165 . It might be 64K or 128K. A 128K ROM chip may allow both a BIOS and Open Firmware image. Some Nvidia ROM patchers require the first ROM image to be a BIOS image. See DumpPCIRom.sh above for a method to combine ROM images.- nvFlash 5.31 #149 #153 #210 #213 #398 #637
- nvFlash 5.218 #168
- nvFlash 5.165 #169
- other versions #641
Testing ROMs in Open Firmware
After doing the file loading method for testing ROMs, you will eventually want to test the ROM flashed to the PCI card. When Open Firmware starts, it initializes the Open Firmware dictionary and device-tree, executes the contents of nvramrc, thenprobe-all
, install-console
, banner
in that order. The order can be changed (see #80 ). probe-all
is when the ROM is executed. Any output emitted by the ROM is buffered and will not appear until install-console
happens. I don't know what the limit is for buffered output #175 so it would be best to not have it buffered - make the output happen as the ROM is being executed. Add the following to nvramrc:
Code:
install-console
probe-all
banner
install-console
in the nvramrc should be changed to (install-console)
#123 #129 #178Testing Display Output in Open Firmware
While using telnet or serial, you can open a display device in Open Firmware and draw to the display.For Open Firmware 2.x, draw color bars to screen without changing output #120 #191 :
Code:
screen open-dev drop
dev screen
10 0 do i i 28 * 0 28 d# 480 fill-rectangle loop
Last edited: