sgminer-dev / sgminer

Scrypt GPU miner
GNU General Public License v3.0
629 stars 825 forks source link

Setting GPU voltage not possible on certain R9 cards #72

Open Explas opened 10 years ago

Explas commented 10 years ago

As I've found that SGminer cannot adjust voltage or read it correctly. For example, I can change my GPU voltage in TRIXX, MSI Afterburner, but SGminer doesn't see it, also if I provide to set vddc (--gpu-vddc 1.100) value on start it doesn't set it, maybe it can be fixed?

veox commented 10 years ago

Kalroth's reply here:

Sadly there is currently no way to set voltage for 290 through AMD drivers. It's like that for a few other R9 cards as well.

Only way is to use an external application like MSI AfterBurner or Sapphire TriXX, both use direct I2C communication to do it. And neither program is open source, so there's no telling how they do it.

veox commented 10 years ago

@Explas for reference, what card are you using? Manufacturer/model?

davixx commented 10 years ago

The tool radeonvolt below (not up to date) seems to handle in c one of the chip (vt1165) to set the voltage. This tool respect the i2c specs for this chip.

https://github.com/ius/radeonvolt

May sgminer can detect and control via i2c some knows chip, beggining by this one ?

OhGodAPet commented 10 years ago

"And neither program is open source, so there's no telling how they do it." Dude, it's called a disassembler and a debugger.

gdevenyi commented 10 years ago

Well @wolf9466 you're welcome to go ahead and do it then

OhGodAPet commented 10 years ago

@gdevenyi I would, but that is a LOT of work to do for free.

Explas commented 10 years ago

@wolf9466 but it would be usefull for yourself too :)

OhGodAPet commented 10 years ago

@Explas I use Linux mostly and flash my cards. Taking less than 5min per flash is a LOT less work than weeks spent reverse engineering Trixx or AB.

Explas commented 10 years ago

But how do you know what exact value to give to the card. For example: I set in Trixx voltage of 1.100v, but actually card is running at 0.998v during the load, so how can i be sure what voltage to set when flashing the card?

OhGodAPet commented 10 years ago

@Explas Testing. If it crashes, you set it too low :P

mrbrdo commented 10 years ago

@wolf9466 while it is true that you can flash the cards (I do it also), if a card dies at some point, it might be impossible to re-flash the original VBIOS (it happened to me once with the ASUS DCU II Top). This can sometimes lead problems with warranty.

Also, instead of disassembling, it might be easier to just look at the import table and identify the API calls that are used for communication, and then dll inject + code hook, and log the communication. It would be a lot less work.

OhGodAPet commented 10 years ago

@mrbrdo That is a good idea.