Race to dump the 4870 ROM, Who's first?

Discussion in 'Mac Pro' started by MacVidCards, Mar 4, 2009.

  1. tobyg macrumors 6502a

    Aug 31, 2004
    We went through this with the 8800 GT flashing too...

    You can get the cable from ATI.


    I know it says for G5 and such, but this is the exact cable I ordered and it worked fine.
  2. v0n macrumors member

    Mar 1, 2009
    I can certainly see why the guy from ten thousand percent settled for 39-01-2060 and carving the middle pin. I can't find proper PCIe Molex 45559-0002 in Europe with lead on shorter than 65 days. Mouser have them, but they Fedex parts from US, so it costs £12 in delivery charges alone to get your two PCIe plugs and 12 tiny pins shipped to Europe. Farnell has pins, but they don't have PCIe plugs, they can ship them from US for additional £15.95. I'm literally scratching my head as to why is it so difficult to get simple proper PCIe connectors. It's not like they were invented yesterday.
  3. v0n macrumors member

    Mar 1, 2009
  4. MacVidCards thread starter Suspended

    Nov 17, 2008
    Hollywood, CA
    The PCIE end can be "recycled" from any Molex to 6 pin adapter.

    You need something that is round and just fits in the connector end to push the pins back out the wire end.

    Most new cards ship with these so you will have what you need.

    Mouser number is 45559-0002, as VON said.
  5. tobyg macrumors 6502a

    Aug 31, 2004
    Those bastards.

    Sorry, well at least US and Canada people can order from there.

  6. goin3d macrumors member

    Mar 10, 2009
    bahh i'm in the same boat. The sapphire 1g card finally arrived today and i only have 1 of those power cables. (forgot i needed 2!!). I was hoping to get it flashed tonight so i'll have to see if i can put something together.

    In the mean time....do you think the sapphire 512 rom that was posted is the best bet to try?
  7. jeanlain macrumors 65816

    Mar 14, 2009
    I think it depends of whether your card is "built by ATi". It that case, I think Atiflash will indicate as board name "Wekiva RV770" and you'd better try the apple ROM. But it's a 1Gig card, so flashing is risky with either rom. In my view, you should make a custom ROM (original BIOS+Mac EFI) as pipomolo42 did. The PC functionalities will not be affected, and you should have better success if the ROM is edited properly.
  8. goin3d macrumors member

    Mar 10, 2009
    I see what you mean. Well...since it looks like i need to order 1 more power cable maybe pipomolo42 will have some sort of tutorial available by the time it arrives :) Either way i'm really looking forward to trying to get the 1g card to work!
  9. MacVidCards thread starter Suspended

    Nov 17, 2008
    Hollywood, CA
    You will need to use Hexedit to change device id in the ROM...pretty easy...do a search for "02104094" and replace it with correct string for your card.

    (This is Endian flopped 1002 (ATI) 9440 (Dev id of 4870 512)

    I am assuming that 1 Gig cards have different dev id.

    For second power cable you could use the Molex to 6 pin for one of the temporarily.
  10. goin3d macrumors member

    Mar 10, 2009
    hmm...do you know where in a 2009 you'd plug the molex into? The super drive cables only have sata on them?
  11. Arkillion macrumors newbie

    Mar 30, 2004
    Denver, CO
    I've never seen a sata to pcie conversion, but there are sata to molex:


    You could do sata to molex to pcie. I don't know if it would actually work though.
  12. v0n macrumors member

    Mar 1, 2009
    It wouldn't work, he would need oddity - like sata socket/male to molex plug (RB-413):
    Then PCI-E molex Y splitter. And thread it through the back. I think second motherboard->6 pin PCIe will be just easier.
  13. thehimay macrumors member

    Mar 17, 2009
    Toronto, ON, CA
    It would appear the 512/1024MB cards bear the same device ID (http://forums.techpowerup.com/showthread.php?t=85883, also saw it mentioned on a couple other forums), so I would hope that makes it easier to flash the 1GB cards.

    I'm running with a early '08 octo-2.8 and looking to attempt to upgrade my 8800 by flashing one of these:

    Been watching this thread since it's inception...so I have some hope this will ultimately work. I would just assume it's an issue of properly accounting for the larger memory table.
  14. pipomolo42 macrumors member

    Aug 29, 2006
    So, here is how I do it:

    - get the Mac 4870 rom available in this thread (named 4870.ROM)
    - get the 128k vgabios of your PC card (named pc4870.rom)
    - get tyhe fixrom.py script that I attached here

    run the following commands in a shell (either MacOS X or Linux)
    dd if=4870.ROM of=efi.part bs=1 skip=63488 count=49152
    blocknum=`printf %d "'\`dd if=pc4870.rom bs=1 skip=2 count=1 2>/dev/null\`"`
    size=$(($blocknum * 512))
    dd if=efi.part of=pc4870.rom bs=$size seek=1 conv=notrunc
    python fixrom.py pc4870.rom pc4870.rom
    first one extracts the efi part of the Mac rom
    then get the number of 512 bytes blocks of the bios part of your pc rom
    then converts it to a size in bytes
    then injects the efi part right after the bios part
    then the script fixes last rom indicators and checksums

    You can then flash the pc4870.rom to your card, using FreeDOS for instance

    If you want to do manual modifications to either part of the rom, don't forget to run the fixrom.py script after.

    This should work with most (if not all) of the 4870 cards. If it doesn't work for you, just pm me a link to your pc vgabios.

    ALSO, MAKE SURE YOUR PC 4870 ROM FILE IS ACTUALLY NAMED "pc4870.rom" IF YOU GET AN ERROR MESSAGE LIKE "dd: bs must be between 1 and 2147483647"

    Attached Files:

  15. AGDenton macrumors newbie

    Feb 19, 2008

    Not sure if you already know about it, but Intel's EFI Developer Toolkit (EDK) contains an utility called EfiRom, which can be used to join BIOS/EFI images
    together. It can also be used to dump hybrid ROMs, like the 4870.ROM in this thread. Do you know how it relates to the procedure outlined above ?

    Here's this utility's output on 4870.rom, for instance :

    >efirom -d 4870.rom
    Image 1 -- Offset 0x0
      ROM header contents
        Signature              0xAA55
        PCIR offset            0x0260
        Signature               PCIR
        Vendor ID               0x1002
        Device ID               0x9440
        Length                  0x0018
        Revision                0x0000
        DeviceListOffset        0x00
        Class Code              0x030000
        Image size              0xF800
        Code revision:          0x0B11
        MaxRuntimeImageLength   0x00
        ConfigUtilityCodeHeaderOffset 0x5441
        DMTFCLPEntryPointOffset 0x2049
        Indicator               0x00
        Code type               0x00
    Image 2 -- Offset 0xF800
      ROM header contents
        Signature              0xAA55
        PCIR offset            0x001C
        Signature               PCIR
        Vendor ID               0x1002
        Device ID               0x9440
        Length                  0x0018
        Revision                0x0000
        DeviceListOffset        0x00
        Class Code              0x030000
        Image size              0xC000
        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       0x0160 (@0xF960)
    Its help gives out :

    Usage: EfiRom [options] [file name<s>] 
    Copyright (c) 2007, Intel Corporation. All rights reserved.
      -o FileName, --output FileName
                File will be created to store the ouput content.
      -e EfiFileName
                EFI PE32 image files.
      -ec EfiFileName
                EFI PE32 image files and will be compressed.
      -b BinFileName
                Legacy binary files.
      -l ClassCode
                Hex ClassCode in the PCI data structure header.
      -r Rev
                hex Revision in the PCI data structure header.
                not to automatically set the LAST bit in the last file.
      -f VendorId
                Hex PCI Vendor ID for the device OpROM.
      -i DeviceId
                Hex PCI Device ID for the device OpROM.
      -p, --pci23
                Default layout meets PCI 3.0 specifications, specifying this flag will for a PCI 2.3 layout.
      -d, --dump
                Dump the headers of an existing option ROM image.
      -v, --verbose
                Turn on verbose output with informational messages.
                Show program's version number and exit.
      -h, --help
                Show this help message and exit.
      -q, --quiet
                Disable all messages except FATAL ERRORS.
      --debug [#,0-9]
                Enable debug messages at level #.

    I'm attaching a build of efirom to this post.

    Best regards,


    Attached Files:

  16. pipomolo42 macrumors member

    Aug 29, 2006
    efirom's purpose is, as you pointed out, to pack a vgabios and a EFI PE32 into one single rom image.

    It would be useful for us if we had to edit the content of the EBC binary, which we don't, luckily.

    And efirom can only display headers info of an existing rom image, it cannot dump a rom image from a card, or extract binaries from a rom image. But the latter is quite easy to do using dd, actually.
  17. netkas macrumors 65816

    Oct 2, 2007
    pipomolo, it's not easy because pe image is compressed.

    althought it's easy to dump anything from efi memory, using efi shell :)

    here is what i believe to be radeon efi pe driver, use to create new firmwares - http://rapidshare.de/files/46178699/radeon_rv770.efi.html

    I'm using it this way

    ./efirom -o 4850_only_name_change.rom -b ./macpro/4850rom/RV770.bin -ec ./radeon_rv770_4850.efi -l 30000 -f 1002 -i 9442

    it ignores classcode for efi part for whatever reason :(

    and, since u have to cary about MCuC part, u need only to create efi part and integrate it using ur manual.

    ./efirom -o ohai_efi.rom -ec ./radeon_rv770.efi -l 30000 -f 1002 -i 9440

    why it can be usefull ? well, if there will be a fixed framebuffer driver for 4870/4850 and it will have other name than Motmot, we will need to edit some strings in efi driver.

    hm. it opens possibilities to create roms for 8800gt/gts512 9800gt/gtx with their native bioses.
  18. jeanlain macrumors 65816

    Mar 14, 2009
    About those bloody cables... :rolleyes:
    Will a PCI-E splitter work, if one already has a cable (I have one with the radeon X1900XT)?
    That is much cheaper than another apple-molex to PCI-E cable.
    Still, I would be reluctant to connect the two plugs of the 4870 to a single molex. Will it melt? Will I blow a fuse, run out of power during a game? :D :eek:
    I suppose there is a good reason for the two plugs on the 4870.

    EDIT: it turns out the 4870 does not consumes more power than the X1900XT, so this should be ok. Why the two power plugs on that card?

    Attached Files:

  19. Rankrotten macrumors 6502


    Sep 12, 2006
    I took two feeds off an optical bay molex plus a pcie feed for a 3870x2 and an X1900XT on a MacPro 1,1 and all seemed fine. Loaded up COD4, pressed mouse button to fire and the MacPro shut down. Red LEDs were indicating CPU A+B failures but this was linked to the PSU crapping out on the molex connector which was drawing more juice than it was designed for.

    Eventually got a pcie power splitter Y cable and ditched the X1900 for a 3870.

    Going to replace both with a flashed 4870 now. Might reduce my electricity bills also...
  20. v0n macrumors member

    Mar 1, 2009
    4870 draws considerably more power than X1900. The reason why you have two connectors on the card is because it is expected to draw more than 10 Amps on 12V rail. Unless there is some documentation to suggest dual molex cable in mac pros is on rail rated to 24Amps+ keep in mind they were originally only supposed to power two combo drives drawing 25W each.

    Later on today I will hook up my regular PC to wattmeter, first with PCI card, then with 4870 and tell you exactly how much power it draws under load.
  21. irishgrizzly macrumors 65816


    May 15, 2006
    I wonder what the total saving on getting a flashed card over an apple card is?

    What would the break down be? If you factor in extras needed plus the cost of your time?
  22. v0n macrumors member

    Mar 1, 2009
    At current UK prices you can buy PC version of 4870 around £140-150 mark, Apple Store price is £280, so it's almost two to one. Additionally, availability of cards from Apple varies between 4 and 6 weeks from day to day, whereas you can grab PC one from any shop with next day delivery.

    Another advantage, already hinted in this thread, is that you can actually edit the rom before merging with EFI and improve on clock speeds.
    Once we sort out quick availability of cables it's a no brainer. I'm waiting for delivery guys to knock on my door today and tomorrow and as soon as I have all the gubbins and gismos I'll try and post quick instructions how to crimp yourself a cable in a jiffy or two for under a tenner.
  23. macz1 macrumors 6502


    Oct 28, 2007
    The cost is perhaps one of the less important reasons for flashing a card. It's not only a matter of principles, but there are also a couple of people who enjoy playing around with electronic devices (including me) therefor this can be considered as a hobby. There are not much occasions to fiddle about the hardware in Apple computers, and this is one of the rare situations where the work can lead to something very useful...
  24. pipomolo42 macrumors member

    Aug 29, 2006
    Well, it's quite easy to do actually : the EFI SDK provides an implementation of the compression & decompression algorithms. I can post binaries for simple compression and decompression tools this evening.

    And by the way, I wouldn't trust something dumped from ram as there is some possibility that it was altered during execution.

    True. But until we actually know what to edit, the simple copy & paste of the compressed binary using dd is far enough.

Share This Page