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>
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)
- Power on the server, press F10 when you see the Dell splash screen
- Lifecycle Controller → Firmware Update → Check for updates
- Point it at downloads.dell.com or a local repo
- Update iDRAC, BIOS, PERC H730, and any NIC/HBA firmware
- 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.
- Power on → press F2 to enter System Setup → iDRAC Settings
- Network:
- Set a static IP (easier than DHCP for a server)
- Note the IP — you'll use it for the fan control ipmitool commands
- User configuration:
- Change the default
rootpassword
- Change the default
- IPMI over LAN:
- iDRAC Settings → Network → IPMI Settings → Enable IPMI over LAN: On
- This is required for
ipmitoolfan 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 iommushould showDMAR: 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
- Reboot → press Ctrl+R during POST to enter the H730 configuration utility (or use Lifecycle Controller → RAID Configuration)
- Select the controller
- Find the two 2.5" rear drives
- 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
- 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.shhandles 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
- Plug the USB into the R730xd
- Power on → press F11 for the one-time boot menu
- Select the USB drive
- At the Proxmox boot menu: Install Proxmox VE (Graphical)
- 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
- Location and timezone: set to your region
- Password and email: set a strong root password, enter an email
- Network configuration:
- Management interface: the built-in NIC (usually
em1oreno1) - 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
- Management interface: the built-in NIC (usually
- Click Install
- 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=ptto the kernel command line - Blacklists
nouveau/nvidiaon 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.HddSeqwas 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:089aand18d1: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"