Forked from evilJazz/MI50_32GB_VBIOS
This variant focuses on gaming stability on a watercooled MI50 / Radeon Pro VII (Vega 20, gfx906).
- GPU: AMD Instinct MI50 16 GB (
1002:66a1, VBIOS113-D1640700-100) - Cooling: custom waterblock (Bykski A-MI50-X)
- Driver: amdgpu + Mesa RADV (Proton/umu-run)
With a waterblock, average die and VRAM temps stay low, but junction (hotspot) can still spike due to heat density inside the Vega 20 die:
| Sensor | Typical under load |
|---|---|
| GPU edge / VRAM | < 60 °C |
| Junction (hotspot) | ~100–105 °C |
The stock SoftwareShutdownTemp is 113 °C. Hitting it cuts Vcore and freezes the game. Lowering voltage helps the junction more than lowering the average die temperature.
The MI50 ships from factory with a dry graphite pad as TIM. Combined with Vega 20 die warpage (the center balloons under heat), the thermal interface degrades over time causing edge/junction deltas of 45-55°C.
Fix: Replace with PTM7950 phase-change pad (5-15°C drop in junction temp). Also ensure proper waterblock mounting pressure — the stock X-bracket is essential for uniform contact.
| Parameter | Stock | Gaming profile |
|---|---|---|
| SCLK max | 1700 MHz | 2000 MHz |
| MCLK max | 1000 MHz | 1200 MHz |
| Power cap | ~225 W | 300–320 W |
| TDC Gfx | — | 280 A |
| Undervolt | — | -50 mV |
Install UPP (Uplift Power Play):
sudo pip install --break-system-packages upp# 1. Dump current PowerPlay table
sudo upp --pp-file=/sys/class/drm/card0/device/pp_table dump
# 2. Create a working copy
cp /sys/class/drm/card0/device/pp_table pp_table_work.bin
# 3. Apply the gaming profile
sudo upp --pp-file=pp_table_work.bin set \
/smcPPTable/FreqTableGfx/8=2000 \
/smcPPTable/FreqTableUclk/2=1200 \
/smcPPTable/FreqTableUclk/3=1200 \
/PowerSavingClockTable/PowerSavingClockMax/0=2000 \
/PowerSavingClockTable/PowerSavingClockMax/5=1200 \
/smcPPTable/DcModeMaxFreq/0=2000 \
/smcPPTable/DcModeMaxFreq/5=1200 \
/smcPPTable/GfxclkDsMaxFreq=2000 \
/smcPPTable/MaxVoltageGfx=4450 \
/SmallPowerLimit1=300 \
/SmallPowerLimit2=300 \
/BoostPowerLimit=300 \
/smcPPTable/SocketPowerLimitAc0=300 \
/smcPPTable/SocketPowerLimitDc=300 \
/smcPPTable/TdcLimitGfx=280
# 4. Write the modified table to the card
sudo cp pp_table_work.bin /sys/class/drm/card0/device/pp_table
# 5. Verify
sudo upp --pp-file=/sys/class/drm/card0/device/pp_table dump | grep -E "PowerLimit|FreqTableGfx|FreqTableUclk|MaxVoltage"Create /etc/systemd/system/mi50-gpu-setup.service:
[Unit]
Description=MI50 GPU PowerPlay table patching
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/cp /home/USER/mi50-oc/pp_table_work.bin /sys/class/drm/card0/device/pp_table
RemainAfterExit=yes
[Install]
WantedBy=multi-user.targetThen:
sudo systemctl daemon-reload
sudo systemctl enable --now mi50-gpu-setup.service- 2000 MHz / 1200 MHz is the sweet spot — gives 95% of max perf with manageable thermals
- 2100 MHz is possible but junction hits 105°C quickly and triggers throttling
- The undervolt (-50mV =
MaxVoltageGfx=4450) is the single most impactful setting for hotspot temps - Power limit above 320W shows negligible gains — the card power-limits before temp-limiting at this voltage
Save as upp_gaming.conf:
/smcPPTable/FreqTableGfx/8=2000
/smcPPTable/FreqTableUclk/2=1200
/smcPPTable/FreqTableUclk/3=1200
/PowerSavingClockTable/PowerSavingClockMax/0=2000
/PowerSavingClockTable/PowerSavingClockMax/5=1200
/smcPPTable/DcModeMaxFreq/0=2000
/smcPPTable/DcModeMaxFreq/5=1200
/smcPPTable/GfxclkDsMaxFreq=2000
/smcPPTable/MaxVoltageGfx=4450
/SmallPowerLimit1=300
/SmallPowerLimit2=300
/BoostPowerLimit=300
/smcPPTable/SocketPowerLimitAc0=300
/smcPPTable/SocketPowerLimitDc=300
/smcPPTable/TdcLimitGfx=280
Apply from file:
sudo upp --pp-file=pp_table_work.bin set --from-file=upp_gaming.conf