mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-09-09 13:56:17 +00:00
The V4's Vext rail switch is a PMOS: GPIO36 LOW turns the rail ON. The DTS drove it ACTIVE_HIGH, leaving the OLED (and its I2C pull-ups) unpowered — the rail floats at ~1.6V and SSD1306 init always fails with -ETIMEDOUT. Verified on hardware with a multimeter: GPIO36 high = 1.6V on Vext, GPIO36 low = 3.3V, display works. This matches what the working Arduino MeshCore firmware actually does with the pin, despite its PIN_VEXT_EN_ACTIVE=HIGH define: RefCountedDigitalPin::begin() initialises the pin to its *inactive* level (LOW), and the V4 OLED build constructs the display with a NULL periph_power (variants/heltec_v4/target.cpp) so nothing ever claims it HIGH. GPIO36 is therefore driven LOW continuously under Arduino — the exact state this fix reproduces via an ACTIVE_LOW boot-on regulator.