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

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
*** Do NOT attempt to do this on your MVC flashed RX580 regardless if that's the Sapphire PULSE RX580 8GB or not ***

*** This mod CANNOT make any RX580 shows boot screen ***

Forum member Teddy managed to get a Sapphire PULSE RX580 8GB card. But the part number is changed already, so, can't identify itself correctly in MacOS (technically speaking, we can't really see the part number in MacOS, but if it's "right", High Sierra should able to recognise this card. Therefore, the R9 XXX in "about this Mac" can be used as an indication that the part number is "wrong"). He showed me a post about how to "fix" it, and that guide suggest users to use the Polaris BIOS Editor to open an edited ROM, then save it again. To me, this looks like the process to fix the checksum. I never own this card, and never play around with the Polaris BIOS Editor. But Teddy showed me this warning message from the Polaris BIOS Editor.
写真 2018-01-20 午前2 36 47.JPG

Despite the PULSE ROM size is just 256k, it seems the Polaris BIOS Editor may still base on the 512k size assumption to apply the checksum fix. Which may eventually apply the fix on an important byte and causing error. More than one users reported that, the card "fixed" in this way will only shows back screen once driver is loaded (in Windows), or all the way black screen (in MacOS).

So, I worked with him to correctly fix the card. The following records what we did. I use macOS calculator and Hexminer (Mac apps) to assist him because I work with him via the internet, and I am in MacOS. In fact, the whole process can be done within Windows. No need to boot back to MacOS until everything is done. All you need is

1) ATIWinFlash.exe
2) Any Hex calculator
3) Any Hex Editor

I am quite sure the whole process can also be done in DOS or Linux, but I don't know how to do it. So, the following procedures are all base on Windows. You can do that in a PC, or Bootcamp Windows on the Mac Pro (and NO, this cannot be done within Parallel Windows, or any virtual machine).

He sent me the original dumped ROM (by using ATIWinFlash in Windows. GPU-Z can also be used to dump the ROM), I open it (with HexMiner, but any hex editor can do the job), and obviously the part number is not the one that same as the Apple developer kit. (N.B. Before you do anything to the ROM image, backup your original dumped ROM at least twice, and only edit the copy of copy, NEVER edit the original ROM image backup. We should ALWAYS keep a MASTER BACKUP.)
Screen Shot 2018-01-20 at 03.56.04.jpg

So, we apply the "part number fix", change it to 113-4E353BU-O4E (N.B. Make sure you UPDATE / REPLACE the required byte, NOT add / insert some new bytes) (113-4E3531U-O4V should also work, but we never test it)
Screen Shot 2018-01-20 at 03.59.05.jpg

The work is fairly easy, only 5 bytes need to be changed in this case.
Screen Shot 2018-01-20 at 04.00.32.jpg

However, after this "part number fix", the checksum of ROM may be wrong (and 99.99% of time, it is wrong). So, we need to fix that as well. Since we know the Polaris BIOS Editor will cause issue, we use a more complicated but safer way to manually fix it.

First, we need a hex calculator to workout the checksum difference. This is easy, macOS already included a calculator, and can be switch to hex mode. In this case, the 5 bytes changed as follow (all numbers are in Hexadecimal).
31 -> 34
38 -> 35
37 -> 33
30 -> 42
42 -> 45

If we put all the new numbers in the Hex calculator, 34+35+33+42+45 = 123
Screen Shot 2018-01-20 at 04.11.33.jpg

And then minus all the old numbers, 123 - 31 - 38 - 37 - 30 - 42 = 11
Screen Shot 2018-01-20 at 04.11.47.jpg

That means, we need to find a useless byte and make it 11 smaller than the original number. A very standard way to do that is to find the very large piece of FF, which located at the end of the ROM, and change one of them from FF to EE (FF - 11 = EE from the Hex calculator). An example is like this.
Screen Shot 2018-01-20 at 04.15.46.jpg

I am not familiar with the ROM, and simply avoid to change the very last few bytes, just in case it's used to define the end of the ROM. However, this is just an example. We did NOT correct the checksum in this "standard" way. And this ROM is never tested at the end. (update: leVel tested this method on his Nitro+, and doesn’t work. So please avoid this method until further update)

We choose another way to fix the checksum. Since the overall difference is just 11, it's very easy to mod some other useless info to match the requirement. In Hex, 11 means 9+8, coincidentally, there is a 9 and a 8 in the ROM which is very obvious not belongs to any card's setting.
Screen Shot 2018-01-20 at 04.21.01.jpg

So, we pick this number, changed both the 9 and 8 to 0. (the relative bytes change from 39 and 38 to 30, overall difference is -11).
Screen Shot 2018-01-20 at 04.26.26.jpg

So, up to this stage, all the "preparation" is done. We can now save this edited ROM image to another new ROM file (NOT to overwrite the original one).

Of course, in general, no one will apply checksum fix in this way. However, this looks extremely safe, because we believe this 1998 is completely a "for info" item in that ROM image. It should be safer than pick a random FF to apply the correction. So we go ahead, and use ATIWinFlash to flash the edited ROM back to the card (This process can take a minute or two. The computer may stop responding, the progress bar may stop moving, do NOT touch anything! Just wait and let it do the job). End result? A big success.
Screen Shot 2018-01-23 at 23.44.31.jpg


Thanks Teddy for providing his card, ROM, and time for me to test the "fix". And if anyone want to try this "part number fix" on the new Sapphire PULSE RX580 8GB card, please AVOID the Polaris BIOS Editor.

If there is ANY error during / after flash, do NOT restart, but flash your MASTER BACKUP ORIGINAL ROM image back in. Then dump it out again to double check if it's the same as the MASTER BACKUP (You may simply check the modded bytes by yourself, or use some software to compare them automatically). I didn't use the ATIWinFlash for a while already. I am not 100% sure, but from memory, if the checksum is wrong, it should refuse to flash the ROM onto the card. So, as long as the software take it, the ROM should be OK.

If you only edit the part number, some useless info, or that large piece of FF. Even you did something wrong, the card should still work, but just still shows R9 XXX in High Sierra. If this happened, I suggest you also flash the MASTER BACKUP ROM image back to the card. Then start everything from the beginning again.

Of course, please feel free to post any questions (or share your work) at here. I prefer to discuss at here rather than PM. Therefore, everyone can benefit from the discussion.
 
Last edited:

leVel

macrumors regular
Jul 24, 2008
119
169
Forum member Teddy managed to get a Sapphire PULSE RX580 8GB card. But the part number is changed already, so, can't identify itself correctly in MacOS. He showed me a post about how to "fix" it, and that guide suggest users to use the Polaris BIOS Editor to open an edited ROM, then save it again. To me, this looks like the process to fix the checksum. I never own this card, and never play around with the Polaris BIOS Editor. But Teddy shows me this warning message from the Polaris BIOS Editor.
-2018-01-20-午前2-36-47-jpg.747662

Despite the PULSE ROM size is just 256k, it seems the Polaris BIOS Editor may still base on the 512k size assumption to apply the checksum fix. Which may eventually apply the fix on an important byte and causing error. More than one users reported that, the card "fixed" in this way will only shows back screen once driver is loaded (in Windows), or all the way black screen (in MacOS).

So, I worked with him to correctly fix the card. He sent me the original dumped ROM, I open it, and obviously the part number is not the one that same as the Apple developer kit.
View attachment 747686
So, we apply the "part number fix", change it to 113-4E353BU-O4E
View attachment 747687
The work is fairly easy, only 5 bytes need to be changed.
View attachment 747689
However, after this "part number fix", the checksum of ROM may be wrong (any 99.99% of time, it is wrong). So, we need to fix that as well. So we use a hex calculator, which is already included in the MacOS.
View attachment 747690
In this case, the 5 bytes changed as follow.
31 -> 34
38 -> 35
37 -> 33
30 -> 42
42 -> 45

If we put all the new numbers in the Hex calculator, 34+35+33+42+45 = 123
View attachment 747694
And then minus all the old number, 123 - 31 - 38 - 37 - 30 - 42 = 11
View attachment 747695
That means, we need to find a useless byte and make it 11 smaller than the original number. A very standard way to do that is to find the very large piece of FF, which located at the end of the ROM, and change one of them from FF to EE (FF - 11 = EE from the Hex calculator). An example is like this.
View attachment 747696
I am not familiar with the ROM, and simply avoid to change the very last few bytes, just in case it's used to define the end of the ROM. However, this is just an example. We did NOT correct the checksum in this way. And this ROM is never tested at the end.

We choose another way to fix the checksum. Since the overall difference is just 11, it's very easy to mod some other useless info to match the requirement. In Hex, 11 means 9+8, coincidentally, there is a 9 and a 8 in the ROM which is very obvious not belongs to any card's setting. View attachment 747697
So, we pick this number, changed both the 9 and 8 to 0. (the relative bytes change from 39 and 38 to 30, overall difference is -11).
View attachment 747698
Of course, in general, no one will apply checksum fix in this way. However, this looks extremely safe, because we believe this 1998 is completely a "for info" item in a ROM image. It's actually safer than pick a random FF to apply the correction. So we go ahead and flash the ROM. End result? A big success.
screen-shot-2018-01-20-at-3-21-07-am-png.747677

screen-shot-2018-01-20-at-3-26-36-am-png.747678


Thanks Teddy for providing his card, ROM, and time for me to test the "fix". And if anyone want to try this "part number fix" on the new Sapphire PULSE RX580 8GB card, please AVOID the Polaris BIOS Editor.

Amazing work. Will try flashing my NITRO+ 8GB with this method over the weekend.
 
  • Like
Reactions: h9826790

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Amazing work. Will try flashing my NITRO+ 8GB with this method over the weekend.

It should be much easier to work with the Nitro+ because of its dual ROM design, much much less pressure on worrying about if the hex edit screw up the ROM.

