GPIO0 on PixelBlaze V3

I have a V3 PixelBlaze and using GPIO0/25/26 as follows:

pinMode(0, INPUT_PULLUP)
pinMode(25, INPUT_PULLUP)
pinMode(26, INPUT_PULLUP)

I have a external USB input to map the pins. GPIO25 and GPIO26 works fine.
I cab read them correctly using

digitalRead(0)
digitalRead(25)
digitalRead(26)

digitalRead(0) typically works fine, however, when the external signal is connected to GPIO0 after V3 board already up and running, it was read incorrect (always 0). I have to press the reset button on V3, then everything back to normal. This behavior is different than GPIO25/GPIO26.

I wonder if there is any suggestion on how to handle it (reset button is the last resort).

Thanks!

GPIO 0 has a special function on ESP32 microcontrollers. If it is pulled low during startup, it will put it in a bootloader mode, and won’t work until reset. It may not be an issue, but something to be aware of!

The pinMode should only need to be called once, and could be in the main code body, while the digitalRead calls might be best handled in beforeRender, sampled once per animation frame.

I can’t think of any reason why it wouldn’t work normally otherwise.

What kind of signal is connected, and what possible voltages could it be? The GPIO on Pixelblaze are not designed for anything above 3.3V, or below 0 volts.