AI Foundry

Thermal camera hub

Watching the ET-SoC-1's heat from the back of aifoundry2's card with a Thermal Master P3, at AI Foundry. Say "refresh the thermal camera hub" to update it.

What's been added, by week

Newest week first; inside a week, oldest first.

(public): anyone with the link, unlisted, like this hub. (private): only you. Tailnet links work on your devices.

Week 43 · 19–25 Oct 2026

  • Mon 19 Oct, 09:00 · Reminder Ask Roman or Nate for slot 2 (private: your reminder, with what was searched): step 1 of the fake card, one post in #community-lab.
  • Mon 19 Oct, 15:40–16:14 · Lab A second way into the lab, through the camera's phone (tailnet; the AI Foundry hub is private): the phone's app relays ssh onto the lab's cable, so ssh aifoundry1-phone (and 2, 3) works from the Intel and the M5 when Tailscale's browser check is due or TailMux can't reach a box.
  • Mon 19 Oct, 17:02 · Hub The fake card's design came onto this hub, on your ask: the drawing to scale, two photos of the slot, the sizes, the parts and the steps.
  • Mon 19 Oct, 17:02–17:21 · Design An adjustable camera mount you can print (public; tailnet): a steel slot cover in slot 2 carries a printed boom, and the camera hangs from it in a drop-in cradle with slides along the card, up and down, and toward the board. Nine STL files, STEP models, editable Python and an assembly guide, all a download on that page (tailnet copy). On this hub. Not printed yet.
  • Tue 20 Oct, 11:55 · Lab The camera is still live: about 90 hours without a break since Fri 16 Oct, 25 fps, picture healthy, app 1.5.4. App 1.5.5 still waits for a deploy.
  • Tue 20 Oct, 12:40 · Review The adjustable mount, sanity-checked: a careful first prototype, but with more adjustment than the job needs and five joints under a camera that must hold half a pixel. Print the fit coupon and the cradle now, measure on the next visit, then print a rigid frame at the measured spot.
  • Tue 20 Oct, 12:55 · Hub This hub is now tabbed, with this Log first and open by default, on your ask: "the most important tab will be "Log"". New tabs: Status, Mount, Pages (every page by kind), Physics, Next steps, Photos, About. Every old link still lands.
  • Tue 20 Oct, 13:10 · Pages Everything this hub links now opens for anyone with its link, on your ask: "make sure everything is linked and the pages are public unlisted". Eleven pages went public (unlisted) after a read for keys and addresses, the remote-setup page minus its cellular IP; the two research notes behind this hub were published (optics and mount, physics); eight pages that weren't linked now are, in Pages. Seven links stay private, each marked why.
  • Tue 20 Oct, 15:17 · Fix The bit-flip follow-up plan is private again. It quotes Eric Frank's messages and names vault facts, which this hub's own rule keeps private, and nobody had opened it while it was public. Its project, the follow-up to Horace He's post, now has its own page, the Horace Hub (tailnet; private). This Log is grouped by week now, on your ask that afternoon: "for all my logs, I think I should have grouping by week".

