Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

max_verem

macrumors newbie
Original poster
Nov 1, 2019
4
3
Kyiv
This is my success story about flashing generic consumer *ATI HD 2600 XT* board to make it works with MacPro 3,1

I did it against three boards:

* Sapphire HD 2600 PRO (DDR3)
* Sapphire HD 2600 (DDR2)
* Asus HD 2600XT

Apple/Mac version of *ATI HD 2600 XT* board and consumer version of board has different SPI ROMs. Consumer board equipped with 64k ROM (25P05 usually) but Mac/Apple version is equipped with 128k (PM25LV010) to store additional EFI rom. You need to install 128k ROM (i used MX25L1005 ic) onto board.

Desolder existing SPI ROM chip from board. Read it with SPI programmer. Upload original VBIOS to new MX25L1005 (for one board i used salvaged PM25LV010 from dead mac ati board). Solder it back. Put into PC and check if it works.

If it works, then use DOS boot (rufus can make DOS bootable USB) and dos version of ATIFLASH.EXE (you can find it at dosdude1's site https://dosdude1.com/files/gpuflashing/atiflash379.zip or link could be found at his videos on youtube) to read VBIOS of current card. Start dos and read VBIOS into file:

Code:
atiflash -s 0 origin.rom

Sometimes atiflash dump VBIOS sized file but sometimes it dumps whole ROM content. So i did a *cut* of resulting file.

Check that size against EfiRom.exe :

Code:
EfiRom.exe  -v -d origin.rom

It outputs:
Code:
EfiRom tool start.

Image 1 -- Offset 0x0
  ROM header contents
    Signature              0xAA55
    PCIR offset            0x01C0
Read PCI data structure from file M25P05.rom
    Signature               PCIR
    Vendor ID               0x1002
    Device ID               0x9588
    Length                  0x0018
    Revision                0x0000
    DeviceListOffset        0x00
    Class Code              0x030000
    Image size              0xF000
    Code revision:          0x0A3B
    MaxRuntimeImageLength   0x00
    ConfigUtilityCodeHeaderOffset 0x5441
    DMTFCLPEntryPointOffset 0x2049
    Indicator               0x80   (last image)
    Code type               0x00
EfiRom tool done with return code is 0x0.
As seen
Code:
Image size
is actualy 0xF000 (61440) bytes, so cut it:

Code:
dd if=origin.rom of=origin_cut.rom bs=1 count=61440

Now you need to update Sub Vendor ID to 0x106B ( 0x106B - Apple Computer ), run Radeon Bios Editor and modify:

vendor.png

and save modified VBIOS.

Next step is to compose new VBIOS image from original image you have and EFI code supplied with original Mac/Apple version of *ATI HD 2600 XT*. I had one and i dumped vbios. You can find it at https://www.techpowerup.com/forums/threads/mac-version-ati-radeon-hd-2600-vbios.331543 You can use EFI code from attachment or extract from VBIOS i uploaded at techpowerup:

Code:
UEFIRomExtract.exe "113-B14801-027 RV630 GDDR3_16Mx32 128bit 256MB.from_NLE.rom" ATI_Radeon_UGA_Driver_01.00.252.efi

Lets compose new ROM:

Code:
EfiRom.exe -f 0x1002 -i 0x9588 -v -o 2600xt.rom -l 0x030000 -b origin_0x106B.rom -l 0x030000 -ec ATI_Radeon_UGA_Driver_01.00.252.efi

Resulting file will have a size more then 64k. It will contains legacy rom and another rom part that store compressed EFI code:
Code:
EfiRom tool start.

Image 1 -- Offset 0x0
  ROM header contents
    Signature              0xAA55
    PCIR offset            0x01C0
Read PCI data structure from file 2600xt.rom
    Signature               PCIR
    Vendor ID               0x1002
    Device ID               0x9588
    Length                  0x0018
    Revision                0x0000
    DeviceListOffset        0x00
    Class Code              0x030000
    Image size              0xF000
    Code revision:          0x0A3B
    MaxRuntimeImageLength   0x00
    ConfigUtilityCodeHeaderOffset 0x5441
    DMTFCLPEntryPointOffset 0x2049
    Indicator               0x00
    Code type               0x00
Image 2 -- Offset 0xF000
  ROM header contents
    Signature              0xAA55
    PCIR offset            0x001C
Read PCI data structure from file 2600xt.rom
    Signature               PCIR
    Vendor ID               0x1002
    Device ID               0x9588
    Length                  0x001C
    Revision                0x0003
    DeviceListOffset        0x00
    Class Code              0x030000
    Image size              0x9C00
    Code revision:          0x0000
    MaxRuntimeImageLength   0x00
    ConfigUtilityCodeHeaderOffset 0x00
    DMTFCLPEntryPointOffset 0x00
    Indicator               0x80   (last image)
    Code type               0x03   (EFI image)
  EFI ROM header contents
    EFI Signature          0x0EF1
    Compression Type       0x0001 (compressed)
    Machine type           0x0EBC (EBC)
    Subsystem              0x000B (EFI boot service driver)
    EFI image offset       0x0038 (@0xF038)
EfiRom tool done with return code is 0x0.
Put new rom on DOS bottable USB with atiflash. Boot on PC and flash new IC:

Code:
atiflash -p 0 2600xt.rom

Tools you could need:

* EfiRom.exe - https://github.com/tianocore/edk2-BaseTools-win32/blob/master/EfiRom.exe
* UEFIRomExtract.exe - https://github.com/andyvand/UEFIRom...ract_Windows/Release/Win64/UEFIRomExtract.exe
* atiflash - https://dosdude1.com/files/gpuflashing/atiflash379.zip
* RBE_128.exe - https://www.techpowerup.com/download/techpowerup-radeon-bios-editor/

Before buying consumer *ATI HD 2600 XT* board of second-hand-market, ask seller to post GPU-Z screenshot and FurMark screenshot (at least five minutes of running). Otherwise returning post/delivering fee could be higher then a board cost.
 

Attachments

  • ATI_Radeon_UGA_Driver_01.00.252.efi.zip
    37.3 KB · Views: 32
  • Like
Reactions: tsialex
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.