A method of monitoring I2C bus status, using a Baseboard Management Controller, BMC, and a hardware watchdog, HW, circuit, the method comprising: detecting, using the HW circuit, a failure of an I2C bus; determining if the HW circuit can auto reset I2C devices on the I2C bus; if it is determined that the HW circuit can auto reset the I2C devices on the I2C bus: resetting, using the HW circuit, the I2C devices, and if it is determined that the HW circuit cannot auto reset the I2C devices on the I2C bus: reporting, using the HW circuit, detected failure to the BMC; and processing, using the BMC, the detected failure, wherein the processing further comprises: resetting, using the BMC, the I2C devices; and if the resetting of the I2C device fails to resolve the failure of the I2C bus, testing the I2C device to determine a cause of the failure of the I2C bus, wherein the testing further comprises evaluating, in turn, each one of the I2C devices by: isolating the selected one of the I2C devices; checking the I2C bus status after the isolating; and recording, if it is determined for the one of the I2C devices that the I2C bus status is not OK, a failure for the one of the I2C devices, wherein the evaluating is performed for all channels associated with a selected one of the I2C devices. detecting, using the HW circuit, a failure of an I2C bus; determining if the HW circuit can auto reset I2C devices on the I2C bus; if it is determined that the HW circuit can auto reset the I2C devices on the I2C bus: resetting, using the HW circuit, the I2C devices, and if it is determined that the HW circuit cannot auto reset the I2C devices on the I2C bus: reporting, using the HW circuit, detected failure to the BMC; and processing, using the BMC, the detected failure, wherein the processing further comprises: resetting, using the BMC, the I2C devices; and if the resetting of the I2C device fails to resolve the failure of the I2C bus, testing the I2C device to determine a cause of the failure of the I2C bus, wherein the testing further comprises evaluating, in turn, each one of the I2C devices by: isolating the selected one of the I2C devices; checking the I2C bus status after the isolating; and recording, if it is determined for the one of the I2C devices that the I2C bus status is not OK, a failure for the one of the I2C devices, wherein the evaluating is performed for all channels associated with a selected one of the I2C devices. resetting, using the HW circuit, the I2C devices, and if it is determined that the HW circuit cannot auto reset the I2C devices on the I2C bus: reporting, using the HW circuit, detected failure to the BMC; and processing, using the BMC, the detected failure, wherein reporting, using the HW circuit, detected failure to the BMC; and processing, using the BMC, the detected failure, wherein the processing further comprises: resetting, using the BMC, the I2C devices; and if the resetting of the I2C device fails to resolve the failure of the I2C bus, testing the I2C device to determine a cause of the failure of the I2C bus, wherein the testing further comprises resetting, using the BMC, the I2C devices; and if the resetting of the I2C device fails to resolve the failure of the I2C bus, testing the I2C device to determine a cause of the failure of the I2C bus, wherein the testing further comprises evaluating, in turn, each one of the I2C devices by: isolating the selected one of the I2C devices; checking the I2C bus status after the isolating; and recording, if it is determined for the one of the I2C devices that the I2C bus status is not OK, a failure for the one of the I2C devices, wherein isolating the selected one of the I2C devices; checking the I2C bus status after the isolating; and recording, if it is determined for the one of the I2C devices that the I2C bus status is not OK, a failure for the one of the I2C devices, wherein the evaluating is performed for all channels associated with a selected one of the I2C devices.