# Phases 10–12: Fan Control, VM Creation, Frigate Deploy ### Dell R730xd — Button-by-button walkthrough --- ## Phase 10 — Fan Control + Stagger Spin-Up Services **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 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 on the inlet temperature sensor. 2. **Staggered drive spin-up.** Twelve 3.5" HDDs spinning up simultaneously at boot spike about 240 W of inrush current for 2–3 seconds — enough to trip a 750 W PSU under load. We configure two layers of protection: the iDRAC BIOS setting that fires at POST (before the OS loads), and a Linux systemd service that handles any drives the BIOS setting missed. **Prerequisites from earlier phases:** - IPMI over LAN enabled in iDRAC (Phase 2) — required for `ipmitool` - `ipmitool` and `hdparm` installed on the host (Phase 6.3) - Repo cloned to `/opt/local_proxmox` (Phase 6.4) --- ### Step 10.1 — Test fan control manually before enabling the service Before installing anything as a systemd service, verify that the script can actually talk to iDRAC over IPMI. This catches misconfigured IPMI-over-LAN credentials before you wonder why the service silently failed. SSH into Proxmox: ```bash ssh root@192.168.1.10 ``` Check the current inlet temperature: ```bash bash /opt/local_proxmox/scripts/fan-control.sh --temp ``` Expected output: ``` Inlet temp: 24°C ``` The number will vary with your room temperature — anywhere between 18–35°C is typical for an idle server. > **If you see `Inlet temp: 35°C` exactly every time** — that is the script's > hard-coded fallback for when the sensor read fails. IPMI is not responding. > Check Phase 2: iDRAC **Network → IPMI Settings → Enable IPMI Over LAN** > must be checked, and the channel privilege level must be **Administrator**. Now test a manual fan speed override. This is safe — the script has a 15% minimum floor hard-coded, so you cannot accidentally stop the fans: ```bash bash /opt/local_proxmox/scripts/fan-control.sh --set 20 ``` Expected output: ``` : iDRAC automatic fan control DISABLED : Fans set to 20% ``` **Within 10–30 seconds you should hear the fans audibly slow down.** The R730xd is loud at 100% — the difference is immediate and obvious. Confirm the fans actually dropped: ```bash ipmitool sdr type Fan ``` Expected output: ``` Fan1A | 30h | ok | 7.1 | 2400 RPM Fan1B | 31h | ok | 7.1 | 2160 RPM Fan2A | 32h | ok | 7.1 | 2400 RPM Fan2B | 33h | ok | 7.1 | 2160 RPM Fan3A | 34h | ok | 7.1 | 2400 RPM Fan3B | 35h | ok | 7.1 | 2160 RPM ... ``` At 20% you should see roughly 2000–3000 RPM. At iDRAC's panic 100% you would see 12000–15000 RPM. If the numbers look like the former you are in good shape. Now hand control back to iDRAC before proceeding — we want the real service to be what re-disables automatic control, not this test: ```bash bash /opt/local_proxmox/scripts/fan-control.sh --auto ``` Expected output: ``` : iDRAC automatic fan control RE-ENABLED ``` **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 holding them down. Get the service installed quickly so the noise stops. --- ### Step 10.2 — Install the fan control script and service Copy the script to the system directory and make it executable: ```bash cp /opt/local_proxmox/scripts/fan-control.sh /usr/local/sbin/fan-control.sh chmod +x /usr/local/sbin/fan-control.sh ``` Copy the systemd unit into place: ```bash cp /opt/local_proxmox/scripts/fan-control.service /etc/systemd/system/ ``` Tell systemd about the new unit, then enable and start it in one command: ```bash systemctl daemon-reload systemctl enable --now fan-control.service ``` `enable --now` both enables the unit for future boots and starts it right now, so the fans should begin quieting within 30 seconds. Verify the service is running: ```bash systemctl status fan-control.service ``` Expected output (abbreviated): ``` ● fan-control.service - Dell R730xd fan speed control (third-party GPU) Loaded: loaded (/etc/systemd/system/fan-control.service; enabled; preset: enabled) Active: active (running) since