Skip to content

15. Chassis

15.1 Overview

The Chassis resource represents the physical enclosure of the system, including sensors, power, and enclosure monitoring features. In this implementation, the Chassis provides the following functionalities:

Intrusion Sensor Detects chassis cover opening events. This feature allows administrators to monitor physical tampering or unauthorized access.

Buzzer Control Provides an audible alarm that can be manually triggered via API or automatically activated when an intrusion is detected.

Power Good (PGOOD) Reports the current power state of the chassis, including the status of individual power supplies and whether system power is good.

CPU / GPU Usage Provides real-time utilization metrics for the system CPUs and GPUs. This functionality exposes the percentage of processing resources currently in use. The CPU and GPU usage values are updated every 10 seconds.

CPU / GPU Temperature Reports temperature readings for each CPU and GPU, enabling administrators to monitor thermal conditions and detect cooling or thermal issues. The CPU and GPU temperature values are updated every 10 seconds.

Fan Speed Reports the rotational speed of system cooling fans, measured in revolutions per minute (RPM). This metric allows administrators to monitor fan operation and verify that adequate airflow is being provided to maintain proper system cooling. Fan speed values are updated every 10 seconds.

⚠️ Hardware Dependency These features require corresponding hardware support:

Intrusion detection requires a physical intrusion sensor.

Buzzer control requires a connected buzzer device.

Power Good reporting requires PSU monitoring and chassis power management hardware.

If the hardware does not support a requested feature, the service will return a 403 Forbidden status code.

15.2 API Endpoints

Method Endpoint Description
GET /redfish/v1/Chassis Retrieve the collection of chassis resources.
GET /redfish/v1/Chassis/{ChassisId} Retrieve details of a specific chassis, including links to sensors and power.
PATCH /redfish/v1/Chassis/{ChassisId} Modify the buzzer related settings.
GET /redfish/v1/Chassis/{ChassisId}/Sensors Retrieve the collection of sensors associated with this chassis.
GET /redfish/v1/Chassis/{ChassisId}/Sensors/{SensorId} Retrieve the chassis intrusion/CPU usage/GPU usage/CPU temperature/GPU temperature sensor state.
PATCH /redfish/v1/Chassis/{ChassisId}/Sensors/{SensorId} Modify the chassis intrusion sensor setting.
GET /redfish/v1/Chassis/{ChassisId}/Power Retrieve power-related information and PGOOD state of the chassis.
POST /redfish/v1/Chassis/{ChassisId}/Actions/Oem/ERMI.Buzzer.Activate Manually activate the buzzer.
POST /redfish/v1/Chassis/{ChassisId}/Actions/Oem/ERMI.Buzzer.Deactivate Manually deactive the buzzer.

Get Chassis Collection

Retrieve the collection of chassis resources.

URI: /redfish/v1/Chassis

Method: GET

Response:

HTTP Status Code: 200 OK

The response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis",
    "@odata.type": "#ChassisCollection.ChassisCollection",
    "Name": "Chassis Collection",
    "Members@odata.count": 1,
    "Members": [
        {
            "@odata.id": "/redfish/v1/Chassis/1"
        }
    ]
}

Get Chassis Resource

Retrieves detailed information about a specific chassis, including references to sensors and power resources.

URI: /redfish/v1/Chassis/{ChassisId}

Method: GET

Response:

HTTP Status Code: 200 OK

The response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1",
    "@odata.type": "#Chassis.v1_25_0.Chassis",
    "Id": "1",
    "Name": "Main System Chassis",
    "ChassisType": "Standalone",
    "Status": {
        "State": "Enabled",
        "Health": "OK"
    },
    "PhysicalSecurity": {
        "IntrusionSensor": "None",
        "IntrusionSensorNumber": 0
    },
    "Sensors": {
        "@odata.id": "/redfish/v1/Chassis/1/Sensors"
    },
    "Power": {
        "@odata.id": "/redfish/v1/Chassis/1/Power"
    },
    "Oem": {
        "ERMI": {
            "Buzzer": {
                "AutoTriggerOnIntrusion": false, 
                "CurrentState": "Off", 
                "Polarity": "TriggerLow" 
            }
        }
    },
    "Actions": {
        "Oem": {
            "#Buzzer.Activate": {
                "target": "/redfish/v1/Chassis/1/Actions/Oem/ERMI.Buzzer.Activate",
                "title": "Activate Buzzer"
            },
            "#Buzzer.Deactivate": {
                "target": "/redfish/v1/Chassis/1/Actions/Oem/ERMI.Buzzer.Deactivate",
                "title": "Deactivate Buzzer"
            }
        }
    }
}

