Files
local_proxmox/docs/setup-guide.md
T
Claude 95ea951741 fix: remove iDRAC HddSeq dependency removed in BIOS 2.19+
BIOS.StorageSettings.HddSeq no longer exists on R730xd firmware 2.19+.
Update --idrac mode to print a clear explanation instead of failing,
and update docs to skip Layer 1 and go straight to the Linux systemd service.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 03:57:54 +00:00

14 KiB

Dell R730xd — Proxmox VE 9.1 Setup Guide

Complete walkthrough from bare metal to running VMs with GPU passthrough, Coral USB, and per-VM disk assignments.


What You Need Before Starting

  • USB drive (8GB+) for the Proxmox installer
  • A second machine or phone to read this guide and SSH
  • The iDRAC IP or physical access to a monitor + keyboard
  • Internet connection on the server

Phase 1 — Firmware Updates (do this first)

Outdated firmware causes mysterious IOMMU failures and fan issues. Do this before anything else.

Option A: Lifecycle Controller (no extra tools needed)

  1. Power on the server, press F10 when you see the Dell splash screen
  2. Lifecycle Controller → Firmware Update → Check for updates
  3. Point it at downloads.dell.com or a local repo
  4. Update iDRAC, BIOS, PERC H730, and any NIC/HBA firmware
  5. Let it reboot as many times as it needs

Option B: Dell System Update (DSU) from bootable USB

A faster alternative if Lifecycle Controller is slow or unavailable — Dell provides a bootable ISO that auto-detects and applies all updates.


Phase 2 — iDRAC Setup

iDRAC is the out-of-band management interface. You need it configured for the fan control script to work later.

  1. Power on → press F2 to enter System Setup → iDRAC Settings
  2. Network:
    • Set a static IP (easier than DHCP for a server)
    • Note the IP — you'll use it for the fan control ipmitool commands
  3. User configuration:
    • Change the default root password
  4. IPMI over LAN:
    • iDRAC Settings → Network → IPMI Settings → Enable IPMI over LAN: On
    • This is required for ipmitool fan control from the Proxmox host

Phase 3 — BIOS Settings

Still in F2 System Setup. These settings are required for GPU and USB passthrough to work.

Menu path Setting Value
Processor Settings Virtualization Technology Enabled
Processor Settings C States Disabled
PCI Configuration SR-IOV Global Enable Enabled
Boot Settings → BIOS Boot Settings Boot Mode UEFI (not Legacy/BIOS)
System Profile Settings System Profile Custom
System Profile Settings CPU Power Management Maximum Performance

VT for Direct I/O (VT-d): Newer R730xd BIOS versions (2.19+) removed this toggle — VT-d is enabled by default. Don't worry if you can't find it. Verify it's active after Proxmox is installed: dmesg | grep -i iommu should show DMAR: IOMMU enabled. The kernel cmdline (intel_iommu=on iommu=pt) in Phase 9 is still required.

Hard Disk Drive Sequencing was also removed in newer BIOS — it is no longer present and is not needed.

Boot Mode must be UEFI. Proxmox's EFI boot tool (proxmox-boot-tool) only works with UEFI. Legacy BIOS mode breaks the GPU passthrough script.

Apply and exit. The server will reboot.


Phase 4 — H730 RAID Configuration (pre-Proxmox)

The two 2.5" rear drives are your Proxmox OS drives. You want them mirrored so a single drive failure doesn't take down the hypervisor.

The 3.5" drives will be converted to non-RAID later from within Proxmox using the perc-nonraid.sh script — do not touch them here.

Configure the 2.5" OS drives

  1. Reboot → press Ctrl+R during POST to enter the H730 configuration utility (or use Lifecycle Controller → RAID Configuration)
  2. Select the controller
  3. Find the two 2.5" rear drives
  4. Create new virtual disk:
    • RAID level: RAID 1 (mirror)
    • Select both 2.5" drives
    • Strip size: 64KB (default)
    • Name: OS-Mirror (optional)
    • Initialize: Fast Initialize
  5. Press Ctrl+Alt+Delete to reboot

The H730 now presents a single ~X GB RAID1 virtual disk to the OS. Proxmox will install onto this and never know there are two physical drives behind it.

The 3.5" drives will show as "Unconfigured Good" in the H730 — that is fine. Leave them alone. perc-nonraid.sh handles them after Proxmox is installed.


Phase 5 — Install Proxmox VE 9.1

Prepare the USB installer

On another machine, download the Proxmox VE ISO from proxmox.com and write it to a USB drive:

# Linux/macOS
dd if=proxmox-ve_*.iso of=/dev/sdX bs=1M status=progress conv=fsync
# or use Balena Etcher (Windows/Mac/Linux GUI)

