Git Product home page Git Product logo

upp's Introduction

UPP

UPP: Uplift Power Play

A tool for parsing, dumping and modifying data in Radeon PowerPlay tables

Introduction

UPP is able to parse and modify binary data structures of PowerPlay tables commonly found on certain AMD Radeon GPUs. Drivers on recent AMD GPUs allow PowerPlay tables to be dynamically modified on runtime, which may be known as "soft" PowerPlay table. On Linux, the PowerPlay table is by default found at: /sys/class/drm/card0/device/pp_table.

This tool does very minimal interpretation of actual PowerPlay table values. By design, it is mostly up to the user to do such thing.

Alternatively, one can use this tool to get PowerPlay data by:

  • Extracting PowerPlay table from Video ROM image (see extract command)
  • Importing "Soft PowerPlay" table from Windows registry, directly from offline Windows/System32/config/SYSTEM file on disk, so it would work from Linux distro that has access to mounted Windows partition (path to SYSTEM registry file is specified with --from-registry option)
  • Importing "Soft PowerPlay" table from "More Powe Tool" MPT file (path to MPT file is specified with --from-mpt option)

This tool currently supports parsing and modifying PowerPlay tables found on the following AMD GPU families:

  • Polaris
  • Vega
  • Radeon VII
  • Navi 10
  • Arcturus (MI100)
  • Navi 12 (PRO V520)
  • Navi 14
  • Navi 21 (Sienna Cichlid)
  • Navi 22 (Navy Flounder)
  • Navi 23 (Dimgrey Cavefish)
  • Navi 3x

Notes:

  • iGPUs found in many recent AMD APUs are using completely different PowerPlay control methods, this tool does not support them.
  • The kernel driver does not fully implement modifying the PowerPlay tables on runtime for Navi 3x cards

WARNING: Authors of this tool are in no way responsible for any damage that may happen to your expansive graphics card if you choose to modify card voltages, power limits, or any other PowerPlay parameters. Always remember that you are doing it entirely on your own risk!

If you have bugs to report or features to request please create an issue on: https://github.com/sibradzic/upp

Requirements

Python 3.7+, click library. Optionally, for reading "soft" PowerPlay table from Windows registry: python-registry. Should work on Windows as well (testers wanted).

Installation

Either get it with pip:

pip install upp

or use it as is directly from the source tree:

cd src
python3 -m upp.upp --help

Usage

At its current form this is a CLI only tool. Getting help:

upp --help

or

upp <command> --help

Upp will only work by specifying a command which tells it what to do to one's Radeon PowerPlay table data. Currently available commands are:

  • dump - Dumps all PowerPlay data to console
  • extract - Extracts PowerPlay data from full VBIOS ROM image
  • inject - Injects PowerPlay data from file into VBIOS ROM image
  • get - Retrieves current value of one or multiple PowerPlay parameter(s)
  • set - Sets value to one or multiple PowerPlay parameters
  • undump - Sets all PowerPlay parameters to pp file or registry
  • version - Shows UPP version

So, an usage pattern would be like this:

upp [OPTIONS] COMMAND [ARGS]...

Some generic options applicable to all commands may be used, but please note that they have to be specified before an actual command:

-p, --pp-file <filename>        Input/output PP table binary file.
-f, --from-registry <filename>  Import PP_PhmSoftPowerPlayTable from Windows
                                registry (overrides -p / --pp-file option).
-m, --from-mpt <filename>       Import PowerPlay Table from More Power Tool
                                (overrides --pp-file and --from-registry optios).
-d, --debug / --no-debug        Debug mode.
-h, --help                      Show this message and exit.

Dumping all data:

The dump command de-serializes PowerPlay binary data into a human-readable text output. For example:

upp dump

In standard mode all data will be dumped to console, where data tree hierarchy is indicated by indentation. In raw mode a table showing all hex and binary data, as well as variable names and values, will be dumped.

Extracting PowerPlay table from Video ROM image:

Use extract command for this. The source video ROM binary must be specified with -r/--video-rom parameter, and extracted PowerPlay table will be saved into file specified with generic -p/--pp-file option. For example:

upp --pp-file=extracted.pp_table extract -r VIDEO.rom

Default output file name will be an original ROM file name with an additional .pp_table extension.

Injecting PowerPlay data from file into VBIOS ROM image:

Use inject command for this. The input video ROM binary must be specified with -i/--input-rom parameter, and the output ROM can be specified with an optional -o/--output-rom parameter. For example:

upp -p modded.pp_table inject -i original.rom -o modded.rom

WARNING: Modified vROM image is probably not going to work if flashed as is to your card, due to ROM signature checks on recent Radeon cards. Authors of this tool are in no way responsible for any damage that may happen to your expansive graphics card if you choose to flash the modified video ROM, you are doing it entirely on your own risk.

