Author

Topic: XFX 6950 BIOS flash and voltages (Read 3813 times)

brand new
Activity: 0
Merit: 250
September 25, 2011, 01:43:26 PM
#16
Basically, it appears that if you flash the BIOS, the windows drivers will not work.  There are numerous reports that under linux it operates "fine" after a BIOS flash...
You are partly right. Change any critical parameters (clocks, voltages) of the 69xx cards, and the Windows Catalyst drivers will block the card from being used. This is easy to spot, because a bad flash (corruption, over-volted, too high overclock) would result in the card not working at all. Instead, a successful flash will boot, show the POST screen, show the Windows VGA screen (in my case, the 'Windows XP' startup screen), then as the Catalyst drivers load, the screen goes black. However, certain BIOS alterations are rejected by the Linux Catalyst drivers (at least 11.6, anyway), too.

I'm a Mac and Linux user, not a Windows type, but had to build a Windows system (I had XP lying around, so used that) in order to use the Radeon BIOS Editor (RBE), ATI WinFlash, TechPowerUP GPU-Z, and HP bootable USB flash drive tools. AFAIK, there is no substitute for RBE and the ATI flashing tools (ATI WinFlash and the DOS-only Atiflash) that works under Linux.

However I have enough Windows experience to do some digging - and checked out the errors thrown off by the Windows Catalyst drivers when an altered card was 'blocked'. I didn't need to go farther than the Event Log to find a load of messages relating to 'checksum' and 'card identification' and 'code signing'.

It's not *any* change that will trip the Windows Catalyst drivers though. It's mainly the 'Maximum Overdrive Limit', and the standard clocks. The problem with the 1GB 6950 cards is that most have a hard-coded 'Maximum Overdrive Limit' of 840 MHz core clock. Hence the weird behaviour when clocking above this number with AMDOverdriveCtrl in Linux - the clock is reported as higher, but the hashrate actually DROPS when mining. This hard Upper Limit needs to be removed. I'm sure Windows does it - but the problem is that the Linux Catalyst drivers (from 11.6 upwards) also DO respect the Overdrive Upper Limit - either that, or it's a BIOS thing and the card itself ignores requests to go faster.

Now you can use RBE to alter the Maximum Overdrive Limit, but on 69xx cards, it's *this* data that's signed by AMD, IMO. Either signed, or checksummed, or something that the drivers look up against each card model. Changing the manufacturer in RBE often causes all sorts of artefacts and is unwise (different RAM speeds, voltages, etc.). So using the 'second' RBE method to remove the 840 MHz Maximum Overdrive Limit (for core clock) cannot be done - the new values don't match the checksum and even the Linux driver won't allow the card to be used.

You have to use the 'first' RBE method - which takes a hashed and checksummed portion of the BIOS that contains the 'Maximum Overdrive Limit' and overwrites your *original* BIOS with the data. Of course, this is useless unless you have a card with a higher Maximum Overdrive Limit core clock from the factory. Fortunately there are such cards about - the Asus DirectCU II has a maximum core clock of 950. So I extracted *this* data using RBE, and pasted it into the OEM BIOSes on my Sapphire and XFX versions of the 6950. Along with a shader unlock, all cards flashed fine and also booted fine into Windows (test) - working perfectly in Linux at 900+ core clocks.

The trouble is getting the memory clock lower than 100 MHz less than the core clock - something I'm still working on Sad

Incidentally - any 6950 cards I've seen with the switch for dual-BIOS operation will flash correctly within Windows using RBE and ATI WinFlash. The cards without the switch (Sapphire and XFX rev.2) will flash perfectly but you have to boot to DOS and use ATIFLASH.EXE. You'll get the 'Cannot Erase ROM' error in Windows. The cards with no switch that work use the PM25LV010 flash controller.


