AI Foundry. Written Wed 14 Oct 2026 (week 42), 15:50–23:50 PDT, on the Intel (~/git0/gyroscope), on your ask: is there a temperature measurement you can do, how to calibrate the camera, whether a webcam over the chip or the outside temperature helps with reflections, which sensor you can buy, mount and stream live, and what the Kapton is for. For your visit on Fri 16 Oct. Built from two research passes (calibration practice, emissivity data and the literature; sensors you can get by Friday), your Antigravity session's reverse-engineering of your unit (~/git/thermal-android/THERMAL_MASTER_P3.md on the M5), and a band-integrated radiometry calculation. Part of the thermal camera hub. Where the camera goes: Friday thermal measurements and the focus simulator.
The short answer
- Yes, there's a measurement you can do: a contact sensor beside the camera's view. A small sensor on the board's back, read live, gives the true temperature at one spot. The camera's reading of a black patch next to it then gives the camera's error.
- The sensor: best is an Adafruit TMP117 (±0.2 °C up to 100 °C) on a USB adapter from Digi-Key, read live on the lab host; ordered tonight with overnight shipping, it should arrive Friday morning. Simpler is the Inkbird IBS-TH2 Plus temperature probe (±0.5 °C), live on your phone over Bluetooth, from Amazon if Prime promises Friday.
- Calibrate in about 20 minutes: a flat field (frames of something uniform), the reflected temperature (crumpled foil read at emissivity 1.0), and the camera's offset (the black patch against the contact sensor, at idle and under load). The solder mask's emissivity then follows, about 0.9. Friday's steps has the details.
- Your Kapton is for insulating and holding things, not for emissivity. At 1 mil (25 µm), polyimide film lets part of the camera's infrared through. Over shiny metal it reaches only 0.62, and over solder mask it changes nothing. The emissivity patch should be black electrical vinyl (0.96, measured by FLIR in this band). The hub's 0.94 for 1-mil Kapton was wrong; it's corrected there.
- A webcam over the chip helps less than it sounds. It can show where the shiny metal is, so those pixels can be masked. It can't see what that metal mirrors at 8–14 µm: the warm cooler fins and the camera itself. And at 5–6 cm, two cameras side by side don't line up. A cheaper test that tells you more is to move the P3 a few millimetres: cold dots that move with the camera are reflections.
- The room's temperature isn't what the metal mirrors in the gap. Behind the card the shiny parts see the cooler's fins (35–45 °C) and the camera, so measure the reflected temperature in place with the foil. A room thermometer is still worth logging, for the camera's own drift.
- For where heat appears, none of this matters much. Switch the load on and off and average the frames against that pattern (lock-in), and the timing (phase) picture needs no emissivity at all, while steady reflections drop out. Calibration matters for absolute degrees, not for where the heat shows up.
What the camera actually measures
The P3 doesn't measure temperature. It measures how much 8–14 µm infrared reaches each pixel, then converts that into a temperature with three numbers you give it:
- emissivity: how well the surface glows, from 0 to 1;
- reflected temperature: the app calls it environmental temperature. It's how warm the things are that the surface mirrors;
- distance: it corrects for air absorbing infrared, which matters only over metres. At 5–6 cm the air is transparent, so set the smallest distance the app allows. The official software's distance correction is only defined from 0.2 m to 5 m.
A surface glows by its emissivity and mirrors its surroundings by the rest:
what reaches the camera = emissivity × glow of the surface + (1 − emissivity) × glow of the surroundings
So a surface at emissivity 0.9 is 90% itself and 10% reflection, while a shiny tin end cap (0.05–0.3) is mostly a mirror. Worked through for an 8–14 µm camera, with the surface truly at 50 °C:
| Surface | Camera settings | Reads |
|---|---|---|
| Solder mask (0.9), surroundings 35 °C | right | 50.0 °C |
| Solder mask (0.9), surroundings 35 °C | app defaults (0.95, 25 °C) | 49.7 °C |
| Black electrical vinyl (0.96), surroundings 35 °C | app defaults | 50.6 °C |
| 1-mil Kapton over shiny metal (0.62) | as if 0.95, reflected right | 45.0 °C |
| Tin end cap (0.3), surroundings 35 °C | as if 0.95 | 40.4 °C |
| Tin end cap (0.3), room at 25 °C | as if 0.95 | 33.5 °C |
| Tin end cap (0.3) | right emissivity, reflected 5 °C off | 39.0 °C |
| Anything, everything at 25 °C | any | 25.0 °C |
Three things follow:
- On solder mask or black vinyl the settings hardly matter. A 1 °C error in the reflected temperature moves the reading by 0.1 °C.
- On shiny metal no setting rescues it. The same 1 °C error moves the reading by 2.1 °C at emissivity 0.3, and far more on polished tin at 0.05. The cold dots in your 15:35 live view are exactly this.
- When everything is at one temperature, every surface reads right, whatever its emissivity: what it lacks in glow it makes up by mirroring surroundings at the same temperature. That makes a cold, switched-off board a perfect flat-field target and a useless emissivity test.
The camera's own limits
From your Antigravity session's reverse-engineering of your unit (SN P3025043DG040200256, firmware 00.00.02.18), published as Reverse-engineered Thermal Master P3 and rechecked against it on Thu 15 Oct:
- Absolute accuracy is ±1.5–2 °C, or ±2%. That's why a contact reference is needed for true degrees.
- The steps are 62.5 mK in the normal mode and 38.6 mK in the session's high-precision mode, which bypasses the camera's lookup table.
- The noise is 34 mK per pixel per frame (median) with the camera's own temporal filter on. Raw, in the high-precision mode, it's 41 mK (1.07 steps of 38.62 mK), and that's the figure to average, because filtered frames aren't independent. On top of that sits a fixed pattern of 54 mK across pixels, which doesn't change from frame to frame and comes out with a flat field. Over seconds the picture also drifts as the sensor's own temperature moves: the median pixel wanders 150 mK over 4 s, detrended.
- The shutter re-zeros the picture (a flat-field correction) whenever the sensor's temperature has moved 0.25 °C, at most every 5 s and at least every 90 s. Each click takes 0.35–0.5 s and corrupts a frame. The high-precision mode turns it off and subtracts the common drift in software instead.
- Warm it up in place. In a published test of an uncooled camera, 3 °C of sensor warming made the fixed pattern four times larger. So warm the P3 up where it will sit, then calibrate, and redo the flat field if its own temperature moves by more than about half a degree.
Friday's calibration, step by step
About 20 minutes once the camera is in place: at about 60 mm, focused on the board, the focus ring fixed with a strip of Kapton, and warmed up for 20 minutes in the gap.
- Flat field (2 minutes). Hold a piece of cardboard covered in black electrical vinyl a centimetre in front of the lens, filling the view, for a few seconds. Save those frames. Whatever pattern they show is the camera's own, so subtract it from everything after. This is what the shutter does; doing it yourself, with the shutter off, keeps one reference for a whole run.
- Reflected temperature (3 minutes). Crumple a square of aluminium foil, flatten it shiny side out on cardboard, and hold it in the view against the board's back. Foil conducts, so keep it on the cardboard and off the pads. Set the app's emissivity to 1.0 and read the foil's average: that's the reflected temperature. Enter it as the environmental temperature. Expect 30–40 °C in the gap.
- The black patch and the contact sensor (5 minutes). Stick a 1 × 1 cm square of black electrical vinyl on bare solder mask in the view, away from the cold-dot capacitors. Put the contact sensor beside it on a strip of Kapton, which keeps it from shorting the board's pads. Wait three minutes. Read the patch at emissivity 0.96 with step 2's reflected temperature; its difference from the sensor is the camera's offset at that temperature.
- A second point (5 minutes). Repeat step 3 under load. The card idles near 51 °C and settled at 62–63 °C in Friday's burst test. Two points give both the offset and the slope.
- The solder mask (2 minutes). Read the bare solder mask right next to the patch, and adjust the emissivity until it matches the patch. Expect about 0.9.
- Mark the liars (2 minutes). Shift the camera 2–3 mm sideways and back. Spots that move with the camera, not with the board, are reflections. That includes the camera seeing its own cold sensor mirrored in shiny parts. Mask them, or cover them with vinyl.
Everything that touches the card needs Roman's OK: it's the lab's card.
A sensor you can stream live
| Option | Accuracy | How it reads live | Cost | By Friday noon? |
|---|---|---|---|---|
| Adafruit TMP117 (4821) + MCP2221A USB adapter (4471) + 15 cm cable, all from Digi-Key (1528-4821-ND, 1528-4471-ND, 1528-4397-ND) | ±0.1 °C to 50 °C, ±0.2 °C to 100 °C | USB into the lab host. Linux's own hid-mcp2221 driver turns the adapter into an I²C bus, and about ten lines of Python read it |
$18.95 + overnight shipping ($27–30) | Ordered tonight, it ships Thursday and should arrive Friday morning. Choose the earliest morning service |
| Adafruit MCP9808 (1782, 1528-1782-ND) | ±0.25 °C typical | the same adapter | $4.95 | add it to the same order as a second point and a spare |
| Inkbird IBS-TH2 Plus, temperature-probe version (B095WJ8QQF) | ±0.5 °C, −40 to 125 °C | Bluetooth to the phone app, updating every 10–60 s; Linux can listen with inkbird-ble |
about $25 | Amazon Prime, if it promises Friday. The temperature-and-humidity probe stops at 60 °C: wrong one |
| PCsensor TEMPer USB sticks | ±2 °C; a tested unit read 2.5 °C low | USB | about $41 | not accurate enough |
| Self-adhesive K-type thermocouples (Omega SA1XL-K) | ±1.1 °C at best | needs a logger (Pico TC-08, $499) | $255+ | fast (0.15 s) and insulated, but costly and less accurate |
| Room air: Xiaomi LYWSD03MMC with the open pvvx firmware, or a SwitchBot Meter Plus | ±0.2–0.3 °C | Bluetooth broadcast any Linux box can read | $5–13 | Amazon |
Central Computers in SF stocks no Adafruit parts; Micro Center in Santa Clara does, so call before driving.
Mounting the TMP117: lay the breakout flat on a strip of Kapton, with a dab of thermal paste between them, and hold it down with a second strip. It then reads the board through its own small circuit board, which is slow (tens of seconds) but fine for steady readings, and steady readings are what calibration needs. The Inkbird's probe goes the same way: flat on the board, under a strip of Kapton.
Reading it live on the lab host:
# The MCP2221A shows up as an I2C bus (Linux driver hid-mcp2221).
# pip install smbus2; find the bus number with `i2cdetect -l` ("MCP2221 usb-i2c bridge").
import time
from smbus2 import SMBus
BUS = 1 # replace with the MCP2221's bus number
with SMBus(BUS) as b:
while True:
raw = b.read_word_data(0x48, 0x00) # TMP117 temperature register
raw = ((raw & 0xFF) << 8) | (raw >> 8) # the chip sends its high byte first
if raw & 0x8000:
raw -= 1 << 16
print(f"{time.time():.2f} {raw * 0.0078125:.3f}", flush=True)
time.sleep(1) # one new reading a second by default
Log it on the same clock as the card's own sensors and the workload's switch times, so it lines up with the camera's frames afterwards.
What the Kapton is for
- Why it was bought (Thu 1 Oct): to cover shiny parts. A coating whose own glow is known replaces the reflection, so the camera reads the part's temperature instead of its surroundings.
- Why 1 mil doesn't do that job: polyimide film is partly transparent at the camera's wavelengths, so its glow depends on its thickness. Sheldahl's measured emittance is 0.52 at 0.5 mil, 0.64 at 1 mil, 0.76 at 2 mil and 0.85 at 5 mil. Over aluminium, 1 mil gives 0.62.
- Over a shiny cap or screw, the camera sees 62% Kapton and 38% reflection: better than bare metal, but still about 5 °C off at 50 °C.
- Over solder mask it's harmless. The mask shows through, and it's about 0.9 itself.
- What it's good for here: insulating (under the contact sensor, so it can't short the board's pads), holding things down (the sensor, the cable), and fixing the focus ring. It takes 260 °C and peels off clean.
- For the emissivity patch, use black electrical vinyl: 3M Super 33+ or Scotch 88, the ordinary black roll from any hardware store. FLIR measured Scotch 88 at 0.96 in this band. Use it over solder mask, not over bare metal, since thin vinyl can pass a little infrared.
- Matte black spray paint is better still (0.96–0.97), but it doesn't come off, so it needs Roman's OK.
- For fast lock-in, any coating slows the heat a little; for steady calibration it doesn't matter.
The webcam idea
- What it can do: show where the shiny metal is, so those pixels can be masked or given their own emissivity. A 2026 study did exactly this with a colour camera and automatic segmentation. Its error fell from 1.97 K to 0.91 K at a 20 K contrast, but small mistakes erased the gain:
- a 10% error in the emissivity table;
- an 8-pixel misalignment between the two cameras;
- or 5 K of error in the reflected temperature.
- What it can't do: see what the metal mirrors. At 8–14 µm the shiny parts reflect the cooler's fins and the camera's own body, which look nothing like they do to a webcam. Visible gloss isn't infrared gloss either: glossy green solder mask is nearly matte at 10 µm.
- The geometry fights it. At 5–6 cm, a webcam 1 cm beside the P3 sees the board from 11° off, so one image transform lines the two up on one plane only.
- Cheaper and more telling: the move test in step 6, plus the flat field. A visible camera is still nice for people watching, to see what the heat sits on. Your live P3 stream already sends the phone's colour camera beside the thermal one: side by side, not lined up pixel for pixel.
The outside temperature
- What the metal mirrors behind the card isn't the room. It's the cooler's fins (35–45 °C), the fan bracket and the camera itself. Measure that with the foil (step 2).
- The room's temperature still matters for the camera's own drift, because its sensor follows the air around it. It's also useful context in the log, given how much the lab's air conditioning swings the cards.
- Cheap and live: a Xiaomi LYWSD03MMC with the open pvvx firmware (about $5; it broadcasts over Bluetooth to any Linux box) or a SwitchBot Meter Plus (about $13, ±0.2 °C). The motherboard's own sensor read 38 °C on Friday, but that's the board, not the air.
What the lab already reads, free
- The chip's own sensors, through
ettelemand the lab's live collector every 5 seconds: the die mean (49 °C at idle on 9 Oct), and per sensor on aifoundry3's card 0 with Roman's firmware. They measure the die, not the board's back, which runs a few degrees cooler, but they move with the same load. A lock-in run can use them as its timing reference. - The motherboard's sensor chip (
it87952, read as root aftermodprobe it87): itstemp1read 38 °C on aifoundry2 at 15:34 on Friday, beside the 51 °C card. - Neither is the temperature of the spot the camera looks at, which is why a contact sensor on the board's back is the one thing to add.
Sources
- Your unit: the Antigravity session's
THERMAL_MASTER_P3.md(~/git/thermal-androidon the M5): §1.1 the shutter (5–90 s, a 0.25 °C trigger, 0.35–0.5 s per click), §1.3 the noise and accuracy, §6.2 the host-side correction and its 0.2–5 m distance range. - The model: the Testo thermography guide and arXiv 2508.11455 (Eq. 14). The table above was computed here by integrating Planck's law over 8–14 µm.
- Emissivity: the Optris long-wave table (circuit board 0.91; tin 0.04–0.07; nickel 0.05–0.40; brass 0.03–0.61); FLIR on Scotch 88 (0.96 at 3–5 and 8–12 µm) and on PCBs; the Sheldahl Red Book (Rev E, 2020), Table 3, polyimide emittance by thickness, and its aluminized-polyimide table (1 mil 0.62); Tien, Chan and Cunnington, Infrared radiation of thin plastic films. No measured value was found for MLCC capacitor bodies or for Super 33+ specifically.
- Practice: ASTM E1862 (reflected temperature, the foil read at emissivity 1.0; steps; foil near live gear) and E1933 (emissivity by contact sensor or reference patch). Both standards are paywalled; the steps here are the usual forms as taught.
- Flat field: Krupiński et al., Non-uniformity correction in microbolometer array with temperature influence compensation, Metrol. Meas. Syst. 21(4), 2014.
- The webcam and reflections: Klingspon et al., arXiv 2608.02964 (colour-camera segmentation into an emissivity map, and its error budget); the camera seeing itself in shiny parts (US 4,705,945; Ansys).
- Lock-in: Breitenstein et al., ISTFA 2006 (phase images are free of emissivity contrast); Breitenstein, Warta and Schubert, Lock-in Thermography, Springer 2018, ch. 5.
- Sensors: Digi-Key (TMP117, MCP2221A, same-day shipping); Mouser 485-4471; the
hid-mcp2221driver; TEMPer2; Omega SA1XL-K; thermocouple accuracy; Pico TC-08; Central Computers. Amazon couldn't be loaded, so its prices and delivery dates are unchecked.
Total life satisfaction: the thermal model is one of the three goals at the top of your Project doc. Friday can now end with the first calibrated number, a black patch read against a contact sensor, not just a colour picture.