If you run physical servers at home or in a colo rack, you need visibility into hardware health that goes beyond what software-level monitoring can provide. CPU temperatures, fan speeds, power draw, ECC memory errors, and drive backplane status live at the firmware layer — not inside the operating system.
This guide covers the three dominant open-source approaches to self-hosted bare-metal hardware monitoring: IPMI (Intelligent Platform Management Interface), Redfish (the modern RESTful standard), and OpenBMC (the fully open BMC firmware stack). You’ll learn when to use each, how to query them, and how to integrate them into a self-hosted monitoring dashboard.
Why Monitor Bare-Metal Hardware Directly?
Software monitoring tools like Prometheus node_exporter or Netdata see what the OS exposes: CPU load, memory usage, disk I/O, and network throughput. But they cannot tell you:
- Whether a CPU is thermal throttling before the kernel detects it
- If a power supply unit (PSU) is about to fail
- Whether chassis fans are running at safe RPMs
- If the BMC itself is healthy or unresponsive
- The real-time power consumption in watts
- Whether an ECC-correctable memory error is escalating
- If the RAID backplane is reporting degraded drives
All of this data lives in the Baseboard Management Controller (BMC) — a dedicated microcontroller on the server motherboard that operates independently of the main OS. Even if the server kernel panics, the BMC keeps running and can report the cause.
For homelab operators and small infrastructure teams, self-hosting hardware monitoring means full control over alerts, historical data, and access policies — no third-party dashboards or cloud subscriptions required.
IPMI: The Established Standard
IPMI has been the industry standard for server hardware management since 1998. It defines a set of interfaces for out-of-band management: power cycling, sensor readings, event logs, and serial-over-LAN console access.
IPMItool: The Reference Implementation
IPMItool is the primary open-source utility for interacting with IPMI-enabled systems. With 1,600+ GitHub stars and a proven track record across Linux, BSD, and Windows, it remains the go-to CLI for BMC communication.
Key capabilities:
- Read hardware sensors (temperature, voltage, fan speed, power)
- View and clear System Event Log (SEL) entries
- Remote power control (on, off, cycle, reset)
- Serial-over-LAN (SOL) for console access
- Firmware update and FRU (Field Replaceable Unit) inventory
- LAN configuration for remote BMC access
Installation:
| |
Local sensor query:
| |
Example output from a Dell PowerEdge R730:
| |
Remote sensor query over LAN:
| |
Read the System Event Log (SEL):
| |
Remote power management:
| |
Docker deployment for containerized monitoring:
| |
IPMI exporter configuration (ipmi-exporter-config.yml):
| |
Limitations of IPMI
IPMI has significant drawbacks in modern deployments:
- Proprietary extensions: Each vendor (Dell iDRAC, HP iLO, Supermicro) adds non-standard features that break portability
- Security weaknesses: IPMI 2.0 uses weak authentication (RMCP+) and has known cipher-0 vulnerabilities
- No REST API: All communication uses raw binary protocols, requiring specialized tools
- Limited sensor coverage: Not all modern sensors are exposed through standard SDR (Sensor Data Repository) tables
- Aging standard: The spec was last updated in 2013; newer hardware features may not be supported
Redfish: The Modern RESTful Standard
Redfish was introduced by the DMTF in 2015 as a modern replacement for IPMI. It uses HTTPS with RESTful JSON APIs, making it far easier to integrate with self-hosted monitoring stacks.
libredfish and Redfish Clients
libredfish is the DMTF’s official C client library. For practical monitoring, most operators use higher-level tools:
- python-redfish — Python library with full Redfish schema support
- sushy — Redfish library used by OpenStack Ironic (56 stars on GitHub, but widely deployed in production)
- curl + jq — Direct REST API queries for ad-hoc checks
Installation (Python-based approach):
| |
Query a Redfish endpoint:
| |
Python script for Redfish sensor polling:
| |
Make it executable and run:
| |
Docker Compose for Redfish monitoring stack:
| |
Redfish Advantages Over IPMI
- Standard REST API: JSON over HTTPS, works with any HTTP client
- Rich data model: Exposes far more sensors, including NVMe drive health, GPU telemetry, and NIC link statistics
- Schema versioning: DMTF publishes formal schemas for every resource type
- Role-based access: Fine-grained permissions for different operator roles
- Event subscriptions: Push-based alerts via HTTP POST to your monitoring endpoint
- Future-proof: Actively developed with annual schema updates
Redfish Limitations
- Not all vendors implement all schemas: Dell iDRAC has broader Redfish coverage than Supermicro
- HTTPS certificate issues: BMCs often use self-signed certs, requiring
-kor custom CA bundles - Newer hardware required: Servers before ~2017 may not support Redfish at all
OpenBMC: The Fully Open Firmware Stack
OpenBMC is a Linux Foundation project that provides a complete, open-source BMC firmware distribution. Unlike IPMI and Redfish (which are management protocols), OpenBMC replaces the proprietary BMC firmware entirely with an open-stack alternative.
With 2,400+ stars on GitHub and active development from IBM, Google, Meta, and Intel, OpenBMC is the future of open server management.
OpenBMC Architecture
OpenBMC runs on the BMC chip itself and provides:
- bmcweb: A Redfish-compliant REST API server
- phosphor-hwmon: Hardware monitoring via Linux hwmon drivers
- phosphor-dbus: D-Bus interfaces for all BMC functionality
- xyz.openbmc_project: Namespace for all OpenBMC services
Key benefits:
- No vendor lock-in — runs on supported hardware from multiple OEMs
- Full Redfish compliance via bmcweb
- D-Bus API for deep programmatic control
- OTA firmware updates
- Web-based KVM console (no proprietary Java/applet plugins)
- Active community with quarterly releases
OpenBMC Hardware Support
OpenBMC currently supports select platforms:
- IBM Power systems (Witherspoon, Rainier)
- Facebook/Yosemite servers (Wedge, Yosemite V4)
- Intel CRB reference boards
- ASRock Rack ROMED8HM3 (AMD EPYC)
- Some Google OCP (Open Compute Project) designs
Building OpenBMC for your hardware:
| |
The build process requires ~50GB disk space and several hours on a multi-core system.
Deploying OpenBMC in Production
| |
After flashing, the BMC reboots (main server OS is unaffected) and serves a fully open Redfish endpoint.
Comparison: IPMI vs Redfish vs OpenBMC
| Feature | IPMI (ipmitool) | Redfish | OpenBMC |
|---|---|---|---|
| Protocol type | Binary (RMCP+) | REST/HTTPS (JSON) | REST/HTTPS + D-Bus |
| Standard body | Intel (legacy) | DMTF | Linux Foundation |
| API format | CLI commands, raw binary | JSON over HTTPS | JSON over HTTPS + D-Bus |
| Authentication | MD5 / RMCP+ (weak) | HTTPS + RBAC | HTTPS + PAM / LDAP |
| Sensor coverage | Basic (SDR tables) | Extensive (schema-based) | Full hwmon + custom |
| Power control | Yes (on/off/cycle) | Yes (Graceful/Force) | Yes (full control) |
| Serial console | SOL (Serial-over-LAN) | Not natively | Web KVM + SOL |
| Event log | SEL (limited) | LogEntry (rich) | EventLog (D-Bus) |
| Vendor support | Universal (since 1998) | Most servers (since ~2017) | Select platforms |
| Open source | ipmitool is OSS | Spec is open, firmware is not | Fully open firmware |
| GitHub stars | 1,601 | libredfish: 56 | 2,414 |
| Last major update | IPMI 2.0 (2013) | DMTF 2024.3 | Quarterly releases |
| Docker monitoring | ipmi-exporter | redfish-exporter | bmcweb (built-in) |
When to Use Each Approach
Use IPMI when:
- You manage legacy servers (pre-2017) without Redfish support
- You need quick ad-hoc checks from the command line
- Your BMC firmware only supports IPMI (common on older Supermicro boards)
- You need serial-over-LAN console access to a crashed system
Use Redfish when:
- Your servers support it (most enterprise servers from 2018+)
- You want to build automated monitoring with REST APIs
- You need fine-grained access control and audit logging
- You’re integrating with Prometheus, Grafana, or custom dashboards
- You want push-based event subscriptions instead of polling
Use OpenBMC when:
- You run supported hardware and want to eliminate proprietary BMC firmware
- You need full control over the management stack
- You want a fully auditable, open-source BMC implementation
- You’re deploying at scale and want to avoid vendor lock-in
Integrating with Self-Hosted Monitoring Stacks
Prometheus + Grafana Pipeline
The most common pattern for self-hosted hardware monitoring combines an exporter with Prometheus and Grafana:
| |
Prometheus scrape configuration (prometheus.yml):
| |
Key Prometheus metrics to alert on:
| |
Complementing with OS-Level Monitoring
Hardware monitoring works best when combined with OS-level metrics. For a complete picture, pair your BMC data with:
- node_exporter — CPU, memory, disk I/O, network at the OS level
- smartd / smartmontools — individual drive SMART health data
- nvtop — GPU utilization and temperature (see our GPU monitoring guide for details)
- Scrutiny — drive health dashboard with SMART data aggregation (covered in our disk health monitoring guide)
For a broader view of system health dashboards, the terminal dashboard comparison covers lightweight alternatives for quick CLI-based hardware checks.
Security Best Practices for BMC Access
BMCs are high-value targets — compromise gives an attacker full control over server power, firmware, and console access.
Critical security measures:
- Isolate BMC networks: Put BMC management interfaces on a separate VLAN, never exposed to the internet
- Change default credentials: Every BMC ships with admin/admin or similar defaults
- Use IPMI restricted to LAN+: Disable serial and USB IPMI channels in production
- Enable Redfish over HTTPS only: Disable plain HTTP on the BMC
- Set up certificate-based auth: Use client certificates for Redfish API access instead of passwords
- Regular firmware updates: BMC firmware has its own CVE lifecycle — patch regularly
- Audit access logs: Monitor BMC login attempts via SEL or Redfish LogEntry resources
| |
FAQ
What is the difference between IPMI and Redfish?
IPMI is a legacy binary protocol (RMCP+) that has been the industry standard since 1998. It uses CLI tools like ipmitool for hardware management. Redfish is a modern RESTful API standard (introduced in 2015 by DMTF) that uses HTTPS with JSON payloads. Redfish offers richer data models, better security with HTTPS and RBAC, and easier integration with monitoring tools. Most servers from 2018 onward support both.
Can I use OpenBMC on any server?
No. OpenBMC must be specifically ported to each hardware platform because it replaces the proprietary BMC firmware. Currently it supports select IBM Power systems, Facebook/Yosemite servers, Intel reference boards, and some ASRock Rack motherboards. Check the OpenBMC GitHub repository for the current hardware support matrix. For unsupported hardware, use IPMI or Redfish with your vendor’s proprietary BMC firmware.
How do I monitor hardware without a BMC?
If your server or desktop lacks a BMC (common on consumer motherboards), you can still monitor hardware using OS-level tools: node_exporter provides CPU/memory/disk metrics, smartmontools reads drive SMART data via /dev/sdX, lm-sensors (sensors-detect + sensors) reads temperature and voltage chips accessible from the OS, and ipmitool can read some sensors via the local /dev/ipmi0 device even without remote LAN access.
Is IPMI secure enough for production use?
IPMI 2.0 has known security weaknesses including weak authentication and cipher-0 vulnerabilities. For production use, you should: isolate BMCs on a management VLAN, disable unused IPMI channels, use strong passwords, restrict IPMI source IPs via firewall rules, and prefer Redfish over HTTPS whenever your hardware supports it. Many organizations are migrating from IPMI to Redfish as a security improvement.
How often should I poll BMC sensors?
For most homelab and small infrastructure setups, polling every 30–60 seconds is sufficient. Temperature and power readings change slowly, so high-frequency polling adds unnecessary load to the BMC. For critical alerts (fan failure, PSU fault), configure the BMC to push event subscriptions to your monitoring endpoint instead of relying on polling intervals.
Can I get BMC data into Grafana dashboards?
Yes. The standard approach is: (1) Deploy an exporter (ipmi-exporter or redfish-exporter) as a Docker container, (2) Configure Prometheus to scrape the exporter’s metrics endpoint, (3) Import or build Grafana dashboards that query the Prometheus data. Pre-built Grafana dashboards exist for both IPMI and Redfish exporters on the Grafana dashboard repository.