Getting PowerPlay table parameter value(s):

The get command retrieves current value of one or multiple PowerPlay table parameter value(s). The parameter variable path must be specified in /<param> notation, for example:

upp get smc_pptable/FreqTableGfx/1 smc_pptable/FreqTableGfx/2
1850
1400

The order of the output values will match the order of the parameter variable paths specified.

Setting PowerPlay table parameter value(s):

The set command sets value to one or multiple PowerPlay table parameter(s). The parameter path and value must be specified in /<param>=<value> notation, for example:

upp -p /tmp/custom-pp_table set --write  \
  smc_pptable/SocketPowerLimitAc/0=100   \
  smc_pptable/SocketPowerLimitDc/0=100   \
  smc_pptable/FanStartTemp=100           \
  smc_pptable/FreqTableGfx/1=1550

Note the --write parameter, which has to be specified to actually commit changes to the PowerPlay table file.

Undumps all PowerPlay parameters:

The undump command sets all values from previously dumped PowerPlay table parameter(s) back to pp_table or registry. It allows you to make changes in dumped text file and write back all changes at once. Basically it's a convenient way to set multiple values. For example:

# extract pp_table from vbios
upp --pp-file=vbios.pp_table extract -r vbios.rom
# dump powerplay table to text file
upp --pp-file=vbios.pp_table dump > vbios.pp_table.dump
# make changes in vbios.pp_table.dump
# undump all changes back into pp_table
upp --pp-file=vbios.pp_table undump -d vbios.pp_table.dump -w

Note the --write parameter, which has to be specified to actually commit changes to the PowerPlay table file.

Getting upp version

upp version

Running as sudo

Note that if you need to run upp deployed with pip in --user mode with sudo, you'll need to add some parameters to sudo command to make user env available to super-user. For example:

sudo -E env "PATH=$PATH" upp --help

upp's People

Contributors

azeam avatar cfwen avatar davhau avatar quasd avatar sibradzic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

upp's Issues

Card0 not detected - error

Hi,
I'm trying to use upp dump but getting this:
Traceback (most recent call last): File "/usr/local/bin/upp", line 8, in <module> sys.exit(main()) ^^^^^^ File "/usr/local/lib/python3.11/site-packages/upp/upp.py", line 387, in main cli(obj={})() ^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/click/decorators.py", line 26, in new_func return f(get_current_context(), *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/upp/upp.py", line 208, in dump decode.dump_pp_table(pp_file, rawdump=raw, debug=debug) File "/usr/local/lib/python3.11/site-packages/upp/decode.py", line 666, in dump_pp_table pp_bytes = _read_binary_file(pp_bin_file) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/upp/decode.py", line 42, in _read_binary_file f = open(filename, 'rb') ^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/drm/card0/device/pp_table'
Looks like GPU is at card1 and scripts don't detect it?
Fedora 37/38 Radeon 5700XT

Feature request: adding new parameters

While the set option allows changing an existing table parameter, there doesn't seem to be an option to add new parameters to an existing PowerPlay table (or to remove them.)

In my case, the PowerPlay table in the VBIOS doesn't include the EnableZeroRPM/FanStopTemperature/FanStartTemperature parameters by the default, but the hardware does support them. In Windows, I assume (but haven't verified this) these are set via a "soft" PowerPlay table.

I would like to be able to add these parameters at runtime so this feature would also work on Linux.

Mem clock and F clock on the 6800 XT

Hi, i'm not a great coder and I'm kinda confused on how to use this tool.
I've been using upp -p /sys/class/drm/card2/device/pp_table set smc_pptable/FreqTableFclk/0=1940 --write to set me F clock higher on my GPU. The problem I have is that my memory OC goes from 1075 (1074) to 1000 when I use this command and reforcing the Mem clock to 1075 (1074) does not work.
Soo to fix that I've used
upp -p /sys/class/drm/card2/device/pp_table set smc_pptable/FreqTableUclk/3=1075 --write and it looks like it works by looking at amd-info, but that's actually not true.
The Mem Clock goes to 1075 but the F clock reverts to some low values that I can't even read as I see my F clock as being 1041

This is how my working GPU looks like
image

This is the one that keeps failing
image

As you can see my Fclock state reverts to 0
How can I take it back to state 1?

Here's the BIOS and the MPT file from the GPU, made in windows from the bios downloaded on linux.
TAM-VEGA6800-1-RadeonRX6800XT-16G-Samsung_GDDR6-113-1E4392U-O5H.zip

Memory Overclock doesnt work as intended

