I've been working to decrease the wattage via core undervoltage on ethos for the 9 x MSI Gaming X 570 4G cards. Love these cards so, very good cooling under load (58c). Been doing research and testing for the last few weeks into how I can decrease the watt draw. I know I can switch to windows and get the desired effect, but call me stubborn mule, I just don't like windows xD.
Currently, the 9 cards are pulling about 1370w while dual mining. Averages out to about 152w a card gross, net it comes to about 133w a card (core 42w + 9 x 14w per riser = 168w) at powertune state 2.
Here's the avenues I've tried in my attempt to decreasing the watt draw:
1) Edit the mv in core states in PBE and set the voltage directly instead of using the pointers - This doesn't seem to work as the AMD driver seems to ignore directly set core mv.
2) Recompiling the kernal amd driver per
https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/amd-linux/918649-underclocking-undervolting-the-rx-470-with-amdgpu-pro-success - I really just dont like this method because it involves hard coding the voltage in a compiled format and being a web developer this kinda goes against "the code"
3) Using ohgodatool to change the voltage offset:
ohgodatool -i $CARD --core-state 2 --core-vddc-off -27
DPM state 2:
VDDC: 65283 (voltage table entry 2)
VDDC offset: -27
Core clock: 1125
It's a bit strange, i shut down the miner issue the command to change the VDDC offset, restart the miner and the rig then takes near 1800w after changing the offset by 1
4) Use ohgodatool to change the core state voltage table index:
ohgodatool -i $CARD --core-state 2 --core-vddc-idx 11
Voltage state 11:
VDD = 950
CACLow = 0
CACMid = 0
CACHigh = 0
DPM state 2:
VDDC: 65283 (voltage table entry 10)
VDDC offset: -26
Core clock: 1125
Same thing happens here as with the voltage offset change above, miner runs at 1800w
5) Use ohgodatool to table set the existing voltage state (2)
ohgodatool -i $CARD --volt-state 2 --vddc-table-set 950
Same thing happens here as with the voltage offset change above, miner runs at 1800w
6) Edit the VBIOS in a hex editor and add an offset or adjust an offset. I followed along with the tutorial provided by Gup Sterg here:
but I'm seems this bios doesn't have a settable voltage offset. Ran into issues here as the object seems to be very short and I'm having issues identifying the structure of the table and the IC. Here's the excerpt
0020: abea Len 0034 Rev 03:01 (VoltageObjectInfo/VRAM_GPIO_DetectionInfo)
34 00 03 01 01 07 0C 00 0E 00 00 00 00 00 00 00 04 00 24 00 00 04 00 00 02 80 10 00 00 00 00 00 20 03 00 00 10 00 52 03 02 00 00 00 84 03 02 00 10 00 B6 03
Can anyone point me to some next step resources that would help me make some progress on either decreasing core voltage using ohgodatool or via hex edit. Feel like I been spinning my wheels and could use to be pointed in the right direction. Thanks!
Comments
Now, about how you can get it to actually lower the voltage being fed to core... I recently did an educational (free) edit for someone to demonstrate the technique - you can see it in detail starting here: https://forum.ethereum.org/discussion/comment/82600/#Comment_82600
As for the specifics of yours? I'm not gonna parse that hex via eye, even though I technically could. Post the VBIOS itself for people to look! :P
msi_gamingx_570_stock.tar.gz | msi_gamingx_570_stock.zip
Imagine it took a helluva lot of time and brain cycles to code out wolfamdvolt and I don't see it out there, so imagine you're keepin in close to the vest.
Suppose if I'm looking at either going to windows or trying to recompile the drm driver w hard coded voltage and replace the existing .ko driver in ethos, that's what I may have to work toward before I have to bite the windows bullet
Sorry about that one - kernel mod might be your best go at it if you want to avoid the Windows hell.
When you worked at inserting a whole voltage object, did you do it completely "by paw" or did you start with something close or similar and mod it from that starting point?
If i attempted to co-opt a similar object table (if one even exists), is the likelihood high, medium or low in bricking the card when i make the inevitable mistake? I've had to recover a few cards from bad flashes and had success but in all cases they were at least recognized.
Even in failure, I'll learn a little something in the process, just don't want the lesson to be too painful!
I could perhaps try on some of my XFX ones - they don't have an init regulator section, but they have an NCP81022, which I shouldn't have any problem crafting a totally legit voltage object for of type init regulator...
If it starts to be more than just a small task, please let me know. Time is valuable and I'd like to give you something for yours considering you already have another way around it.
Early work tomorrow, so signing of for tonight. Thanks again
Soooo, been trying to spin up my own ubuntu build with the amdgpu pro drivers from amd:
Tried Ubuntu 16.04.3 LTS server, desktop, Lubuntu server, desktop with the 17.30 drivers and also older 16.30 drivers. Both with kernel 4.4 and 4.10 and each one upon boot after installing the drivers gives me errors when initiating powerplay.
Did plenty of research but all the reference seems to indicate it should work just fine with 16.04.3 out the box. Any help on versions (kernel and amd driver) that are known to work together?
identified the firmware was copied there by there latest version of the amd driver install. going to look to see if i can find even later firmware out there.
using a combination of some echos and ohgodatool a was able to setup a sysctrl script that sets the clocks and power tune on startup.
however, it seems that something is fucked up with the way the driver handles the vbios settings. I'm testing on two 470 armor 8g cards with basic strap modifications. it has a tdp and max power of about 85w. when i take readings from the killawatt by removing a card, it's showing 140w being used per card. does the amd driver ignore the tdp and max power completely???