Early this morning, I heard fire engines nearby, and then once I felt the rumbling (the FD has some big trucks around here) and saw the blinking lights, I knew they were on my block. I went out to my neighbor's house to see what was going on.

Turns out, the neighbor's carbon monoxide detector had sounded. The detector was upstairs in the main bedroom. Everyone evacuated and waited outside. The fire department responded--said they don't have a CO meter, and the fact that it was the upstairs detector while no appliances were running (no heat on, of course) means that it must be a faulty CO alarm.

The fire department had the gas company notified to respond, as a precaution.

Something odd, though, is that while we were waiting for the gas company, his upstairs smoke alarm went off. It was not the "chirp" of a low battery, but the full alarm. I told him to call 9-1-1 again. 9-1-1 told him to wait for the gas company, that there was no need for any further response. (There was no sign of fire and no smell of smoke.)

The gas company responded--the results were negative for CO.

His attic fan doesn't work, there were no appliances running (except for air conditioner window units), nobody was cooking, etc. What would cause both a CO alarm and a separate smoke alarm to sound?

One thing that my neighbor said to me that (to me) can possibly be an explanation is that he woke up early (not realizing he didn't need to be up yet) and took a shower. Shortly after, the CO alarm sounded. Could steam from a shower cause a false alarm?

CO detectors are known for false alarms, better to have one that works too good than one that goes off when it is too late. It could have also been a low battery alarm, most people call the FD when the low battery alarm goes off because they think it is in alarm. As for the smoke alarm it could have been dirty and happened to go off today, when you change the batteries you should also blow some compressed air into the chamber to clean it out, dust is a particle and will set off an alarm if there is enough of it.