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
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:
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:
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.