Merge pull request #13 from outis1one/claude/bios-vt-power-settings-mxjh0x
Claude/bios vt power settings mxjh0x
This commit is contained in:
@@ -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 9–10 in VM 101, and drives 11–12 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,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,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
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user