Files
local_proxmox/docs/handoff.md
Claude 677a85e908 Add session hand-off document
Summarises hardware, all repo files and their status, what still needs
to be written (walkthrough-phases-10-12.md and complete-walkthrough.md),
detailed notes on what phases 10-12 should cover, and key facts/gotchas
for whoever picks this up next.

https://claude.ai/code/session_01TxTSnxDjgEVuNztdsWQjMD
2026-04-24 20:46:23 +00:00

6.4 KiB
Raw Permalink Blame History

Session Hand-off Document

Dell R730xd — Proxmox VE 9.1 Homelab Setup

Branch: claude/proxmox-hardware-passthrough-ylAYx Repo: outis1one/local_proxmox


Hardware Summary

Component Detail
Server Dell PowerEdge R730xd
RAID controller PERC H730 (configured in per-disk non-RAID mode for 3.5" drives)
OS drives 2x 2.5" rear drives — RAID1 mirror via H730
Data drives Up to 12x 3.5" bays (not all populated)
GPUs 2x Quadro P2200 5GB (VFIO passthrough, one per VM)
TPU Google Coral USB (Frigate object detection, VM 100)
iDRAC iDRAC8 Express — no virtual console, no virtual media
PSU 750W (single or redundant pair — stagger spin-up configured to protect PSU)

VM Layout

VM ID Role Drives GPU Coral
100 Frigate NVR Bays 18 P2200 #1 Yes
101 General purpose Bays 910 P2200 #2 No
102 Utility/storage Bays 1112 None No

What Is In The Repo

scripts/

File Purpose Status
perc-nonraid.sh Converts H730 3.5" drives to per-disk non-RAID mode Done
build-bay-map.sh Maps physical bay numbers to /dev/disk/by-id paths via LED blink Done
gpu-passthrough-setup.sh Configures IOMMU + vfio-pci for both Quadro P2200s Done
fan-control.sh Manages fan speed via ipmitool — prevents 100% fan from non-Dell GPU Done
fan-control.service Systemd unit for fan-control.sh Done
stagger-spinup.sh Staggers drive spin-up at boot to limit PSU current surge Done
stagger-spinup.service Systemd unit for stagger-spinup.sh Done

vm-configs/

File Purpose Status
100-frigate.conf.example VM 100 skeleton — GPU, Coral USB, 8 drive slots Needs PLACEHOLDER_BAYx filled in after Phase 8
101.conf.example VM 101 skeleton — GPU #2, 2 drive slots Needs PLACEHOLDER_BAYx filled in after Phase 8
102.conf.example VM 102 skeleton — 2 drive slots Needs PLACEHOLDER_BAYx filled in after Phase 8

frigate/

File Purpose Status
docker-compose.yml Frigate container with nvidia runtime + Coral USB Done
config.yml Frigate config — NVDEC hwaccel, Coral detector, recording Needs real camera RTSP URLs added

docs/

File Purpose Status
hardware-layout.md Bay/VM/GPU mapping worksheet Needs filling in after Phase 8
setup-guide.md High-level 12-phase overview Done
walkthrough-phases-1-3.md Full button-by-button: Firmware, iDRAC, BIOS Done
walkthrough-phases-4-6.md Full button-by-button: H730 RAID, Proxmox install, post-install Done
walkthrough-phases-7-9.md Full button-by-button: non-RAID drives, bay map, GPU passthrough Done
walkthrough-phases-10-12.md Fan control, VM creation, Frigate deploy NOT WRITTEN YET
complete-walkthrough.md All phases combined into one document NOT WRITTEN YET

What Still Needs To Be Done

1. Write docs/walkthrough-phases-10-12.md

Three phases to cover in full button-by-button detail:

Phase 10 — Fan control + stagger spin-up services

  • Copy fan-control.sh to /usr/local/sbin/, install and enable systemd service
  • Verify fans slow down within 30 seconds (ipmitool sdr type Fan)
  • Run stagger-spinup.sh --idrac for BIOS-level config (or iDRAC web UI path)
  • Install stagger-spinup.service, enable (don't start manually — runs at boot)

Phase 11 — Create VMs in Proxmox web UI

  • Upload Ubuntu 24.04 LTS ISO to Proxmox local storage
  • Create VM 100 via web UI: General → OS → System (q35, OVMF, VirtIO SCSI Single) → Disks → CPU (host type) → Memory → Network
  • Add hardware to VM 100: PCI device (GPU, All Functions, Primary GPU, PCI-Express), two USB devices (Coral 1a6e:089a and 18d1:9302), data drives via CLI (qm set)
  • Install Ubuntu inside each VM via Proxmox console
  • Repeat for VMs 101 and 102 (simpler — no Coral, different GPU or no GPU)
  • Find VM IP addresses

Phase 12 — Frigate inside VM 100

  • SSH into VM 100 guest OS
  • Install Docker (get.docker.com script)
  • Install nvidia-driver-535, reboot, verify with nvidia-smi
  • Install nvidia-container-toolkit, configure Docker runtime, test with docker run nvidia-smi
  • Create ZFS pool from 8 data drives (raidz2 recommended)
  • Clone repo or copy frigate/ directory
  • Edit config.yml with real camera RTSP URLs
  • docker compose up -d, watch logs
  • Access web UI at http://vm100-ip:5000

2. Write docs/complete-walkthrough.md

Combine walkthrough-phases-1-3.md + 4-6.md + 7-9.md + 10-12.md (once written) into a single document. Remove the "next file" references at the end of each phase section. Add a table of contents at the top.


Key Facts To Know

  • iDRAC Express — no KVM, no virtual media. Physical monitor + keyboard required through Phase 5 (Proxmox installer). After that SSH only.
  • iDRAC default credentials: root / calvin — must be changed (Phase 2)
  • iDRAC static IP set in Phase 2 — needed for fan control ipmitool commands
  • IPMI over LAN must be enabled in iDRAC (Phase 2) for fan control to work
  • Boot mode must be UEFI (Phase 3) — legacy BIOS breaks gpu-passthrough-setup.sh
  • VT-d must be Enabled (Phase 3) — most common reason passthrough silently fails
  • H730 OS drives — the 2x 2.5" rear drives are RAID1 and must NOT be touched by perc-nonraid.sh. The script targets only UGood (unconfigured) drives.
  • Quadro P2200 — 75W TDP, no external power connector needed, no Code 43 issue, NVDEC handles H.264/H.265 decode for Frigate with near-zero CPU usage
  • Coral USB re-enumerates — passes through as 1a6e:089a before first inference, then 18d1:9302 after. Both USB entries must be in the VM config.
  • Fan control uses raw IPMI commands to iDRAC over LAN — works on Express

Script Run Order (for reference)

When Proxmox is installed and SSH is working:

1. dpkg -i perccli_*.deb
2. bash scripts/perc-nonraid.sh          → reboot
3. bash scripts/build-bay-map.sh         → fill in hardware-layout.md and vm-configs
4. bash scripts/gpu-passthrough-setup.sh → note PCI addresses, reboot
5. install fan-control.sh + .service     → verify fans slow down
6. install stagger-spinup.sh + .service
7. create VMs via Proxmox web UI
8. install Ubuntu in each VM
9. set up Frigate in VM 100