Skip to content

Instantly share code, notes, and snippets.

@darconeous
Last active July 10, 2024 23:44
Show Gist options
  • Save darconeous/b55d9d1c01ac67f356d86f82a56a6271 to your computer and use it in GitHub Desktop.
Save darconeous/b55d9d1c01ac67f356d86f82a56a6271 to your computer and use it in GitHub Desktop.
kidde-interconnect

Original "dumb" smoke detector interconnect sounds the siren on all interconnected smoke detectors when a 9-to-12 volt (referenced to neutral/white) direct-current signal is continuously present on the signal wire (red). This still how pretty much all interconnected smoke alarms indicate a fire condition.

However, modern interconnected detectors are capable of detecting carbon monoxide and other conditions. When these conditions are signaled, they must be identified as something other than a smoke alarm by the other detectors. Ideally, any dumb smoke detectors sharing the interconnect signal should ignore these signals, even if they weren't designed with such multiplexed-signaling in mind.

Kidde came up with such a mechanism in 2000 and apparently patented it (6,791,453; Now possibly expired...?). While I think a patent on something like this is pretty silly, in this case, it is good news for us because it means we have some documentation!

Multiple types of interconnected alarms

From the abstract (emphasis mine):

Presented is a communications protocol for use by interconnected hazardous condition detectors, such as smoke and carbon monoxide detectors for use in dwellings and other structures. This communications protocol provides conventional signaling to indicate the presence of a smoke condition necessitating the generation of a smoke temporal pattern by all interconnected detectors. The protocol further defines a signaling method by which conventional smoke detectors that are incapable of providing temporal patterns other than that required for a smoke alarm condition will not be sent into an alarm mode of operation upon receipt of a signal other than the conventional smoke alarm signal. This communications protocol defines a pulsed signal to indicate a non-smoke alarm condition that is of a duration that will not trigger the conventional smoke alarms. To allow for the transmission of multiple hazardous conditions alarm notifications, as well as the transmission of additional hazardous condition detector control signals, the communications protocol utilizes a multi-bit signal transmitted via the conventional single signal I/O wire of currently existing interconnect wiring. Through the use of an 8 bit alarm signal, multiple hazardous conditions may be signaled as well as operating modes such as test, hush, reset, low battery, etc. Also presented are smoke, carbon monoxide, and combination hazardous condition detectors that utilize the communications protocol presented herein.

So their protocol has two big features:

  1. Allows an 8-bit alarm-type indication to be expressed on the signal wire. This enables supporting interconnected devices to be able to detect such conditions as being distinct from a smoke alarm.
  2. Such non-smoke alarm indications are structured in such a way as to not cause dumb interconnected smoke alarms to sound when a non-smoke-alarm signal is expressed on the signal wire.

Unfortunately the patent does not include a table of codes and their associated meanings, other than 10100101 meaning a carbon-monoxide alarm. However, it does cover the basic theory of operation and protocol encoding. The information in the patent seems to cover more than enough to allow the sufficiently-motivated to reverse engineer any undocumented details.


Ideally we would have a device that would have the following connections:

  1. Interconnect Signal (RED)
  2. Interconnect Neutral (WHITE)
  3. Interconnect Hot (BLACK)
  4. Power: 0v DC (Ground)
  5. Power: 9v-14v DC (Power)
  6. Input: Trigger Smoke Siren (Active Low, high-z input)
  7. Output: Smoke/Fire Alarm (Open-Drain, Active Low, 20mA max)
  8. Output: Carbon Monoxide Alarm (Open-Drain, Active Low, 20mA max)
  9. Output: Trouble (Open-Drain, OK:Low, Trouble:Float, 20mA max)

Ultimately we have two zones: The hot zone and the safe zone.

Hot Zone

In the hot zone, we would have connections for the black, white, and red lines for the smoke alarms, as well as a small power supply using passive components that gives us 9v and 5v. We use the 5v output to power an ATTiny, which monitors the signal (RED) line. The ATTiny has three pins that it uses to drive optoisolators.

A lot less stuff needs to be on the hot zone side, largely because we need this thing to work properly when the power is out. That means the only power we can depend on is the 12v input. We will need to have some sort of isolated 9-12v to 9v power supply for signaling. If we are going to do that, we might as well have an op-amp input for the red wire, so that we can be high-z (safer).

Safe Zone

In the safe zone, we have connections for a power supply input (9v-12v), as well as connections for three outputs and an input, which are connected to the optoisolators.

@mumbles1
Copy link

upon further reading of the patent it appears only the 2nd 4bits are allocated for signaling. the first 4bits should always stay the same (e.g. first 4bits = 1010) They only allow themselves 16 possible message combinations. But patent does indicate they could change the protocol to be 16 bits(e.g. 8 bit control word and 8 bit message.)

@ebo
Copy link

ebo commented Jul 12, 2021

I had totally forgotten about this gist also ;-) Anyway, as of 2021-04-30 the patent office listed this as being expired, and you can legally hack to your hearts content. I would have to check with a lawyer though, but I think that also releasing code which implemented patented technology has also gotten people sued for patent infringement -- other people benefited from its use without them getting a cut of the pie. The odd thing is that they are likely to sell more devices to people that want to monitor them in a unified way... Anyway, thanks for getting back to this and for further information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment