After 34 hours my test board with a 10K pullup on GPIO2 entered zombie mode.
GPIO2 is definitely high to the rail. Checked.
It is hard to imagine enough noise on GPIO2 to pulldown against a 10K pullup unless the DS18B20 brought the output low. Since the DS18B20 is also powered all the time, it should remain tri-state until there is a pulse on GPIO2 from the esp8266.
Does it really need 2K? That seems excessive and will probably affect using the GPIO2 as an input for I2C. 12K seems to show up on the Expressif schematic and the NodeMCU schematic for pullups and downs. I wonder if it is a typo?
I will add a pullup on GPIO0 and try again. But GPIO0 low would normally enter flash programming mode, not zombie mode.
MTD0 is jumpered either way on that schematic, Markus. ESP-01 does not have anything on that pin.
This said if one of the gpio pins has a pull up I don't get zombie mode anymore, like said in my last post more than 10000 reboots. Can anyone confirm this?
GeoNomad wrote:I will add a pullup on GPIO0 and try again. But GPIO0 low would normally enter flash programming mode, not zombie mode
I can confirm that awaking from sleep, GPIO0 low causes zombie mode and not UART flash mode, which is what happens on a power reset. Interesting that it is different and makes me wonder what else is different between a full power reset and a reset from sleep mode.
So, recommendation is now that both GPIO0 and GPIO2 MUST have pullups on them to reliably awake from node.dsleep(). 2K to 12K seem to be advised by different sources.
it is possible that UOTXD and MTD0 also require being pulled up or down for total reliability. I don't believe MTD0 has a connection on the ESP-01, but then the ESP-01 is not designed for sleep as there is no jumper for pin 8 to 32...