Week 42 · 12–18 Oct 2026

  • Mon 12 Oct, 04:4x · Plan The bit-flip follow-up plan (private: it quotes messages and vault material; tailnet), from your Sun 11 Oct note: measure the heat of flipping bits with the camera, after Horace He's matmul post. About 5 card-hours on aifoundry3 and a 1.5 h camera session.
  • Wed 14 Oct, 11:45 · Measurement Friday thermal measurements (public; tailnet): your measuring photos at full resolution. The gap is 89 mm, not 85, and the card is 168 mm long in slot 5 of 7.
  • Wed 14 Oct, by 21:09 · Live page Thermal Master P3 live stream: the P3 and the phone's colour camera side by side, with radiometric data. Sign-in then; anyone with the link since Fri 16 Oct.
  • Wed 14 Oct, 21:50 · Plan Remote camera setup (public): the phone in the lab with no computer attached, two independent ways in, and what still works when each piece fails.
  • Wed 14 Oct, 23:28 · Tool The focus simulator (public; tailnet): drag the P3 around the gap with your unit's real lens. The answer: about 60 mm, focused on the board.
  • Wed 14 Oct, by 23:47 · Reference Reverse-engineered Thermal Master P3 (public), by your Antigravity session: the camera's full spec from your own unit, with its 4.3 mm f/1.0 lens, the RTC2121W sensor, the protocol and a 38.62 mK mode.
  • Wed 14 Oct, 23:50 · Guide Calibrating the P3 (public; tailnet): true degrees from a contact sensor beside a black vinyl patch, crumpled foil for the reflected temperature, a flat field. 1-mil Kapton is 0.62 over metal, not 0.94.
  • Thu 15 Oct, 01:16 · Guide Focusing the P3 (public): the focus ring is purely mechanical and nothing reports it. Focus from the picture with a live sharpness score, warm, then add a witness mark.
  • Thu 15 Oct, 01:30 · Measurement Seeing millikelvin heat with the P3 (public): over an M5's keyboard, about 4 mK per frame on a 16×16 patch and 3.1 mK per pixel with lock-in. The biggest error is the camera's own heating, so mount it off the target.
  • Thu 15 Oct, 08:20 · Repo thermal-android on GitHub (private): the phone app, its deploy script, the experiments and copies of these pages, with AGENTS.md to start any change from. Updates reach the phone over the tailnet with no taps, and the new USB-C hub charges it at 1.4 A.
  • Thu 15 Oct, 09:00 · App The live view reaches Spacesheep at 25 fps with the phone's screen off, up from 14 (1.3.2).
  • Thu 15 Oct, 12:05–23:02 · App The lab phone's build, 1.3.3 to 1.4.1: health checks, USB replug recovery, a reset ladder with a Keeper app, cellular failover, a hardened public viewer. Ideas for running it with no visits: remote camera setup (public). The day in one page: what happened on 15 October (public).
  • Thu 15 Oct, 12:35 · Measurement Watching heat flow through the M5 keyboard (public): heat reaches the keys 20–50 s after the processors switch on; the CPU and the GPU warm it from different places; five averaged cycles take the noise from 36 mK to 5 mK.
  • Fri 16 Oct, 00:04–12:08 · App Hardened for two unattended weeks, 1.4.2 to 1.5.2 (Keeper 1.0.5): a command audit log, the lab LAN as a second way in, wired Ethernet with a fixed lab address, the cursor's temperature on the live chart, a bounded reset ladder. The Intel can run the phone without the M5.
  • Fri 16 Oct, 08:00 · Question A contact sensor for the P3, and the rig without your accounts (private: it lists the rig's accounts and keys): yes, a $19 TMP117 beside the view; and what it takes to run the camera on the lab's own accounts.
  • Fri 16 Oct, 15:52–17:12 · App Ready to leave: the phone's screen sleeps on the charger with the stream still at 25 fps (1.5.3); with Wi-Fi off the video came back over cellular in about 200 s; a reboot from the Intel is back in about 2 minutes with no taps (1.5.4).
  • Fri 16 Oct, 18:09–18:24 · Lab The camera goes live at Studio 45. The P3 on a helping-hands stand behind aifoundry2's card, the phone beside it; at 18:24 the live page read 41–47 °C across the card's back. Spacesheep photographed the install for its launch. The lab day (public): who came and what was done.
  • Sat 17 Oct, 04:26–04:37 · Live page The live page shows its own delay, warns when the picture freezes, and records what you see to CSV. Taking data off the P3 (public): watch, record, or pull raw frames on the lab LAN, each path tested from outside the lab; 1.43 GB an hour over Ethernet. App 1.5.5, which counts mobile data and warns at 100 MB a day, is built but not deployed.
  • Sat 17 Oct, 12:30 · Your idea Hold the camera on a fake card in the empty slot instead of the helping hands, and keep a chronological log on this hub. Both done Sun 18 Oct.
  • Sun 18 Oct, 04:21 · Live page On phones, the live page's temperature strip is thinner (48 px instead of 68); desktop is unchanged. From your Sat 10:00 note.
  • Sun 18 Oct, 04:37 · Plan A fake card for the P3: your Saturday idea, planned. The empty PCIEX16 is three slot positions (61 mm) from the card, so a printed dummy card there can hold the camera in a sliding cradle, lens 40–62 mm from the board, set at 60.
  • Sun 18 Oct, 15:38 · Lab The lab's network, written into the app's repo: Wi-Fi is the lab's only way to the internet, and the phone's Ethernet goes out through aifoundry2.

Week 41 · 5–11 Oct 2026

Week 40 · 28 Sep – 4 Oct 2026

Week 39 · 21–27 Sep 2026

Week 38 · 14–20 Sep 2026

Where it stands (Tue 20 Oct)

  • Live since Fri 16 Oct. The P3 hangs on helping hands behind aifoundry2's card and streams to the live page, which anyone with the link can open. At 11:55 on Tue 20 Oct it had run about 90 hours without a break: 25 fps, picture healthy, app 1.5.4. App 1.5.5, which counts mobile data, is built and waits for a deploy.
  • Next to build: a mount. The helping hands drift: a 3° tilt across the view costs 2 mm of focus. Two designs exist on paper, the adjustable mount (Mon 19 Oct) and the fake card (Sun 18 Oct). The sanity check says: measure on the next visit, then print the simplest rigid frame at the measured spot.
  • Waiting on a yes from Roman Shaposhnik or Nate Padgett: slot 2 for a few weeks, a black vinyl patch and a contact sensor on the card, card time for the first sweep, and the card to strip.
  • What's proven: the chip's footprint shows through the board in a single frame (Fri 9 Oct). Over an M5's keyboard the P3 resolved about 4 mK per frame on a patch and 3.1 mK per pixel with lock-in, and it filmed heat crossing the keys (Thu 15 Oct).
  • Not done yet on the ET card: a measurement. There's been no lock-in sweep, no calibration patch and no reference thermometer.
  • What the back of the board can show: halves and quadrants of the die, live, at hundreds of millikelvin; not single shires, which are the on-die sensors' job (Physics).

Open questions

  • May aifoundry2's empty PCIEX16 (slot 2) hold a camera mount for a few weeks? It's Roman's or Nate's call, and both mount designs depend on it.
  • Which card did Roman mean to strip, and on what terms?
  • Is aifoundry3's card back as reachable as aifoundry2's?
  • Which board revision is in the rigs? It decides where the voltage regulators sit. Friday's photos point to the low-profile production board, about 69 mm tall under a taller heatsink (Friday thermal measurements). One reading of the board's height at its tail settles it.
  • Does the P3 really focus down to 8 mm? Nobody has measured it; the manual doesn't say.
  • The camera's fixed pattern: a uniform target reads 0.6 °C uneven across the frame (Gough Lui), about 17 times the frame noise. Single frames can't be trusted for small absolute differences; lock-in and difference images remove it.

What you have: in the lab since Fri 16 Oct, the P3, the Realme 14T phone on a USB-C hub with Ethernet and charging, and a helping-hands stand. At home, 1-mil Kapton film (Fri 2 Oct), a SmallRig super-clamp pair and two USB-C adapters (Tue 6 Oct). Gmail, checked Fri 9 Oct, had no order for an arm, a cradle, a contact thermometer, a first-surface mirror, a Raspberry Pi or a riser.

Roman's offers: on Tue 29 Sep in #community-lab, "we can even sacrifice one of the cards and tear off the heatsink"; on Fri 2 Oct, in person, a card to take apart, and the advice to look at the back of the board first. No card or date was named, and nobody followed up. He made #thermals for this work on Tue 6 Oct.

Holding the camera still

Today the P3 hangs on helping hands behind aifoundry2's card. They hold it, but they drift: a 3° tilt across the 40 mm view costs 2 mm of focus. Two designs replace them. Neither is built, and both need a yes for slot 2 from Roman Shaposhnik or Nate Padgett.

Adjustable mount, Mon 19 Oct Fake card, Sun 18 Oct
Anchored by a stock steel slot cover in slot 2 a printed plate on a slot cover in slot 2
Holds the camera hanging from a 150 mm boom, off to one side in a window in the plate itself
Adjusts along the card ±10 mm, height 37–48 mm, distance 54–62 mm distance 40–62 mm
To make 6 printed parts, 12 screw stacks, a drilled cover a plate, a cradle on two rails, a drilled cover
Ready CAD, nine STL files and a guide a plan and a drawing to scale

The sanity check: measure first, then print the simplest rigid frame at the measured spot.

The adjustable mount (Mon 19 Oct)

Designed Mon 19 Oct 2026 (week 43), 17:02–17:21, from the fake card plan below. Not printed yet. The guide (public) · tailnet · the print and CAD package, a download on the guide (tailnet copy): nine STL files, STEP models, the editable make_mount.py and a drilling template.

A stock steel slot cover in slot 2 carries a printed boom over the gap, and the camera hangs from it in a drop-in cradle. Three slides set where the lens sits: along the card (76–96 mm in from the rear wall), height (37–48 mm above the board) and distance from the card's back (54–62 mm, starting at 60). Two keepers hold the camera's housing on soft pads, so it lifts out for focusing and goes back. Nothing touches the card or the board, and nothing goes into the PCIe connector.

CAD assembly seen from the card: a dark blue boom along the top bolted to a grey steel slot cover at the right, two teal hanging plates, an orange shelf, and a blue-violet cradle holding the grey camera between purple keepers.
The assembly as modelled, seen from the card. Dark blue: the boom, bolted to the steel cover (grey, right). Teal: the slide along the card. Orange: the height slide and its shelf. Blue-violet: the cradle, which slides toward the card. Purple: the keepers. The camera and the cover are simplified shapes.

Sanity check: is it a good design?

Checked Tue 20 Oct 2026 (week 43), on your ask, against the package's own dimensions and checks (parameters.json, validation.json, hardware_validation.json) and the numbers on this hub.

A careful first prototype, with more adjustment than this job needs and more joints than a camera that must hold half a pixel should sit on. Print the fit coupon and the cradle now. Measure on the next visit. Then print the frame set to the measured spot, with no slides along the card or up and down.

What it gets right:

  • Nothing touches the card or the board, nothing goes into the connector, and nothing is glued to the camera. The housing carries the camera, not the USB plug.
  • ASA, a 50 °C stop for the air round the camera (it's rated to 55 °C), and 5 mm kept from the cooler's fins.
  • It says what isn't known yet (where the lens sits on the camera, where the chip is, whether the rail's lower tab catches, the cable) and starts with a fit coupon. Its CAD checks found no collision at 27 slide settings, with all 12 screw stacks modelled.

What I'd change:

Concern The numbers What to do
Five joints between the rail and the camera The cover's screw, two bolts into the boom, then three slides held by friction, two screws each. The camera hangs from 4 mm printed plates about 25 mm to one side of it, under a 150 mm boom. The view has to hold to half a pixel, 0.08 mm at 60 mm, for hours. Once the spot is measured, print the boom, the two hanging plates and the shelf as one piece.
Adjustment the job doesn't need At 60 mm the camera sees 40 × 30 mm and the die is 26 × 22 mm, so anywhere within ±7 mm along the card and ±4 mm in height keeps the whole die in view. Focus is the ring's job, and anywhere from 54 to 62 mm works. Find the chip's centre with a ruler on the next visit instead of building slides to search for it.
Warm plastic moves the picture About 86 mm of ASA lies between the cover and the camera along the card, and ASA grows about 0.1 mm per 100 mm for every 10 °C. When the gap warms 10 °C under load, the view slides about 0.09 mm: half a pixel. Line every frame up in software on the capacitors' cold dots, which lock-in needs anyway; or make the boom aluminium.
One thin anchor Everything hangs from one 1 mm steel cover and one screw. If the cover's lower tab doesn't catch on this open frame, the mount can rock about that screw. The guide says so too. Check the tab on the next visit. Better, anchor to two slot positions, slot 2 and a free neighbour: two screws 20 mm apart can't rock.
A lot to make Six printed parts, 12 screw stacks with set head heights, and a steel cover drilled at measured heights. The fake card below is a plate and a cradle. Fine for a first fit; simplify the one that stays.

Gravity isn't the problem: the printed parts weigh about 80 g, and two M3 screws hold that by friction many times over. What matters is whether the view stays put.

The order:

  1. Next visit, ten minutes with a ruler and calipers: the measurements below.
  2. On the bench: where the lens sits on the camera's face and how far it stands out, with calipers.
  3. Print now: the fit coupon (part 07), then the cradle and its keepers (parts 04–06). They carry over to whichever frame stays.
  4. Then the frame: regenerate it with the measured numbers and print it as designed with the slides locked once, or better, with the boom, plates and shelf merged into one rigid piece (a change to make_mount.py). Ask Roman Shaposhnik or Nate Padgett for slot 2 first.
  5. In software: line the frames up on fixed board features, and log the camera's own temperature.

What to measure on the next visit

Both designs need the same ten minutes with a ruler and calipers, with aifoundry2 powered down:

  1. The chip's centre on the card's back: how far in from the rear wall and how high above the motherboard (estimated at 86 and 42 mm).
  2. Slot 2's centreline to the card's back (expect about 60 mm) and to the nearest cooler fin (expect about 29 mm, 89 less 60).
  3. Slot 2 in the rear rail: is it open, does its screw take a 6-32 or an M3, does a stock cover's lower tab catch, and is slot 1 or 3 free beside it?
  4. The space above the gap, up to 90 mm over the motherboard: cables, the card's power lead, the cooler's fan cable.
  5. The M.2 adapter: its height, and whether risers are about to go into it. Its ports stand about a centimetre high.
  6. On the bench, the P3's lens: where it sits on the camera's face and how far it stands out, so the cradle centres the lens, not the body.

The fake card (Sun 18 Oct)

Your Sat 17 Oct idea: hold the P3 on a fake card in the empty slot beside the card, instead of on the helping hands. Designed Sun 18 Oct; put on this hub Mon 19 Oct 2026 (week 43). Not built yet. The first step is a yes from Roman Shaposhnik or Nate Padgett for the slot.

A printed dummy card in aifoundry2's empty PCIEX16 holds the P3 60 mm from the card's back. The slot is three positions (61 mm) from the card, about the distance the focus simulator picked. The camera rides in a cradle that slides through a window in the plate, so the lens can sit anywhere from 40 to 62 mm from the board. It stays rigid and square to the card by construction, comes out and goes back to the same place, and never touches the card or the connector. About $20–25 in parts, plus the print.

Slots apart Lens to the card's back Focus holds within Parts
3 (slot 2 to slot 5, 61 mm) 60 mm (slides 40–62) ±2.2 mm of where you focus ~$20–25 + the print
rear wall · slot positions 20.32 mm apart12345heatsink and fanscard, slot 5back faces the coolerCPU coolerfins at 89 mmfake card, slot 2with a windowP3sees 40 × 30 mm60 mm: lens to the card's back12 mm3 slots = 61 mmthe cradleslides 40–62 mm
From above, to scale, with the rear wall at the top. The fake card stands in slot 2 and holds the P3 in its window, lens 60 mm from the card's back and 12 mm short of the cooler's fins. The teal wedge is what the camera sees across the card; the brown patch is the chip, on the card's other face. Solid parts are measured or standard; the heatsink outline is approximate.
Looking down into aifoundry2: the ET card on the left with its parts-covered back facing right, an empty steel-armoured PCIe x16 slot in the middle, the CPU cooler's fins on the right, an M.2 adapter board and a coin battery between them, a measuring blade along the bottom.
Fri 16 Oct, 18:11: the slot it goes in. The card is on the left; its back, covered in small parts, faces right. The empty, steel-armoured PCIEX16 is in the middle and the CPU cooler's fins are on the right. Between the card and the slot, an M.2-to-four-PCIe-x1 adapter and the board's coin battery lie flat.
aifoundry2 from the front: two black gooseneck arms reach into the gap between the card and the Cooler Master tower; the frame's label reads mv-swpcie50; a measuring blade lies across the front.
18:10: what it replaces. Two gooseneck arms of the helping hands hold the P3 in the gap. They hold, but they drift: a 3° tilt across the 40 mm view eats 2 mm of focus.

Where the camera sits on it

Expansion slots are 20.32 mm apart (the ATX standard), so slot 2's centreline is 61 mm from the card's, and 60.2 mm from its back. Where the P3 sits on the fake card decides the rest:

Where the P3 sits Lens to the back Sees Focus holds Air to the fins
Flat on the card's side 40 mm 26 × 19 mm, part of the die ±1.0 mm 31 mm
Centred in the window 52 mm 34 × 25 mm, the die ±1.6 mm 20 mm
8 mm toward the cooler 60 mm 40 × 30 mm, the die and its capacitors ±2.2 mm 12 mm
Flush on the cooler's side 62 mm 41 × 31 mm ±2.3 mm 10 mm

60 mm is the setting. The die (26 × 22 mm) only fits whole from 46 mm, and at 60 mm there's still 12 mm of air behind the camera. The distances are to the lens's front; its optical centre sits a few millimetres behind, which shifts every row the same way.

What to build

  • The plate: ASA, 3 mm, low profile (no taller than 69 mm), about 125 mm long from the bracket, with a lattice everywhere except round the window.
  • The window: 61 × 29 mm, for the P3's 59 × 27 × 17.2 mm body. Centre it about 86 mm in from the rear wall and 42 mm above the motherboard, the 9 Oct estimates for the chip's centre. Give it ±10 mm of slots both ways until those are measured.
  • The cradle: start from the back piece of the P3 cover system on MakerWorld, which is meant to be adapted. Two rails run through the window, and two M3 nylon thumbscrews lock it anywhere from 40 to 62 mm. Add a split collar or a Kapton strip to lock the focus ring, and a cable clip.
  • The bracket: a stock steel full-height slot cover, drilled for two M3 nylon screws into the plate's flange, so slot 2's own screw holds everything. Line the plate up over the connector's centreline.

Rules:

  • Nothing with copper fingers goes into the connector. The fake card isn't seated at all: it hangs from slot 2's screw like any card's bracket, its lower edge a few millimetres above the connector.
  • No glue on the card, the board or the camera. The P3 sits in a clamp-on cradle, so it comes out for focusing and calibration. If anything is glued, it's the cradle to the fake card.
  • Keep the camera cool. The P3 is rated to 55 °C, and the card's back read 41–47 °C on the live stream, more under load. Print in ASA: PETG sags near 62–68 °C, and PLA is out. Keep the plate open, put one flat baffle between the camera and the fins, and watch the camera's own temperature.
  • The cable carries the strain. The USB-C plug is the camera's only structural point, so clamp the cable within 30 mm of it, run it along the plate's top edge and out over the rear wall.
  • Airflow stays as it is. Air through the cooler runs front to back, parallel to the plate, and the card's own fans are on its other face.

Two fallbacks: a PCI-slot fan bracket in slot 2 (Akasa AK-MX304-08BK, €7.90) with the P3 on a plate where a fan goes, rigid but a stopgap; or a slot cover with the P3 stuck flat on VHB, which reaches only 40 mm, too close for the whole die, and VHB creeps in warm air.

Part Price Where
Steel full-profile slot covers, 10-pack (StarTech PLATEBLANK) $12.29 list SHI
M3 nylon screws, nuts and standoffs, ~180 pieces $7.89–9.99 Walmart, WREKD
The ASA print a lab printer, or a service's quote (JLC3DP has no minimum order) JLC3DP
3M VHB 5952, ¾ in × 15 ft (for the baffle) $14.99 Walmart

Prices read Sun 18 Oct 2026.

Steps, in order

  1. Ask Roman Shaposhnik or Nate Padgett for slot 2 for a few weeks, and a time to power aifoundry2 down: the fake card takes the board's only x16 slot.
  2. Spend ten minutes with the measure on the next visit (the list above).
  3. Model it from the MakerWorld cover and print it in ASA.
  4. Power down, screw the fake card into slot 2, set the cradle at 60 mm and route the cable out.
  5. Boot and let it run warm for 20 minutes. Focus on the capacitors' cold dots with the live focus meter (Focusing the P3), lock the ring and add a witness mark.
  6. Tap the frame: if the picture jumps, tighten. Watch the camera's own temperature through one loaded run.

What to measure: the list above, shared by both designs. The full plan, with its sources: its own page (public) · tailnet.

Every page, by kind

(public): anyone with the link, unlisted, like this hub. (private): only you, and why. The Log has them by date.

Live

  • Thermal Master P3 live stream (public): the camera behind aifoundry2's card, its own delay, and a ● Record box for CSV.
  • Lab history (public): hour, day and week graphs of the three lab machines, the cards' die temperatures among them.

Designs

Tools and guides

Measurements

Plans and research

The camera itself

Code and your notes

Can the P3 see it? The camera is fine; the board sets the limit

Short answer: yes for halves and quadrants of the die, live; no for single shires from the back, with any camera. The P3 resolves far finer detail than the board lets through. What blurs the picture is the copper in the package and the board, which spreads heat sideways about four times faster than it carries it through.

What the P3 covers from inside the gap (256 × 192 pixels, 40° × 30°):

Lens to board Field Per pixel One shire (3.7 mm) spans Depth in focus
30 mm 18 × 14 mm 0.07 mm 52 px 1 mm
45 mm 29 × 22 mm 0.11 mm 33 px 2 mm
65 mm, the most the gap allows 43 × 33 mm 0.17 mm 22 px 5 mm
100 mm 68 × 51 mm 0.27 mm 14 px 12 mm
250 mm, the whole card 176 × 132 mm 0.69 mm 5 px very deep

From the gap, at about 65 mm, the P3 frames the die's shadow and most of the 45 mm package, not the whole card; the voltage regulators to the side fall outside. Closer than 45 mm buys nothing (the board's blur is coarser) and the depth in focus shrinks to a millimetre. Whole-card views need a first-surface mirror (bare polished aluminium or gold, never a protected coating, which loses about 30% at 45° in this band), or a longer gap.