Hello, when i set an overclock on the vram past 1000 mhz on the dpm state 3, it revert back to the past frecuency of the dpm state behind (2). I am using PowerUPP (gui) to achieve that. Everything else works as intended.
GPU: rx 6800 xt asus rog lc
System: manjaro kde 21.2.6
using amdgpu-pro drivers from AUR repository

Importing "Soft PowerPlay" table from Windows registry - generates an error

Hi,

I'm trying to import "Soft PowerPlay" table from Windows registry with the following command:

 upp -f /media/ceedii/7A0CAF530CAF0969/Windows/System32/config/SYSTEM dump > /home/ceedii/upp/powercolor_fighter_rx_6700_xt_windows.pp_table
Traceback (most recent call last):
  File "/usr/local/bin/upp", line 8, in <module>
    sys.exit(main())
  File "/home/ceedii/.local/lib/python3.8/site-packages/upp/upp.py", line 373, in main
    cli(obj={})()
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/ceedii/.local/lib/python3.8/site-packages/upp/upp.py", line 194, in dump
    decode.dump_pp_table(pp_file, rawdump=raw, debug=debug)
  File "/home/ceedii/.local/lib/python3.8/site-packages/upp/decode.py", line 664, in dump_pp_table
    pp_bytes = _read_binary_file(pp_bin_file)
  File "/home/ceedii/.local/lib/python3.8/site-packages/upp/decode.py", line 42, in _read_binary_file
    f = open(filename, 'rb')
TypeError: expected str, bytes or os.PathLike object, not NoneType

And the file powercolor_fighter_rx_6700_xt_windows.pp_table, contains the following error:

ERROR: Can not get Soft PowerPlay data from /media/ceedii/7A0CAF530CAF0969/Windows/System32/config/SYSTEM
  key:value > HKLM\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000:PP_PhmSoftPowerPlayTable

Registry value not found: ROOT\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000 : PP_PhmSoftPowerPlayTable

wrong output format of some offsets

MMDependencyTable and probably SclkDependencyTable provide VddcOffset and VddgfxOffset as unsigned int while the actual value is signed int + 1, e.g. CD FF -> 65485 -> -51+1=-50mV

very good table parser btw, it helped me figure out few unneeded BIOS edits

sys file values vs pp values

Sorry I am pretty new at overclocking and under volting. When I try to set the state clock and vddc settings. It goes in but when I query the fs doesn't seem to match. Do I need to do something to make them sync?

upp.py -i /sys/class/drm/card1/device/pp_table set --write /VddcLookupTable/7=906 /SocClockDependencyTable/7/ulClk=107500

cat /sys/class/drm/card1/device/pp_dpm_sclk
0: 852Mhz *
1: 991Mhz
2: 1084Mhz
3: 1138Mhz
4: 1200Mhz
5: 1401Mhz
6: 1576Mhz
7: 1663Mhz

dump:

SocClockDependencyTable:
  RevisionId: 0
  NumEntries: 8
  Entries:
    Entries 0:
      ulClk: 60000
      ucVddInd: 0
    Entries 1:
      ulClk: 72000
      ucVddInd: 1
    Entries 2:
      ulClk: 80000
      ucVddInd: 2
    Entries 3:
      ulClk: 84700
      ucVddInd: 3
    Entries 4:
      ulClk: 90000
      ucVddInd: 4
    Entries 5:
      ulClk: 96000
      ucVddInd: 5
    Entries 6:
      ulClk: 102800
      ucVddInd: 6
    Entries 7:
      ulClk: 107500
      ucVddInd: 7

The dump shows it set the setting... maybe I am doing the wrong setting?

Ultimately I am trying to pull off:

# set to compute mode
echo 5 > /sys/class/drm/card1/device/pp_power_profile_mode
# manual mode
echo manual > /sys/class/drm/card1/device/power_dpm_force_performance_level
# manual fan
echo 1 > /sys/class/drm/card1/device/hwmon/hwmon*/pwm1_enable
# set fan speed
echo 165 > /sys/class/drm/card1/device/hwmon/hwmon*/pwm1
# set state 7, 1075Mhz 906mV
echo 's 7 1075 906' > /sys/class/drm/card1/device/pp_od_clk_voltage
# set available pstates to only 7
echo 7 > /sys/class/drm/card1/device/pp_dpm_sclk

But settings seem to not take or I am not sure if the pp_table doesn't reflect the sys values.

Any help greatly appreciated.

Thanks!

Issue: upp dump unable to read gpu set as /sys/class/drm/card1 and not card0.

As the title says.

Issue

On my system with a single gpu, my 5600XT (navi10) is set up as /sys/class/drm/card1/device not as card0.
Thus the dump or read/write pp_tables commands won't find my card.

Request

For an argument to be added to be able specify card number /sys/class/drm/card*/device when gpu not set as card0.

My thanks.

Module vbios has no atribute HardLimitTable_v1.