Boot and install

  1. Plug the USB into the R730xd
  2. Power on → press F11 for the one-time boot menu
  3. Select the USB drive
  4. At the Proxmox boot menu: Install Proxmox VE (Graphical)
  5. Target disk: select the RAID1 virtual disk (OS-Mirror)
    • Filesystem: ext4 is simplest — the H730 RAID1 already gives you redundancy, so ZFS mirroring here would be double-redundant overkill
  6. Location and timezone: set to your region
  7. Password and email: set a strong root password, enter an email
  8. Network configuration:
    • Management interface: the built-in NIC (usually em1 or eno1)
    • Hostname: e.g. pve.local
    • IP: choose a static IP on your LAN (e.g. 192.168.1.10/24)
    • Gateway and DNS: your router's IP
  9. Click Install
  10. Remove USB when prompted, let it reboot

First login

Open a browser on your LAN machine and go to:

https://192.168.1.10:8006

Accept the self-signed certificate warning. Login: root / (your password), Realm: Linux PAM.


Phase 6 — Proxmox Post-Install (SSH)

SSH into the host from now on — it's faster than the web console for these steps.

ssh root@192.168.1.10

6a. Fix the apt repositories

Proxmox shows "no valid subscription" warnings when using the enterprise repo without a license. Switch to the free repo:

# Disable enterprise repos — PVE9 uses .sources (DEB822 format), not .list
echo "# disabled - no subscription" > /etc/apt/sources.list.d/pve-enterprise.sources
echo "# disabled - no subscription" > /etc/apt/sources.list.d/ceph.sources
# Also disable any legacy .list versions if present
echo "# disabled - no subscription" > /etc/apt/sources.list.d/pve-enterprise.list
echo "# disabled - no subscription" > /etc/apt/sources.list.d/ceph.list

# Add no-subscription repos (trixie = Proxmox 9 / Debian 13)
echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" \
  > /etc/apt/sources.list.d/pve-no-subscription.list
echo "deb http://download.proxmox.com/debian/ceph-squid trixie no-subscription" \
  > /etc/apt/sources.list.d/ceph-no-subscription.list

apt update && apt dist-upgrade -y
reboot

6b. Install tools used by the scripts

apt install -y ipmitool lsscsi ledmon hdparm git

6c. Clone this repo onto the host

