Verification Guide

Test and validate your OpenBMC port.

Table of Contents

  1. Overview
  2. Verification Checklist
    1. Boot & Basic
    2. Power Control
    3. Sensors
    4. Thermal Management
    5. Remote Access
  3. Boot Verification
    1. U-Boot Check
    2. Kernel Boot
    3. BMC State
  4. Power Control Tests
    1. Basic Power Operations
    2. GPIO Verification
  5. Sensor Verification
    1. List Sensors
    2. Verify Readings
    3. Threshold Test
  6. Fan Control Tests
    1. Manual Control
    2. Verify Fan Speed
  7. Network Tests
    1. Basic Connectivity
    2. Service Access
  8. Redfish API Tests
  9. IPMI Tests
  10. Common Issues
    1. Sensors Not Appearing
    2. Power Control Fails
    3. Network Issues
  11. Automated Testing
    1. Robot Framework
  12. Next Steps
  13. References

Overview

Systematic verification ensures your OpenBMC port works correctly. This guide provides test procedures for each major subsystem.


Verification Checklist

Boot & Basic

  • U-Boot initializes correctly
  • Kernel boots without errors
  • Root filesystem mounts
  • BMC reaches Ready state
  • Console access works
  • Network connectivity

Power Control

  • Power on host
  • Power off host
  • Graceful shutdown
  • Force power off
  • Power cycle
  • Reset host

Sensors

  • Temperature sensors read correctly
  • Voltage sensors read correctly
  • Fan tach sensors work
  • Thresholds trigger events
  • Sensors appear in Redfish/IPMI

Thermal Management

  • Fan PWM control works
  • PID control adjusts fans
  • Thermal zones configured
  • Over-temperature protection

Remote Access

  • SSH login
  • WebUI access
  • Redfish API
  • IPMI over LAN
  • KVM (if applicable)
  • Virtual media (if applicable)

Boot Verification

U-Boot Check

# During boot, watch for:
# - Memory initialization
# - Flash detection
# - Kernel loading

# At U-Boot prompt:
printenv
md 0x80000000 100  # Memory check

Kernel Boot

# Watch console for:
# - Device tree loading
# - Driver initialization
# - Filesystem mount

# Check dmesg after boot
dmesg | grep -i error
dmesg | grep -i fail

BMC State

# Check BMC state
obmcutil state

# Expected:
# BMC: Ready
# Chassis: Off (initially)
# Host: Off (initially)

Power Control Tests

Basic Power Operations

# Power on
obmcutil poweron
sleep 10
obmcutil state  # Check host is Running

# Power off
obmcutil poweroff
sleep 10
obmcutil state  # Check host is Off

# Power cycle
obmcutil poweron
sleep 30
obmcutil powercycle
sleep 10
obmcutil state

GPIO Verification

# Check power GPIOs
cat /sys/kernel/debug/gpio | grep -i power

# Manual GPIO test (careful!)
gpioset gpiochip0 10=1  # Assert power
gpioget gpiochip0 11    # Read status

Sensor Verification

List Sensors

# D-Bus sensors
busctl tree xyz.openbmc_project.Sensor

# Redfish sensors
curl -k -u root:0penBmc \
    https://localhost/redfish/v1/Chassis/chassis/Sensors

# IPMI sensors
ipmitool sensor list

Verify Readings

# Read specific sensor
busctl get-property xyz.openbmc_project.HwmonTempSensor \
    /xyz/openbmc_project/sensors/temperature/CPU_Temp \
    xyz.openbmc_project.Sensor.Value Value

# Check hwmon
cat /sys/class/hwmon/hwmon*/temp*_input

Threshold Test

# Force threshold crossing (test environment only)
# Watch for events in Redfish logs
curl -k -u root:0penBmc \
    https://localhost/redfish/v1/Systems/system/LogServices/EventLog/Entries

Fan Control Tests

Manual Control

# Set manual mode
busctl set-property xyz.openbmc_project.State.FanCtrl \
    /xyz/openbmc_project/control/fanpwm/zone0 \
    xyz.openbmc_project.Control.Mode \
    Manual b true

# Set PWM
busctl set-property xyz.openbmc_project.Hwmon.external \
    /xyz/openbmc_project/control/fanpwm/Pwm_0 \
    xyz.openbmc_project.Control.FanPwm \
    Target t 50

Verify Fan Speed

# Read tachometer
busctl get-property xyz.openbmc_project.FanSensor \
    /xyz/openbmc_project/sensors/fan_tach/Fan0 \
    xyz.openbmc_project.Sensor.Value Value

Network Tests

Basic Connectivity

# Check interface
ip addr show eth0

# Ping gateway
ping -c 3 192.168.1.1

# DNS resolution
nslookup example.com

Service Access

# SSH
ssh -p 22 root@bmc-ip

# HTTPS
curl -k https://bmc-ip/

# IPMI
ipmitool -I lanplus -H bmc-ip -U root -P 0penBmc power status

Redfish API Tests

# Service root
curl -k -u root:0penBmc https://localhost/redfish/v1/

# System info
curl -k -u root:0penBmc https://localhost/redfish/v1/Systems/system

# Manager info
curl -k -u root:0penBmc https://localhost/redfish/v1/Managers/bmc

# Chassis info
curl -k -u root:0penBmc https://localhost/redfish/v1/Chassis/chassis

IPMI Tests

# Power status
ipmitool -I lanplus -H bmc-ip -U root -P 0penBmc power status

# Sensor list
ipmitool -I lanplus -H bmc-ip -U root -P 0penBmc sensor list

# FRU data
ipmitool -I lanplus -H bmc-ip -U root -P 0penBmc fru print

# SEL
ipmitool -I lanplus -H bmc-ip -U root -P 0penBmc sel list

Common Issues

Sensors Not Appearing

# Check Entity Manager
journalctl -u entity-manager

# Verify configuration
cat /usr/share/entity-manager/configurations/*.json

# Check dbus-sensors
journalctl -u dbus-sensors

Power Control Fails

# Check GPIO configuration
cat /sys/kernel/debug/gpio

# Check state manager
journalctl -u phosphor-state-manager-host

# Verify device tree GPIO nodes

Network Issues

# Check driver
dmesg | grep -i eth

# Check systemd-networkd
systemctl status systemd-networkd
journalctl -u systemd-networkd

Automated Testing

Robot Framework

*** Test Cases ***
Verify BMC State Is Ready
    ${state}=    Get BMC State
    Should Be Equal    ${state}    Ready

Verify Power On Works
    Power On Host
    Wait Until Host Is Running
    ${state}=    Get Host State
    Should Be Equal    ${state}    Running

Next Steps

References


Prerequisites: Working OpenBMC build on target hardware


Back to top

OpenBMC Guide Tutorial is not affiliated with the OpenBMC project. Content is provided for educational purposes.

This site uses Just the Docs, a documentation theme for Jekyll.