Pages:
Author

Topic: Radeonvolt - HD5850 reference voltage tweaking and VRM temp. display for Linux (Read 27976 times)

Led
newbie
Activity: 28
Merit: 0
Yea, the original author who wrote this only put in support for the vt1165 voltage regulator, and the 6990s don't have that. My 5970s and 5870s have it. Basically, if you get "Unsupported i2c device (00)," then your card has a different VRM and won't work with this (unless there is documentation somewhere showing how to access those VRMs in a C program like the 1165, then we could add in support).

So, to clarify, if you run radeonvolt and you get NO output at all, the changes I made to enum_cards should track down that particular problem. If you get "unsupported i2c device," the changes I am making aren't going to help for now.

Gotcha. From what I have read 6990's use the VT1556 so we would need support for that. I'll do some digging...

Dig faster. I need support for r9 290s.
sr. member
Activity: 362
Merit: 250
full member
Activity: 133
Merit: 100
Yea, the original author who wrote this only put in support for the vt1165 voltage regulator, and the 6990s don't have that. My 5970s and 5870s have it. Basically, if you get "Unsupported i2c device (00)," then your card has a different VRM and won't work with this (unless there is documentation somewhere showing how to access those VRMs in a C program like the 1165, then we could add in support).

So, to clarify, if you run radeonvolt and you get NO output at all, the changes I made to enum_cards should track down that particular problem. If you get "unsupported i2c device," the changes I am making aren't going to help for now.

Gotcha. From what I have read 6990's use the VT1556 so we would need support for that. I'll do some digging...
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
Yea, the original author who wrote this only put in support for the vt1165 voltage regulator, and the 6990s don't have that. My 5970s and 5870s have it. Basically, if you get "Unsupported i2c device (00)," then your card has a different VRM and won't work with this (unless there is documentation somewhere showing how to access those VRMs in a C program like the 1165, then we could add in support).

So, to clarify, if you run radeonvolt and you get NO output at all, the changes I made to enum_cards should track down that particular problem. If you get "unsupported i2c device," the changes I am making aren't going to help for now.
full member
Activity: 133
Merit: 100
Here is the output from my dual 6990 rig:

Code:
TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) --> cls [0xc00]
IT8213 IDE Controller --> cls [0x101]
RTL8111/8168B PCI Express Gigabit Ethernet controller --> cls [0x200]
RTL8111/8168B PCI Express Gigabit Ethernet controller --> cls [0x200]
88SE9128 PCIe SATA 6 Gb/s RAID controller --> cls [0x106]
JMB362/JMB363 Serial ATA Controller --> cls [0x101]
JMB362/JMB363 Serial ATA Controller --> cls [0x106]
uPD720200 USB 3.0 Host Controller --> cls [0xc03]
Device aa80 --> cls [0x403]
Antilles [AMD Radeon HD 6990] --> cls [0x380] size 268435456 0 131072
Device aa80 --> cls [0x403]
Antilles [AMD Radeon HD 6990] --> cls [0x300] size 268435456 0 131072
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
Device aa80 --> cls [0x403]
Antilles [AMD Radeon HD 6990] --> cls [0x380] size 268435456 0 131072
Device aa80 --> cls [0x403]
Antilles [AMD Radeon HD 6990] --> cls [0x300] size 268435456 0 131072
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
5 Series/3400 Series Chipset 2 port SATA IDE Controller --> cls [0x101]
5 Series/3400 Series Chipset SMBus Controller --> cls [0xc05]
5 Series/3400 Series Chipset 4 port SATA IDE Controller --> cls [0x101]
5 Series Chipset LPC Interface Controller --> cls [0x601]
82801 PCI Bridge --> cls [0x604]
5 Series/3400 Series Chipset USB2 Enhanced Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset PCI Express Root Port 8 --> cls [0x604]
5 Series/3400 Series Chipset PCI Express Root Port 7 --> cls [0x604]
5 Series/3400 Series Chipset PCI Express Root Port 6 --> cls [0x604]
5 Series/3400 Series Chipset PCI Express Root Port 5 --> cls [0x604]
5 Series/3400 Series Chipset PCI Express Root Port 4 --> cls [0x604]
5 Series/3400 Series Chipset PCI Express Root Port 1 --> cls [0x604]
5 Series/3400 Series Chipset High Definition Audio --> cls [0x403]
5 Series/3400 Series Chipset USB2 Enhanced Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
5 Series/3400 Series Chipset USB Universal Host Controller --> cls [0xc03]
Core Processor QPI Routing and Protocol Registers --> cls [0x880]
Core Processor QPI Link --> cls [0x880]
Core Processor Miscellaneous Registers --> cls [0x880]
Core Processor System Control and Status Registers --> cls [0x880]
Core Processor Semaphore and Scratchpad Registers --> cls [0x880]
Core Processor System Management Registers --> cls [0x880]
Core Processor PCI Express Root Port 3 --> cls [0x604]
Core Processor PCI Express Root Port 1 --> cls [0x604]
Core Processor DMI --> cls [0x600]