git clone https://github.com/outis1one/local_proxmox.git /opt/local_proxmox
cd /opt/local_proxmox
chmod +x scripts/*.sh

Phase 7 — H730: Set 3.5" Drives to Non-RAID Mode

Now that Proxmox is running, convert the 3.5" drives to per-disk (non-RAID) mode. The OS drives (RAID1 virtual disk) are not affected — the script only targets unconfigured physical disks.

Install perccli

Download from Dell support (search "PERCCLI") or copy the .deb to the host:

dpkg -i perccli_*.deb

Run the script

bash /opt/local_proxmox/scripts/perc-nonraid.sh

Review the output, confirm when prompted. Reboot after completion.

reboot

After rebooting, Proxmox will see the 3.5" drives as individual block devices (/dev/sdb, /dev/sdc, etc.).


Phase 8 — Map Physical Bays to Drives

bash /opt/local_proxmox/scripts/build-bay-map.sh

Walk the bays with ledctl to confirm which physical slot is which device:

ledctl locate=/dev/sdb   # LED blinks on the matching bay
ledctl locate_off=/dev/sdb

Fill in the by-id paths in docs/hardware-layout.md. You will need these in Phase 11 when creating VMs.


Phase 9 — GPU Passthrough Setup

bash /opt/local_proxmox/scripts/gpu-passthrough-setup.sh

The script:

  • Adds intel_iommu=on iommu=pt to the kernel command line
  • Blacklists nouveau/nvidia on the host
  • Binds both Quadro P2200s to vfio-pci
  • Rebuilds initramfs

Note the PCI addresses it prints at the end — you'll need them in Phase 11.

reboot

Verify after reboot

lspci -nnk | grep -A3 -i nvidia

Both GPUs should show Kernel driver in use: vfio-pci. If they still show nouveau, check that /etc/modprobe.d/blacklist-gpu.conf exists and update-initramfs -u was run.


Phase 10 — Fan Control and Staggered Spin-Up

Fan control (prevents jet-engine noise from non-Dell GPUs)

cp /opt/local_proxmox/scripts/fan-control.sh /usr/local/sbin/fan-control.sh
cp /opt/local_proxmox/scripts/fan-control.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now fan-control.service
systemctl status fan-control.service

Test it worked — the fans should audibly slow down within 30 seconds. To check current speed: ipmitool sdr type Fan

Staggered spin-up

BIOS 2.19+ note: BIOS.StorageSettings.HddSeq was removed from the R730xd firmware. The iDRAC/BIOS layer (Layer 1) no longer works — skip it and go straight to the Linux service below.

Linux service (staggers drives in standby at OS boot):

cp /opt/local_proxmox/scripts/stagger-spinup.sh /usr/local/sbin/stagger-spinup.sh
cp /opt/local_proxmox/scripts/stagger-spinup.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable stagger-spinup.service

Phase 11 — Create the VMs

Prepare the VM configs

Edit the three example configs and replace the placeholders:

cd /opt/local_proxmox/vm-configs

# Replace PLACEHOLDER_BAYx with real by-id paths from Phase 8
# Replace XX:00 with real PCI addresses from Phase 9
nano 100-frigate.conf.example
nano 101.conf.example
nano 102.conf.example

Create OS disks for each VM

In the Proxmox web UI or via CLI, create the base OS disk for each VM:

# Creates the disk slots — Proxmox generates the correct scsi0 line
qm create 100 --memory 16384 --cores 8 --name frigate --net0 virtio,bridge=vmbr0
qm create 101 --memory 16384 --cores 8 --name vm101   --net0 virtio,bridge=vmbr0
qm create 102 --memory 8192  --cores 4 --name vm102   --net0 virtio,bridge=vmbr0

Then merge your edited conf into the generated config:

# Backup generated config, then append your hardware lines
cp /etc/pve/qemu-server/100.conf /etc/pve/qemu-server/100.conf.bak
cat 100-frigate.conf.example >> /etc/pve/qemu-server/100.conf

Or just open each VM in the Proxmox web UI → Hardware and add:

  • PCI Device → your GPU (enable PCIe, enable Primary GPU for VM 100)
  • USB Device → host device → 1a6e:089a and 18d1:9302 (VM 100 only)
  • Hard Disk → (use disk passthrough, SCSI controller, path = your by-id)

Install a guest OS

Boot each VM from an ISO (upload ISOs to Proxmox under local storage → ISO Images). Ubuntu Server 22.04 LTS is a good choice for the Frigate VM.


Phase 12 — Set Up Frigate in VM 100

From inside VM 100 (SSH into the guest OS):

Install Docker

apt update && apt install -y ca-certificates curl
curl -fsSL https://get.docker.com | sh

Install NVIDIA driver + Container Toolkit

# Add NVIDIA apt repo
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  | tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

apt update
apt install -y nvidia-driver-535 nvidia-container-toolkit

# Configure Docker to use the NVIDIA runtime
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

# Verify the GPU is visible
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

Deploy Frigate

mkdir -p /opt/frigate && cd /opt/frigate

# Copy configs from the repo (or clone it inside the VM)
cp /path/to/local_proxmox/frigate/docker-compose.yml .
cp /path/to/local_proxmox/frigate/config.yml .

# Create the recordings directory (on your passthrough data drive)
# Mount your data drives first — if using ZFS:
zpool import <poolname>   # or create a new pool from the raw drives
mkdir -p /mnt/frigate

# Edit config.yml and add your camera RTSP URLs
nano config.yml

docker compose up -d
docker compose logs -f    # watch for errors on first start

Frigate UI: http://<vm100-ip>:5000


Troubleshooting

GPU not passing through — still shows nouveau

update-initramfs -u -k all && reboot
# After reboot:
lspci -nnk | grep -A3 -i nvidia   # must show vfio-pci

IOMMU not enabled

dmesg | grep -i iommu
# Should show: "DMAR: IOMMU enabled"
# If not: re-check Phase 9 cmdline (intel_iommu=on); VT-d is on by default in newer BIOS
cat /etc/kernel/cmdline   # must contain intel_iommu=on iommu=pt

Fan control not working

# Check iDRAC IP is reachable and IPMI over LAN is enabled (Phase 2)
ipmitool -I lan -H <idrac-ip> -U root -P <password> sdr type Fan
# Then check the service:
systemctl status fan-control.service
journalctl -u fan-control.service -n 50

Coral not detected in Frigate

# In VM 100, check both USB IDs are present
lsusb | grep -E "1a6e|18d1"
# If missing, check the USB passthrough lines in the VM config
# Both usb0 (1a6e:089a) and usb1 (18d1:9302) must be present

Drive not appearing after perc-nonraid.sh

lsblk
# If the drive is missing, check its state in perccli:
perccli /c0 /eall /sall show
# State should be "JBOD" or "UGood" — not "Offln" or "Msng"