Response Properties:

Property Type Description
PhysicalSecurity.IntrusionSensor string Indicates the state of the chassis intrusion detection sensor. If no sensor exists, the service should report None. If the chassis cover or housing has been opened or tampered with, the value is HardwareInrupt; otherwise, the value is Normal.
PhysicalSecurity.IntrusionSensorNumber string Identifies the numerical instance of the intrusion sensor, useful when a chassis has multiple intrusion sensors.
Oem.ERMI.Buzzer.AutoTriggerOnIntrusion boolean Automatically activated when an intrusion is detected.
Oem.ERMI.Buzzer.CurrentState string Indicates the current state of the buzzer. The valid values are On and Off.
Oem.ERMI.Buzzer.Polarity string Indicates the trigger polarity of the buzzer. Valid values are TriggerLow and TriggerHigh.

Note

If the hardware does not support this feature, the Sensors, Oem, and Actions properties will not be available.
Clients should not assume their presence in all chassis resources.

Get Sensor Collection

Retrieve the collection of sensor resources.

URI: /redfish/v1/Chassis/{ChassisId}/Sensors

Method: GET

Response:

HTTP Status Code: 200 OK

The response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Sensors",
    "@odata.type": "#SensorCollection.SensorCollection",
    "Members@odata.count": 1,
    "Name": "Chassis Sensors Collection",
    "Members":[
        {
            "@odata.id": "/redfish/v1/Chassis/1/Sensors/IntrusionSensor1"
        }
    ]
}

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

Get the Specified Sensor Information

Retrieves the specified sensor information.

URI: /redfish/v1/Chassis/{ChassisId}/Sensors/{SensorId}

Method: GET

Response:

HTTP Status Code: 200 OK

The intrusion sensor response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Sensors/IntrusionSensor1",
    "@odata.type": "#Sensor.v1_8_1.Sensor",
    "Id": "IntrusionSensor1",
    "Name": "Chassis Intrusion Sensor1",
    "ReadingType": "Discrete",
    "Reading": "Normal",
    "PhysicalContext": "Chassis",
    "Status": {
        "State": "Enabled",
        "Health": "OK"
    },
    "Oem": {
        "ERMI": {
            "Polarity": "TriggerLow" 
        }
    }
}

The CPU/GPU usage sensor response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Sensors/CPU1Usage",
    "@odata.type": "#Sensor.v1_8_1.Sensor",
    "Id": "CPU1Usage",
    "Name": "CPU #1 Usage",
    "ReadingType": "Percentage",
    "Reading": 7.53,
    "ReadingUnits": "%",
    "PhysicalContext": "Processor",
    "Precision": 2,
    "ReadingRangeMin": 0,
    "ReadingRangeMax": 100,
    "Status": {
        "State": "Enabled",
        "Health": "OK"
    },
    "Thresholds": {
        "LowerCaution": {
            "Reading": 0
        },
        "UpperCaution": {
            "Reading": 100
        },
        "UpperCautionUser": {
            "Reading": 80,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -10,
            "HysteresisDuration": "PT20S"
        }
    }
}

The CPU/GPU temperature sensor response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Sensors/CPUTemp",
    "@odata.type": "#Sensor.v1_8_1.Sensor",
    "Id": "CPUTemp",
    "Name": "CPU Temperature",
    "ReadingType": "Physical",
    "Reading": 37,
    "ReadingUnits": "Cel",
    "PhysicalContext": "CPU",
    "Precision": 2,
    "ReadingRangeMin": -25,
    "ReadingRangeMax": 85,
    "Status": {
        "State": "Enabled",
        "Health": "OK"
    },
    "Thresholds": {
        "LowerCaution": {
            "Reading": -25
        },
        "UpperCaution": {
            "Reading": 85
        },
        "LowerCautionUser": {
            "Reading": -10,
            "Activation": "Decreasing",
            "DwellTime": "PT20S",
            "HysteresisReading": 5,
            "HysteresisDuration": "PT20S"
        },
        "UpperCautionUser": {
            "Reading": 50,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -10,
            "HysteresisDuration": "PT20S"
        }
    }
}