Device [8]: Antilles [AMD Radeon HD 6990]
Unsupported i2c device (00)


Device [7]: Antilles [AMD Radeon HD 6990]
Unsupported i2c device (00)


Device [4]: Antilles [AMD Radeon HD 6990]
Unsupported i2c device (00)


Device [3]: Antilles [AMD Radeon HD 6990]
Unsupported i2c device (53)

full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
Ok, it looks like people would rather the thread be spammed with the debugging attempts. I personally don't care, I was only trying to avoid causing thread clutter. That being said, those of you who can't get radeonvolt to output anything, I put in a few printf statements in the enum_cards function that should display what your radeon cards are showing up as in terms of their device classes and IO region sizes. It will print out all pci devices (similar to lspci), so you will have to look for your cards in there and paste the relevant information from the lines. Here's an example output on my xubuntu mining rig:

Radeon HD 5870 (Cypress) --> cls [0x300] size 268435456 0 131072
Cypress HDMI Audio [Radeon HD 5800 Series] --> cls [0x403]
Radeon HD 5870 (Cypress) --> cls [0x300] size 268435456 0 131072
Hemlock [ATI Radeon HD 5900 Series] --> cls [0x380] size 268435456 0 131072
Cypress HDMI Audio [Radeon HD 5800 Series] --> cls [0x403]
Hemlock [ATI Radeon HD 5900 Series] --> cls [0x300] size 268435456 0 131072
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch --> cls [0x604]
...

Basically, I need the hex number after cls in brackets, and also the numbers after size (if size shows up). The changed enum_cards function is on pastebin. All you have to do is open up radeonvolt.c, and replace the existing enum_cards function in there with the one from the pastebin link, and then remake it and run.
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
Agreed, but the intermediary debugging stuff would clutter the thread up. Once I find a solution I will post the details.
hero member
Activity: 518
Merit: 500
PM'd you

I think it would be more beneficial if you told the rest of the thread people what the solution was.

I was having this same problem with 5870s. Maybe there are some other people with 5970s having problems etc.
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
sr. member
Activity: 274
Merit: 250
Code:
"radeonvolt.c" 306L, 7316C zapisano
zulus@zulus-zulus:~/ius-radeonvolt-d9e89b5$ make
gcc -O3 -Wall -c radeonvolt.c
gcc -O3 -Wall -c i2c.c
gcc -O3 -Wall -c vt1165.c
gcc -O3 -Wall -lpci -o radeonvolt radeonvolt.o i2c.o vt1165.o
zulus@zulus-zulus:~/ius-radeonvolt-d9e89b5$ sudo ./radeonvolt
[sudo] password for zulus:
zulus@zulus-zulus:~/ius-radeonvolt-d9e89b5$

1. downloaded radeonvolt for the first time
2. edit radeonvolt.c with your function
3. make for the first time
4. no luck Sad