I tried to use this script but i always get this message when i do so. Only way to get something is with --raw and that fails when it hits HardLimitTable_v1.
Im using Acer Nitro 5 with RX560X.
I wanted to use this script since the vbios does not set OD limits.

0x003d Recursive dive into HardLimitTable v1 @ 0x02cb Traceback (most recent call last): File "upp.py", line 183, in <module> cli(obj={})() File "/usr/lib/python3.7/site-packages/click/core.py", line 764, in __call__ return self.main(*args, **kwargs) File "/usr/lib/python3.7/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/usr/lib/python3.7/site-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/lib/python3.7/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3.7/site-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/usr/lib/python3.7/site-packages/click/decorators.py", line 17, in new_func return f(get_current_context(), *args, **kwargs) File "upp.py", line 96, in dump decode.decode_pp_table(input_file, debug=True) File "/home/haxk20/Data/upp/decode.py", line 205, in decode_pp_table off, debug) File "/home/haxk20/Data/upp/decode.py", line 204, in decode_pp_table decode_pp_table(None, getattr(vbios, table_name), data, AttributeError: module 'vbios' has no attribute 'HardLimitTable_v1'

Attach pp_table to ROM

If we can extract pp_table from bios rom, then can we attach pp_table to bios rom?
That would be a great idea. As Red BIOS Editor does for Windows, but MorePowerTool is extremely limited in parameters.

Applying any settings on 6900XT causes a crash

Applying any settings to my 6900XT, such as the same power limit and tdp as what was already set, causes graphics to become unresponsive and crash, requiring a hard reboot.

upp -d set --write \
    smc_pptable/SocketPowerLimitAc/0=303 \
    smc_pptable/SocketPowerLimitDc/0=272 \
    smc_pptable/TdcLimit/0=320 \
    smc_pptable/TdcLimit/1=55

Unable to write values to pp_table

Everything works except for writing values to the pp_table
Error:
WARNING: Nothing was written to '/home/test/ppTables/pp_table'. Add --write option to commit the changes for real!

I don't have `drm/card0` but `drm/card1` sysfs entry. `upp` fails on that. Please add an option to specify the card to use.

Ahoj,
I have no /sys/class/drm/card0/, but it is named /sys/class/drm/card1/ on my machine:

upp dump:

[...]
FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/drm/card0/device/pp_table'

ls -l /sys/class/drm/card1/device/pp_table:

-rw-r--r-- 1 root root 4096 Apr 28 12:30 /sys/class/drm/card1/device/pp_table

Please add an option that allows to specify the card (i.e. upp -c <number>, where <number> corresponds to the number in /sys/class/drm/card<number>/) to use.

Regards!

Error when trying to undump the pp_table

Arch Linux 6.9.9
RX 7800 XT
upp v0.2.2

I'm getting this error when trying to undump the pp_table, even without changing anything in the text file:

CHKSUM: 0x20 (off by 0), CRC: 0xABA7F1E5
Looking into MasterDataTable at offset 0x0500
Invalid PowerPlayInfo offset, checking for $PS1P magic...
Found $PS1P at 0xF4810
OFFSET at 0xB4920
Looking into PowerPlayInfo at offset 0xF4920
Found 5424 bytes long PowerPlayInfo table v20.0 at offset 0xF4920
Saving PowerPlay table to vbios.pp_table
[faugus@archlinux rom-test]$ upp --pp-file=vbios.pp_table dump > vbios.pp_table.dump
[faugus@archlinux rom-test]$ upp --pp-file=vbios.pp_table undump -d vbios.pp_table.dump -w
ERROR: Invalid variable assignment 'overdrive_table/cap/0=1 (GFXCLK_LIMITS)'.  Assignment must be specified in <variable-path>=<value>  format. For example: /PowerTuneTable/TDP=75
[faugus@archlinux rom-test]$

Parameter for card

My card ist not at ID 0, so /sys/class/drm/card0/device/pp_table does not exist but /sys/class/drm/card1/device/pp_table does . It would be great if one could pass the approriate ID in order to read the pp_table.

powerplay table default location is not always card0

As the title suggests the powerplay table isnt in the /sys/class/drm/card0/device/pp_table directory all of the time. Some setups, such as my laptop which has the graphics card connected via an egpu adapter, has this file in /card1/ instead. Therefore the program fails to run since it cant find the file when i tell it to dump it.

Small oops in decode.py get_value()

The bug causes an inaccurate error message to be printed.

For example:

$ upp get smcPPTable/SocketPowerLimitDc/3
0
$ upp get smcPPTable/SocketPowerLimitDc/4
ERROR: Invalid parameter "4", avaliable ones are: 0, 1, 2  # <-- should be 0, 1, 2, 3

On line 277 in decode.py:
indices = [str(i) for i in range(len(data)-1)]

should instead be:
indices = [str(i) for i in range(len(data))]

Regards.

Btw, thanks for putting this program together, great for tuning my navi blower card!

Ubuntu 18.04.4 driver version 19.30-934563 Invalid Header length

Ubuntu 18.04.4
driver version 19.30-934563
RX 5700 XT

$ sudo -E env "PATH=$PATH" upp -p /sys/class/drm/card1/device/pp_table dump
ERROR: Header length (1674) diffes from file length (4095). Is this a valid PowerPlay table?
Traceback (most recent call last):
  File "/home/nixx/.local/bin/upp", line 11, in <module>
    sys.exit(main())
  File "/home/nixx/.local/lib/python3.6/site-packages/upp/upp.py", line 301, in main
    cli(obj={})()
  File "/home/nixx/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/nixx/.local/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/nixx/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/nixx/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/nixx/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/home/nixx/.local/lib/python3.6/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/nixx/.local/lib/python3.6/site-packages/upp/upp.py", line 164, in dump
    decode.dump_pp_table(pp_file, rawdump=raw, debug=debug)
  File "/home/nixx/.local/lib/python3.6/site-packages/upp/decode.py", line 573, in dump_pp_table
    for member in data_dict:
TypeError: 'NoneType' object is not iterable

For driver 20.20-1089974 work correctly

ERROR: Can not access ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318} in dummy.pp_table