What reaches the board's back (a model of the stack from die to board, built for this page and checked three ways; square-wave work, heatsink on):

Work switched every The board blurs it to One quadrant at 5 W One shire at 0.5 W
50 s (0.02 Hz) 48 mm across 970 mK 99 mK
20 s (0.05 Hz) 43 mm 310 mK 32 mK
10 s (0.1 Hz) 29 mm 125 mK 14 mK
5 s (0.2 Hz) 20 mm 44 mK 5 mK
2 s (0.5 Hz) 15 mm 5 mK 0.6 mK
1 s (1 Hz) 12 mm 0.4 mK 0.06 mK

The camera's noise is 35 mK in one frame. Lock-in (averaging against the known on/off pattern) brings it to 1.3 mK per pixel after a minute and 0.6 mK after five, and to hundredths of a millikelvin over a 1 cm patch.

What follows from the two tables: - Quadrants show live, no averaging needed. A quadrant switched every 20 s swings the back by about 300 mK, nine times the single-frame noise. The 26 Sep plan predicted 21–65 mK for a different pattern (2 s bursts every 24 s). Take that as the floor; the model's central case is a few times higher, and the first run settles it. - A better camera wouldn't help. The P3 out-resolves the board's blur 50–100 times over. A 640 × 480 sensor, a macro lens or a cooled camera buys nothing here. - One shire's heat does arrive, but as a blob 3–5 cm across. If only one known shire is working, a fitted model can still say which one: telling a shire from its neighbour 3.7 mm away has a signal-to-noise ratio around 375 after five minutes at 0.1 Hz. A full map of all 32 shires at once is out of reach: only about 21 of the 32 come apart cleanly. - The heatsink doesn't matter for this. 15–36% of the chip's heat goes into the board, but the fluctuating part on the back is local and changes by about 2% with the heatsink on or off. - The power stages will outshine the chip. A watt in the card's voltage regulators reaches the back about ten times more efficiently than a watt in the die, and the Fri 9 Oct 12:16 image already shows two such hot spots. The control: move the work to the opposite quadrant, and the chip's peak must move about 11 mm. If it doesn't, it's the regulators. - Single shires belong to the on-die sensors. They sit one per shire, at exactly the 3.7 mm pitch the board can't deliver. Even their whole-degree readings can be averaged against a known on/off pattern, as the 26 Sep plan proposed: if the die's slow drift moves them across degree steps, a 0.5 °C swing on one shire stands out within a minute. Roman's raw 12-bit codes (0.061 °C steps) would make that certain.

