Merge pull request #13 from outis1one/claude/bios-vt-power-settings-mxjh0x

Claude/bios vt power settings mxjh0x
This commit is contained in:
Outis
2026-06-27 01:04:22 -04:00
committed by GitHub
4 changed files with 39 additions and 54 deletions
+17 -38
View File
@@ -462,7 +462,7 @@ Find:
**SR-IOV Global Enable**
SR-IOV is a PCIe feature that allows a single physical device to appear as
multiple devices. Even though the Quadro P2200 does not use SR-IOV, enabling
multiple devices. Even though the GPU does not use SR-IOV, enabling
this globally avoids a class of IOMMU grouping problems.
```
@@ -1203,7 +1203,7 @@ After running this, refresh the Proxmox web UI — the popup will be gone.
**What this phase does:** Fixes two hardware quirks that bite R730xd owners
running non-Dell gear:
1. **Fan control.** iDRAC detects the two Quadro P2200s as "non-Dell PCIe
1. **Fan control.** iDRAC detects the non-Dell GPUs as "non-Dell PCIe
cards" and immediately pins every fan at 100% indefinitely to be safe.
The server sounds like a jet engine and never stops. We disable iDRAC's
automatic control and replace it with a daemon that sets fan speed based
@@ -1306,7 +1306,7 @@ Expected output:
```
**The fans will immediately ramp back to 100% within a few seconds** — that
is iDRAC reacting to the Quadro again. This confirms the script was in fact
is iDRAC reacting to the non-Dell GPU again. This confirms the script was in fact
holding them down. Get the service installed quickly so the noise stops.
---
@@ -1824,43 +1824,22 @@ Save with **Ctrl+O**, Enter, then **Ctrl+X** to exit nano.
---
### Step 9.4 — Fill in the VM config placeholders
### Step 9.4 — Record your by-id paths for later
Now open each VM config example and replace the `PLACEHOLDER_BAYx` entries with
the real by-id paths:
You'll assign drives to VMs in Phase 11. For now, just save the mapping somewhere handy (the `hardware-layout.md` doc is a good place):
```bash
nano /opt/local_proxmox/vm-configs/100-frigate.conf.example
ls -la /dev/disk/by-id/ | grep -v part
```
Change lines like:
```
scsi1: /dev/disk/by-id/PLACEHOLDER_BAY1,size=0
```
To the real path:
```
scsi1: /dev/disk/by-id/scsi-35000cca23b7d4eb8,size=0
```
Do this for all 8 drives in VM 100, drives 910 in VM 101, and drives 1112 in
VM 102. Save each file.
> **The full path starts with `/dev/disk/by-id/`** — but in the Proxmox VM
> config you write the full path. Double-check by running:
> ```bash
> ls -la /dev/disk/by-id/ | grep -v part
> ```
> You will see the symlinks and the drives they point to.
You'll paste these paths into `qm set` commands in Phase 11, Step 11.6.
---
## Phase 10 — GPU Passthrough Setup
**What this does:** Tells the Linux kernel to stop trying to use the two Quadro
P2200s itself and instead hand them over to the VFIO driver, which holds them
**What this does:** Tells the Linux kernel to stop trying to use the GPUs
itself and instead hand them over to the VFIO driver, which holds them
ready to be claimed by a virtual machine.
Three things happen:
@@ -2230,7 +2209,7 @@ Click **Add** → **PCI Device**.
| Field | Value |
|-------|-------|
| Raw Device | select GPU #1: e.g. `0000:03:00.0 NVIDIA GP106GL [Quadro P2200]` |
| Raw Device | select GPU #1 from the dropdown (shows PCI address + model name) |
| All Functions | **checked** |
| Primary GPU | **checked** |
| PCI-Express | **checked** |
@@ -2344,7 +2323,7 @@ Use the same wizard settings as VM 100 except:
After the wizard completes, add the second GPU in the **Hardware** tab:
Click **Add****PCI Device** → select GPU #2 (e.g. `0000:04:00.0 NVIDIA
GP106GL [Quadro P2200]`). Check **All Functions**, **Primary GPU**,
your GPU model`). Check **All Functions**, **Primary GPU**,
**PCI-Express**. Click **Add**.
No Coral USB for VM 101.
@@ -2479,7 +2458,7 @@ with GPU-accelerated video decode and Coral object detection.
**Prerequisites:**
- VM 100 running Ubuntu Server 24.04 with SSH access (Phase 11)
- NVIDIA Quadro P2200 passed through (PCIe device visible in guest)
- NVIDIA GPU passed through (PCIe device visible in guest)
- Google Coral USB passed through (USB device visible in guest)
- 8 raw data drives visible as block devices inside the VM
- Frigate config files from this repo (`frigate/docker-compose.yml` and
@@ -2569,7 +2548,7 @@ Expected output:
Key things to verify:
- **Driver Version: 535.xxx.xx** — driver loaded
- **Quadro P2200** — correct GPU model
- GPU model matches your installed card
- **5120 MiB** — full 5 GB memory visible (not a partial amount)
If `nvidia-smi` returns `No devices were found`:
@@ -2609,7 +2588,7 @@ systemctl enable docker
### Step 12.6 — Install NVIDIA Container Toolkit
This allows Docker containers to access the GPU. Without it Frigate cannot use
the Quadro for hardware video decode.
the GPU for hardware video decode.
```bash
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
@@ -2856,7 +2835,7 @@ A successful start looks like:
```
frigate | [INFO] Starting Frigate...
frigate | [INFO] Connected to EdgeTPU device: usb
frigate | [INFO] Loading NVIDIA GPU: Quadro P2200
frigate | [INFO] Loading NVIDIA GPU: <your GPU model>
frigate | [INFO] Starting camera: front_door
frigate | [INFO] Frigate is running
```
@@ -2893,7 +2872,7 @@ http://192.168.1.XXX:5000
The Frigate dashboard shows live camera feeds, detection events, and system
stats. Navigate to **System → Stats** to confirm:
- GPU utilization is shown (Quadro P2200)
- GPU utilization is shown (your GPU model)
- Coral inference is running
- CPU usage is low (NVDEC handling decode, Coral handling detection)
@@ -2917,7 +2896,7 @@ stats. Navigate to **System → Stats** to confirm:
| Layer | Component | Running |
|-------|-----------|---------|
| Hardware | Dell R730xd, PERC H730, 12 drives, 2× Quadro P2200, Coral USB | ✓ |
| Hardware | Dell R730xd, PERC H730, 12 drives, NVIDIA GPU(s), Coral USB | ✓ |
| Proxmox host | IOMMU active, GPUs held by vfio-pci | ✓ |
| Services | fan-control (quiet fans), stagger-spinup (PSU protection) | ✓ |
| VM 100 | Ubuntu 24.04, GPU passthrough, 8 drives, Frigate NVR | ✓ |
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Dell R730xd fan speed control for third-party PCIe cards (Quadro P2200, etc.)
# Dell R730xd fan speed control for third-party PCIe cards (non-Dell GPUs)
#
# iDRAC detects non-Dell GPUs and slams fans to 100% indefinitely.
# This script disables iDRAC automatic fan control and manages speed based
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Configure IOMMU + VFIO passthrough for two Quadro P2200 GPUs on Proxmox VE 9.x.
# Configure IOMMU + VFIO passthrough for NVIDIA GPUs on Proxmox VE 9.x.
# Run on the Proxmox host. Requires a reboot to take effect.
#
# After running this script:
+20 -14
View File
@@ -1,10 +1,12 @@
#!/usr/bin/env bash
# Convert PERC H730 drives to Non-RAID (per-disk passthrough) mode.
# Convert PERC H730 drives to JBOD (per-disk passthrough) mode.
# Run once on the Proxmox host before assigning drives to VMs.
# Requires: perccli (install from Dell's website or local .deb)
#
# Dell PERC H730 does not have a true HBA/IT mode. Non-RAID mode is the
# equivalent — each disk is presented directly to the OS with SMART intact.
# Dell PERC H730 requires two steps to expose drives to the OS:
# 1. Enable JBOD mode on the controller
# 2. Set each unconfigured drive to JBOD state
# Without both steps, drives show as UGood in perccli but are invisible to lsblk.
set -euo pipefail
@@ -29,23 +31,26 @@ echo "=== Drives on controller 0 ==="
$PERCCLI /c0 /eall /sall show
echo ""
read -rp "Proceed with converting all non-OS drives to Non-RAID mode? [y/N] " confirm
read -rp "Proceed with converting all non-OS drives to JBOD mode? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
# Identify enclosure IDs (typically 8 for the internal backplane on R730xd)
# Step 1: Enable JBOD mode on the controller
echo ""
echo "--- Enabling JBOD mode on controller 0 ---"
$PERCCLI /c0 set jbod=on
echo ""
# Step 2: Set each UGood drive to JBOD state so the OS can see it
# Only targets UGood drives — skips Onln drives (OS RAID members)
ENCLOSURES=$($PERCCLI /c0 /eall show | awk '/^[0-9]/{print $1}' | sort -u)
for enc in $ENCLOSURES; do
echo ""
echo "=== Processing enclosure $enc ==="
SLOTS=$($PERCCLI /c0 /e"$enc" /sall show | awk '/UGood|Onln|JBOD|DHS/{print $2}' | sort -u)
SLOTS=$($PERCCLI /c0 /e"$enc" /sall show | awk '/UGood/{print $2}' | sort -u)
for slot in $SLOTS; do
echo -n " Slot $slot: setting to Good... "
$PERCCLI /c0 /e"$enc" /s"$slot" set good force 2>&1 | grep -i "success\|error\|already" || true
echo -n " Slot $slot: setting to Non-RAID... "
$PERCCLI /c0 /e"$enc" /s"$slot" set nonraid 2>&1 | grep -i "success\|error\|already" || true
echo -n " Slot $slot: setting to JBOD... "
$PERCCLI /c0 /e"$enc" /s"$slot" set jbod 2>&1 | grep -i "success\|error\|already" || true
done
done
@@ -54,5 +59,6 @@ echo "=== Final drive state ==="
$PERCCLI /c0 /eall /sall show
echo ""
echo "Done. Reboot the host for changes to take full effect."
echo "After reboot, run build-bay-map.sh to map bays to /dev/disk/by-id paths."
echo "Done. Drives should now be visible to the OS (check with lsblk)."
echo "No reboot required — drives appear immediately after JBOD transition."
echo "Run build-bay-map.sh to map bays to /dev/disk/by-id paths."