Hi! I can not get the table from the registry, there are a number of these errors. What am I doing wrong?

C:\Users\1usmus\Desktop\upp-0.1.6\src>python.exe -m upp.upp --from-registry=dummy.pp_table dump

ERROR: Can not access ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318} in dummy.pp_table
[Errno 2] No such file or directory: 'dummy.pp_table'
Traceback (most recent call last):
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\1usmus\Desktop\upp-0.1.6\src\upp\upp.py", line 391, in <module>
    main()
  File "C:\Users\1usmus\Desktop\upp-0.1.6\src\upp\upp.py", line 387, in main
    cli(obj={})()
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\1usmus\AppData\Local\Programs\Python\Python310\lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "C:\Users\1usmus\Desktop\upp-0.1.6\src\upp\upp.py", line 208, in dump
    decode.dump_pp_table(pp_file, rawdump=raw, debug=debug)
  File "C:\Users\1usmus\Desktop\upp-0.1.6\src\upp\decode.py", line 667, in dump_pp_table
    pp_bytes = _read_binary_file(pp_bin_file)
  File "C:\Users\1usmus\Desktop\upp-0.1.6\src\upp\decode.py", line 42, in _read_binary_file
    f = open(filename, 'rb')
TypeError: expected str, bytes or os.PathLike object, not NoneType

Request

@sibradzic
Greetings Mr. Samir,

I hope you and your family are fine and safe,

And my apologies for the inconvenience,

I am seeking a dump of power play table in human readable form for AMD RDNA2 card specifically one of RX 6000 Series,

Is it possible for your kind person to provide one or help in providing one as unfortunately I do not have one at the meantime and I need this dump for research purpose,

Also is it possible to generate a dump of power play table in human readable form from a vbios image?

Your early reply is highly appreciated,

You may have a good day and please stay safe and healthy,

Regards.

6800XT changing UCLK locks SCLK to 500Mhz