Coatings, and what they cost. The solder mask is already fine (emissivity about 0.9); the shiny parts are the problem, as the Fri 9 Oct cold dots show. Any coating also slows heat a little:

Coating Emissivity Signal kept at a 2 s period
Matte black paint, about 20 µm 0.96 94%
Kapton, 1 mil (you have it) 0.62 over shiny metal; over solder mask the mask shows through (corrected 14 Oct: this row said 0.94) 79%
Black vinyl (Scotch 88 or Super 33+) 0.96 (FLIR, measured at 8–12 µm) 43–50%

Polyimide film this thin is partly transparent to the camera: Sheldahl's measured emittance is 0.64 for 1 mil on its own and 0.62 for 1 mil over aluminium (corrected Wed 14 Oct). The timing of the signal (its phase) needs no emissivity at all. Absolute temperatures need a contact thermometer beside the camera's view, which the 26 Sep plan made a must-have; the calibration page has the sensor and the steps.

What "individual" can mean

Scale Size How it can be seen Status
The whole package 45 mm the camera, one frame ✅ seen Fri 9 Oct
Half or quadrant of the die 11–13 mm blocks, 17 mm apart the on-die sensors (+0.5 to +1.3 °C, 7 Oct); the camera on the back with lock-in sensors ✅; camera next
One shire (32 cores) 3.7 mm the on-die sensors in raw 12-bit codes (0.061 °C steps) waits on Roman's firmware
One core or one transistor < 1 mm a model fitted to the above, not a measurement the thermal model (Eric Frank, Vinci4D)

