===================================================== IPMI 1.5 Get Channel Authentication Capabilities Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 0h] = authentication_type[ 8b] [ 0h] = session_sequence_number[32b] [ 0h] = session_id[32b] [ 9h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 6h] = net_fn[ 6b] [ C8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 13h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 38h] = cmd[ 8b] [ Eh] = channel_number[ 4b] [ 0h] = reserved1[ 3b] [ 0h] = get_ipmi_v2.0_extended_data[ 1b] [ 3h] = maximum_privilege_level[ 4b] [ 0h] = reserved2[ 4b] IPMI Trailer: -------------- [ EAh] = checksum2[ 8b] ===================================================== IPMI 1.5 Get Channel Authentication Capabilities Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 0h] = authentication_type[ 8b] [ 0h] = session_sequence_number[32b] [ 0h] = session_id[32b] [ 10h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 7h] = net_fn[ 6b] [ 63h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 13h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 38h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 2h] = channel_number[ 8b] [ 1h] = authentication_type.none[ 1b] [ 0h] = authentication_type.md2[ 1b] [ 1h] = authentication_type.md5[ 1b] [ 0h] = authentication_type.reserved1[ 1b] [ 1h] = authentication_type.straight_password_key[ 1b] [ 0h] = authentication_type.oem_prop[ 1b] [ 0h] = authentication_type.reserved2[ 1b] [ 0h] = authentication_type.ipmi_v2.0_extended_capabilities_available[ 1b] [ 0h] = authentication_status.anonymous_login[ 1b] [ 0h] = authentication_status.null_username[ 1b] [ 1h] = authentication_status.non_null_username[ 1b] [ 0h] = authentication_status.user_level_authentication[ 1b] [ 0h] = authentication_status.per_message_authentication[ 1b] [ 0h] = authentication_status.k_g[ 1b] [ 0h] = authentication_status.reserved[ 2b] [ 0h] = channel_supports_ipmi_v1.5_connections[ 1b] [ 0h] = channel_supports_ipmi_v2.0_connections[ 1b] [ 0h] = reserved[ 6b] [ 0h] = oem_id[24b] [ 0h] = oem_auxiliary_data[ 8b] IPMI Trailer: -------------- [ 41h] = checksum2[ 8b] ===================================================== IPMI 1.5 Get Session Challenge Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 0h] = authentication_type[ 8b] [ 0h] = session_sequence_number[32b] [ 0h] = session_id[32b] [ 18h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 6h] = net_fn[ 6b] [ C8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 14h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 39h] = cmd[ 8b] [ 2h] = authentication_type[ 4b] [ 0h] = reserved[ 4b] [ BYTE ARRAY ... ] = user_name[16B] [ 6Dh 75h 6Eh 69h 6Eh 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] IPMI Trailer: -------------- [ CDh] = checksum2[ 8b] ===================================================== IPMI 1.5 Get Session Challenge Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 0h] = authentication_type[ 8b] [ 0h] = session_sequence_number[32b] [ 0h] = session_id[32b] [ 1Ch] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 7h] = net_fn[ 6b] [ 63h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 14h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 39h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 30144EFFh] = temp_session_id[32b] [ BYTE ARRAY ... ] = challenge_string[16B] [ 2Ah 7Dh 63h 3Ah B7h 77h D9h 0Ah ] [ 10h 2Fh 94h 24h 54h 26h 57h 01h ] IPMI Trailer: -------------- [ A8h] = checksum2[ 8b] ===================================================== IPMI 1.5 Activiate Session Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 0h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ FAh 0Ch 3Eh 1Eh B9h 3Eh 63h AEh ] [ 42h 50h A7h 36h BBh 51h 68h 5Fh ] [ 1Dh] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 6h] = net_fn[ 6b] [ C8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 15h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Ah] = cmd[ 8b] [ 2h] = authentication_type[ 4b] [ 0h] = reserved1[ 4b] [ 3h] = maximum_privilege_level[ 4b] [ 0h] = reserved2[ 4b] [ BYTE ARRAY ... ] = challenge_string[16B] [ 2Ah 7Dh 63h 3Ah B7h 77h D9h 0Ah ] [ 10h 2Fh 94h 24h 54h 26h 57h 01h ] [ 5D569219h] = initial_outbound_sequence_number[32b] IPMI Trailer: -------------- [ 70h] = checksum2[ 8b] ===================================================== IPMI 1.5 Activiate Session Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D569219h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ AAh 79h 68h 9Ah 4Eh 56h 6Ah 22h ] [ 67h 08h 21h E4h 1Ah DBh 9Ah 8Ch ] [ 12h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 7h] = net_fn[ 6b] [ 63h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 15h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Ah] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 2h] = authentication_type[ 4b] [ 0h] = reserved1[ 4b] [ 30144EFFh] = session_id[32b] [ 1h] = initial_inbound_sequence_number[32b] [ 3h] = maximum_privilege_level[ 4b] [ 0h] = reserved2[ 4b] IPMI Trailer: -------------- [ BBh] = checksum2[ 8b] ===================================================== IPMI 1.5 Set Session Privilege Level Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 1h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 0Ch EEh DFh 0Eh 53h 6Ch A2h 05h ] [ 42h 9Eh 56h 47h 93h 36h 73h 82h ] [ 8h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 6h] = net_fn[ 6b] [ C8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 16h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Bh] = cmd[ 8b] [ 3h] = privilege_level[ 4b] [ 0h] = reserved1[ 4b] IPMI Trailer: -------------- [ E9h] = checksum2[ 8b] ===================================================== IPMI 1.5 Set Session Privilege Level Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D56921Ah] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ D3h 3Eh 00h 7Dh CAh 5Ah EDh 55h ] [ BEh D6h C7h 4Ch 90h 0Ch F3h D4h ] [ 9h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 7h] = net_fn[ 6b] [ 63h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 16h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Bh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 3h] = privilege_level[ 4b] [ 0h] = reserved1[ 4b] IPMI Trailer: -------------- [ 4Ah] = checksum2[ 8b] ===================================================== IPMI 1.5 Get SDR Repository Info Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 2h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 65h 97h B9h 0Fh E5h B0h 46h 34h ] [ 41h 81h 62h 71h 46h C0h F1h 3Ch ] [ 7h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ Ah] = net_fn[ 6b] [ B8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 17h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 20h] = cmd[ 8b] IPMI Trailer: -------------- [ 3h] = checksum2[ 8b] ===================================================== IPMI 1.5 Get SDR Repository Info Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D56921Bh] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ B7h 07h 29h 7Dh ACh 71h D6h 2Ah ] [ 62h DBh 76h 0Fh A9h 38h 3Ch FDh ] [ 16h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ Bh] = net_fn[ 6b] [ 53h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 17h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 20h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 6Eh] = record_count[16b] [ AE20h] = free_space[16b] [ 4BC00782h] = 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] [ 3h] = modal_non_modal_sdr_repository_update_operation_supported[ 2b] [ 0h] = overflow_flag[ 1b] IPMI Trailer: -------------- [ D4h] = checksum2[ 8b] ===================================================== SDR Full Sensor Record ===================================================== [ D70h] = 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] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 10h] = 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] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = 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] [ 0h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 7h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ A1h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = 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] [ 8h] = 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] [ 22h] = nominal_reading[ 8b] [ 59h] = normal_maximum[ 8b] [ Dh] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ FFh] = upper_non_recoverable_threshold[ 8b] [ F0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = 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] [ CBh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 41h 4Eh 31h 5Fh 4Fh 55h 54h ] [ 4Ch 45h 54h 00h 00h 00h 00h 00h ] ===================================================== SDR Full Sensor Record ===================================================== [ D70h] = 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] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 10h] = 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] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = 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] [ 0h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 7h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ A1h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = 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] [ 8h] = 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] [ 22h] = nominal_reading[ 8b] [ 59h] = normal_maximum[ 8b] [ Dh] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ FFh] = upper_non_recoverable_threshold[ 8b] [ F0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = 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] [ CBh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 41h 4Eh 31h 5Fh 4Fh 55h 54h ] [ 4Ch 45h 54h 00h 00h 00h 00h 00h ] ===================================================== SDR Full Sensor Record ===================================================== [ D70h] = 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] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 10h] = 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] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = 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] [ 0h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 1h] = 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] [ 7h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ A1h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = 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] [ 8h] = 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] [ 22h] = nominal_reading[ 8b] [ 59h] = normal_maximum[ 8b] [ Dh] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ FFh] = upper_non_recoverable_threshold[ 8b] [ F0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = 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] [ CBh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 41h 4Eh 31h 5Fh 4Fh 55h 54h ] [ 4Ch 45h 54h 00h 00h 00h 00h 00h ] ===================================================== IPMI 1.5 Get Sensor Reading Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 3h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 50h 26h 35h F9h 2Dh 1Ch 87h E4h ] [ 30h DFh 59h 73h 27h D7h 6Eh 4Ch ] [ 8h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 4h] = net_fn[ 6b] [ D0h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 18h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 2Dh] = cmd[ 8b] [ 10h] = sensor_number[ 8b] IPMI Trailer: -------------- [ E2h] = checksum2[ 8b] ===================================================== IPMI 1.5 Get Sensor Reading Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D56921Ch] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 27h EFh 39h 32h D8h 9Bh 8Ah 10h ] [ 97h 0Eh 3Ah 9Bh 30h A5h 41h DAh ] [ Bh] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 5h] = net_fn[ 6b] [ 6Bh] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 18h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 13h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ C0h] = sensor_event_bitmask1[ 8b] IPMI Trailer: -------------- [ C0h] = checksum2[ 8b] ID | Name | Type | Reading | Units | Lower NR | Lower C | Lower NC | Upper NC | Upper C | Upper NR | Event ===================================================== IPMI 1.5 Get Sensor Thresholds Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 4h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 29h BFh B2h EBh 08h C6h 18h 33h ] [ E4h 8Dh 84h 31h 4Dh 09h 1Dh A7h ] [ 8h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 4h] = net_fn[ 6b] [ D0h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 19h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 27h] = cmd[ 8b] [ 10h] = sensor_number[ 8b] IPMI Trailer: -------------- [ E4h] = checksum2[ 8b] ===================================================== IPMI 1.5 Get Sensor Thresholds Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D56921Dh] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 48h 56h 08h 69h 57h 4Bh 3Eh 80h ] [ D7h F2h C6h 76h D0h 1Bh 7Bh FAh ] [ Fh] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 5h] = net_fn[ 6b] [ 6Bh] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 19h] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 27h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = readable_thresholds.lower_non_critical_threshold[ 1b] [ 1h] = readable_thresholds.lower_critical_threshold[ 1b] [ 0h] = readable_thresholds.lower_non_recoverable_threshold[ 1b] [ 0h] = readable_thresholds.upper_non_critical_threshold[ 1b] [ 1h] = readable_thresholds.upper_critical_threshold[ 1b] [ 0h] = readable_thresholds.upper_non_recoverable_threshold[ 1b] [ 0h] = reserved[ 2b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ F0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] IPMI Trailer: -------------- [ 53h] = checksum2[ 8b] 3440 | FAN1_OUTLET | Fan | 12621.48 | RPM | N/A | 0.00 | N/A | N/A | 999.20 | N/A | 'OK' ===================================================== IPMI 1.5 Close Session Request ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5h] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 8Ch 61h 84h F9h 1Eh 4Ch CDh 48h ] [ 79h 87h 73h 32h B5h 41h EDh 94h ] [ Bh] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 6h] = net_fn[ 6b] [ C8h] = checksum1[ 8b] [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 1Ah] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Ch] = cmd[ 8b] [ 30144EFFh] = session_id[32b] IPMI Trailer: -------------- [ 4Ah] = checksum2[ 8b] ===================================================== IPMI 1.5 Close Session Response ===================================================== RMCP Header: ------------ [ 6h] = version[ 8b] [ 0h] = reserved[ 8b] [ FFh] = sequence_number[ 8b] [ 7h] = message_class.class[ 5b] [ 0h] = message_class.reserved[ 2b] [ 0h] = message_class.ack[ 1b] IPMI Session Header: -------------------- [ 2h] = authentication_type[ 8b] [ 5D56921Eh] = session_sequence_number[32b] [ 30144EFFh] = session_id[32b] [ BYTE ARRAY ... ] = authentication_code[16B] [ 1Dh 2Bh 52h C1h 4Ch 4Eh EBh FBh ] [ F6h 01h E0h 2Ch 22h 75h 46h 04h ] [ 8h] = ipmi_msg_len[ 8b] IPMI Message Header: -------------------- [ 81h] = rq_addr[ 8b] [ 0h] = rq_lun[ 2b] [ 7h] = net_fn[ 6b] [ 63h] = checksum1[ 8b] [ 20h] = rs_addr[ 8b] [ 0h] = rs_lun[ 2b] [ 1Ah] = rq_seq[ 6b] IPMI Command Data: ------------------ [ 3Ch] = cmd[ 8b] [ 0h] = comp_code[ 8b] IPMI Trailer: -------------- [ 3Ch] = checksum2[ 8b]