3.0 KiB
3.0 KiB
AMD Radeon 9700 AI PRO (Navi 48) Tuning Guide
This guide show you how to enable undervolting and raise the power limit on the Radeon PRO R9700 on Fedora 43.
1. Prerequisites (Enable Overclocking)
The ppfeaturemask must be set to unlock voltage control.
sudo grubby --update-kernel=ALL --args="amdgpu.ppfeaturemask=0xffffffff"
Reboot your system after running this.
2. Identify Your GPU
You need the PCI Bus ID of the target card (e.g., 07:00.0).
Run this command to list your AMD GPUs:
lspci -nn | grep "VGA" | grep "AMD"
Example output:
07:00.0 VGA compatible controller...
(In this example, your ID is 0000:07:00.0)
3. Tuning Script
Save this script as tune_r9700.sh.
Important: Edit the PCI_ID variable at the top to match the ID you found in Step 2.
#!/bin/bash
# --- CONFIGURATION ---
# Replace this with your specific PCI ID from 'lspci'
# Format must be 0000:XX:XX.X
PCI_ID="0000:07:00.0"
# ---------------------
# 1. Robustly Find the Card Name (e.g., card1) directly from the PCI Bus
# We look inside the PCI device's 'drm' folder for a folder starting with 'card' followed only by numbers.
if [ ! -d "/sys/bus/pci/devices/$PCI_ID/drm" ]; then
echo "Error: PCI Device $PCI_ID not found or has no DRM driver attached."
exit 1
fi
# This finds 'card1' but ignores 'card1-DP-6'
CARD_NAME=$(ls "/sys/bus/pci/devices/$PCI_ID/drm" | grep -E '^card[0-9]+$' | head -n 1)
if [ -z "$CARD_NAME" ]; then
echo "Error: Could not determine card name for $PCI_ID"
exit 1
fi
# Construct the clean path (e.g., /sys/class/drm/card1)
CARD_PATH="/sys/class/drm/$CARD_NAME"
echo "Tuning GPU: $CARD_NAME (at $CARD_PATH)..."
# 2. Force Manual Performance Level (Required for UV)
# We use 'tee' without pipe to ensure exact errors are caught, but your 'echo | sudo tee' method is fine.
echo "manual" | sudo tee "$CARD_PATH/device/power_dpm_force_performance_level" > /dev/null
if [ $? -ne 0 ]; then echo "Failed to set Manual mode. Check permissions/path."; exit 1; fi
# 3. Apply -75mV Undervolt
echo "vo -75" | sudo tee "$CARD_PATH/device/pp_od_clk_voltage" > /dev/null
echo "c" | sudo tee "$CARD_PATH/device/pp_od_clk_voltage" > /dev/null
echo "Applied Undervolt (-75mV)"
# 4. Set Power Limit to 315W
# Find the hwmon directory strictly inside the device
HWMON_DIR=$(find "$CARD_PATH/device/hwmon/" -maxdepth 1 -name "hwmon*" | head -n 1)
if [ -n "$HWMON_DIR" ]; then
echo "315000000" | sudo tee "$HWMON_DIR/power1_cap" > /dev/null
echo "Applied Power Limit (315W)"
else
echo "Error: Could not find hwmon directory for power limit."
fi
Usage
chmod +x tune_r9700.sh
sudo ./tune_r9700.sh
4. Verification
Run these commands to confirm settings are active.
Check Undervolt:
# Look for: OD_VDDGFX_OFFSET: -75mV
cat /sys/class/drm/card0/device/pp_od_clk_voltage
Check Power Limit:
# Should be ~315 W
cat /sys/class/drm/card0/device/hwmon/hwmon*/power1_cap