Next steps

In order. Everything below keeps the heatsink on, so none of it risks a card.

  1. ~~Try the browser viewer at home.~~ Done another way: since Fri 16 Oct the phone app streams the P3 to the live page, and since Sat 17 Oct the page records what you see to CSV. The Thermal Master viewer (code, WebUSB) stays a way to drive the camera from a laptop's Chrome. In the Thermal Master app, keep X³ off: it invents detail.
  2. ~~Get the camera's own files to us.~~ Done another way: Taking data off the P3 (public) covers watching, saving a CSV, and pulling raw frames on the lab LAN.
  3. Mount it. The Mount tab: measure on the next visit, print the fit coupon and the cradle, then a rigid frame at the measured spot. Hold 60–65 mm from the board's back, square to it; keep the camera cool and the cable clamped near its plug. - The alternative: a mirror in the gap. A 50 mm first-surface mirror at 45° ($25–40, bare aluminium or gold) lets the camera sit above the rig at 15–20 cm of path. It then sees the whole package and the regulators, has centimetres of depth in focus, and stays out of the warm air. Nothing is lost, since the board's blur is coarser than the pixels at that range too.
  4. A coating and a reference. A square of black electrical vinyl (0.96) on the solder mask in view, or a thin coat of matte black paint, which costs less signal. The 1-mil Kapton is too thin for this (0.62 over metal). Add a contact sensor beside the patch: a TMP117 on USB (±0.2 °C) or an Inkbird probe over Bluetooth (±0.5 °C). Thermocouples are ±1.1 °C at best. Steps, parts and code are on the calibration page. Both need Roman's OK: it's the lab's card.
  5. Raw frames for measurement. Pull them from the phone on the lab LAN (the data guide). If that path can't keep up, record on Linux instead, on a Raspberry Pi 5 by the rack or the lab host: - thermal-camera-viewer, a .deb that turns the P3 into an ordinary webcam (/dev/video10) any streamer can serve over the tailnet; - the Python unofficial P3 SDK, which gives radiometric frames; - Josh Dillon's p3-ir-camera, which has lock-in built in.

