The Thermal Subsystem module in tlBMC manages Redfish routes related to thermal monitoring and cooling resources. This includes retrieving details of the Thermal Subsystem itself and managing the collections of Fans.
These routes are implemented in the C++ files thermal_subsystem.cc and fan.cc.
The Thermal Subsystem routes are registered if the configuration flag sensor_collector_module.thermal_control_sub_module.enabled is set to true in the Central Configuration.
/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem{ChassisId}.Store.@odata.id and @odata.type (#ThermalSubsystem.v1_0_0.ThermalSubsystem)Name and Id (both set to “Thermal Subsystem”)/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem/FansStatus (Health: OK, State: Enabled)/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem/Fans{ChassisId} from the topology and returns a collection of links./redfish/v1/Chassis/{ChassisId}/ThermalSubsystem/Fans/{FanId}Model and HotPluggable from the Store topology.Location/PartLocation/LocationType).SpeedPercent:DataSourceUri: Links to the sensor resource (e.g. /redfish/v1/Chassis/{ChassisId}/Sensors/fanpwm_{pwm_sensor_name}).Reading: Current fan speed percentage (PWM).SpeedRPM: Current fan speed in RPM (Tachometer).The following central configurations in the SensorCollectorModule affect this module:
| Field Name | Type | Default | Description |
|---|---|---|---|
sensor_collector_module.thermal_control_sub_module.enabled | bool | false | Gates the registration of all Thermal Subsystem and Fan routes. If enabled, the legacy Thermal link under Chassis is omitted and replaced by ThermalSubsystem. |
The following JSON snippet demonstrates a sample Redfish representation of a ThermalSubsystem resource (with specific platform identifiers redacted) as exposed over HTTP GET requests:
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem", "@odata.type": "#ThermalSubsystem.v1_0_0.ThermalSubsystem", "Fans": { "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans" }, "Id": "ThermalSubsystem", "Name": "Thermal Subsystem", "Status": { "Health": "OK", "State": "Enabled" } }
And the corresponding Fan Collection resource representation (/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans):
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans", "@odata.type": "#FanCollection.FanCollection", "Description": "The collection of Fan resource instances", "Members": [ { "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans/fan0" }, { "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans/fan1" } ], "Members@odata.count": 2, "Name": "Fan Collection" }
A detailed representation of a specific Fan resource instance (/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans/fan0):
{ "@odata.id": "/redfish/v1/Chassis/Chassis_0/ThermalSubsystem/Fans/fan0", "@odata.type": "#Fan.v1_3_0.Fan", "HotPluggable": true, "Id": "fan0", "Location": { "PartLocation": { "LocationType": "Connector", "ServiceLabel": "FAN0" } }, "Model": "model", "Name": "fan0", "SpeedPercent": { "DataSourceUri": "/redfish/v1/Chassis/Chassis_0/Sensors/fanpwm_fan0_pwm", "Reading": 50.5, "SpeedRPM": 5000 }, "Status": { "Health": "OK", "State": "Enabled" } }
The following protobuf schemas define the internal representations of Fan properties and topology:
central_config.proto: Defines the ThermalControlSubmodule registration flag.
fru.proto: Defines the FanInfo message containing static properties.
topology_config.proto: Details the parent-child relationships between Chassis and Fans.
redfish/routes/thermal_subsystem.cc
redfish/routes/fan.cc
redfish/routes/all_routes.cc
configs/entity_config_json_impl.cc