I tried to increase the max and applied mclk of my card (ref. edition, by default it's 1075 Mhz) like this:

upp --pp-file=/sys/class/drm/card0/device/pp_table set --write \
overdrive_table/max/6=1100 \
overdrive_table/max/7=1100 \
smc_pptable/FreqTableUclk/3=1100

The memory clock does get applied under load, but SCLK is now stuck at 500Mhz. pp_od_clk_voltage lists this:

OD_SCLK:
0: 500Mhz
1: 2444Mhz

When I then use upp to restore the default values:

upp --pp-file=/sys/class/drm/card0/device/pp_table set --write \
overdrive_table/max/6=1075 \
overdrive_table/max/7=1075 \
smc_pptable/FreqTableUclk/3=1000

SCLK is still stuck at 500Mhz, but additionally pp_od_clk_voltage OD_SCLK/1 also lists 500Mhz as the max. possible value now:

OD_SCLK:
0: 500Mhz
1: 500Mhz

When I set the default values with upp, the sha256 sums of the unmodified and the "modified" pp_tables DO match.

Do you have any idea on how to circumvent this behavior and force the card into behaving properly? I assume that the driver may be doing funky stuff (kernel 6.1.0).

Is it possible to replace pp_table completely?

Is it possible to replace the loaded pp_table with the one from othe card's VBIOS? Or at least modify all default values with values from the extracted pp_table with a single command? Can upp be used for that or some other tool should be used instead?

Import error

Hey,

When I try to run upp.py I get this error:

"Traceback (most recent call last):
File "C:\upp-master\src\upp\upp.py", line 6, in (module)
from upp import decode
File "C:\upp-master\src\upp\upp.py", line 6, in (module)
from upp import decode
ImportError: cannot import name 'decode' from partially initialized moduel 'upp' (most likely due to a circular import) (C:\upp-master\src\upp\upp.py)".

How may I fix this?

Sincerely, Danske.

AMD Navi 23 Radeon PRO W6600 after Trying to Overclock Memories Lock GFX Clock to 500 Mhz

**Hello, I'm Kenzo from Italy, I'm looking for an help with some Navi 23 AMD Radeon Pro W6600

every time i try to overclock memories this GPU the GFX Clock goes in single state at 500 Mhz, force the state 0 of GFX to an higher Clock let the GPU to stop working and then a reboot is needed.**

GPU initial Status

root@rig9CF1BB:/# amd-info                                                                                                                                                                                                                                                                                                                                                                                                            
Thu Nov 18 22:15:25 EET 2021                                                                                                                                                                                                                                                                                                                                                                                                          

=== GPU 0, 03:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 725 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 48.0 W, Cap: 100 W
  Core: 57°C, HotSpot: 58°C, Mem: 66°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 725* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

=== GPU 1, 06:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 800 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 47.0 W, Cap: 100 W
  Core: 55°C, HotSpot: 58°C, Mem: 66°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 800* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

=== GPU 2, 09:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 800 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 47.0 W, Cap: 100 W
  Core: 58°C, HotSpot: 62°C, Mem: 68°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 800* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

=== GPU 3, 0c:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 775 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 47.0 W, Cap: 100 W
  Core: 57°C, HotSpot: 60°C, Mem: 66°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 775* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

=== GPU 4, 0f:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 825 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 47.0 W, Cap: 100 W
  Core: 58°C, HotSpot: 61°C, Mem: 68°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 825* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

=== GPU 5, 12:00.0 Radeon Pro W6600 8176 MB ===
  Bios: 113-D5330100-100
  Core: 800 MHz 675mV, Mem: 875 MHz
  PerfCtrl: manual, Load: 99%, MemLoad: 45%, Power: 47.0 W, Cap: 100 W
  Core: 59°C, HotSpot: 61°C, Mem: 66°C, Fan: 23%, RPM: 1368
  Core state: 1, clocks: 500 800* 950                                                                                                                                                                                                                                                                                                                                                                                                 
  Mem  state: 3, clocks: 96 541 675 875*
  SOC  state: 1, clocks: 872 1200*
  DCEF state: 1, clocks: 417 685* 1200                                                                                                                                                                                                                                                                                                                                                                                                
  F    state: 0, clocks: 1551* 1801                                                                                                                                                                                                                                                                                                                                                                                                   
  PCIE Link speed: n/a, PCIE Link width: n/a
  Memory total: 8176.00 MB, used: 4790.96 MB, free: 3385.04 MB, type: Samsung GDDR6

command list:
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/TdcLimit/1=35 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/FreqTableSocclk/1=980 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/MinVoltageSoc=2720 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/MaxVoltageSoc=3200 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set /power_saving_clock/max/2=910 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/DcModeMaxFreq/2=910 --write
sleep 5s
upp -p /sys/class/drm/card1/device/pp_table set smc_pptable/FreqTableUclk/3=900 --write
sleep 5s
echo high > /sys/class/drm/card1/device/power_dpm_force_performance_level
sleep 5s
echo c > /sys/class/drm/card1/device/pp_od_clk_voltage

sleep is necessary from 1 command to another for writing the PPtable or the GPU automatically goes at Lock state. When is locked the GPU I need to reboot to return at previus state.

GPU status at Locked state:

=== GPU 1, 06:00.0 Radeon Pro W6600 8176 MB ===
Bios: 113-D5330100-100
Core: 500 MHz 675mV, Mem: 900 MHz
PerfCtrl: high, Load: 99%, MemLoad: 36%, Power: 42.0 W, Cap: 100 W
Core: 55°C, HotSpot: 58°C, Mem: 64°C, Fan: 23%, RPM: 1368
Core state: 0, clocks: 500* 500
Mem state: 3, clocks: 96 541 675 900*
SOC state: 1, clocks: 872 960*
DCEF state: 1, clocks: 417 685* 1200
F state: 0, clocks: 1551* 1801
PCIE Link speed: n/a, PCIE Link width: n/a
Memory total: 8176.00 MB, used: 4790.97 MB, free: 3385.03 MB, type: Samsung GDDR6

Stock PP_table of Radeon Pro W6600 attached as file.txt
PP_table_w6600.txt

I hope you can provide some type of help to solve the situation. Thanks
Kenzo.

Memory clock and documentation

Hello.

I'm trying to use Uplift Power Play with AMD Navi GPUs for overclocking and undervolting. It looks good, but I can't find any detailed documentation about options/parameters and values. I've found few examples, but looks like they are specific for each GPU (RX5500/5600/5700/etc).

I need to set the next options:

  1. Core clock - smc_pptable/FreqTableGfx/1=1500. I found examples with direct writing to pp_od_clk_voltage, but it just freezes in the console.
echo "s 1 1500" > /sys/class/drm/card1/device/pp_od_clk_voltage
echo "s 1 1200 900" > /sys/class/drm/card1/device/pp_od_clk_voltage
  1. Core voltage - smc_pptable/MinVoltageGfx and smc_pptable/MaxVoltageGfx.
  2. Memory clock - I can't find any examples for UPP. I found example with pp_od_clk_voltage, but it does not work for my GPU.
  3. Memory voltage:
smc_pptable/MemMvddVoltage/1=4800
smc_pptable/MemMvddVoltage/2=4800
smc_pptable/MemMvddVoltage/3=4800
  1. Memory controller voltage:
smc_pptable/MemVddciVoltage/1=2800
smc_pptable/MemVddciVoltage/2=2800
smc_pptable/MemVddciVoltage/3=2800
  1. SOC clock and voltage

There also a lot of params, but how to figure out what do they do?

  • smc_pptable/SocketPowerLimitAc/0=100
  • smc_pptable/SocketPowerLimitDc/0=100
  • smc_pptable/VcBtcEnabled=0
  • smc_pptable/dBtcGbGfxDfllModelSelect=2
  • smc_pptable/DpmDescriptor/0/VoltageMode=2
  • smc_pptable/FreqTableUclk/3

Could you please help with this?

Debian Linux Kernel 5.10, python3.9 not working

Not working for me with
XFX AMD RX 6800 XT.
Driver: amdgpu-pro-20.45-1188099-ubuntu-20.04
Debian Linux Kernel 5.10, python3.9

upp -p /tmp/custom-pp_table set --write  \
  smc_pptable/SocketPowerLimitAc/0=100   \
  smc_pptable/SocketPowerLimitDc/0=100   \
  smc_pptable/FanStartTemp=100           \
  smc_pptable/FreqTableGfx/1=1550
Traceback (most recent call last):
  File "/usr/local/bin/upp", line 33, in <module>
    sys.exit(load_entry_point('upp==0.0.9', 'console_scripts', 'upp')())
  File "/usr/local/lib/python3.9/dist-packages/upp-0.0.9-py3.9.egg/upp/upp.py", line 373, in main
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/core.py", line 1025, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/core.py", line 955, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/core.py", line 1517, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/core.py", line 1279, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/core.py", line 710, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/click-8.0.0a1-py3.9.egg/click/decorators.py", line 18, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/upp-0.0.9-py3.9.egg/upp/upp.py", line 334, in set
  File "/usr/local/lib/python3.9/dist-packages/upp-0.0.9-py3.9.egg/upp/decode.py", line 689, in get_value
  File "/usr/local/lib/python3.9/dist-packages/upp-0.0.9-py3.9.egg/upp/decode.py", line 42, in _read_binary_file
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/custom-pp_table'

Running in scripts or systemd service

I’ve tried running upp set to /sys/class/drm/cardX/device/pp_table without anything special. Works just fine

However, when executing my overclocking script (requires me using sudo sh -c “<script>”) or allowing my systemd service to run the script, whenever upp tries to set it returns an error;

smc_pptable/MinVoltageGfx=3120 smc_pptable/MaxVoltageGfx=3120
Changing smc_pptable.MinVoltageGfx from 3094 to 3120 at 0x3a6
Changing smc_pptable.MaxVoltageGfx from 4600 to 3120 at 0x3aa
Commiting changes to '/sys/class/drm/card8/device/pp_table'.
Traceback (most recent call last):
  File "/usr/local/bin/upp", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/upp/upp.py", line 387, in main
    cli(obj={})()
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/upp/upp.py", line 368, in set
    decode._write_binary_file(pp_file, pp_bytes)
  File "/usr/local/lib/python3.8/dist-packages/upp/decode.py", line 52, in _write_binary_file
    f.close()
OSError: [Errno 62] Timer expired

Oddly, executing the script without doing sudo (sh -c “<script>”) works, but the rest of my script needs to be run elevated. Been working on this for a bit, and am willing to test out stuff.

this is using amdgpu 22.20.1,
Ubuntu 20.04 w/ kernel 5.15.0-43-generic

Voltages too high values for Navi10

I've managed to undervolt my MSI 5700 XT Gaming X using upp so it is working as I had hoped (less power usage, a lot cooler and quieter but only a few fps lower). However, the voltages reported via upp are 4 times what the actual values are supposed to be (at least what seems to be reported under Windows according to online screenshots ). From pp_table dump:

smcPPTable: [...] MinVoltageGfx: 3000 MinVoltageSoc: 3000 MaxVoltageGfx: 4800 MaxVoltageSoc: 4200

I've set the MaxVoltageGfx to 4400 (-100mV or 1100 mV from 1200 mV supposedly). I guess this is not actually an upp issue (?), but I'm worried that future updates elsewhere to the way pp_table handles voltages (starting to use the actual values) may cause the upp settings to damage the card if the values are set several volts higher than they should? Tested under amd-staging-drm-next (drivers via oibaf) as of today (2019-12-27), didn't test to set any values but the same values were reported under kernel 5.5-rc2.

RX 6600 only draws a maximum of 125W despite setting power limit to 150W

Hello!
I ran the following commands to increase my power limit and tdc limit to 150W and 115A respectively:
upp set smc_pptable/SocketPowerLimitAc/0=150 --write
upp set smc_pptable/TdcLimit/0=115 --write
Checking with cat confirms that the power limit has been successfully set to 150W:
cat /sys/class/hwmon/$(ls -1 /sys/class/drm/card0/device/hwmon)/power1_cap
150000000
However when I run FurMark 2 the GPU never goes above 125W and the clocks are limited to 2000-2100 MHz as a result.

Edit: I am running KDE Neon 22.04, with kernel 6.5.0-35-generic

ValueError: Buffer size too small (182 instead of at least 254 bytes)

Vega FE

upp --pp-file=/sys/class/drm/card1/device/pp_table dump
Traceback (most recent call last):
File "/usr/bin/upp", line 8, in
sys.exit(main())
File "/usr/lib/python3.10/site-packages/upp/upp.py", line 373, in main
cli(obj={})()
File "/usr/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/lib/python3.10/site-packages/upp/upp.py", line 194, in dump
decode.dump_pp_table(pp_file, rawdump=raw, debug=debug)
File "/usr/lib/python3.10/site-packages/upp/decode.py", line 665, in dump_pp_table
data_dict = select_pp_struct(pp_bytes, rawdump, debug)
File "/usr/lib/python3.10/site-packages/upp/decode.py", line 654, in select_pp_struct
data_dict = build_data_tree(data, rawbytes, rawdump=rawdump, debug=debug)
File "/usr/lib/python3.10/site-packages/upp/decode.py", line 569, in build_data_tree
array_data = c_struct.from_buffer(raw[:top], ofst)
ValueError: Buffer size too small (182 instead of at least 254 bytes)

Support for Navi 31 / RX 7900

I just installed a Radeon RX 7900 XTX - PowerColor Red Devil but i cant run upp on its pp_table:

# upp -p /sys/class/drm/card1/device/pp_table dump
ERROR: Header length (5424) diffes from file length (4095). Is this a valid PowerPlay table?

The error seems weird, is the pp_table not supported yet in the driver for this gpu?
I am running on kernel 6.6.5.

Attached pp_table (not a text file but github would not allow empty file ending or .bin)
pp_table.txt

Using upp requires python-registry

As the title says, running the software will immediately crash without python-registry, even on platforms which will have no use for this library. This makes it impossible to package properly for platforms which obviously will not have easy access to a library exclusively used for win32, which I discovered while attempting to make a PKGBUILD for the Arch Linux AUR.

Reproduction is simple, after uninstalling/not installing python-registry, running upp will immediately result in the following error:

Traceback (most recent call last):
File "/usr/bin/upp", line 33, in
sys.exit(load_entry_point('upp==0.0.7', 'console_scripts', 'upp')())
File "/usr/bin/upp", line 25, in importlib_load_entry_point
return next(matches).load()
File "/usr/lib/python3.8/importlib/metadata.py", line 77, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 783, in exec_module
File "", line 219, in _call_with_frames_removed
File "/usr/lib/python3.8/site-packages/upp/upp.py", line 6, in
from Registry import Registry
ModuleNotFoundError: No module named 'Registry'

Navi 12

Hello i have a few V520s and i cant decode because it says it can not decode powerplay table version

Can not decode PowerPlay table version 14.0

set --write is not taken into account

Hi.
I'm trying to use your tool to modify some settings in the PP tables for a Polaris card.
But when I try to set them I get this error:

WARNING: Nothing was written to '/sys/class/drm/card1/device/pp_table'. Add --write option to commit the changes for real!

My command line:

sudo ./upp.py -i /sys/class/drm/card1/device/pp_table set --write /MemClockDependencyTable/Entries/2/Vddci=800

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.