Five independent drivers exist, so the protocol doesn't rest on one person. On a shared lab box, the webcam route needs a kernel module rebuilt after every kernel update. The frames are 5 MB/s, 8% of USB 2.0. 6. The first measurement: a 45-minute sweep. - Load: one quadrant (8 shires, about 6.8 W of random multiply-adds), switched on and off at 50% duty. - Rates: 0.47, 0.19, 0.093, 0.047 and 0.023 Hz, 5 minutes each, plus 5 minutes idle. These miss the shutter's 90 s rhythm, of which 0.1, 0.2 and 0.5 Hz are exact harmonics. - Predicted swing on the back: about 1.3 K at the slowest rate, falling to 6.5 mK at the fastest. The lag behind the load grows with the square root of the rate, which measures the package's conductance with no emissivity needed. - Pin the clock first. aifoundry2 now idles at 51 °C and runs 63–75 °C loaded, across the governor's 65 °C threshold, so its clock would hunt and the sweep would measure the governor. aifoundry3's governor is latched at 600 MHz, and its card 0 runs Roman's per-sensor firmware. So check whether its back is as reachable as aifoundry2's (same board, same slot) and run there if it is. - Then the control: the same sweep on the opposite quadrant. The peak must move about 11 mm; if it doesn't, the camera is seeing the voltage regulators. - Demodulate afterwards against the frame times and the logged switch times. No hardware sync is needed. 7. The on-die check, no camera. Rerun the 7 Oct single-shire cycles for 5–10 minutes each on aifoundry3's card 0, and average the whole-degree readings against the on/off pattern. If it works, it gives single shires today, before the raw-code firmware. 8. Bring the 26 Sep plan up to date. Today's cooling (0.68 °C/W, 51 °C idle) makes its 84 °C pre-heat gate unreachable, and its power budgets were set for the old fan. Its sources (plan.md, lockin.py) live only on the Intel and in its space: move them into the lab repo (a lab-door job). 9. Later, the front of the chip: cooling from the back, camera on top. A powered cable stands the card on a bench, a cooler on its back carries the heat, the heatsink comes off, and the P3 looks down at the coated lid. Through the lid, the blur floor is the copper's, about one shire at 5 Hz: the only route to shire-scale pictures. Roman's offer of a card to strip stands, but no card was named; ask which one, the loose green board with a copper block on the top shelf or aifoundry1's card 0. - First, the safe test: fit the rear cooler with the heatsink still on, and read the idle drop. - With today's fans, expect 3 °C to 6 °C: about 6 °C means heat flows well into the board and 600 MHz with work on it is in reach; 3 °C or less means the lowest clock only. - The 6 Oct page's 15–20 °C bar no longer applies: it was set for the old, weaker cooling. 10. Write to Josh Dillon, author of the first open P3 driver with lock-in, if he is the Josh Dillon you know (not confirmed).

