thats the problem with linux ... drivers and their configurations ... but once you get them right (which btw i still havent got everything in order) they they are free ... stable ... and again its free
i always use ubuntu and try to figure everything on them out
What I find works ok is this. If on Ubuntu 14.04 then if you have the latest Polaris gpus, then you need to be at least on kernel 4.4.0-38, then install amdgpu-pro for Ubuntu 14.04 If you have older gpus, then use fglrx drivers. Your kernel needs to be 3.19.something or lower in order to install the fglrx drivers correctly. I use fglrx-15.302 downloaded from from the AMD site. amdgpu-pro works with newer cards like 380 and 390, but I get slightly better hashrates when using the fglrx-drivers.
|
|
|
You work for one of those companies you mentioned or you are already running a mining pool and want to warn off any new competitors?.. Either way, it was quite a fun read.
|
|
|
Can someone direct me to a troubleshoot for AMDGPU-PRO on the 280x? I am running Ubuntu 16.04 LTS but after following the guide on http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Install.aspx I get a blinky desktop and have to tty1 my way out by removing AMDGPU-PRO. I can't seem to find a fix for this but I found similar issues online from people with nvidia cards. (That fix was available through an update) Thoughts? 280X is not supported by that driver atm. I have to use fglrx for my 280s. Thats why I had to reshuffle the cards on my rigs. Couldnt have those rx470s and 280xes in the same rig. BTW you should consider mining something else than ETH with 280X, since they suffer from the TLB syndrome now.. They are good at XMR still...
|
|
|
Use VBEeditor and change it yourself.
Lower the voltage until its no longer stable.
I have already tried that, however figured first I need to export current bios so I used GPU-Z. Windows 7 64bit Open GPU-Z and exporting bios: http://prntscr.com/cd0s1pBut when I try to open this bios in VBE I got this: http://prnt.sc/cd0r5nTried also PolarisBiosEditor: http://prntscr.com/cd0u2kThe file is somehow incompatible how to fix it? Or there is some other way for exporting? thx in advance for help Try using atiflash instead. You can download it from Techpowerup. Then run atiflash -s 0 vaporxorig.rom <- saves original ROM to that file, assuming your gpu is the first pcie device. The you should be able to open that file in vbe, mod it and save it to a different file. Assuming you saved the modded BIOS to vaporxmod.rom, you can flash the card thus: atiflash -p 0 vaporxmod.rom You may want have to add -f to the above command if it fails. Then reboot the computer and you are ready to test your card.
|
|
|
I have Sapphire R9 390 Nitro that does 29MH/s at 160W, temp 66deg. I also have a Sapphire RX470 Nitro that does 27MH/s at 160W, temp 73deg. Both have modded BIOSes and on a rig running Ubuntu 14.04 with that pained AMDGPU-Pro driver. So for me the 390 is better, it also runs much cooler than the RX470 with its totally inferior 2-fan cooler. But sadly, the 390 has become much pricier in the last month...
|
|
|
I remember I was able to undervolt core on my Sapphire 7970 Vapor-X to 981mV running 1000 MHz. It is a good undervolter, better than my Gigabyte, XFX, MSI 280Xes and on equal with the Asus CuII.
|
|
|
@wolf0 How can i set the offset in the bios ?
Hex editor. You can, but you need to offset the voltage, not use the DPM mV.
May I ask if that is true for all rx4.. cards? (reference as well as custom models) Actually I would prefer to overwrite dpm states with true values ... It's actually better to offset even on other GPUs - overwriting the DPM state's index into the voltage table is a heavy-handed way to do it, IMO - better to let the offset step down the voltage. Hi Wolf, It sounds like you have got this right.. I am trying as well... Could you pls shed some light on the undervolt detail? If I look in the source code of the Polaris editor there is a data structure definition there called unsafe struct ATOM_SCLK_ENTRY { public Byte ucVddInd; public UInt16 usVddcOffset; public UInt32 ulSclk; public UInt16 usEdcCurrent; public Byte ucReliabilityTemperature; public Byte ucCKSVOffsetandDisable; public UInt32 ulSclkOffset; // Polaris Only, remove for compatibility with Fiji }; So this is the table structure for the core clock values for each DPM state. So I wrote my own utility since undervolt editing is missing in the editor itself. I tried to assign -16 to usVddcOffset field in the DPM7 entry hoping to get a 100 mV undervolt, but it had no effect. I am also curious about the ucCKSVOffsetandDisable field. It is zero. Should be non-zero to "enable" undervolting to work? Finally! Someone willing to do some research! :3 It might have had no effect because it's defined as a uint32, but actually should be interpeted as a 32-bit SIGNED integer. Since you're the first one to actually work at the suggestion, I'll tell you this: ucCKSVOffsetandDisable is a bitmask. Bits 0 - 6 are a voltage offset, and 7 is enable/disable. Ok, So bits 0-6 is a 7-bit signed value? with range -64 -- +63 If not, then how would I get to a negative offset of say -100mV?
|
|
|
@wolf0 How can i set the offset in the bios ?
Hex editor. You can, but you need to offset the voltage, not use the DPM mV.
May I ask if that is true for all rx4.. cards? (reference as well as custom models) Actually I would prefer to overwrite dpm states with true values ... It's actually better to offset even on other GPUs - overwriting the DPM state's index into the voltage table is a heavy-handed way to do it, IMO - better to let the offset step down the voltage. Hi Wolf, It sounds like you have got this right.. I am trying as well... Could you pls shed some light on the undervolt detail? If I look in the source code of the Polaris editor there is a data structure definition there called unsafe struct ATOM_SCLK_ENTRY { public Byte ucVddInd; public UInt16 usVddcOffset; public UInt32 ulSclk; public UInt16 usEdcCurrent; public Byte ucReliabilityTemperature; public Byte ucCKSVOffsetandDisable; public UInt32 ulSclkOffset; // Polaris Only, remove for compatibility with Fiji }; So this is the table structure for the core clock values for each DPM state. So I wrote my own utility since undervolt editing is missing in the editor itself. I tried to assign -16 to usVddcOffset field in the DPM7 entry hoping to get a 100 mV undervolt, but it had no effect. I am also curious about the ucCKSVOffsetandDisable field. It is zero. Should be non-zero to "enable" undervolting to work?
|
|
|
Hello, is it possible make a custom rom with RX470 4GB an done for RX480 8GB ? thx
I made a custom rom for my Sapphire RX470 8Gb card. I used the Polaris Bios editor tool. It should work for any RX4.. card. I changed the memory timings for the 2000 MHz strap to equal that of the next lower strap - and voila the hash rate went from 23Mh/s to 25Mh/s just by that change alone. I also lowered the core frequency from 1260 to 1150 to save some power. I will look at lowering voltages next .. But the custom rom development is a pain here - Custom roms are done in Windows, then I have to reboot into Linux to run miner tests...
|
|
|
Hi Bobben 2,
thx for your detailed post. Everything is fine for our R9 390 cards in common, but we really expected some troubles in stability with only several cards out of 100+.
You've already edited bios for 380X, could you, pls., share it with us?
Thank you in advance.
Hi , I added links to modded BIOS files in the O.P. Cheers.
|
|
|
Hi greaterninja, What tool are you using to alter the core and mem freq for the card?
|
|
|
Hi Eliovp, So its a one byte signed value? I.e. F0 = -16 decimal. Then I have to muliply by 6.25 to get -100mV offset value and voila? If that is all then I've got it and thanks a lot!
-100 = F0 ---- 100 / 6.25 = 16, -16 in hex = F0 -150 = E8 -175 = E4 So yeah you're right  The offset you want, for example -50, devide 50 by 6.25, make your result negative, so -8, convert that to hex and you have your value  Again, if you're going to mod roms, be sure that the correct offset for core voltage and/or mem voltage is available. If not, it's possible (in some cases) to add that yourself. However, Due to adding those bytes:- - you need to correct table length for VoltageObjectInfo. - the pointer within VoltageObjectInfo to i2c programming data would need updating as well. - you also then need to remove the same amount of empty bytes to make UEFI/GOP at right offset location. - directory of data/command tables would need updating in ROM to correct offset pointers to the tables as they would have shifted. So in other words, it's not "that" easy :p Are you able to change the Core or the Memory in the GPU tweek software such as MSI afterburner after your fixed voltage mod?
Yup, that's not a problem at all  So I first need to find the location of the VoltageObjectInfo. To search for the start and length of the VoltageObjectInfo table I figure I need to locate the position of the following pattern: xx 00 03 01 01 03 where xx is the length in bytes of that table? (obviously omitting xx in the search pattern) And then to see if I have a voltage offset entry, look for pattern 8d 00 xx 00 (omitting xx which is the actual voltage offset value) within the VoltageObjectInfo table. Correct?
|
|
|
I will see what happens. Will get the dump as soon as possible. Whats the best program to use for dumping sapphire cards?
Use atiflash to get the original bios of the card. All AMD cards are the same in that respect. atiflash -s 0 youroriginalbios.rom or some name you choose. This will read the bios of the card in slot 0 into that file. Although it sounds like we have the same Sapphire card, I wont send you the roms for my card as the bioses might be on different revision levels; to be safe, a bios mod should be based of the card's original bios.
|
|
|
This is awesome guys. Just what i was looking for except the only issue is changing the hex. Im not much into code so this is a bit scary to me. I have 12 Sapphire r9 380x cards that i would love to lower the power usage on. I am currently getting around 21.5 mh with stock settings. I dont wanna be below 20mh and that 145w sounds to good to pass up. Would it be possible to get one of you guys to make this rom for me? I really hate to ask but I would rather someone that knows more than me make it.
I will pm you my email address. Then you can send me a copy of the original bios and I will reprogram it and send you some versions you can test. If you accept being a guinea pig.
|
|
|
Somebody suggested passing this into the kernel line
init=/bin/sh rw
that caused this error
Failed to execute /init (error -8 )
and another kernel panic.
I had a similar problem a while back with an ASUS Z97-A mobo where the content on the USB-stick would get corrupted. I managed to fix this by turning off USB 3.0 mode in BIOS, then I had to reinstall the OS to the USB stick.
|
|
|
Hey Bobben2! Thank you for your detailed explanation. What you wrote will definitely work! I do it a little bit different. I modify the rom in a hex editor and change the voltage entirely. In other words, i do not change the dpm tables, i just lower the entire voltage by -100mV (for example) so that the controller itself will automatically give the voltage that is needed. In this case, a specific clock won't give you issues as the controller will adjust voltage for what is needed. What you did, as said before, will definitely work, but is in a way a little more intensive, because the dpm values won't be set automatic, the controller will use what is set. In some cases this could go wrong, for example, the card will need a specific amount of voltage, but the dpm value associated to that clock won't be able to give enough.  Regarding power, in this case it will use less power in comparison from what i do  I'm glad you worked things out! As said before, i'm still working on it, my target is to achieve the same results as the Stilt did with his released hawaii roms from a few years ago. Will keep you posted in this thread as well! Greetings! Hi ldw-com Are you there? I am trying to locate the actual voltage table so I can offset the values as per your suggestion. The evv pointers are supposed to point into the actual voltage table (evv value XOR 0xFFFF I believe will give the offset into the powertable in the bios where the voltage value is stored. Or--?) I am doubting this logic for 2 reasons: byte offset whereas the actual voltage values need at least 16-bit storage. The actual values I find by using the above logic are "all over the place". Suggestions? Hey Bobben, ldw-com is me when i'm at work (just so you know) if you open your rom with atomicbiosreader you'll get a .txt output, just scroll down check under data tables for "VoltageObjectInfo", the offset is there on the left. Open your hex editor and go to that offset. If it's there, it'll be like so 8D 00 "YOUR VALUE HERE" 00 for memory voltage it'll be like so: 8E 00 "YOUR VALUE HERE" 00. To change that value to -100mV you'll need to add F0 where i typed "YOUR VALUE HERE" :p .. If you need extra explanation on how to calculate that, just ask :p In some cases those values do not exist and you'll need to add them yourself. In other cases it just isn't possible to edit memory voltage (like my 390 nitro's) <-- check my Nano thread "last post" Greetings! Hi Eliovp, So its a one byte signed value? I.e. F0 = -16 decimal. Then I have to muliply by 6.25 to get -100mV offset value and voila? If that is all then I've got it and thanks a lot!
|
|
|
Hey Bobben2! Thank you for your detailed explanation. What you wrote will definitely work! I do it a little bit different. I modify the rom in a hex editor and change the voltage entirely. In other words, i do not change the dpm tables, i just lower the entire voltage by -100mV (for example) so that the controller itself will automatically give the voltage that is needed. In this case, a specific clock won't give you issues as the controller will adjust voltage for what is needed. What you did, as said before, will definitely work, but is in a way a little more intensive, because the dpm values won't be set automatic, the controller will use what is set. In some cases this could go wrong, for example, the card will need a specific amount of voltage, but the dpm value associated to that clock won't be able to give enough.  Regarding power, in this case it will use less power in comparison from what i do  I'm glad you worked things out! As said before, i'm still working on it, my target is to achieve the same results as the Stilt did with his released hawaii roms from a few years ago. Will keep you posted in this thread as well! Greetings! Hi ldw-com Are you there? I am trying to locate the actual voltage table so I can offset the values as per your suggestion. The evv pointers are supposed to point into the actual voltage table (evv value XOR 0xFFFF I believe will give the offset into the powertable in the bios where the voltage value is stored. Or--?) I am doubting this logic for 2 reasons: byte offset whereas the actual voltage values need at least 16-bit storage. The actual values I find by using the above logic are "all over the place". Suggestions?
|
|
|
OP, thanks for sharing. You used 1000 1000 1050 1050 1100 1100 1100 1106
For frequency from 800 to 1040. For the lower frequency, are the voltage too high?
How do you change the memory voltage?
Hi Next BillG The first voltage value in the stock BIOS was 1000 mV. Therefore, I started with 1000. I've seen ASUS BIOS start at 900mV. I am not concerned about it. It is the DPM7 value that will matter to miners. Idk how to change the memry voltage. However, I am able to change the voltage of the mem controller. For my Sapphire card I changed it from 1050 to 1025 mV. How do you change the memory controller voltage? Are they the same as the memory voltage? How much power saving did you get? You can change the memcontroller voltage in HawaiiBiosReader. If you look in the PowerPlay tab. Table VDDCI states. The rightmost value is the controller voltage. If it is already at 1000 (mV), then I dont think it can go much lower. I dont think there is much to save lowering this value, but I might be wrong. Is that the same as aux voltage? I changed that with -100mV in the MSI afterburner. It save about 1W power. Yes, I believe that is the one. The mem controller will be sitting mostly idle when mining Eth. If you try mining DCR then its a different story.
|
|
|
|