TL;DR - forget changing clocks in RBE, the only important factor is the 'Maximum Overdrive Limit' (you can change clocks using your favourite overclocking tool later). Changing this the normal way will duff up the card. You need to get the checksummed / signed Max OD Limit from a card that has high OEM limits (e.g. Asus DirectCU II, with 950/1350 Max OC Limit) and patch it OVER the OEM BIOS. Then unlock the shaders (in RBE), write the new ROM to a file. Depending on card type, flash in Windows or boot to DOS and flash with ATIFLASH. The card will perform as standard... but you'll be able to overclock all the way to the new, higher maximum limit Smiley
donator
Activity: 2352
Merit: 1060
between a rock and a block!
September 15, 2011, 02:20:02 PM
#14
I had emailed PowerColor back and forth a few times regarding mem. underclocking on 68/9xx and they told me that AMD has put a restriction on how much the mem. clock can be lowered. "to preserve itegrity of operations blah blah blah"

I had another post with a bunch of info on flashing a 6870 x2 card.

Basically, it appears that if you flash the BIOS, the windows drivers will not work.  There are numerous reports that under linux it operates "fine" after a BIOS flash...
full member
Activity: 196
Merit: 100
September 15, 2011, 11:07:48 AM
#13
Yes.  It also puts further load on the voltage regulators.  GPU and memory require tight regulation.  The looser the supplied voltage the more work you create for the voltage regulators.

I figured, just ordered a replacement PSU Smiley

This machine was running a 5830 that was sitting around 75C - moving that card temporarily to another rig with a nice Corsair PSU dropped it down to 60C!  I'm excited to get these 6950s running cool finally.
full member
Activity: 196
Merit: 100
September 15, 2011, 09:27:02 AM
#12
I thought I read somewhere here on these forums that the newer (11.6+) drivers allowed full under/overclockability in linux!?!

Yes, the newer drivers do allow you to specify clock ranges outside of the 'current peak', however the 6XXX series still don't stick to the memory clock you specify.  Previously, aticonfig would tell you the values were 'out of range' if you specified clocks outside of the peaks.

I decided to bios-flash a slightly more conservative 885/310 and it's been running 7+ hours now without a hitch, so huzzah!

The PSU I'm using sucks pretty badly, and I'm only getting 11.19V on the 12V rail - would this increase temps on the card due to the higher amperage required?  I'm still at 82C right now with the memory underclocked.
legendary
Activity: 2408
Merit: 1009
Legen -wait for it- dary
September 15, 2011, 05:49:22 AM
#11
I thought I read somewhere here on these forums that the newer (11.6+) drivers allowed full under/overclockability in linux!?!

And, yes the "I am aware MSI does not support blah blah blah" EULA! I wrote a guide here for that! hehe

Well I'm glad you figured it out, and G/L mining!
full member
Activity: 196
Merit: 100
September 15, 2011, 12:20:34 AM
#10
Well it appears that 350mhz for the mem is just a bad value.

