===================================================== Get SDR Repository Info Request ===================================================== [ 20h] = cmd[ 8b] ===================================================== Get SDR Repository Info Response ===================================================== [ 20h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 17Ch] = record_count[16b] [ AE2Fh] = free_space[16b] [ 0h] = most_recent_addition_timestamp[32b] [ 0h] = most_recent_erase_timestamp[32b] [ 1h] = get_sdr_repository_allocation_info_command_supported[ 1b] [ 1h] = reserve_sdr_repository_command_supported[ 1b] [ 1h] = partial_add_sdr_command_supported[ 1b] [ 1h] = delete_sdr_command_supported[ 1b] [ 0h] = reserved[ 1b] [ 1h] = modal_non_modal_sdr_repository_update_operation_supported[ 2b] [ 0h] = overflow_flag[ 1b] ===================================================== SDR Full Sensor Record ===================================================== [ 120h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 3h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 81h] = sensor_number[ 8b] [ 1Dh] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 1h] = sensor_initialization.init_sensor_type[ 1b] [ 1h] = sensor_initialization.init_hysteresis[ 1b] [ 1h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 1h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 0h] = sensor_capabilities.event_message_control_support[ 2b] [ 2h] = sensor_capabilities.threshold_access_support[ 2b] [ 2h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 0h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ 1h] = event_reading_type_code[ 8b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 1h] = threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b] [ 1h] = lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.reserved[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 1h] = threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.upper_critical_threshold_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.upper_non_recoverable_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.reserved[ 1b] [ 0h] = readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b] [ 1h] = readable_threshold_mask.lower_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_non_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.reserved1[ 1b] [ 0h] = readable_threshold_mask.reserved2[ 1b] [ 0h] = settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.reserved1[ 1b] [ 0h] = settable_threshold_mask.reserved2[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 12h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 80h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = sensor_direction[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 1h] = analog_characteristics_flag.nominal_reading[ 1b] [ 1h] = analog_characteristics_flag.normal_max[ 1b] [ 1h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 10h] = nominal_reading[ 8b] [ FFh] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ FFh] = upper_non_recoverable_threshold[ 8b] [ FFh] = upper_critical_threshold[ 8b] [ FFh] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 13h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ D0h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 31h 20h 46h 72h ] [ 6Fh 6Eh 74h 20h 54h 61h 63h 68h ] ===================================================== SDR Full Sensor Record ===================================================== [ 120h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 3h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 81h] = sensor_number[ 8b] [ 1Dh] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 1h] = sensor_initialization.init_sensor_type[ 1b] [ 1h] = sensor_initialization.init_hysteresis[ 1b] [ 1h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 1h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 0h] = sensor_capabilities.event_message_control_support[ 2b] [ 2h] = sensor_capabilities.threshold_access_support[ 2b] [ 2h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 0h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ 1h] = event_reading_type_code[ 8b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 1h] = threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b] [ 1h] = lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.reserved[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 1h] = threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.upper_critical_threshold_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.upper_non_recoverable_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.reserved[ 1b] [ 0h] = readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b] [ 1h] = readable_threshold_mask.lower_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_non_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.reserved1[ 1b] [ 0h] = readable_threshold_mask.reserved2[ 1b] [ 0h] = settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.reserved1[ 1b] [ 0h] = settable_threshold_mask.reserved2[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 12h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 80h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = sensor_direction[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 1h] = analog_characteristics_flag.nominal_reading[ 1b] [ 1h] = analog_characteristics_flag.normal_max[ 1b] [ 1h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 10h] = nominal_reading[ 8b] [ FFh] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ FFh] = upper_non_recoverable_threshold[ 8b] [ FFh] = upper_critical_threshold[ 8b] [ FFh] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 13h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ D0h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 31h 20h 46h 72h ] [ 6Fh 6Eh 74h 20h 54h 61h 63h 68h ] Sensor reading/event bitmask not available: sensor not owned by BMC ID | Name | Type | Reading | Units | Event 288 | Fan 1 Front Tach | Fan | N/A | RPM | N/A