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 Global Enable**
|
||||||
|
|
||||||
SR-IOV is a PCIe feature that allows a single physical device to appear as
|
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.
|
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
|
**What this phase does:** Fixes two hardware quirks that bite R730xd owners
|
||||||
running non-Dell gear:
|
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.
|
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
|
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
|
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
|
**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.
|
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
|
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):
|
||||||
the real by-id paths:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nano /opt/local_proxmox/vm-configs/100-frigate.conf.example
|
ls -la /dev/disk/by-id/ | grep -v part
|
||||||
```
|
```
|
||||||
|
|
||||||
Change lines like:
|
You'll paste these paths into `qm set` commands in Phase 11, Step 11.6.
|
||||||
|
|
||||||
```
|
|
||||||
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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Phase 10 — GPU Passthrough Setup
|
## Phase 10 — GPU Passthrough Setup
|
||||||
|
|
||||||
**What this does:** Tells the Linux kernel to stop trying to use the two Quadro
|
**What this does:** Tells the Linux kernel to stop trying to use the GPUs
|
||||||
P2200s itself and instead hand them over to the VFIO driver, which holds them
|
itself and instead hand them over to the VFIO driver, which holds them
|
||||||
ready to be claimed by a virtual machine.
|
ready to be claimed by a virtual machine.
|
||||||
|
|
||||||
Three things happen:
|
Three things happen:
|
||||||
@@ -2230,7 +2209,7 @@ Click **Add** → **PCI Device**.
|
|||||||
|
|
||||||
| Field | Value |
|
| 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** |
|
| All Functions | **checked** |
|
||||||
| Primary GPU | **checked** |
|
| Primary GPU | **checked** |
|
||||||
| PCI-Express | **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:
|
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
|
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**.
|
**PCI-Express**. Click **Add**.
|
||||||
|
|
||||||
No Coral USB for VM 101.
|
No Coral USB for VM 101.
|
||||||
@@ -2479,7 +2458,7 @@ with GPU-accelerated video decode and Coral object detection.
|
|||||||
|
|
||||||
**Prerequisites:**
|
**Prerequisites:**
|
||||||
- VM 100 running Ubuntu Server 24.04 with SSH access (Phase 11)
|
- 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)
|
- Google Coral USB passed through (USB device visible in guest)
|
||||||
- 8 raw data drives visible as block devices inside the VM
|
- 8 raw data drives visible as block devices inside the VM
|
||||||
- Frigate config files from this repo (`frigate/docker-compose.yml` and
|
- Frigate config files from this repo (`frigate/docker-compose.yml` and
|
||||||
@@ -2569,7 +2548,7 @@ Expected output:
|
|||||||
|
|
||||||
Key things to verify:
|
Key things to verify:
|
||||||
- **Driver Version: 535.xxx.xx** — driver loaded
|
- **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)
|
- **5120 MiB** — full 5 GB memory visible (not a partial amount)
|
||||||
|
|
||||||
If `nvidia-smi` returns `No devices were found`:
|
If `nvidia-smi` returns `No devices were found`:
|
||||||
@@ -2609,7 +2588,7 @@ systemctl enable docker
|
|||||||
### Step 12.6 — Install NVIDIA Container Toolkit
|
### Step 12.6 — Install NVIDIA Container Toolkit
|
||||||
|
|
||||||
This allows Docker containers to access the GPU. Without it Frigate cannot use
|
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
|
```bash
|
||||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
|
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
|
||||||
@@ -2856,7 +2835,7 @@ A successful start looks like:
|
|||||||
```
|
```
|
||||||
frigate | [INFO] Starting Frigate...
|
frigate | [INFO] Starting Frigate...
|
||||||
frigate | [INFO] Connected to EdgeTPU device: usb
|
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] Starting camera: front_door
|
||||||
frigate | [INFO] Frigate is running
|
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
|
The Frigate dashboard shows live camera feeds, detection events, and system
|
||||||
stats. Navigate to **System → Stats** to confirm:
|
stats. Navigate to **System → Stats** to confirm:
|
||||||
- GPU utilization is shown (Quadro P2200)
|
- GPU utilization is shown (your GPU model)
|
||||||
- Coral inference is running
|
- Coral inference is running
|
||||||
- CPU usage is low (NVDEC handling decode, Coral handling detection)
|
- CPU usage is low (NVDEC handling decode, Coral handling detection)
|
||||||
|
|
||||||
@@ -2917,7 +2896,7 @@ stats. Navigate to **System → Stats** to confirm:
|
|||||||
|
|
||||||
| Layer | Component | Running |
|
| 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 | ✓ |
|
| Proxmox host | IOMMU active, GPUs held by vfio-pci | ✓ |
|
||||||
| Services | fan-control (quiet fans), stagger-spinup (PSU protection) | ✓ |
|
| Services | fan-control (quiet fans), stagger-spinup (PSU protection) | ✓ |
|
||||||
| VM 100 | Ubuntu 24.04, GPU passthrough, 8 drives, Frigate NVR | ✓ |
|
| VM 100 | Ubuntu 24.04, GPU passthrough, 8 drives, Frigate NVR | ✓ |
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/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.
|
# iDRAC detects non-Dell GPUs and slams fans to 100% indefinitely.
|
||||||
# This script disables iDRAC automatic fan control and manages speed based
|
# This script disables iDRAC automatic fan control and manages speed based
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/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.
|
# Run on the Proxmox host. Requires a reboot to take effect.
|
||||||
#
|
#
|
||||||
# After running this script:
|
# After running this script:
|
||||||
|
|||||||
+20
-14
@@ -1,10 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/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.
|
# Run once on the Proxmox host before assigning drives to VMs.
|
||||||
# Requires: perccli (install from Dell's website or local .deb)
|
# 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
|
# Dell PERC H730 requires two steps to expose drives to the OS:
|
||||||
# equivalent — each disk is presented directly to the OS with SMART intact.
|
# 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
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -29,23 +31,26 @@ echo "=== Drives on controller 0 ==="
|
|||||||
$PERCCLI /c0 /eall /sall show
|
$PERCCLI /c0 /eall /sall show
|
||||||
|
|
||||||
echo ""
|
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; }
|
[[ "$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)
|
ENCLOSURES=$($PERCCLI /c0 /eall show | awk '/^[0-9]/{print $1}' | sort -u)
|
||||||
|
|
||||||
for enc in $ENCLOSURES; do
|
for enc in $ENCLOSURES; do
|
||||||
echo ""
|
|
||||||
echo "=== Processing enclosure $enc ==="
|
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
|
for slot in $SLOTS; do
|
||||||
echo -n " Slot $slot: setting to Good... "
|
echo -n " Slot $slot: setting to JBOD... "
|
||||||
$PERCCLI /c0 /e"$enc" /s"$slot" set good force 2>&1 | grep -i "success\|error\|already" || true
|
$PERCCLI /c0 /e"$enc" /s"$slot" set jbod 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
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -54,5 +59,6 @@ echo "=== Final drive state ==="
|
|||||||
$PERCCLI /c0 /eall /sall show
|
$PERCCLI /c0 /eall /sall show
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Done. Reboot the host for changes to take full effect."
|
echo "Done. Drives should now be visible to the OS (check with lsblk)."
|
||||||
echo "After reboot, run build-bay-map.sh to map bays to /dev/disk/by-id paths."
|
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