Author

Topic: Voltage lock on 7950/7970 cards: is it in the BIOS or part of the hardware? (Read 6015 times)

full member
Activity: 147
Merit: 100
I know this thread is a bit dated but hopefully someone can help.  I have a Sapphire 7950 Dual-X card.  It defaults to 1.250V.  I am running it at 1.100V using Trixx.  Other day shot up to 98 degrees because somehow the settings reset.  I know this card is not easy to adjust settings because it's a "7xxx and up" card, however working on hex changes.  I have updated the engine and memory to be what I have set in Trixx.  Problem is the Voltage.  This card defaults to 1.250V which is 0x4E2 or per the guidance here.  I can't find it when I search the hex values.  I can however find entries for 1.125 not necessarily volts, but when I enter the hex values with the zeros around it for 1.125 I get a hit.  Any idea why the 1.250V isn't showing in the hex values of the bios?

Thanks.

JR
sr. member
Activity: 854
Merit: 253
l0tt0.com
Would you please be so kind to explain what 01ff and 02ff mean, and what is the difference between the voltage settings in positions 000b020-000b0a0 and around 000bb50?

The stuff you're looking at around b020-b0a0 are the powerplay tables.  Normally the fields you're pointing out (01ff and 02ff) contain the numeric values for the voltage used for that powerplay state.  In the case of the 7000 series cards, these fields aren't actually used to control the voltage...

The voltage numbers you're seeing around bb50 are the labels used for each voltage depending on the quality of the ASIC.  Modifying the labels doesn't actually modify the voltage, however.  What swordfish did just forced the cards to use the lowest possible voltage state.  You could put 0.001 volts in those label fields and the cards would still run (which is obviously impossible).

This is very interesting!

Is there a good article or post on this entire topic that you would recommend for further reading?
hero member
Activity: 642
Merit: 500
Would you please be so kind to explain what 01ff and 02ff mean, and what is the difference between the voltage settings in positions 000b020-000b0a0 and around 000bb50?

The stuff you're looking at around b020-b0a0 are the powerplay tables.  Normally the fields you're pointing out (01ff and 02ff) contain the numeric values for the voltage used for that powerplay state.  In the case of the 7000 series cards, these fields aren't actually used to control the voltage...

The voltage numbers you're seeing around bb50 are the labels used for each voltage depending on the quality of the ASIC.  Modifying the labels doesn't actually modify the voltage, however.  What swordfish did just forced the cards to use the lowest possible voltage state.  You could put 0.001 volts in those label fields and the cards would still run (which is obviously impossible).
hero member
Activity: 721
Merit: 523
...actually, in your "2mod" file, what happened when you used that one?  0.950 volts would be lower than 0.969, so I don't know how it'd behave.

It seems to run at 0.950 that's the bios im running in both cards at the moment under xbunutu. The real test would be to put it in a windows machine and use PowerUp tuner to watch the voltage.

I leave today (its 5am here i fly out to Darwin for a week in 6 hours) (been out drinking for a friends birthday). So I wont have time to look at this till I get back.


If I remember correctly when I had it in my windows machine PowerUp Tuner reported ~0.965 ish (don't take this as the bible it was a week ago and im some what intoxicated right now)

I just put it down to powerUp tuner always reporting a little over what was set, even 1.000 reports as 1.020 ish in there...
sr. member
Activity: 854
Merit: 253
l0tt0.com
What you actually changed on this modification is a field called "ulMaxVoltageLevel" inside the boost state tables.  

Can you elaborate on the various fields in the state tables?

My understanding is that some of the interesting settings are found at positions 000b020-000b0a0,

Quote
000b020: 0148 e801 02ff 6b03 0200 0000 0000 50c3 
000b030: 0080 3801 2003 5c03 0100 0000 0000 3075
000b040: 0080 3801 2003 5c03 0100 0000 0000 409c
000b050: 0080 3801 2003 5c03 0000 0000 0000 3075
000b060: 0098 3a00 b603 6b03 0000 0000 0000 b4c3
000b070: 0048 e801 b603 6b03 0100 0000 0000 084c
000b080: 0148 e801 01ff 6b03 0200 0000 0000 3075 
000b090: 0098 3a00 2003 6b03 0000 0000 0000 0418
000b0a0: 0800 0000 7800 0000 0000 0000 0000 0000


while the voltage change was made around 000bb50:

Quote
000bb50: 0110 2a00 0005 0000 a404 0000 a404 8d00

Would you please be so kind to explain what 01ff and 02ff mean, and what is the difference between the voltage settings in positions 000b020-000b0a0 and around 000bb50?
hero member
Activity: 642
Merit: 500
Ahh.  Now it's making a bit more sense.

What you actually changed on this modification is a field called "ulMaxVoltageLevel" inside the boost state tables.  This doesn't directly control the input voltage, it just sets what the highest voltage state can be.  Doing what you did just forced the card to use the boost setting for the cards with high ASIC quality.  In other words, if you bought a 7000 series and it had "high ASIC quality" when read with GPU-Z, the voltage wouldn't change (since it's using the lowest state).  If you bought a 7000 series card with "low ASIC quality" when read with GPU-Z, this would force the card to the lowest state and make a decent change in voltage (as long as it stayed in boost).

In summary -- all three of those BIOS mods did the same thing.  They forced the card down to the lowest boost voltage (0.969 volts).  Nice find.  Just don't let the cards get too hot, or the voltage will actually go UP if they get too hot for boost.   Smiley

...actually, in your "2mod" file, what happened when you used that one?  0.950 volts would be lower than 0.969, so I don't know how it'd behave.
hero member
Activity: 721
Merit: 523
Power Color 7950 Bios Modified and Stock -  MODEL: AX7950 3GBD5-2DHV5E



Don't 7950 cards have that bios switch?

Not true for 7950?

not sure ill look at mine when i get home

Edit: not mentioned here HERE ill still check when I get home

I can confirm it has the dual bios switch near the Crossfire Connectors
hero member
Activity: 642
Merit: 500
The value you're editing in the BIOS has absolutely no effect on the core's voltage, I assure you.  It does on the mobile 7000 series chips, but the desktop boards use a 3rd party VRM to modify the voltage.  Unless there's a desktop board made now without that VRM, you're seeing an effect at the wall from lowering clock speeds or from the chip not being heated up all of the way yet, etc etc.  If you post the BIOS to that Powercolor card, I can tell you whether or not it has a Volterra VRM.  I've never seen a 7950/7970 that doesn't, and I own a lot of them.

I did this same modification to my BIOS when the 7970 first came out.  I was immediately fooled that it had worked because I saw the modified voltage in CGMiner and my power consumption dropped.  Once I let the cards/PSU heat back up though, it was sitting right where it was before.
hero member
Activity: 721
Merit: 523
Sorry to crash the excitement, but this doesn't actually change the card's voltage.

The watts changes at the wall for me. (measured with something like this)

I could change the voltage on my card under windows with power colors PowerUp Tuner and see the same effects as my hex edit.

There was nothing for Linux (amdoverdrivectrl didnt work the underlying ADL cant do it ) so I hex edited my bios and it works...

Got two 7950s doing ~585kh/s each the whole rig is pulling 460W at the wall (inefficient motherboard ~110W) voltage at 0.950 for each card.

Also temperatures are way down (60-70 degrees C instead of a solid 85 degrees C) .
hero member
Activity: 642
Merit: 500
Sorry to crash the excitement, but this doesn't actually change the card's voltage.  It'll change the memory clock just fine, but the voltages are not actually stored like this.  The label for the voltages are (what the cards report back to ADL when you query the voltage), but the voltages on the 7000 series cards are raw commands that get sent to the VRM.

In other words -- try this method.  Read it with a meter.  Change the voltage again.  You'll notice the same reading on your meter.  If you got a different reading on your meter, it's because something else changed (temperature, fan speed, clock speeds, etc etc).  The voltage that cgminer shows (from ADL) will change, but the true voltage didn't budge.
hero member
Activity: 721
Merit: 523
That is  a bit surprising. Would you be so kind to share your modded bios? (I would like to study it for the voltage issue.)

Sent
sr. member
Activity: 854
Merit: 253
l0tt0.com
Only one occurrence for voltage unless you are very unlucky it should have 00's either side (eg 00 XX XX 00), any other occurrence is a different number or different data.

That is  a bit surprising. Would you be so kind to share your modded bios? (I would like to study it for the voltage issue.)
hero member
Activity: 721
Merit: 523

Don't 7950 cards have that bios switch?

Not true for 7950?

not sure ill look at mine when i get home

Edit: not mentioned here HERE ill still check when I get home
hero member
Activity: 700
Merit: 500
Quote
YOU MAY END UP WITH A $300+ BRICK

Don't 7950 cards have that bios switch?

Ive also hexedited my 7970 cards (although I choose other values) but they have also a non-writable backup bios.

Not true for 7950?
hero member
Activity: 721
Merit: 523
THIS WILL VOID YOUR WARRENTY AND YOU MAY END UP WITH A $300+ BRICK

MAKE SURE YOU BACKUP YOUR ORIGINAL BIOS ROM FILE IN MULTIPLE PLACES (USB STICKS, ONLINE EMAIL)



This is very interesting. Can you elaborate on the hex editting?

When I look at the BIOS of cards, I find usually the same voltage appearing at four different places. Is this also your experience? Did you change all four occurrences, or...?

Only one occurrence for voltage unless you are very unlucky it should have 00's either side (eg 00 XX XX 00), any other occurrence is a different number or different data.

It is in reverse order eg:

human readable = ready to be hexed = HEX = Reversed HEX to be found/put in the card    my own version numbers

1.188 volts = 1188 =  04A4 = A4 04   STOCK (for me, go with what CGMiner says)

1.000 volts = 1000 =  03E8 = E8 03   v1

0.950 volts = 0950 =  03B6 = B6 03   v2

0.980 volts = 0980 =  03D4 = D4 03  v3

I haven't changed these in the bios I just use CGMiner
The engine clock and memory clocks are hard up against each other no 00 around it. (eg 54 69 01 48 E8 01  | 925 clock 1250 memory)  

900 MHz GPU clock = 90000 = 01 5F 90 = 90 5F 01

925 MHz GPU clock = 92500 = 01 69 54 = 54 69 01

1250 MHz  Memory clock = 125000 = 01 E8 48 = 48 E8 01

The only other trick is to either balance the FF's at the bottom of the ROM file to get the same check digit (I didn't bother) or use "atiflash -f -p 0 "  (the -f force flashes the bios to override the check digit requirement)

THIS WILL VOID YOUR WARRENTY AND YOU MAY END UP WITH A $300+ BRICK
hero member
Activity: 697
Merit: 500
Most cards that are locked these days are voltage locked in the hardware. 3rd party PCBs typically have the voltage locked by setting a VID with resistors. This cannot be reprogrammed via software, it requires a hardware modification.

Most reference PCBs are voltage unlocked and overclocking specific PCBs are also usually voltage unlocked. Budget cards tend to be voltage locked.
sr. member
Activity: 854
Merit: 253
l0tt0.com
I have hex edited the bios in a 7950 got the voltage down from 1.188 to 0.950

wasn't on a locked card just wanted to do under linux and amdoverdrivectrl did nothing to lower the voltage on the max profile.


more info


This is very interesting. Can you elaborate on the hex editting?

When I look at the BIOS of cards, I find usually the same voltage appearing at four different places. Is this also your experience? Did you change all four occurrences, or...?
hero member
Activity: 721
Merit: 523
I have hex edited the bios in a HD7950 got the voltage down from 1.188 to 0.950

wasn't on a locked card just wanted to do it under linux and amdoverdrivectrl did nothing to lower the voltage on the max profile.


more info
sr. member
Activity: 854
Merit: 253
l0tt0.com
I noticed that the voltage on a number 7950/7970 cards can be changed by modding the BIOS, which shows that the voltage is not set in stone (in the hardware).

Can someone explain the discussion about the ability to change voltages?
Jump to: