x
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# 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.
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
#!/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
|
||||
|
||||
```bash
|
||||
chmod +x tune_r9700.sh
|
||||
sudo ./tune_r9700.sh
|
||||
```
|
||||
|
||||
## 4\. Verification
|
||||
|
||||
Run these commands to confirm settings are active.
|
||||
|
||||
**Check Undervolt:**
|
||||
|
||||
```bash
|
||||
# Look for: OD_VDDGFX_OFFSET: -75mV
|
||||
cat /sys/class/drm/card0/device/pp_od_clk_voltage
|
||||
```
|
||||
|
||||
**Check Power Limit:**
|
||||
|
||||
```bash
|
||||
# Should be ~315 W
|
||||
cat /sys/class/drm/card0/device/hwmon/hwmon*/power1_cap
|
||||
```
|
||||
Reference in New Issue
Block a user