Who has to say yes: Roman Shaposhnik or Nate Padgett, for anything clamped or taped on the lab's cards or frames, software and a udev rule on a lab host, the card time for the sweep, and the card to strip.

For people to watch live, like a webcam: done since Fri 16 Oct. The live page streams the camera to anyone with the link.

First light, Fri 9 Oct

Thermal image of the back of an ET-SoC-1 card: an orange board with a bright yellow-white patch over a grid of small components behind the chip, two small hot spots lower right, and a cooler purple fan frame above.
12:16, the P3's capture of the back of one of the cards, as posted in #community-lab at 14:02 ("Back view of one of the cards"). The bright patch is the chip's footprint seen through the board. Both ends of the scale read "<150 °C", and Discord strips the file's temperature data, so this copy carries no temperatures.
Top-down view of aifoundry2's open frame: a hand holds the P3 by its cable in the gap between the CPU tower cooler and the back of the ET card; the phone at top right shows a thermal image.
15:35 on aifoundry2: the P3 held in the gap between the CPU cooler and the back of the card, with the phone showing its live view. Your note at 15:35: "Took a picture of approximate smallest distance".
The phone's Thermal Master app showing rows of small two-terminal components as pairs of dark dots on an orange board; the scale reads 36.4 to 42.1.
The live view at 15:35: the capacitor field behind the chip, scaled 36.4–42.1 °C. Each capacitor shows as a pair of cold dots, its metal end caps reflecting the room. Kapton or matte paint fixes that.
A measuring rule from the edge of the CPU tower cooler to the ET card standing in the PCIEX8 slot, reading 3.5 inches at the card.
15:34: the clear gap from the CPU cooler's fins to the card, 3.5 in (89 mm) at full resolution. This hub first read it as 3⅓ in (85 mm) from a reduced copy; the Friday thermal measurements page has the zoom. The empty slot between them is PCIEX16; the card has been in PCIEX8, three slots farther from the CPU, since before 7 Oct.
aifoundry2 from above: the card with its two-fan bracket on the left, the CPU tower cooler on the right, and the phone on the floor showing the camera's view.
15:37: aifoundry2 from above after the fan swap. The card's heatsink side faces the new two-fan bracket (left); its back faces the CPU cooler (right). The phone lies on the floor on the camera's cable.

