🌿 C6 Enviro Installer
← Miroslav DIY
c6.miroslav.diy Ā· BME680 + solar Ā· sleepy Zigbee end device

Flash your C6 Enviro sensor

This installs the firmware for an ESP32-C6 Super Mini wired to a BME680 environment sensor and powered by a Waveshare Solar Power Manager + Li-ion cell. Every 3 seconds (configurable 3 s…1 h from Home Assistant) it wakes from deep sleep, measures temperature Ā· humidity Ā· pressure Ā· gas resistance Ā· battery voltage, reports everything to HA over Zigbee2MQTT, and goes back to sleep.

Flashing happens entirely in your browser over USB — nothing is uploaded anywhere and no credentials are baked in (the device pairs over Zigbee). Wiring: diagram below Ā· live boot log: serial console.

Install firmware

Plug the ESP32-C6 Super Mini into a USB port with a data cable, then press Connect & Flash and pick the device's serial port when prompted.

Advanced options

The C6 uses native USB-Serial/JTAG, where baud is virtual — leave the speed at 115200 unless you are flashing through an external UART adapter. Routine updates preserve Zigbee zb_storage; enable erase-first only for explicit factory-new recovery.

If the port doesn't appear or connecting fails

The C6's native USB-Serial/JTAG auto-reset into the bootloader is sometimes flaky. Force download mode by hand:

  1. Unplug the board.
  2. Hold the BOOT button (GPIO9).
  3. Plug it back in while still holding BOOT.
  4. Release BOOT after about 2 seconds.
  5. Press Connect & Flash again at 115200 with erase-first off.

Note: once the enviro firmware is running, the device deep-sleeps between cycles and its USB port comes and goes — that is normal. To flash again, use the hold-BOOT procedure above (it keeps the chip awake in the bootloader).

Power settings — apply after pairing

Choose the desired cadence and gas-heater state, then copy the exact Zigbee2MQTT payload. This panel does not write configuration over USB: a routine flash never overwrites the device's NVS or Zigbee pairing.

The heater runs a short ~12 mA burst each cycle. Disable it when you only need temperature, humidity and pressure.


      
      

After the new converter is installed, paste this in the C6 Enviro Zigbee2MQTT device page or publish it to zigbee2mqtt/C6 Enviro/set.

After flashing — pairing (order matters for a sleepy device)

  1. Install the Z2M converter first: z2m/biometal_enviro.mjs + z2m/lib/ into external_converters/, enable advanced.enable_external_js: true, restart Z2M.
  2. Open Zigbee2MQTT → Permit join.
  3. Power (or reset) the board. It joins and — important — stays awake 5 minutes so the interview can finish. Don't cut power during this window.
  4. It appears as EndDevice C6-ENVIRO by Biometal with temperature, humidity, pressure, gas, battery and diagnostic entities.

Wake a sleeping device: press BOOT briefly (it stays awake 5 more minutes). Re-pair on a new network: hold BOOT ≄3 s → Zigbee factory reset. Use the power-settings payload above to set report_interval_s and gas_enabled; both survive reboot and power loss.

Wiring diagram

The battery feeds the Super Mini's 5V pin (its LDO happily runs from 3.0–4.2 V), the Solar Power Manager only charges the cell, and a 2Ɨ200 kĪ© divider lets GPIO2 watch the battery voltage. BME680 breakout sits on I²C (any GY-BME680 / CJMCU-680, address 0x76 or 0x77 — auto-detected).

Wiring: Solar Power Manager + battery + ESP32-C6 Super Mini + BME680 + voltage divider

Details, part numbers and the power-budget math: docs/WIRING.md. Battery-life note: at the default 3 s cycle the radio duty cycle dominates — fine on solar, ~2–3 days on a bare 2000 mAh cell. Set report_interval_s ≄ 60 for weeks-long battery-only operation.

Documentation