If possible, can you try to fix the checksum by altering the FF which picked in the sample? (of course, only if you need to pick a byte to reduce it. If the checksum fix require you to increase a byte, you can't do that with a FF byte)

I just want to collect more evidence that byte change should not brick the single ROM PULSE 580. Therefore, make the checksum fix easier (or more standard) for other members. In your case, it can't brick the Nitro+, because you can always boot from the other ROM. And obvious this FF is not an important parameter (e.g. not a voltage setting that may cause permanent damage).
 
Last edited:

krakman

macrumors 6502
Dec 3, 2009
419
446
wow thats fantastic news, do you think the same could be done to RX Vega cards?
 

Teddy Leung

macrumors member
Jun 12, 2015
32
11
Hong Kong
wow thats fantastic news, do you think the same could be done to RX Vega cards?

I think yes ! But another problem is power input for graphic card.

PS : Vega 56 is my first choice before RX 580. I don’t know how to mod power supply for my cMP, so bought RX 580 finally. Compare my old card 7950 Mac edition, very nice in RX 580 now.
 

orph

macrumors 68000
Dec 12, 2005
1,884
393
UK
super nice, just wish they where not £430 on amazon at the mo :mad:
one day we will need a ATI sticky for GPU's to keep links alive to posts.
 
  • Like
Reactions: owbp

Fl0r!an

macrumors 6502a
Aug 14, 2007
909
530
wow thats fantastic news, do you think the same could be done to RX Vega cards?
Definitely not. This modification just makes macOS think that you're running the "eGPU Edition" RX 580 in your Mac, enabling some specific initialisations. It will not enable boot screens or anything like that and it will not work on any other GPU than RX 580.
 
  • Like
Reactions: h9826790

leVel

macrumors regular
Jul 24, 2008
119
169
It should be much easier to work with the Nitro+ because of its dual ROM design, much much less pressure on worrying about if the hex edit screw up the ROM.

If possible, can you try to fix the checksum by altering the FF which picked in the sample? (of course, only if you need to pick a byte to reduce it. If the checksum fix require you to increase a byte, you can't do that with a FF byte)

I just want to collect more evidence that byte change should not brick the single ROM PULSE 580. Therefore, make the checksum fix easier (or more standard) for other members. In your case, it can't brick the Nitro+, because you can always boot from the other ROM. And obvious this FF is not an important parameter (e.g. not a voltage setting that may cause permanent damage).


turns out i'm pretty terrible with the hex calculator and wasn't able to get a working rom using your methods. i've attached a link to my original bios for my GPU. if you edit it using both methods I would be more than happy to try them and report back..

https://www.dropbox.com/s/rubrmspe1874q1p/SAPPHIRE-RX580-NITRO-ORIGINAL-BIOS?dl=0
 

jhero

macrumors 6502
Jan 10, 2005
356
8
Not near an Apple Store
A fantastic tutorial h9826790! With my 580 Pulse I had a difference of 30 instead of 11.

And so I changed the same "1988" to "1008", and the "2010," to "2000 ". Flashed to the card and everything seems OK but is this an OK change as well?

Thanks!
 

Attachments

  • Untitled.png
    Untitled.png
    100.5 KB · Views: 1,217

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
A fantastic tutorial h9826790! With my 580 Pulse I had a difference of 30 instead of 11.

And so I changed the same "1988" to "1008", and the "2010," to "2000 ". Flashed to the card and everything seems OK but is this an OK change as well?

Thanks!

May I know what's your original part number? I need to know if your calculation is correct. Thanks!

Anyway, from your PM, I know your "30" actually means 1E (hex). So, if the calculated checksum difference is correct. I believe your mod is good.

If the checksum is wrong, I believe you can't flash it back to the ROM (via the normal way). Therefore, if you already done the flashing, the mod should be correct.

And also now your card is running, that a good sign everything work as expected. Anyway, did you check if your card is identify properly in "About This Mac"?
[doublepost=1516525455][/doublepost]
off topic but, what hex editor are you using?

I believe that I downloaded it from the AppStore, but now seems off the shelf already. I google it, and found that still available in other way.

https://en.freedownloadmanager.org/Mac-OS/HexMiner-FREE.html
[doublepost=1516526313][/doublepost]
turns out i'm pretty terrible with the hex calculator and wasn't able to get a working rom using your methods. i've attached a link to my original bios for my GPU. if you edit it using both methods I would be more than happy to try them and report back..

https://www.dropbox.com/s/rubrmspe1874q1p/SAPPHIRE-RX580-NITRO-ORIGINAL-BIOS?dl=0

I have checked it already, may I know what's your calculated checksum difference? And how you fix it?
 
Last edited:

jhero

macrumors 6502
Jan 10, 2005
356
8
Not near an Apple Store
May I know what's your original part number? I need to know if your calculation is correct. Thanks!

Anyway, from your PM, I know your "30" actually means 1E (hex). So, if the calculated checksum difference is correct. I believe your mod is good.

If the checksum is wrong, I believe you can't flash it back to the ROM (via the normal way). Therefore, if you already done the flashing, the mod should be correct.

And also now your card is running, that a good sign everything work as expected. Anyway, did you check if your card is identify properly in "About This Mac"?

Indeed the card lived after flashing and rebooting back into OS X. It is correctly being identified in About Mac as Radeon RX 580 8 GB.

The original part number is 113-1E3870U-O45 (close to your P/N).
 
Last edited:
  • Like
Reactions: h9826790

Squuiid

macrumors 68000
Oct 31, 2006
1,860
1,607
h9826790, thanks for this. VERY helpful. Given that this is more or less a wiki post, is there any chance you could add a bit more info on what utility to use to flash the card with and how to go about it?

Can you dump and flash in Mac OS or just Windows?

Is there a way of determining the original part number from Mac OS or do you need to head over to Windows to dump the ROM or use GPU-Z to find it?

Thanks.
 
Last edited:
  • Like
Reactions: Synchro3

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
h9826790, thanks for this. VERY helpful. Given that this is more or less a wiki post, is there any chance you could add a bit more info on what utility to use to flash the card with and how to go about it?

Can you dump and flash in Mac OS or just Windows?

Is there a way of determining the original part number from Mac OS or do you need to head over to Windows to dump the ROM or use GPU-Z to find it?

Thanks.

Thanks for the suggestion, will update the original post accordingly.
 

TheStork

macrumors 6502
Dec 28, 2008
294
190
It appears that several images are not showing up in the original post, as seen by the "[IMG']" tag.
 

leVel

macrumors regular
Jul 24, 2008
119
169
[doublepost=1516526313][/doublepost]

I have checked it already, may I know what's your calculated checksum difference? And how you fix it?

GPU: Sapphire RX 580 Nitro+ 8GB
Part Number (Original): 113-1E3660U-O51

Here is my work....

Original Bios:

9NBbV9t.jpg


Overwrite 113-1E3660U-O51 with new P/N 113-4E353BU-O4E

3gm1Vkr.jpg



Changed bits:

Dgz1jTh.png



31 31 33 2D 31 45 33 36 36 30 55 2D 4F 35 31 <-- Original
31 31 33 2D 34 45 33 35 33 42 55 2D 4F 34 45 <-- Updated

31 -> 34
36 -> 35
36 -> 33
30 -> 42
35 -> 34
31 -> 45

New numbers added: 34+35+33+42+34+45 = 157

Old numbers subtracted: 157-31-36-36-30-35-31 = 24

So, 24 bits have been added...

Now lets adjust the bios to remove 24 bits.... Using the hex calculator: FF-24=DB

So towards the end of the bios replace an FF bit with a DB bit.

Before:

1gS2z4Z.jpg



After:

6WYN0RW.jpg




Saving this updated bios to a new file and flashing it to my GPU with ATIWinFlash gives me errors....

I'd like to try the other method suggested, by changing the year... However I am not sure how to properly change "1988-2010" to remove 24 bits..

Any help?
 
Last edited:
  • Like
Reactions: Nguyen Duc Hieu

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
GPU: Sapphire RX 580 Nitro+ 8GB
Part Number (Original): 113-1E3660U-O51

Here is my work....

Original Bios:

9NBbV9t.jpg


Overwrite 113-1E3660U-O51 with new P/N 113-4E353BU-O4E

3gm1Vkr.jpg



Changed bits:

Dgz1jTh.png



31 31 33 2D 31 45 33 36 36 30 55 2D 4F 35 31 <-- Original
31 31 33 2D 34 45 33 35 33 42 55 2D 4F 34 45 <-- Updated

31 -> 34
36 -> 35
36 -> 33
30 -> 42
35 -> 34
31 -> 45

New numbers added: 34+35+33+42+34+45 = 157

Old numbers subtracted: 157-31-36-36-30-35-31 = 24

So, 24 bits have been added...

Now lets adjust the bios to remove 24 bits.... Using the hex calculator: FF-24=DB

So towards the end of the bios replace an FF bit with a DB bit.

Before:

1gS2z4Z.jpg



After:

6WYN0RW.jpg




Saving this updated bios to a new file and flashing it to my GPU with ATIWinFlash gives me errors....

I'd like to try the other method suggested, by changing the year... However I am not sure how to properly change "1988-2010" to remove 24 bits..

Any help?

I can't spot any error as well.

If you want to try the "year" method. jhero's fix actually change the "," after the 2010 as well. Therefore, for 24.

31 39 38 38 2D 32 30 31 30 2C (1998-2010,) can be changed to
31 30 30 31 2D 32 30 31 30 20 (1001-2010 )

This will also reduce the overall checksum by 24.
 

leVel

macrumors regular
Jul 24, 2008
119
169
I can't spot any error as well.

If you want to try the "year" method. jhero's fix actually change the "," after the 2010 as well. Therefore, for 24.

31 39 38 38 2D 32 30 31 30 2C (1998-2010,) can be changed to
31 30 30 31 2D 32 30 31 30 20 (1001-2010 )

This will also reduce the overall checksum by 24.


Thanks, will give this a shot later.

Would it be better to change the numbers in the timestamp towards the top instead of removing the ","?

lWuVIKa.jpg
 

MisterAndrew

macrumors 68030
Sep 15, 2015
2,878
2,363
Portland, Ore.
It's too bad they changed the part number on these cards. I wonder how all this will be addressed by Apple when eGPU support officially begins this spring. I'm really hoping they'll release some Mac edition cards.
 
  • Like
Reactions: itdk92

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,614
8,546
Hong Kong
Thanks, will give this a shot later.

Would it be better to change the numbers in the timestamp towards the top instead of removing the ","?

lWuVIKa.jpg

No sure, but since jhero already proved that "comma" (2C) can be change to "space" (20) safely. I will treat this is "known good method".

That time stamp also looks like can be change, but it's a "unknown method" at this moment. Of course, it will be great if you can test it.

Anyway, after you edit the ROM, just before you flash it, can you double check if your ROM image is still 262,144 bytes? I am still thinking why your 1st try won't work (except you may pick the wrong FF).
 

Synchro3

macrumors 68000
Jan 12, 2014
1,987
850
It's too bad they changed the part number on these cards. I wonder how all this will be addressed by Apple when eGPU support officially begins this spring. I'm really hoping they'll release some Mac edition cards.

It's only cosmetical. I have no problems with my 'new' Sapphire RX 580 8GB, even sleep works.

Update: Lack of HEVC decoding, recommended to flash the card to part number 113-4E353BU-O4E or 113-4E3531U-O4V, then macOS will assign Orinoco framebuffer to it natively, including HEVC decode capability.
 
Last edited:
  • Like
Reactions: owbp
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.