FIG. 7 shows an illustrative flowchart of steps that may be implemented by a hazard detection system when implementing a software update according to an embodiment. FIG. 7 may represent a relatively generic hazard detection system implantation for updating software, whereas FIGS. 8, 10, and 12 may represent relatively more specific hazard detection system implementations for updating software. Starting with step 702, an indication may be received to initiate a software update. For example, a software update timer (e.g., timer initiated request 524) may cause the hazard system to initiate a software update. As another example, a user may initiate a software update by pressing a button for at least a predetermined period of time (or a sequence of buttons within a predetermined period of time), communicating a request to the hazard system either wirelessly or by a wired connection, etc. As yet another example, the indication may be received when the hazard detection system is connected to a computer via physical port 528. In response to receiving this indication, the software update module, for example, may perform a system status check to determine whether to continue with the software update, as indicated by step 704. For example, system status check module 512 may verify that none of the state machines are in an alarm or pre-alarm state and that the sufficient power levels are present. If the system status check fails, then the hazard system may end the software update, as indicated by step 708.