The FAN speed sensor response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Sensors/CPUTemp",
    "@odata.type": "#Sensor.v1_8_1.Sensor",
    "Id": "Fan1Speed",
    "Name": "FAN 1 Speed",
    "ReadingType": "Fan",
    "Reading": 3700,
    "ReadingUnits": "RPM",
    "PhysicalContext": "Fan",
    "Precision": 0,
    "ReadingRangeMin": 0,
    "ReadingRangeMax": 8000,
    "Status": {
        "State": "Enabled",
        "Health": "OK"
    },
    "Thresholds": {
        "LowerCaution": {
            "Reading": 0
        },
        "UpperCaution": {
            "Reading": 8000
        },
        "LowerCautionUser": {
            "Reading": 1000,
            "Activation": "Decreasing",
            "DwellTime": "PT20S",
            "HysteresisReading": 100,
            "HysteresisDuration": "PT20S"
        },
        "UpperCautionUser": {
            "Reading": 6000,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -1000,
            "HysteresisDuration": "PT20S"
        }
    }
}

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

HTTP Status Code: 404 Not Found

The specified sensor information could not be found, the service will respond with HTTP status code 404 Not Found.

Response Properties:

Property Type Description
ReadingType string Indicates the type of data reported by the sensor.
Reading string or integer The current value or state reported by the sensor. In intrusion sensor, if the chassis cover or housing has been opened or tampered with, the value is HardwareIntrusion; otherwise, the value is Normal.
ReadingUnits string The units of the reading and thresholds.
PhysicalContext string The area or device to which this sensor measurement applies.
Precision string The number of significant digits in the reading.
ReadingRangeMin string The minimum possible value for this sensor.
ReadingRangeMax string The maximum possible value for this sensor.
Thresholds object The set of thresholds defined for a sensor.
Thresholds.LowerCautionUser object A user-defined value at which the reading is considered below normal range.
Thresholds.LowerCautionUser.Reading integer The threshold value.
Thresholds.LowerCautionUser.Activation string The direction of crossing that activates this threshold.
Thresholds.LowerCautionUser.DwellTime string The duration the sensor value must violate the threshold before the threshold is activated.
Thresholds.LowerCautionUser.HysteresisReading string The reading offset from the threshold value required to clear the threshold.
Thresholds.LowerCautionUser.HysteresisDuration string The duration the sensor value must not violate the threshold before the threshold is deactivated.
Thresholds.UpperCautionUser object A user-defined value at which the reading is considered above normal range.
Thresholds.UpperCautionUser.Reading integer The threshold value.
Thresholds.UpperCautionUser.Activation string The direction of crossing that activates this threshold.
Thresholds.UpperCautionUser.DwellTime string The duration the sensor value must violate the threshold before the threshold is activated.
Thresholds.UpperCautionUser.HysteresisReading string The reading offset from the threshold value required to clear the threshold.
Thresholds.UpperCautionUser.HysteresisDuration string The duration the sensor value must not violate the threshold before the threshold is deactivated.
Oem.ERMI.Polarity string Indicates the trigger polarity of the intrusion sensor. Valid values are TriggerLow and TriggerHigh.

Get Power Resource

Retrieve power-related information and PGOOD state of the chassis.

URI: /redfish/v1/Chassis/{ChassisId}/Power

Method: GET

Response:

HTTP Status Code: 200 OK

The response body is shown below:

{
    "@odata.id": "/redfish/v1/Chassis/1/Power",
    "@odata.type": "#Power.v1_7_2.Power",
    "Id": "Power",
    "Name": "Chassis Power Subsystem",
    "PowerSupplies": [
        {
            "MemberId": "1",
            "Name": "PSU1",
            "Status": {
                "State": "Enabled",
                "Health": "OK"
            }
        }
    ]
}

Response Properties:

Property Type Description
PowerSupplies[0].Status.State string When the hardware does not support Power Good detection, the State property will be reported as Disabled.
PowerSupplies[0].Status.Health string When the hardware supports Power Good detection, the Health property will report OK if power is detected, and Critical if no power is detected.

Configure Buzzer Setting

Configure the buzzer settings, including trigger polarity and automatic activation.

URI: /redfish/v1/Chassis/{ChassisId}

Method: PATCH

Request Body

{
    "Oem": {
        "ERMI": {
            "Buzzer": {
                "AutoTriggerOnIntrusion": false, 
                "Polarity": "TriggerLow" 
            }
        }
    }
}

Request Properties:

Property Type Description
Oem.ERMI.Buzzer.AutoTriggerOnIntrusion boolean Automatically activated when an intrusion is detected.
Oem.ERMI.Buzzer.Polarity string Indicates the trigger polarity of the buzzer. Valid values are TriggerLow and TriggerHigh.

Response:

HTTP Status Code: 204 No Content

If the operation is successful, a status code 204 No Content will be returned.

HTTP Status Code: 400 Bad Request

If the paramter of the request body is invalid, a status code 400 Bad Request will be returned.

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

Configure Sensor Setting

The PATCH method supports partial updates to sensor properties, including polarity and threshold settings.

URI: /redfish/v1/Chassis/{ChassisId}/Sensors/{SensorId}

Method: PATCH

Request Body

An example request body for configuring the polarity of the intrusion sensor is shown below:

{
    "Oem": {
        "ERMI": {
            "Polarity": "TriggerLow" 
        }
    }
}

An example request body for configuring the upper threshold of the CPU/GPU usage sensor is shown below:

{
    "Thresholds": {
        "UpperCautionUser": {
            "Reading": 80,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -10,
            "HysteresisDuration": "PT20S"
        }
    }
}

An example request body for configuring the upper threshold of the CPU/GPU temperature sensor is shown below:

{
    "Thresholds": {
        "LowerCautionUser": {
            "Reading": -10,
            "Activation": "Decreasing",
            "DwellTime": "PT20S",
            "HysteresisReading": 5,
            "HysteresisDuration": "PT20S"
        },
        "UpperCautionUser": {
            "Reading": 50,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -10,
            "HysteresisDuration": "PT20S"
        }
    }
}

An example request body for configuring the upper threshold of the FAN sensor is shown below:

{
    "Thresholds": {
        "UpperCautionUser": {
            "Reading": 6000,
            "Activation": "Increasing",
            "DwellTime": "PT20S",
            "HysteresisReading": -1000,
            "HysteresisDuration": "PT20S"
        }
    }
}

Note

If you want to remove an existing UpperCautionUser or LowerCautionUser configuration, set the property to null, for example:

{
    "Thresholds": {
        "UpperCautionUser": null
    }
}

Request Properties:

Property Type Description
Oem.ERMI.Polarity string Indicates the trigger polarity of the intrusion sensor. Valid values are TriggerLow and TriggerHigh.
Thresholds.LowerCautionUser.Reading integer The threshold value.
Thresholds.LowerCautionUser.Activation string The direction of crossing that activates this threshold.
Thresholds.LowerCautionUser.DwellTime string The duration the sensor value must violate the threshold before the threshold is activated.
Thresholds.LowerCautionUser.HysteresisReading string The reading offset from the threshold value required to clear the threshold.
Thresholds.LowerCautionUser.HysteresisDuration string The duration the sensor value must not violate the threshold before the threshold is deactivated.
Thresholds.UpperCautionUser.Reading integer The threshold value.
Thresholds.UpperCautionUser.Activation string The direction of crossing that activates this threshold.
Thresholds.UpperCautionUser.DwellTime string The duration the sensor value must violate the threshold before the threshold is activated.
Thresholds.UpperCautionUser.HysteresisReading string The reading offset from the threshold value required to clear the threshold.
Thresholds.UpperCautionUser.HysteresisDuration string The duration the sensor value must not violate the threshold before the threshold is deactivated.

Response:

HTTP Status Code: 204 No Content

If the operation is successful, a status code 204 No Content will be returned.

HTTP Status Code: 400 Bad Request

If the paramter of the request body is invalid, a status code 400 Bad Request will be returned.

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

Activate the Buzzer

Activate the buzzer.

URI: /redfish/v1/Chassis/{ChassisId}/Actions/Oem/ERMI.Buzzer.Activate

Method: POST

Response:

HTTP Status Code: 204 No Content

If the operation is successful, a status code 204 No Content will be returned.

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

Deactivate the Buzzer

Deactivate the buzzer.

URI: /redfish/v1/Chassis/{ChassisId}/Actions/Oem/ERMI.Buzzer.Deactivate

Method: POST

Response:

HTTP Status Code: 204 No Content

If the operation is successful, a status code 204 No Content will be returned.

HTTP Status Code: 403 Forbidden

When the hardware does not support this functionality, the service will respond with HTTP status code 403 Forbidden.

Next section