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.mdto 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
- Tue 6 Oct · Lab aifoundry2's fans at full speed (public): the idle card holds at 64 °C instead of running away.
- Tue 6 Oct, 09:18 · Post Roman opens
#thermalsfor this work. - Tue 6 Oct, 13:10 · Order The P3 arrives (what you ordered and why, public).
- Tue 6 Oct, 18:00 · Reading The P3 on chips: what to read (public; tailnet): its open driver already does lock-in.
- Tue 6 Oct, evening · Plan Imaging the chip: voltage, riser, mount (public): the safe rear-heatsink test, first written up.
- Wed 7 Oct, 10:10–10:13 · Post Your posts: the camera arrived, and it has to point at the back of the PCB.
- Wed 7 Oct, 16:46 · Lab aifoundry2's idle card runs away again (public): 138 °C.
- Wed 7 Oct, 16:24–18:40 · Review Roman's per-sensor patch, reviewed (public).
- Wed 7 Oct, 19:00–19:40 · Measurement Heat spreading on the ET-SoC-1 (public): blocks of four or more shires show; one shire doesn't.
- Wed 7 Oct, 22:27 · Post Your post: the per-sensor readout works, with movies of heat spreading.
- Thu 8 Oct · Lab aifoundry2's card fan: what failed (public).
- Fri 9 Oct, morning · Brief The visit brief (tailnet, private: about people): bring the P3 and a clamp.
- Fri 9 Oct, 12:16 · Lab The first P3 capture of a card's back: the chip's footprint through the board, in one frame.
- Fri 9 Oct, 14:02 · Post Your first P3 image in
#community-lab: "Back view of one of the cards". - Fri 9 Oct, 14:55–15:24 · Lab aifoundry2's card gets new fans (public): idle 51 °C at 23 W, cooling 0.68 °C/W.
- Fri 9 Oct, 15:34–15:37 · Lab The P3 in the gap behind aifoundry2's card: its live view of the capacitor field, and the gap measured at 89 mm (every reading).
- Fri 9 Oct, 17:27 · Hub This hub, and the Google Doc Project: Thermal Camera PCB, linked from the thermal goal in Project: AI Foundry.
- Fri 9 Oct, evening · Research Cooling from the back, camera on top (public; tailnet): the card on a cable, a cooler on its back, the heatsink off and the P3 above the lid, for 10 to 100 times the signal. The safe test first.
Week 40 · 28 Sep – 4 Oct 2026
- Tue 29 Sep, 11:54 · Post Your post: Nate got a thermal camera; mount it over a chip on Friday?
- Tue 29 Sep, 14:44 · Post Roman: "we can even sacrifice one of the cards and tear off the heatsink".
- Wed 30 Sep · Research Running without the heatsink (public): not at 600 MHz; its first-ranked option is this project.
- Thu 1 Oct, 07:00 · Post Your post: bare, it overheats unless a 3–6 m/s blower.
- Thu 1 Oct, 16:49 · Files Thermal-model files (public; tailnet) for Eric Frank, sent to Roman and Tanya; Roman answered at 16:55 with the vault offer.
- Fri 2 Oct · Lab Studio 45: the brief (tailnet) and the visit record, both private: they're about people. What changed in the lab that day (public): aifoundry2's card in an idle thermal runaway. The Kapton arrives; Roman offers a card to strip and points you at the back of the board.
- Sat 3 Oct, 05:40 · Brief Order the correct thermal camera (public; tailnet): said "not the P3"; reversed that evening.
- Sat 3 Oct, 18:14 · Order The P3 ordered, $284, after a thermal camera that streams through your Pixel (public; tailnet).
- Sun 4 Oct · Order Edwin's FLIR loan declined (tailnet, private: about a friend): the P3 has shipped.
Week 39 · 21–27 Sep 2026
- Mon 21 Sep · Research Temperature leaks through the abstractions (public; tailnet), and every way to measure power and temperature on the card (public).
- Tue 22 Sep · Research Spatial temperature: a brief and a compiler that knows where the fan is (public). In your Project doc, "It would be nice to have a thermal camera".
- Tue 22 Sep, 11:58 · Post Your post: run it without a heatsink, a cheap camera, stream it live.
- Wed 23 Sep, 15:40 · Post Your post: maybe the opposite side of the PCB?
- Thu 24 Sep · Research Heat per millimetre (public): the shire pitch is 3.72 mm.
- Sat 26 Sep · Plan Pointing a thermal camera at the ET-SoC-1 (public): the plan, 20 experiments.
- Sun 27 – Mon 28 Sep · Research Where the work sits and the effect of overheating (public).
Week 38 · 14–20 Sep 2026
- Sun 20 Sep, 13:44 · Post Your post: are the chip's CAD files available, for thermal modelling?
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.

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:
- Next visit, ten minutes with a ruler and calipers: the measurements below.
- On the bench: where the lens sits on the camera's face and how far it stands out, with calipers.
- Print now: the fit coupon (part 07), then the cradle and its keepers (parts 04–06). They carry over to whichever frame stays.
- 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. - 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:
- 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).
- 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).
- 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?
- The space above the gap, up to 90 mm over the motherboard: cables, the card's power lead, the cooler's fan cable.
- The M.2 adapter: its height, and whether risers are about to go into it. Its ports stand about a centimetre high.
- 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 |


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
- 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.
- Spend ten minutes with the measure on the next visit (the list above).
- Model it from the MakerWorld cover and print it in ASA.
- Power down, screw the fake card into slot 2, set the cradle at 60 mm and route the cable out.
- 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.
- 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
- Adjustable camera mount (public, with the print and CAD package; tailnet), Mon 19 Oct, and its sanity check.
- A fake card in the open slot (public; tailnet), Sun 18 Oct; its design on this hub.
- Cooling from the back, camera on top (public), Fri 9 Oct: the later route to the front of the chip.
- Imaging the chip: voltage, riser, mount (public), Tue 6 Oct.
Tools and guides
- The focus simulator (public; tailnet): the picture, blur and field of view at any distance.
- Focusing the P3 (public): a live sharpness score and a witness mark.
- Calibrating the P3 (public; tailnet): a contact sensor, a vinyl patch, foil and a flat field.
- Taking data off the P3 (public): watch, record CSV, or pull raw frames on the lab LAN.
- Remote camera setup (public): running the phone in the lab with no visits.
Measurements
- Friday thermal measurements (public): the gap, the card and the slots, to scale.
- Seeing millikelvin heat with the P3 (public): the camera's real sensitivity, over an M5.
- Watching heat flow through the M5 keyboard (public): movies and arrival-time maps.
- Heat spreading on the ET-SoC-1 (public): the on-die sensors, block by block.
- aifoundry2's card gets new fans (public): the cooling the card runs on now.
- aifoundry2's fans at full speed (public), its idle runaway to 138 °C (public) and the card fan that failed (public).
- The lab, 2 October and 16 October (public): the first runaway, and the day the camera went live.
Plans and research
- Pointing a thermal camera at the ET-SoC-1 (public): the 26 Sep plan, 20 experiments.
- Running without the heatsink (public).
- The bit-flip follow-up plan (private: it quotes messages and vault material). Its project now has its own page, the Horace Hub (tailnet; private).
- Every way to measure power and temperature on the card (public).
- Thermal-model files (public): what a spatial model of the chip needs, and what's public.
- Heat per millimetre (public), where the work sits and the effect of overheating (public).
- Spatial temperature: a brief and a compiler that knows where the fan is (public); temperature leaks through the abstractions (public).
The camera itself
- Reverse-engineered Thermal Master P3 (public): the full spec of your unit.
- The P3 on chips: what to read (public), what you ordered and why (public) and order the correct thermal camera (public), the brief it reversed.
- Optics, streaming and mount: research notes (public) and the physics notes (public), Fri 9 Oct: this hub's first sources.
- What happened on 15 October (public): the phone app's biggest day.
- A contact sensor, and the rig without your accounts (private: it lists the rig's accounts and keys), Fri 16 Oct.
- The ET-SoC-1, interactively (public): the die, its shires and where the heat comes from.
Code and your notes
- thermal-android (private GitHub): the phone app; start any change from its
AGENTS.md. - et-soc1-prototyping (public GitHub): the lab repo.
- Project: Thermal Camera PCB and Project: AI Foundry: your Google Docs.
- The AI Foundry hub (spacesheep, private): the lab, the boxes, and the way in through the camera's phone.
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.
- ~~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.
- ~~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.
- 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.
- 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.
- 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
.debthat 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

#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.



Your note at 15:33: "I placed the board backwards for easier fan maintenance".
The slot for a mount, Fri 16 Oct


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
- Your posts and Roman's, AIFoundry.org Discord,
#community-lab: 22 Sep, the first ask · 23 Sep, the opposite side of the PCB · 29 Sep, Roman's offer, in reply to your question about mounting the camera · 7 Oct, the back of the PCB · 9 Oct, the P3 image.#thermals(made by Roman on 6 Oct) has six messages, all about aifoundry2's runaway, none about imaging. - Fri 9 Oct: your photos from 15:29–15:37 (EXIF and location stripped here) and your notes at 15:33 and 15:35. Read again at full resolution on Wed 14 Oct for Friday thermal measurements.
- Earlier work: the pages in the timeline; the lab repo et-soc1-prototyping (
docs/findings/11,12,14,20;docs/reports/data/2026-09-30-without-heatsink/imaging_calc.py; asks Q70, Q81, Q98, Q101, Q103); orders in Gmail. - New research for this page, with every source linked: camera, streaming and mount notes (94 sources; public; tailnet) and physics notes (public; tailnet) (a layered conduction model, die to board, checked three ways; the scripts sit beside it).
- The camera: the P3 manual (256 × 192 at 12 µm, rated −10 to 55 °C); reviews by Gough Lui (X³ off; 0.6 °C fixed pattern on a flat target), EEVblog and PCWorld (no CSV export in the app).
- Drivers: thermal-master-viewer (browser, WebUSB; checked today: its README lists Android as working, and the hosted page answers), thermal-camera-viewer, unofficial P3 SDK (pushed 2 Oct), p3-ir-camera and its LOCK-IN.md (330 µW in a resistor after 60 s).
- Prior art: Herglotz et al., component-wise power from thermal images (about 10% error above 300 mW per chip); Amrouch and Henkel, chips cooled from the back so the camera sees the front (ISLPED 2015); Dmytro Engineering's lock-in on a cheap camera; Breitenstein, Warta and Langenkamp, Lock-in Thermography (Springer), for the noise law; Igor's Lab on a GPU's rear board, the closest published view to this one; mirror reflectance at 8–12 µm.
- Not checked: whether the Pixel 10 runs the P3 through a hub; the P3's f-number (depth-in-focus figures assume f/1.0); its true closest focus; the board's layer count, which sets the blur within the ranges above.
- Working files:
~/git0/aifoundry/work/thermal-camera-pcb/on the Intel: the Discord pulls, the digests of every earlier page, the research notes and the scripts.
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.