Your note at 15:33: "I placed the board backwards for easier fan maintenance".

The slot for a mount, Fri 16 Oct

Looking down into aifoundry2: the ET card on the left with its parts-covered back facing right, an empty steel-armoured PCIe x16 slot in the middle, the CPU cooler's fins on the right, an M.2 adapter board and a coin battery between them, a measuring blade along the bottom.
Fri 16 Oct, 18:11: the slot it goes in. The card is on the left; its back, covered in small parts, faces right. The empty, steel-armoured PCIEX16 is in the middle and the CPU cooler's fins are on the right. Between the card and the slot, an M.2-to-four-PCIe-x1 adapter and the board's coin battery lie flat.
aifoundry2 from the front: two black gooseneck arms reach into the gap between the card and the Cooler Master tower; the frame's label reads mv-swpcie50; a measuring blade lies across the front.
18:10: what it replaces. Two gooseneck arms of the helping hands hold the P3 in the gap. They hold, but they drift: a 3° tilt across the 40 mm view eats 2 mm of focus.

About this hub

AI Foundry. Started Fri 9 Oct 2026 (week 41), 16:29–18:00 PDT, on the Intel (~/git0/aifoundry), on your ask for one place for the thermal-camera work: the goal, everything done since Tue 22 Sep, the first images, whether the Thermal Master P3 can see small heat changes through the board, and the next steps. Built from your posts in the AIFoundry.org Discord, your photos and notes from the lab, every earlier page and report on this, the lab repo, your Gmail orders and new web research. Updated through Mon 19 Oct (the focus simulator, the calibration page, the log, the fake card's design). Rebuilt as tabs Tue 20 Oct 2026 (week 43), with the Log first, on your ask: "the most important tab will be "Log", which gives high-level entries of things that are added … As a user, I'll be clicking on the log a lot." Say "refresh the thermal camera hub" to update it; every update adds an entry at the top of the Log.

The goal

In your Project doc: "thermal modeling of heat dependent on transistors (thermal camera)", the second of three goals.

In your Discord posts: - Sun 20 Sep: "a physics-aware compiler that can arrange computation with knowledge of heat propagation". - Tue 22 Sep: "Need per-tile sensor reading to get spatial heat flow"; then run the card "underclocked without a heatsink… mount a cheap thermal camera… stream… live". - Wed 23 Sep: "there's a heatsink, so maybe onto the opposite side of the PCB?" - Wed 7 Oct: "Camera has to be pointed at the back of PCB", and the camera as "physical verification" of the sensors.

Sources, and how this page was built

Total life satisfaction: the thermal model is one of the three goals at the top of your Project doc. This rebuild makes the page open on what changed, which is what you come to it for. It doesn't move the measurement itself, which still waits on a mount, a patch and an afternoon of lock-in, and two of those three wait on a yes from the lab.