Skip to content
    All posts

    Dev log: what our Hypha Aeris air sensor caught as the caps opened

    We wanted Hypha Aeris to spot mushrooms dropping spores. Then we realised our timelapses had been collecting the data for months. Here's what its PM2.5 sensor saw as the caps opened, and how close we are to a harvest alert.

    Photo of Sharon

    Sharon21 min read

    Salmon-pink oyster mushroom fans with visible gills glowing against a dark grow chamber, with a thin light-blue line along the bottom that climbs from left to right, labelled 'Spores in the air (PM2.5)'.

    TL;DR

    • As the caps open, the air gets dustier. Between humidifier bursts, PM2.5 settles to a "floor" of about 2 µg/m³. In all 10 spore drops we looked at (6 species), that floor climbed 13x to 453x, then fell 91.5-99.9 % the moment the bin was opened.
    • It isn't humidifier fog. Fog spikes and clears; this rose steadily, even with the humidifier off.
    • Nothing else moved. CO2, VOC, NOx, temperature and humidity showed no consistent change.
    • The Aeris could call it without a camera. A candidate alarm fired about 6 hours after the caps opened and a median of 32 hours before we harvested. It caught 9 of 10 drops when we replayed the sensor data.
    • Some mushrooms are louder than others. Blue oyster, shiitake and maitake rose 84x to 453x; king trumpet and lion's mane only 13x to 28x. Spore size alone doesn't explain it.
    • It's early days. Nine grows in one chamber with one sensor. The rise-and-drop showed up every time, but the sample is too small for statistically meaningful comparisons between species or for a validated alarm.

    We've wanted Hypha Aeris to tell growers when their mushrooms start dropping spores. The first hint came from a timelapse. Our camera has one rule: only shoot when the air is clear. The chamber runs an ultrasonic humidifier, and every burst of mist turns a photo milky, so the camera checks the Aeris before each shot and waits for the PM2.5 reading to drop between bursts.

    On one of our pink oyster grows, that rule backfired. The evening the caps started opening, the camera stopped shooting: as far as its script could tell, the chamber had fogged up. It hadn't. The mist was the same as always. What had changed was the air between humidifier bursts, which was filling with spores, because oysters are spore machines. The camera was mistaking a spore cloud for fog, and the timelapse thinned out right when the grow got interesting.

    Then it clicked: every timelapse we'd run since April had an Aeris logging the air every 10 seconds next to the camera. We'd been building the dataset for a spore detector without meaning to. So we went back through all of it.

    Three photos of the same shiitake block from the same angle. Left, labelled Before spores, fruiting day 7: nearly full-size brown caps with their edges still curled under, PM2.5 floor 1.5 µg/m³. Middle, labelled Starting to drop, fruiting day 8: the big centre cap opened, with torn veil hanging from its rim, floor 83. Right, labelled Dropping lots of spores, fruiting day 9: wide, flat, pale caps with split edges crowding the block, PM2.5 floor 794 µg/m³. All three are sharp and clear.
    Same block, same camera; fruiting day counts from when the block went into fruiting conditions. Before the caps opened (left), the humidifier was misting hard (95 % humidity, fog about half the time), yet the air between bursts settled to 1.5 µg/m³. As the caps opened and the veil tore (middle) it began to climb, to 83. Two days after the first frame (right), the caps had opened flat, the humidifier was off and there was no mist at all, and the floor was 794. The mushrooms are about the same size; what changed is the caps opening, and the mist didn't raise the floor. The photos look equally clear.

    It's research on our own grows, with one Hypha Aeris (closed beta, not for sale yet) and one camera. Want to watch the timelapses themselves? They're on our Instagram, @demeter.mycolabs.

    A schematic timeline from left to right. A blue line, labelled PM2.5 floor, runs flat near the bottom while the mushrooms are pins (about 2 µg/m³), starts climbing when the caps open, and keeps climbing to a median of about 241 µg/m³ before harvest, then drops straight down when the bin is opened. Markers along the bottom: caps open; the alarm about 6 hours later, at a floor of about 18 µg/m³; harvest, a median of 32 hours after the alarm; and the floor falling 91.5 to 99.9 % within an hour of opening the bin.
    The whole story in one picture: medians across our 10 spore episodes. The alarm fired at a median floor of about 18 µg/m³ (8 to 103 across grows), about 9 times the starting level and well before the peak. The curve's shape is illustrative; real grows rise faster or slower (the floor doubled every 4 to 20 hours) and some level off before harvest.

    What did we look at?

    We went back through nine timelapse grows that had both an Aeris and a camera on them, from April to October 2026. The Aeris's Sensirion SEN66 reads particles (in micrograms per cubic metre, µg/m³), CO2, a VOC index, a NOx index, temperature and humidity every 10 seconds. The numbers for every episode are in a CSV you can download, free to reuse with credit to Demeter Mycolabs (CC BY 4.0).

    The grows we looked at. An episode is one stretch where the spore reading rose and fell at harvest.

    Mushroom Grows Spore episodes
    Shiitake 2 2
    Pink oyster 2 2
    Blue oyster 1 1
    King trumpet 1 (2 flushes) 2
    Black pearl king oyster 1 1
    Maitake 1 1
    Lion's mane 1 1

    That's 10 episodes where spores, we think, filled the chamber. The king trumpet flushes have no photos of their caps opening, so the sensor alone shows them.

    How do you tell spores from humidifier fog?

    You watch the floor of the PM2.5 reading, not its peaks. Ultrasonic humidifier mist reads as PM2.5, because it's a cloud of tiny droplets and dissolved minerals (Ruuvi explains why; more in our humidifier guide). Every burst sends the reading to the sensor's ceiling for a few seconds, then the air clears. (That ceiling is about 6,000 µg/m³, but Sensirion only specifies accuracy up to 1,000, so the highest readings in this post are approximate.)

    The floor is what's left between bursts: every 15 minutes, take the last hour of readings and find the one a tenth of the way up from the bottom (the 10th percentile). Bursts push the top of that list off the scale, but the bottom barely moves.

    Two stacked charts over three days of a shiitake grow, Mountain time. Top, log scale: thin grey 10-second PM2.5 readings spike again and again to the sensor's maximum of about 6,000 µg/m³, while the blue floor line starts near 1 µg/m³ and climbs steadily from around the time the caps open. In the last few hours the humidifier is off: the grey spikes stop, and the floor still rises, from about 638 to 797 µg/m³, before the bin is opened at May 26, 4:52 pm. Bottom: relative humidity stays near 90 % and falls to about 65 % once the humidifier is off.
    Ultrasonic fog hits the sensor's ceiling for seconds at a time and then clears, so the peaks say nothing new. The floor between bursts is the signal: on this shiitake grow it climbed for about two days as the caps opened. When the humidifier stopped (grey band), the fog stopped and the floor kept rising (638 to 797 µg/m³), which fog can't explain.

    The best evidence came from accidents. Three times the humidifier stopped running while fruit was mature, and with almost no fog, the floor kept climbing:

    With the humidifier off, the spore reading kept rising. PM2.5 floor between bursts, in µg/m³ (clean air is about 2).

    Grow PM2.5 floor, humidifier off Share of readings that were fog
    Shiitake (the chart above) 638 to 797 µg/m³ in the last few hours 0.2 %
    The other shiitake 61 to 285 over a day 2.2 %
    Blue oyster about 150 to 525 overnight 0.2 %

    The humidifier can still fool you. When ours restarted after a dry spell on one pink oyster grow, the floor stepped from 3.3 to about 12 in a couple of hours. That's a step, not a climb, but a detector has to know the difference.

    Three photos of the same shiitake block from the same angle. Left, fruiting day 8: brown caps just starting to uncurl, PM2.5 5.9 µg/m³, clear. Middle, fruiting day 9: caps flat and upturned, PM2.5 709 µg/m³, still clear and sharp. Right, fruiting day 9: the same caps behind a milky grey-brown haze during a humidifier fog burst, PM2.5 6,016 µg/m³, the sensor's maximum.
    The camera sees fog, not spores. At the 640-pixel size we analysed, air full of what we think are spores looks as clear as clean air. At 709 µg/m³ with the humidifier off (middle) the frame is crisp; in a fog burst that maxes the sensor out at 6,016 (right) it goes milky, even though the floor between bursts was lower then (284).

    What happens to the air when mushrooms drop spores?

    The floor climbs 13 to 453 times over hours to days, and drops back as soon as the bin is opened. Across the 10 episodes it started at a median of 2.0 µg/m³, doubled roughly every 9 hours (4 to 20 across grows) and sat at a median of 241 µg/m³ in the last 3 hours before harvest. Within 15 to 60 minutes of opening the bin, it fell by 91.5 to 99.9 %. The orange bar in the chart below marks when our candidate alarm would have gone off (how the alarm works).

    Line chart, log scale, of the PM2.5 floor in a pink oyster grow from Oct 16, 2:30 pm to Oct 19, 9:00 pm Mountain time. The floor sits near 1 µg/m³ for the first day, steps up when the humidifier comes back on, climbs while the camera sees the caps opening, and holds at a couple of hundred µg/m³ for the last day before the bin is opened at Oct 19, 3:35 pm, then drops to about 3. Two inset photos: young pink pins at floor 0.6 µg/m³ and large open pink fans at floor 161 µg/m³, both crisp. An orange bar marks the detector alarm from Oct 18, 6:00 pm until the opening.
    When the pink oysters were tiny pins, the air between humidifier bursts read 0.6 µg/m³. Three days later, with the caps fully open, it read 161, yet both photos look equally clear: the camera can't see the spores, but the sensor can. Our alarm would have gone off at 6:00 pm on Oct 18, about when the caps looked ready to pick. We harvested 22 hours later, past their best, and opening the bin cleared the air right back down.

    Grows I picked within about two days of the rise starting were still climbing when I opened the bin. Grows I left longer climbed for a day or two, then held at a steady level until harvest. Our theory: once the caps were fully open they released spores at a steady rate, air moving in the bin kept some of them aloft, and the rest settled out about as fast as new ones were released, so the level held. The reading also rises and falls 2 to nearly 3 times over each day, peaking in the evening when the room is warmest. We don't know why. Our theories are the mushrooms' own daily rhythm, warm air keeping spores aloft longer, or the humidifier cycling more, and we haven't tested any of them. Whatever the cause, an alarm should wait for a high level that holds for hours, not react to a short climb.

    Small multiples, one per episode, each showing the PM2.5 floor on the same log scale from 72 hours before to 24 hours after the bin was opened: pink oyster (2 grows), king trumpet (2 flushes), black pearl king oyster, shiitake (2 grows), maitake, lion's mane and blue oyster. In most panels the floor rises from a few µg/m³ to between about 30 and 1,400 µg/m³ and drops to a few µg/m³ at the opening line; in the three grows left in longest (the second shiitake, maitake, lion's mane) it is already on a plateau across the whole window, with arrows showing the alarm came 105-150 hours earlier. Shaded bands mark when the camera saw caps opening; orange triangles mark the detector alarm, usually after the band and well before the opening.
    In all 10 episodes (9 grows, 6 species) the floor started near 2 µg/m³, rose 13x to 453x over hours to days, and dropped 91.5-99.9 % within an hour of opening the bin. Grows picked within about two days were still climbing at harvest; ones left longer had levelled off. The blue oyster's alarm came early, set off by a step in room air rather than spores.

    Does the rise start when the caps open? Roughly. In 6 of the 8 grows we could check, the reading started climbing during the stretch when the photos showed the caps opening. But opening is gradual, and that stretch lasted anywhere from 3 to 49 hours, so we can't pin the start of the rise to a precise moment. It isn't only gilled mushrooms, either: lion's mane has no caps, and its reading rose as the spines grew.

    Two photos of the same lion's mane from the same angle against a dark chamber. Left, fruiting day 12: a compact white cushion with short spines, PM2.5 10 µg/m³. Right, fruiting day 20: long white spines hanging down like icicles, PM2.5 55 µg/m³. Both are sharp.
    Lion's mane has no caps to open; its spines lengthen gradually, and the floor rose with them (5.9 to 66 µg/m³ between these two frames). The air looks the same in both.

    Which mushrooms give the strongest spore signal?

    Blue oyster, shiitake and maitake rose the most; king trumpet and lion's mane the least. Spore size explains part of it at most: king trumpet, with the biggest spores, rose least, but blue oyster, with spores nearly as long but slimmer, rose most, and lion's mane, with small spores, barely rose.

    Spore signal by mushroom. How many times higher the PM2.5 floor was in the last 3 hours before harvest than before the caps opened.

    Mushroom Spore size (µm) Rise in the PM2.5 floor before harvest
    Shiitake (2 grows) 5-6.5 x 3-3.7 84x and 380x
    Maitake 4-7 x 3-5 217x
    Blue oyster 8-12.5 x 3-4.5 453x
    Pink oyster (2 grows) 7-9.5 x 3-4.5 46x and 110x
    Black pearl king oyster as blue oyster (no published size) 74x
    King trumpet (2 flushes) 10-12.5 x 4.5-5.5 13x and 28x
    Lion's mane 5-6.5 x 4-5.5 14x

    Spore sizes are published ranges: shiitake from Pegler's monograph of the genus (Sydowia, 1983); maitake from MushroomExpert and First Nature; lion's mane from First Nature, MykoWeb and Mycocharentes; pink oyster from Zeng et al. 2025 and Landcare Research; blue oyster from First Nature and Mycocharentes; king trumpet from Mycocharentes. Sources differ a little, so treat them as typical, not exact. Black pearl king, despite its name, is sold as a grey oyster (P. ostreatus) variety (Floyd Fungi) and has no published spore size, so it borrows blue oyster's.

    Three things seem to decide how loud a mushroom is to this sensor:

    • Whether it sheds before you pick it. Oysters, shiitake, maitake and lion's mane can drop spores while they still look ready to eat. Veiled mushrooms, like button mushrooms, are usually picked before the veil breaks.
    • How big the spores are. Big spores fall out of the air faster: in our 28 cm bin, about 4 to 7 minutes for an oyster spore and 2.5 to 3.5 for king trumpet (calculated for still air, not measured). And the sensor counts particles rather than weighing them.
    • How many it makes. Oyster farms get dusty enough to give workers a lung allergy, which is why breeders made sporeless oyster strains (Lavrijssen et al. 2020). Our indoor safety guide covers the health side.
    Top: typical spores drawn to scale as ovals in a row, after two dashed reference circles for the sensor's 2.5 and 10 µm cutoffs: shiitake and maitake about 5.5 µm long, lion's mane about 6 and broadly oval, pink oyster 8 (pink), blue oyster 10 and king trumpet 11 µm. Bottom: horizontal bars of how many minutes each spore takes to settle out of a 28 cm bin: shiitake 6.8 to 9.3, maitake 5.1 to 7, pink oyster 4.8 to 6.6, blue oyster 4 to 5.5, lion's mane 3.9 to 5.4 and king trumpet 2.5 to 3.4 minutes.
    Spores are bigger than the PM2.5 name suggests: most are about 5 to 12 µm long. The bigger the spore, the faster it falls out of the air, and the fewer reach the sensor. That may be part of why king trumpet gave the smallest rise of our gourmet mushrooms.

    Don't read the table as a ranking yet: most species appear once or twice, so the differences between them aren't statistically meaningful, and the rise also depends on when I harvested. Every one still rose clearly.

    What about mushrooms with bigger spores?

    They may slip past it. After the main study we went back to a second bin: no fan at all, still air, and the Aeris mounted in the same spot on the wall as in our timelapse bin. We looked at two harvests of a gilled mushroom whose spores are roughly ten times the volume of an oyster spore. Our harvest-day photos show the caps fully open with dark gills, so spores were dropping, in about the best conditions this sensor could ask for. The floor never moved.

    Bigger spores, still air, same sensor spot. PM2.5 floor between misting, in µg/m³ (clean air reads about 2 in our timelapse bin; this bin, which isn't misted automatically, reads close to 0).

    Our gourmet grows Large-spored mushroom, no-fan bin
    Caps at harvest Open Open, dark gills
    Floor over the days before harvest Rose 13x to 453x Flat at about 0, both harvests

    Our theory is size, though we haven't tested it yet. Big spores fall out of the air fast (see the settling chart above), so in still air most land on the substrate below before they reach a sensor partway up the wall. And the sensor isn't built to size big particles. Sensirion rates it for particles up to 10 µm, but its datasheet says PM4 and PM10 are calculated rather than counted directly (SEN6x datasheet), a lab test of Sensirion's earlier SPS30 sensor put almost all 3 and 7 µm test particles in the under-1 µm (PM1) range (Gautam et al. 2025), and in our own readings PM2.5, PM4 and PM10 always came out as fixed multiples of PM1. So the biggest spores may be miscounted or missed even when they do arrive. Placement alone doesn't explain it: from the same spot, the sensor picked up every gourmet grow. A bin of the same species with a fan showed rises of 5x at most, and not every time.

    So a flat reading doesn't always mean no spores. For mushrooms with big spores, the next test is the sensor moved low, right next to the caps, with a dark card underneath to show the spores are really falling.

    What did the other Aeris readings do?

    None of them moved consistently when the spore reading started rising: CO2, temperature, humidity and the NOx index barely changed, and the VOC index mostly jumps when someone handles the bin. With 10 episodes, that means no consistent shift, not proof they're flat.

    Could the sensor tell you when to harvest?

    In a replay of our season, yes. Our best candidate detector, D1, is deliberately simple:

    1. Every 15 minutes, smooth the floor over the last 6 hours.
    2. Remember its lowest point since the bin was last opened.
    3. Raise the alarm once it has stayed above 5 times that low point, and above 5 µg/m³, for 4 hours straight.
    4. Stay on until the bin is opened. Skip fog and room-air hours, hold fire during continuous mist, and start over after an opening or a sharp jump in humidity.

    We replayed the whole season through it as if it had been running live, with its settings frozen:

    How the candidate alarm (D1) did, replaying April to October with its settings frozen.

    Measure Result
    Spore episodes caught 9 of 10 (all 10 if an alarm up to a day before the caps opened counts, but the tenth is luck)
    When it fired median 6.1 hours after the caps were visibly open (13 hours before to 17 after)
    Warning before I harvested median 32 hours, never under 15
    False alarms 2: a blip of under 2 hours before the first king trumpet flush, and a room-air step on the blue oyster

    The 32 hours is how long after the alarm I actually harvested, not how long the mushrooms needed. The alarm went off a median of 6 hours after the caps started opening, which is about when you'd want to pick them; my harvests came later, often past their best. Our harvest guide shows what too early, just right and too late look like, and our grow timeline has the weeks to first harvest for each species.

    Three pairs of photos, each the same block from the same angle. Left of each pair, labelled Alarm: harvest now; right, labelled When we harvested. Lion's mane, fruiting day 14 (floor 23) against fruiting day 20 (floor 66), 150 hours later; Maitake, fruiting day 9 (floor 8.3) against fruiting day 14 (floor 681), 122 hours later; Shiitake, fruiting day 8 (floor 22) against fruiting day 9 (floor 794), 32 hours later. In each pair the left mushrooms look ready to pick (lion's mane with short white spines, maitake with open, firm fronds, shiitake with caps just opening), and the right ones are past it (long spines, pale thin fronds, flat split caps).
    Replaying our sensor data, the alarm would have said harvest when these looked ready to pick, 150 hours, 122 hours and 32 hours before we actually did. Lion's mane and maitake are the two grows I left in longest; the shiitake is closer to a typical grow.

    Where it went wrong:

    • The blue oyster's room air. The day before its caps opened, something in the room raised the floor in one step, with a jump in the VOC index. D1 went off early, so we count it as a miss, and the VOC index becomes a candidate for vetoing false alarms.
    • The humidifier restart. The pink oyster's restart step would have counted as a rise. Starting over when humidity jumps fixed that, at a price: D1 fired 17 hours after its caps were open.
    • Switching itself off. An earlier version dropped valid alarms when the humidifier changed mode mid-release. Now it latches.
    Two photos of the same blue oyster block from the same angle. Left, fruiting day 6: young grey-white funnel-shaped caps, still rolled in, PM2.5 16 µg/m³. Right, fruiting day 7: large flat, wavy white caps, PM2.5 512 µg/m³, the frame still clear.
    The floor went from 14 to 514 µg/m³ in about a day, the last stretch with the humidifier off. The left frame is not a clean baseline: its floor had already been raised the day before by a step in room air (with a VOC jump), not by spores. That same step set our detector off early on this grow.

    Its rules were tuned on these same grows, so treat those numbers as a first look, not a validated false-alarm rate.

    How sure are we, and what's next?

    Fairly sure that something real happens to the air as these mushrooms mature: the rise and the drop at harvest showed up in all 10 episodes. Not at all sure yet that our alarm would work on your grow. This is early-days work, and with 10 episodes most of the finer numbers here, like differences between species, the alarm's timing and its false-alarm rate, are too thin to be statistically meaningful. They describe our grows, not mushrooms in general.

    What we don't know yet, and how we'll find out.

    Open question Why we can't say yet What would settle it
    Whether it works beyond our chamber One chamber, one Aeris, one grower; most species once or twice; three episodes share one April stretch A second Aeris and new grows, settings frozen
    Whether the particles are spores No tape lift, microscope or reference counter, so mycelium, mold or substrate dust can't be ruled out A dark slide under the caps, then a tape lift under a microscope
    Whether the rules are overfitted The labeller had seen the sensor data, and the filters were designed on these grows Run D1 silently on new grows with blind photo labels; more than about 15 false alarms per 100 usable fruiting days sinks it
    Whether it's the fruit or the air swap Every reset happened at harvest, which removes the fruit and swaps the air at once Open one bin mid-rise with the fruit left in
    Whether it stays quiet without spores Only the short stretches before each grow's caps opened, and it fired in two Blocks harvested before their caps open
    Whether it can see bigger spores One large-spored mushroom in a still bin stayed flat with its caps open The sensor moved low next to the caps, with a dark card underneath
    Which block is dropping spores Our test bin held one block at a time A bigger grow room with several blocks fruiting at once, to see if Hypha can tell which one it is; we already have readings from many grows in one to go through

    What we're building into Hypha and Aeris, in order:

    1. The tests above, starting with D1 running silently on new grows and the dark slide.
    2. Then, maybe, a nudge. If all that holds up, Hypha could tell you the caps are mature and it's time to harvest or take a print. Nothing growers see until then.

    If you've watched spores pile up in your own chamber, or you have a slide, a microscope and opinions, email team@demetermycolabs.com. I read all of it.

    The pink oysters are long since eaten. The camera's been fixed since: it now waits out a fog burst but keeps shooting through a slow rise in spores.

    — Sharon


    Text and photos © Demeter Mycolabs LLC. The episode data is CC BY 4.0: reuse it with credit to Demeter Mycolabs.

    Photo of Sharon

    Written by Sharon

    Sharon is an engineer turned full-time mushroom grower and explorer. With 15 years in software engineering, including several years leading a SW team in defense tech, she chose a new mission aligned with her values. Now she builds reliable systems that help small farms thrive.

    Sharon's bio and all posts →
    All posts

    Track your grow in Hypha

    Hypha is a mushroom grow tracking app by Demeter Mycolabs, for iOS, Android and the web. It follows each block from inoculation through harvest, keeping strains and lineage, tasks, inventory, costs and photos in one place.

    Get Hypha free

    Free forever · 60 days of Pro included · No credit card · iOS, Android & web