I was able to figure out the voltage control in Afterburner (it's an unlock option in the settings, silly me).

I've been running the card at 920 / 310, 1.125V, netting about 370MH/s in GUIminer for about half an hour without any issues.  I'm going to let this chug along overnight and probably most of the day tomorrow, and if it's still stable I'll be burning in these values.

At 350mhz for the memory, the card was very unhappy - artifacting and generally acting weird, and eventually locking entirely.

GPU speeds > 940mHz seem to lock the system instantly, but this could be partly due to the crappy no-name PSU I'm using in my test bench.

The temperature decrease isn't as extreme as I'd like to have seen, but this is probably due to the voltage bump.  GPU is showing 89C and VRMs are 93C - a bit warm but so is the room it's in, and there's no assisted airflow, just the card's fans at 90%.  This is basically the same temps I got with 885/760 @ stock voltage, but with a bump from 350MH/s to 370MH/s+

full member
Activity: 196
Merit: 100
September 14, 2011, 11:28:40 PM
#9
I have 6 of these.  I run them at lower mems with the following command in linux

aticonfig --adapter=all --od-setclocks=880,440

I run them at 880 because they do not seem to be stable at the higher core clocks.

Are you certain you're actually getting the 440 mem clock on XFX 6950 ZDFCs ?

aticonfig --odgc --adapter=all

should show you the current clocks and peak ranges.  I can set the memory clocks to whatever value I wish, but they run at 1300mhz regardless unless I also use AMDOverdrivectrl, at which point I can set them 125mhz less than the GPU clock.

If you are setting this successfully, and it's sticking to that clock speed when you fire up your miner, can you tell us more about your setup?  Specifically, which version of the catalyst driver you're using and whether or not you have to run AMDOverdrivectrl
legendary
Activity: 1876
Merit: 1000
September 14, 2011, 11:07:12 PM
#8


Since there's no way to really reduce the memory clocks in Linux,




I have 6 of these.  I run them at lower mems with the following command in linux

aticonfig --adapter=all --od-setclocks=880,440

I run them at 880 because they do not seem to be stable at the higher core clocks.
full member
Activity: 196
Merit: 100
September 14, 2011, 08:49:39 PM
#7
The 1.175v is the stock voltage for 6970's! If your VRMs are exposed (not cooled by the HSF), they probably got too hot. You'd need some little ramsinks to help cool them.



Well that'd explain it.  This is what I get for reading forum posts Wink

I've got win7 running, any recommendations for utilities to change the voltages?  Afterburner doesn't seem to be able to do much on this card..
legendary
Activity: 2408
Merit: 1009
Legen -wait for it- dary
September 14, 2011, 08:18:17 PM
#6
The 1.175v is the stock voltage for 6970's! If your VRMs are exposed (not cooled by the HSF), they probably got too hot. You'd need some little ramsinks to help cool them.
full member
Activity: 196
Merit: 100
September 14, 2011, 07:39:13 PM
#5
Whelp at 830/350 1.175V it would boot fine and mine for about a minute before throwing the 'verify hardware!' error in poclbm - looks like it's not too happy there.

Win7 here I come Sad
full member
Activity: 196
Merit: 100
September 14, 2011, 03:36:57 PM
#4
I'm sorry I mean 6950 (6850 is typo). 

I found it by trial and error.  It likely will handle a smaller voltage step but 0.025 was good enough for my needs.

Thanks D&T.

It does appear the stock voltages for my XFX are 0.9, 1.0 and 1.1 for the three normal power states.

After some further research I've found that most of the other vendors are using 1.125 or 1.175 for the P3 state - it would seem that a 0.025 stepping is probably accurate. The MSI 6950s, which seem to be good OC'ers, use 1.175V so I'm going to try that voltage first.

I think that's well within tolerances for the GPU so it should be safe enough, and if it doesn't work out I'll get Windows installed and do some more testing as you've suggested.
full member
Activity: 196
Merit: 100
September 14, 2011, 02:25:45 PM
#3
Do you mean min step supported by card (i.e. 1.0VDC, 1.025VDC = 0.025VDC step)?

If so I am not sure the min but I know 6850 (at least the 2GB version) supports voltage changes in 0.025VDC steps.

Yeah, that's what I'm looking for.  How did you determine this for the 6850?
legendary
Activity: 2408
Merit: 1009
Legen -wait for it- dary
September 14, 2011, 12:02:20 PM
#2
Download Radeon Bios Editor! It will tell you exactly what the stock voltages are!

I believe 1.1v core, at least that is what my 2GB XFX HD695A-CNFC is at!
full member
Activity: 196
Merit: 100
September 14, 2011, 01:39:44 AM
#1
I'm finally getting around to flashing my 1GB XFX 6950 ZDFC's (4 of 'em) to reduce the memory clocks and hopefully the temperatures along with it. 
(http://www.newegg.com/Product/Product.aspx?Item=N82E16814150552 is the card I've got)

These cards are a bit of a PITA due to a hard-locked BIOS that requires jumping pins 3 & 8 on the BIOS chipset in order to flash, but it is possible to do.  I've tried a couple of cards and was able to flash, though I was unable to unlock extra shaders on either, however this isn't my primary concern now.

Since there's no way to really reduce the memory clocks in Linux, I'm resorting to the BIOS flash to set default clocks.  At the same time, I figure it may be worthwhile to bump the voltages slightly for more stable overclocks; the best I can currently get is 885 GPU / 760 MEM before things go hairy.

My questions are these:  Does anyone know what voltage steps the XFX 6950s use?  If not, is there a simple way to figure this out other than trial-and-error?  This would be a pretty painful process of flash/test/flash/test if not. I'm willing to drop Win7 on a spare drive if there are good utilities to use to find this info out, though I'd rather avoid it.

I'm assuming the clocks and voltage stepping will be identical across all the various XFX 1GB 6950 cards, so if anyone has experience with best clocks/voltages on any of the other variants I'd be glad to hear it.  

Jump to: