Flash your thermal camera
This installs the thermal-imager firmware for an M5Stack Core Basic (the 2020 ESP32 model) wired to a Panasonic AMG8833 «Grid-EYE» 8×8 infrared array. After flashing, the Core shows a live thermal image upscaled to 216×216 with a bicubic filter, a colour scale, and min / centre / max readouts — no Wi-Fi, no app, no account.
Flashing happens entirely in your browser over USB via Web Serial — nothing is uploaded anywhere and no credentials are needed. Wire the module first (wiring diagram below), or flash now: the firmware shows an on-screen wiring guide until it finds the sensor.
Install firmware
Connect the M5Stack Core with a data USB-C cable (charge-only cables are the
single most common failure), then press Connect & Flash and pick the
CP210x / CH9102 serial port when prompted.
Advanced options
Stuck after a failed attempt? Use recovery erase, then flash again.
Wiring — AMG8833 → Grove Port A
The AMG8833 is an I²C device. On the M5Stack Core it goes to Port A, the
red Grove socket on the right-hand side — that is the I²C one
(GPIO 21 = SDA, GPIO 22 = SCL). If you have M5Stack's
own Grove-cabled thermal unit, just plug it in; for a bare breakout
(Adafruit / clone) cut a Grove cable or use a Grove-to-jumper adapter and follow the
colours below.
| Grove wire | M5Stack Port A | AMG8833 pin | Note |
|---|---|---|---|
| Red | 5V | VIN / VCC | Use 5V, not the module's 3Vo output |
| Black | GND | GND | Common ground |
| White | GPIO 21 | SDA | I²C data |
| Yellow | GPIO 22 | SCL | I²C clock |
I²C address. The firmware probes 0x69 first, then 0x68.
Breakouts default to 0x69 with AD_SELECT floating; tying that
pad to GND moves it to 0x68. Either works — no rebuild needed.
Voltage. The AMG8833 die runs at 3.3 V, but every common breakout (Adafruit, M5Stack, the usual clones) has a regulator and level shifting, so feeding 5 V into VIN is correct. A bare, unregulated Grid-EYE chip must be fed 3.3 V instead — check your board before plugging it in.
Using it
| Button | Press | Hold |
|---|---|---|
| A | Next colour palette Ironbow → Rainbow → Gray → Ice/Fire → Blue/Orange | Show / hide the hot & cold markers |
| B | Temperature range Auto → Body → Warm → Hot Double-press: raw 8×8 view on/off | Noise smoothing OFF → LOW → MED → HIGH (shown as S0…S3) |
| C | Freeze the frame | Rotate / mirror the image |
All settings are saved on the device and survive a reboot. Auto range follows the scene but never stretches below a 3 °C span — pointed at a flat wall, an unconstrained auto-range would amplify sensor noise into a boiling mess. Hold C is the fix if your image comes out mirrored or upside down: which corner the sensor calls «pixel 0» depends on how you mounted it.
Noise smoothing (hold B) averages frames over time on top of the sensor's own
filter: each step roughly halves the visible noise but adds lag — at HIGH a moving
hand leaves a short trail. Default is MED; drop to OFF/LOW when watching fast
changes, go HIGH for static scenes like wall insulation. The current level is shown as
S0…S3 next to the palette name.
What to expect. This is a 64-pixel sensor with roughly a 60° field of view and ±2.5 °C absolute accuracy — it finds a warm pipe, a draughty window, an overheating regulator or a person in a room. It is not a FLIR: it will not read a thermometer or resolve fine detail. Readings are of the surface the sensor sees, so shiny metal reads far too cold (low emissivity).
If something goes wrong
«AMG8833 not found» on screen. The firmware is fine — it just can't see the sensor. Check the module is in the red Port A, that SDA and SCL are not swapped, and that VIN has power. It re-probes every second, so fixing the cable is enough; no reflash.
No serial port in the browser dialog. Almost always a charge-only USB cable, or missing USB-serial drivers (CP210x for older Cores, CH9102 for newer ones).
Flash fails part-way. Drop the speed to 115200 in Advanced options, keep «Erase whole flash first» ticked, and retry. If the board no longer boots, use Erase flash (recovery) and flash again.
Wrong chip detected. This firmware is for the ESP32-based Core Basic / Gray. Core2, CoreS3 and StickC use different chips and displays and need a different build.