it`s MSI GD70 with sempron 145 2GB ram on xubuntu 11.04, cat 12.2 and SDK 2.6
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
I just provided the altered function, the rest of the file should be the same. If it's not showing anything, perhaps there are differences between operating systems/hardware that cause the problem? You did remake it after saving, right? It could be the device class has a differing value. One way to narrow down the issue would be to put in some printfs and see what the output is, if you're comfortable enough with C. If not, I could paste the relevant code with printfs.
sr. member
Activity: 274
Merit: 250
Yeah, and tell what to do to get it working :/

EDIT:
I have replaced original radeonvolt.c file with those lines posted by QuantumFoam ( just those fited was removed)
but it does not show my anything.
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform


Output on my xubuntu machine:

Device [8]: Hemlock [ATI Radeon HD 5900 Series]
        Current core voltage: 1.0375 V
        Presets: 0.9500 / 1.0000 / 1.0375 / 1.0500 V
        Core power draw: 57.48 A (59.64 W)
        VRM temperatures: 57 / 61 / 60 C


Device [9]: Hemlock [ATI Radeon HD 5900 Series]
        Current core voltage: 1.0375 V
        Presets: 0.9500 / 1.0000 / 1.0375 / 1.0500 V
        Core power draw: 56.61 A (58.74 W)
        VRM temperatures: 81 / 82 / 82 C


I'm sure there's a better solution than removing the vendor_id and device_id checks, one would need to get the relevant ones for the 5900 series.
donator
Activity: 1218
Merit: 1079
Gerald Davis
I've been messing with the source code so I can see the VRM temps in linux for my 5970. I was able to do this with the commenting out of vendor_id and device_id check as mentioned earlier in this thread, and with a modification to also accept a device class of type PCI_CLASS_DISPLAY_OTHER in addition to PCI_CLASS_DISPLAY_VGA. Without this second change, I was only able to see the VRM temps of one GPU on the 5970. Hope that helps other 5970 linux users, it's a simple code change in the enum_cards function in radeonvolt.c (first if branch below the first for loop).

Could you provide the modified code (pastebin would work fine).  I tried messing around with this but never got it working.
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
I've been messing with the source code so I can see the VRM temps in linux for my 5970. I was able to do this with the commenting out of vendor_id and device_id check as mentioned earlier in this thread, and with a modification to also accept a device class of type PCI_CLASS_DISPLAY_OTHER in addition to PCI_CLASS_DISPLAY_VGA. Without this second change, I was only able to see the VRM temps of one GPU on the 5970. Hope that helps other 5970 linux users, it's a simple code change in the enum_cards function in radeonvolt.c (first if branch below the first for loop).
hero member
Activity: 518
Merit: 500
An update.

I did all the proper steps and modifications to try and get this working on my reference ATI 5870s.

Will post back later with some results but on first sight the VRM temps are too low to be real and probably just core temps.

Runeks fork was even worse and did not even show anything other than "supported device".

Again, 100% reference ATI branded 5870s here ...

Some VRMs are higher quality and are around GPU temps: say, GPU temp is around 85c, VRMs could be around both 120c for older/shittier VRMs (and be within the spec for the VRMs too), and 85c for newer/less shitty VRMs.

Turns out you were right !

I started mining and the core on one card using a special cooler was at 39 degrees. Radeonvolt reported the VRM temps as 50 on that card so it seems to be working.

Thus, it seems like VRM temps are very close to GPU core temps. Others are having 70 core and VRM at say 90 so that is a +20 difference.

On my other cards the core and VRM are almost the same.

Does that mean that these GPUs were straight out the factory or something Huh
legendary
Activity: 1162
Merit: 1000
DiabloMiner author
An update.

I did all the proper steps and modifications to try and get this working on my reference ATI 5870s.

Will post back later with some results but on first sight the VRM temps are too low to be real and probably just core temps.

Runeks fork was even worse and did not even show anything other than "supported device".

Again, 100% reference ATI branded 5870s here ...

Some VRMs are higher quality and are around GPU temps: say, GPU temp is around 85c, VRMs could be around both 120c for older/shittier VRMs (and be within the spec for the VRMs too), and 85c for newer/less shitty VRMs.
hero member
Activity: 518
Merit: 500
An update.

I did all the proper steps and modifications to try and get this working on my reference ATI 5870s.

Will post back later with some results but on first sight the VRM temps are too low to be real and probably just core temps.

Runeks fork was even worse and did not even show anything other than "supported device".

Again, 100% reference ATI branded 5870s here ...
donator
Activity: 919
Merit: 1000
Talked to a guy that reverse-engineered WiFi chips at register level to develop Linux drivers and realized that it will not be easy.

The approach to hook into the i2c communication and log command sequences is sure the way to go. But it won't be enough to just collect the info per-chip, it most probably will be required to have it per-card. Setting the clocks at controller for one card does not necessarily mean the same for a similar one (assembly options, scaling, offset, etc.). That's possibly the reason why bulanula can't set his params with radeonvolt.

If you string the Afterburner binaries there are IDs for supported cards, most probably they are using card-individual settings. Therefore we basically would have to rewrite AB to get reliable control over our mining cards - it is more a man-year task than a weekend's hack.

Given the remaining lifetime of mining GPUs of say 6-9 months (yeah, see DAT around the corner asking for my cards -- cheap Wink), I'd say it does not pay off to invest that effort.
donator
Activity: 919
Merit: 1000
(OT: Hell, not long ago I bought standby-killers to turn TV off over night instead of letting it consume 5W in standby-mode, now I'm burning kWatts 24/7  Undecided, different story).

New TVs typically use a watts or less on standby, which you exchange for instant on and less wear on the parts. Disabling standby will just kill your TV faster which is more expensive than the electricity it is "wasting".
Hi mod, OP not active for nearly a year, so its ok to hijack his thread I guess...

True, the latest campaigns for energy efficiency and green labels really pushed the manufacturers to save energy. My current 46" plasma is using as little as my previous 24" one during operation and only 0.3W in stand-by. But my other one wastes ~9W plus 12W for the cablecom STB for just being ready to watch the news once a day - just insane! Using a standby-killer for a month I can save enough to power one of my rigs for nearly 18hours -- insane²! (see the irony?).
Pages:
Jump to: