Glee · hardware research · updated continuously · source: github.com/…/research

Glee hardware research: what should the sensor be?

Live at research.gleepark.me. This folder is updated continuously by a research loop: hypotheses, experiments (code + data + results) and the current recommendation. Nothing here has been tested on a street yet unless it says so.

The question

What hardware tells a city, in near real time, whether each on-street parking space is free? It must be cheap enough to cover whole streets, easy enough that a city will let us install it, and right often enough that drivers trust the map. The form factor is open. It doesn't have to be "cheese" (the thin sheet stuck under the car).

Breaking it down

Sub-problemWhat decides itStatus
1. Sensing: how do we know a car is there?accuracy, cost of the sensor, power per readingExperiment 1 done (simulation); method survey in progress
2. Placement / form factor: in the road, on the curb, on a pole, overhead?permits, install time, winter, theft, what the sensor can "see" from theredeployment survey in progress
3. Power: battery, solar, mains?where it's mounted (light), what it drawsmodel done for cheese (hardware/swiss/SCENARIOS.md)
4. Radio / network: LoRaWAN under a car, gateway densitylink budget, gateway cost per spaceExp 11 done (model); real under-car and on-post numbers come from American cheese
5. Cost and scaling: $ per space per year, all-inunit cost, install labour, maintenance, gateways, networknext experiment
6. The city: what Cambridge will approve and maintainpermits, liability, snow operations, privacydeployment survey in progress

Hypotheses

#HypothesisHow we test itVerdict so far
H1Two magnetometers in the road (cheese) can tell a parked car from neighbours and traffic without a radarExp 1 (calibrated to measurements), then American cheese on real carsWeakened: with the car model calibrated to published measurements, cheese scores ~94 % (single magnetometer ~91 %, matching field studies' 81-93 %). The cause is dead zones: between a car's axles the field barely changes (magnetics report). 4 magnetometers reach ~99 %; a radar ~99.5 %
H2A magnetometer on the curb (no road work) is good enoughExp 1Rejected: ~72 % in the calibrated simulation
H3A small radar makes detection robustsurvey + Exp 4 (XM125 radar on real cars)Strongly supported by the industry: Bosch, Libelium, Option, Fleximodo and KKM all moved to magnetometer + radar. A 60 GHz A121 radar is ~$10, 5 × 5 mm, and adds < 1 µA if it only confirms magnetometer events
H4Mounting on existing meter poles beats anything in the road for permits, winter and maintenancedeployment report, Exp 3Supported for deployment (single-space meter poles at the curb; no digging, no lane closure, above plows). Accuracy depends on the aim (Exp 3): looking straight across, a pole radar can't tell its own car from the neighbour's (65 %); angled 50-65° into its own space with a 3-4 m range limit, ~100 % in the model. A plausible explanation for Boston's "many problems with the data's accuracy"
H5One sensor can cover several spaces and win on cost per spaceExp 2, Exp 8Cameras do, but Cambridge's Surveillance Ordinance makes them a poor fit. A pole unit with two radars (one per space) cuts cost per space ~35 % at 1,000 spaces ($2.17 vs $3.32/month, Exp 8)
H6The radio signal itself (RSSI) is a free second opinionAmerican cheese logsSupported in literature: LoRa RSSI alone reached 96-97 % in one study. Free: log it from day one
H7Not every space needs a sensorliterature, Exp 9Depends on the product. For a block-level heat map (planning, demand pricing), 25-50 % coverage works (DDOT; Exp 9: estimate within ~1-2 spaces) at a quarter to half the cost. For telling a driver where a free space is, no: on a nearly full block the app knows the free space only about as often as the share of spaces with sensors (50 % coverage -> 66 %)
H9Weather won't blind a 60 GHz radarweather report (layered-model calculation, sources)Split. Rain, fog and falling snow in the air: negligible (< 0.2 dB). Anything on the window is not: a 0.1 mm water film costs ~10 dB two-way, 1 mm ~47 dB, 2 mm of slush ~44 dB; ice, dry snow and dust are minor. So the in-road radar is blind whenever water stands on the sheet (the magnetometer must decide then), and a pole radar needs a vertical window under a hood, mounted at ~1.2 m above plowed snowbanks, and a "blocked" state
H10The same radar works from private property (building facade or shop window) and so avoids city pole feesExp 13 (geometry), Exp 14 (Bow Street data), facade reportA fallback, not a replacement. Geometry works (Exp 13) and 22 of 38 Bow Street spaces have a usable building front (Exp 14). But low-E / solar-control glass blocks 60 GHz (22-45 dB each way) and most recent storefront glass is coated, so behind-the-window works only with clear (older) glass; outside on the facade, a box under 6 in needs no Council petition but does need the owner, and in the Harvard Square Conservation District a Historical Commission certificate. The Surveillance Ordinance doesn't apply to private hosts. Expect 10-20 % of hosts lost a year. Worth it only if the city fee is high or the answer is no
H8Cheese (stuck to the road) survives a Cambridge winterwinter report, Exp 10, winter field testNo as designed; only as road work. No snowy city uses glued-on street sensors (all in-ground); Exp 10: butyl-on sheets are torn off by any plow that reaches them. Only a strong bond plus a flush or very gently ramped sheet survives, which needs milling and a permit. Original reasoning: The case against: ~7 mm proud of a plowed, salted surface (snowbelt states recess raised pavement markers because plows tear them off); Bow Street's odd side is a snow-emergency route plowed curb to curb; adhesive weakens in freeze-thaw; and slush on top blinds the radar anyway (H9). The case for: on non-emergency streets the parking lane often isn't plowed to the pavement while cars are parked. Test this winter: 2-3 dummy sheets (no electronics) on Bow Street's even side, checked after each storm; ask Cambridge DPW how plows treat parking lanes on non-emergency streets

Experiments

#ExperimentResult
0Pilot data: what the two LAS7 pucks reported Nov 2-8 (data, refreshed from the live backend)Bench testing, not street parking (median episode 2.4 min, signal up to -25 dBm). No street data exists yet. H6 check: signal strength while "occupied" vs "free" goes opposite ways on the two pucks (Puck-01 24 dB stronger, Puck-02 7.5 dB weaker): the pucks were being moved, so this data can't test H6; the street log will
1Which architecture detects best?: Monte Carlo, 2,500 situations, car model calibrated to measurementsRadar (under the car or on a pole) ~99.5 %; 4-magnetometer array 98.6 %; cheese (2 magnetometers) 93.7 %; single magnetometer 90.6 % (matches field studies); curb magnetometer 71.5 %
2Cost per space per year, all-in over 5 yearsMeter-pole radar $13-21; in-road sheet or cored puck $41-46; commercial reference $105
3What a pole radar sees: ray-traced, 288 mountings searchedAim decides it: straight across 65 %; angled 50-65° into its own space with a 3-4 m range gate ~100 % (idealised). Mount at ~1.2 m: a 0.9 m snowbank blinds a 0.9 m sensor, not a 1.2 m one; the sensor can recognise "blocked" and say so
4Real radar on real cars: SparkFun XM125 (A121) on American cheese's mux, under a car and on a poleneeds a $50 part: SparkFun SEN-24540
5Can firmware beat the dead zones?: time-series of real parking manoeuvresNo. At 3 s sampling, today's thresholds catch 29 % of arrivals (cars parked over a dead zone are never seen); lower thresholds catch 91 % but never clear (6 % of departures); latching on transients misses most of them. Magnetometer wakes a radar: 97 % arrivals, 100 % departures, ~18 µA
14Bow Street from the city's open data: real data: the city's metered-space outlines, street trees and every parking ticket since 2014 (with meter IDs), plus OpenStreetMap buildings38 metered spaces, ~6.2 m each, 2-hour or 30-minute at $2/h, no smart meters. ~1,500 tickets a year (40 per space; the four 30-minute spaces by Mass Ave draw 60-160 each). A street tree sits in a pole radar's beam at only 1 of 38 spaces. A building front stands 1.3-6.4 m behind the curb at 25 spaces; 22 of 38 suit a facade unit (building within 6 m, no tree in view); 13 face no building. The site survey shrinks to the meter posts themselves
13Does the radar work from a building facade? (H10): Exp 3's ray-traced street with the radar on the building across a 2-4 m sidewalk, 2.5-3.5 m up, plus pedestrians under the beam and imperfect placementGeometrically, yes: looking down across the sidewalk at its space's centre, ~99.4-100 % in the idealised model at every sidewalk width, with or without busy pedestrians and even when the unit can't sit exactly opposite its space. The range gate starting at the curb keeps sidewalk walkers out (a person inside the gate on ≤ 1.4 % of empty readings, for Exp 12's filter). Not modelled: street trees, signs and meter heads in the beam; whether there's a usable facade, glass, owner consent and permits (facade report in progress)
12Can the pole radar tell a person from a parked car?: Monte Carlo of reflection size and stillness, people standing anywhere in the beam vs cars anywhere in the space, radar cross-sections swept over the published rangesYes, with two rules and a slightly slower arrival. Raw strength fails (a near person returns as much as a far car). Strength corrected for distance (an estimate of reflector size) plus "the reflection holds still over 4 readings (15 s)" passes 0.07 % of standing people in the middle case, ≤ 1.6 % in the worst, while keeping 99.5 % of cars: Exp 7's ~4 false episodes a day drop to ~0-0.06. Cost: arrivals confirmed in 15-20 s instead of ~10 s; many scooters/motorbikes dropped by the size rule (a setting). Thresholds come from Exp 4 data. Built into pole mode (tick 18): stillness on (4 readings, < 20 mm), size rule off until Exp 4 sets it; sim_pole passes (a fidgeting person ignored, cars in 20 s, departures in 10 s)
11How many spaces can one gateway serve?: LoRaWAN link budget, 3GPP urban street-canyon model at 915 MHz, shadowing Monte Carlo; post vs in-road vs under a car; SF7-SF10Range isn't the limit. From a meter post, 90 % of uplinks reach a rooftop gateway ~1.4 km away at SF7 (~15,000 spaces in reach); under a parked car the range shrinks ~4x (~600 m, and only at SF10). Gateway count is set by sites and redundancy, so Exp 8's gateway share was pessimistic ($0.05-0.14 -> ~$0.01-0.03/space/month). The radio's real cost is battery: SF10 averages ~43 µA at our message rate vs ~7 µA at SF7, which a pole sensor near a gateway can avoid and an under-car sensor can't
10Does a stuck-on sheet survive a winter of snowplows?: physics of a blade meeting the sheet + a Monte Carlo over a winter of plow passes; 5 shapes x 3 glues x 2 streets; checked against real road-marker lossesToday's design doesn't: butyl, 8.5 mm, 1:4 ramps survives 0 % of winters on the snow-emergency side, ~38 % on the regular side. A plow at speed can't lift its blade over the step in time, so the sheet gets whatever force makes the plow's spring-loaded edge give (1.5-50 kN); a butyl pad holds ~2 kN at one edge. With butyl nothing helps; with epoxy, gentle 1:20 ramps (93 %) or flush in a milled pocket (98 %) survive, matching recessed road reflectors (< 1 % lost a winter), but that's road work and a permit, i.e. the cored puck
9Does every space need a sensor?: a 12-space block, 60 simulated days, quiet / busy / packed demand, 25-100 % of spaces sensoredOnly if we guide drivers to a space. When a block is ≥ 80 % full and a space is free, the app can point to it 37 % of the time at 25 % coverage, 66 % at 50 %, 87 % at 75 %. Block-level estimates stay within ~1-2 spaces at 25-50 % coverage. Product choice sets hardware count: per-space guidance on busy blocks = every space; heat map / pricing = sample
8What happens as we scale?: Exp 2 plus volume pricing and fixed costs (FCC test, insurance, hosting, network, gateways, a possible city fee), 100 / 1,000 / 10,000 spacesPole sensor: ~$8.82 per space per month at 100 spaces, $3.32 at 1,000, $2.18 at 10,000 (2 spaces per unit: $2.17 at 1,000), re-run with the priced bill of materials ($78/unit at 1,000, not the $50 first assumed) and Exp 11's gateway numbers. In-road options ~$5.20-5.30 at 1,000 and barely improve with scale (their cost is recurring labour). Commercial reference ~$8.42. At pilot scale fixed costs dominate whatever the hardware. The input that moves the pole sensor's cost most is a city fee for using meter posts ($0-20/space/yr swings it $2.43-4.09), more than the hardware price
7How should a pole radar poll?: 30 simulated days of cars and pedestrians per settingEvery 5 s, 2 agreeing readings: cars reported in ~8 s (95 %: 10 s), ~4 false "occupied" a day from people standing in the beam, >15 years on one D-size lithium cell. A single reading is unusable (~98 false changes a day, mostly the radar's own per-reading errors). So a pole sensor needs no magnetometer at all. Built into the firmware's pole mode; firmware/test/sim_pole.cpp passes
6Exp 5's winner, built: radar fusion in the real firmware, run on simulated hardware (firmware/test/sim_radar.cpp)Works in simulation. The kit firmware now drives an XM125 on mux port 2 (Acconeer's register protocol, every wait with a timeout). Dead-zone car (only ~1 µT left after parking): magnetometers alone say free, radar says occupied on the first reading. Silent departure: caught by the 45 s re-check (30 s in the run). Car next door: wakes the radar, which sees nothing in its 6-80 cm gate, so nothing is sent. Empty hour: 6 radar checks. Radar unplugged: falls back to the magnetometers after 5 misses, picks the radar up again within 10 min. Messages carry a "radar decided" flag end to end (firmware, backend, TTN formatter). Not yet run on the real XM125

Provolone v0 (designed, not yet built)

A printed box strapped to a meter post with two hose clamps: American cheese's boards, the XM125 behind a 1.5 mm window (about half a wavelength at 60 GHz in PETG), a power bank. The whole box is aimed: turn it on the post until the line on the lid runs parallel to the curb, and it faces 55° into its space. Build, aim and test steps: hardware/provolone/README.md.

Provolone v0 on a meter post

Plan view: pole at the space boundary, beam into its own space, neighbour outside it

Reports

Current direction

Updated after Experiments 1-10 and four research reports. Nothing below has been tested on a street yet.

The recommended system: a radar on the meter post ("Provolone"), LoRaWAN to our backend, sold as occupancy data.

QuestionAnswer so farEvidence
What senses the car?A 60 GHz radar (Acconeer A121). Magnetometers alone top out ~91-94 % (dead zones under cars); radar ~99.5 %Exp 1, Exp 5, magnetics
Where does it go?On the meter post, ~1.2 m up, aimed 55° into its own space. No digging, no lane closure, above the plows and most snowbanksExp 3, deployment, weather
Why not in the road?A stuck-on sheet doesn't survive plowing (0 % of winters on a snow-emergency street, Exp 10); surviving needs epoxy or a milled pocket = road work. Slush on top also blinds an in-road radar (H9)Exp 10, winter
Does it need a magnetometer?No. On a pole the radar reads every 5 s, 2 agreeing readings: cars reported in ~8 s, >15 years on one D-cellExp 7
What does it cost?~$3.32 per space per month at 1,000 spaces ($2.17 with two radars per unit) vs ~$8.42 for the commercial reference; ~$9 at 100 spaces (fixed costs dominate a pilot). Unit: ~$78 at 1,000 (XM125 module), ~$44 at 10,000 (bare A121 chip, moulded box)Exp 8, BOM
Biggest unknownsThe city: permission and a fee. No federal cap protects a parking sensor (the FCC's $270/yr limit covers only phone-carrier small cells), and Cambridge charges its own small cells $270/yr per installation. The pole sensor beats a commercial system only while the fee stays under ~$67/unit/yr (~$156 with two radars per unit); at $270 it costs ~$25/space/month. Then: the radar's real accuracy next to neighbours and peopleExp 8 fee sweep, city report, Exp 4 (pending)
Every space?Only if we guide drivers to a specific space. A block-level map for the city works at 25-50 % coverageExp 9
FirmwareBuilt and simulated: radar fusion (in-road), pole mode, blocked/unknown handling, data logging, repeat of every state changefirmware/test/sim_*

Cheese's role: the learning device. American cheese (arriving now) gives the first real under-car and on-pole data: magnetometers + radar + radio signal, logged at 1 Hz. Swiss cheese is on hold until that data says the in-road option is worth building; if it is, it's a seasonal device on non-emergency streets, or a flush-mounted puck.

The two things that decide the most: (1) The city's answer on permission and fees, now first: the questions are ready in the city report (who approves; any fee, and could a pilot be waived or charged per block; does the Surveillance Ordinance apply; is Bow Street allowed). Never install anything without written permission: Cambridge ended its Flock contract after cameras went up "without the City's awareness". (2) Experiment 4: the XM125 on a real post next to real cars (Provolone v0, printable now; the radar is in stock at SparkFun).

If the fee comes back high: the radar and firmware carry over to placements that don't use city poles: a box on a private building facade or in a ground-floor window looking at the parking lane (owner's permission, no city fee; H10, untested), or selling to private lots and garages first.

Next

Experiment 10: does a stuck-on sheet survive a winter of snowplows?

A physics model of a plow blade meeting the sheet, run over a simulated winter of plow passes (4,000 winters per case, research/sim/snowplow.py). The sheet is Swiss cheese's A4 footprint (297 × 210 mm), 8.5 mm tall on its glue with 1:4 beveled edges today.

One pass: why the bevel doesn't save it

At road speed a plow can't lift its blade over a 9 mm bump in the few milliseconds a 1:4 ramp gives it, so the push on the sheet is whatever makes something give first: the plow's spring-loaded edge folds back, a rubber edge bends, or the glue lets go. Typical values for today's design:

PlowSpeedPush needed to get over (8.5 mm, 1:4)Plow edge gives way atPush the sheet actually gets
pickup / one-ton with trip edge20 km/h32 kN5 kN5.0 kN
city dump truck, trip moldboard25 km/h34 kN15 kN15.0 kN
loader / backhoe bucket (no give)8 km/h38 kN50 kN37.9 kN
rubber or urethane edge20 km/h32 kN1.5 kN1.5 kN

What the glue can hold against a push at one edge (likely values): butyl pad 1.9 kN, hot-melt bitumen 18.7 kN, epoxy 28.1 kN. Butyl is weaker than the push from every kind of plow; bitumen and epoxy beat pickup and truck plows but not a loader bucket.

A whole winter

Share of sheets still attached in spring ("survives") and with an undamaged bond ("unharmed").

snow-emergency route (Bow St odd side)

Shapebutyl padhot-melt bitumenepoxy
today: 8.5 mm tall, 1:4 ramps0 % (0 % unharmed)9 % (2 % unharmed)31 % (9 % unharmed)
8.5 mm, 1:8 ramps0 % (0 % unharmed)14 % (3 % unharmed)54 % (18 % unharmed)
8.5 mm, 1:20 ramps (17 cm wide border)1 % (0 % unharmed)63 % (26 % unharmed)93 % (68 % unharmed)
6 mm tall, 1:10 ramps (winter report's limit)0 % (0 % unharmed)20 % (4 % unharmed)66 % (25 % unharmed)
flush: set in a milled pocket, <= 0.5 mm proud0 % (0 % unharmed)78 % (41 % unharmed)98 % (82 % unharmed)

regular street (Bow St even side)

Shapebutyl padhot-melt bitumenepoxy
today: 8.5 mm tall, 1:4 ramps38 % (36 % unharmed)72 % (56 % unharmed)87 % (68 % unharmed)
8.5 mm, 1:8 ramps38 % (35 % unharmed)77 % (58 % unharmed)94 % (73 % unharmed)
8.5 mm, 1:20 ramps (17 cm wide border)45 % (37 % unharmed)95 % (75 % unharmed)99 % (93 % unharmed)
6 mm tall, 1:10 ramps (winter report's limit)45 % (42 % unharmed)83 % (64 % unharmed)96 % (79 % unharmed)
flush: set in a milled pocket, <= 0.5 mm proud53 % (47 % unharmed)98 % (87 % unharmed)100 % (97 % unharmed)

Sheets lost, by the plow that took them: city dump truck, trip moldboard 54 %, loader / backhoe bucket (no give) 23 %, pickup / one-ton with trip edge 20 %, rubber or urethane edge 2 %.

Reading

Assumptions that decide the answer (all estimated; replace with measurements): cold bond strength of butyl pads (0.03-0.3 MPa assumed; nobody publishes it, CHEESE_DESIGN.md calls for a peel test), the force at which plow edges trip (2-30 kN assumed; manufacturers give no numbers), the plow mix on Cambridge streets, and how often the blade reaches bare pavement in the parking lane. Not modelled: the sheet cracking before the glue lets go, ice bonding the sheet in place, abrasion (small: steel sliding over the top wears microns per pass).

Sources for the numbers used: snowplowable markers sit in epoxy-set castings in milled grooves; Vermont found 93 % of an earlier snowplowable marker type damaged (VTrans); hot-melt bitumen marker adhesive bond >= 1.4 MPa (Wyndham spec 853); epoxy marker bond >= 500 psi at 77 F (TxDOT/CTR); butyl pads need primer below 50 F (Pexco); trip edges are spring-loaded to fold back on manhole covers (Loegering, US 6073371).

Experiment 12: can the pole radar tell a person from a parked car?

Exp 7's remaining error on a pole: people standing in the beam (~4 false "occupied" episodes a day). The radar gives each reflection's distance and strength. Monte Carlo (research/sim/people_vs_cars.py, 200,000 cases per setting): cars parked anywhere in the space (nearest reflection 0.7-2.5 m), people anywhere in the beam (0.4-4 m), two readings 5 s apart. Every rule is tuned to keep 99.5 % of cars; the table shows how many standing people still pass as a car.

Radar cross-sections at mm-wave are published as ranges, not one number (people are small dielectric reflectors, much weaker than vehicles: IET RSN 2019, JRC 24/77 GHz library, arXiv 1910.13706), so they're swept: car side at a slant 5 / 10 / 15 dBsm, person -12 / -8 / -4 dBsm.

Middle case (car 10 dBsm, person -8 dBsm)

RuleStanding people passed as a carExp 7's false episodes/day becomeMotorbikes/scooters still detected
raw strength24.44 %~0.9577 %
distance-corrected strength1.26 %~0.0555 %
stillness (peak moves < 12 mm)29.83 %~1.16100 %
corrected strength + stillness0.73 %~0.0364 %
corrected strength + stillness over 4 readings (15 s)0.07 %~0.0064 %

All cases: standing people passed as a car

Car RCSPerson RCSRaw strengthDistance-correctedStillness (2 readings)Corrected + stillness (2)Corrected + stillness (4 readings)
+5 dBsm-12 dBsm26.5 %2.4 %29.7 %1.4 %0.1 %
+5 dBsm-8 dBsm36.5 %17.7 %29.8 %7.9 %0.6 %
+5 dBsm-4 dBsm48.7 %54.2 %30.2 %20.7 %1.6 %
+10 dBsm-12 dBsm17.2 %0.1 %29.7 %0.0 %0.0 %
+10 dBsm-8 dBsm24.4 %1.3 %29.8 %0.7 %0.1 %
+10 dBsm-4 dBsm33.5 %11.8 %29.9 %5.6 %0.4 %
+15 dBsm-12 dBsm10.1 %0.0 %29.7 %0.0 %0.0 %
+15 dBsm-8 dBsm15.6 %0.0 %30.0 %0.0 %0.0 %
+15 dBsm-4 dBsm22.3 %0.6 %29.8 %0.4 %0.0 %

Reading

Assumptions to check in Exp 4: the RCS ranges (literature is at 77 GHz, the A121 is 60 GHz; near-range returns from a car side at a slant aren't far-field RCS), sway of a standing person (~3 cm in 5 s assumed), the A121's distance noise (~1-2 mm assumed), and that the strongest peak is the one we read (the firmware reads peak 0; the detector can sort by strength).

Test to add to the pole test plan: stand in the beam at 0.5, 1, 2 and 3 m for 60 s each (still, then fidgeting), and walk through it; log alongside a parked car at the same distances.

Experiment 13: does the radar work from a building facade? (H10)

Exp 3's ray-traced street (research/sim/pole_radar.py) with the radar moved onto the building across the sidewalk (research/sim/facade.py). Searched: sidewalk width 2 / 3 / 4 m, mounting height 2.5 / 3.5 m, down-tilt 15-45°, range gate from the curb to 0-1 m past a parked car. Then the best mounting per width with people walking under the beam (someone in the path on 0 / 15 / 40 % of readings) and with the unit aligned with its space or wherever the frontage allows (always aimed at the space's centre). A reading counts as "hidden" when people block most of the beam.

Best mounting per sidewalk width (no pedestrians)

SidewalkHeightDown-tiltGate past the carAccuracyMissedFalse alarms
2.0 m2.5 m15°+0.0 m100.0 %0.0 %0.0 %
3.0 m2.5 m15°+0.0 m100.0 %0.0 %0.0 %
4.0 m2.5 m15°+0.0 m100.0 %0.0 %0.0 %

With people on the sidewalk, and with imperfect placement

SidewalkPeople in the beam's pathUnit placementAccuracy (vehicles only)MissedFalse alarms (vehicles)Readings hidden by peopleEmpty-space readings with a person inside the gate
2.0 m0 %opposite its space99.9 %0.0 %0.2 %0.0 %0.0 %
2.0 m0 %anywhere along it100.0 %0.0 %0.0 %0.0 %0.0 %
2.0 m15 %opposite its space99.8 %0.0 %0.4 %0.0 %0.0 %
2.0 m15 %anywhere along it100.0 %0.0 %0.0 %0.0 %0.0 %
2.0 m40 %opposite its space99.9 %0.0 %0.2 %0.0 %0.0 %
2.0 m40 %anywhere along it100.0 %0.0 %0.0 %0.0 %1.4 %
3.0 m0 %opposite its space100.0 %0.0 %0.0 %0.0 %0.0 %
3.0 m0 %anywhere along it100.0 %0.0 %0.0 %0.0 %0.0 %
3.0 m15 %opposite its space100.0 %0.0 %0.0 %0.0 %0.0 %
3.0 m15 %anywhere along it99.8 %0.4 %0.0 %0.0 %0.0 %
3.0 m40 %opposite its space100.0 %0.0 %0.0 %0.0 %0.0 %
3.0 m40 %anywhere along it100.0 %0.0 %0.0 %0.0 %0.4 %
4.0 m0 %opposite its space100.0 %0.0 %0.0 %0.0 %0.0 %
4.0 m0 %anywhere along it99.5 %1.0 %0.0 %0.0 %0.0 %
4.0 m15 %opposite its space100.0 %0.0 %0.0 %0.0 %0.0 %
4.0 m15 %anywhere along it99.8 %0.4 %0.0 %0.0 %0.0 %
4.0 m40 %opposite its space99.9 %0.2 %0.0 %0.0 %0.0 %
4.0 m40 %anywhere along it99.4 %1.2 %0.0 %0.0 %0.0 %

Reading

Assumptions: flat sidewalk and street; no trees, signs or meter heads in the beam (Bow Street has street trees: a tree trunk in the path would look like a parked car and must be learned as background); people as 0.5 m boxes; the same idealised beam and box cars as Exp 3, so absolute accuracies are optimistic in the same way.

Experiment 14: Bow Street from the city's open data

A desk survey instead of a model: every metered space on Bow Street from the city's Metered Parking Spaces layer, Street Trees, building outlines and the street centreline from OpenStreetMap, and every parking ticket written on Bow Street since 2014 (tickets carry the meter ID). Raw downloads in research/data/cambridge/, analysis in research/sim/bow_street.py.

Bow Street map

What's there

Per space

SpaceLengthLimit / rateTickets/yr (2023-25)Tree in pole beamBuilding behind curbTree in facade view
BOW-00015.7 m30 minute $2.0062no5.8 mno
BOW-00026.0 m2 hour $2.0015no2.7 mno
BOW-00035.7 m30 minute $2.00125no2.7 mno
BOW-00046.7 m2 hour $2.0022no5.0 mno
BOW-00056.5 m30 minute $2.00153no2.3 mno
BOW-00066.4 m2 hour $2.0019no1.7 mno
BOW-00076.2 m30 minute $2.00164no2.3 mno
BOW-00086.2 m2 hour $2.0017no6.4 mno
BOW-00096.3 m2 hour $2.001no3.9 mno
BOW-00115.9 m2 hour $2.001nonone within 25 m-
BOW-00136.1 m2 hour $2.0011nonone within 25 m-
BOW-00146.4 m2 hour $2.0017no2.0 mno
BOW-00157.0 m2 hour $2.0018nonone within 25 m-
BOW-00166.2 m2 hour $2.0022no1.8 mno
BOW-00176.2 m2 hour $2.0021nonone within 25 m-
BOW-00186.7 m2 hour $2.0016no1.4 mno
BOW-00195.8 m2 hour $2.0012nonone within 25 m-
BOW-00206.5 m2 hour $2.0063no1.3 mno
BOW-00215.9 m2 hour $2.0011nonone within 25 m-
BOW-00226.1 m2 hour $2.0059no1.3 mno
BOW-00236.4 m2 hour $2.0026nonone within 25 m-
BOW-00246.2 m2 hour $2.0055no1.3 mno
BOW-00255.9 m2 hour $2.0011nonone within 25 m-
BOW-00266.3 m2 hour $2.0052nonone within 25 m-
BOW-00276.5 m2 hour $2.007nonone within 25 m-
BOW-00296.5 m2 hour $2.0018nonone within 25 m-
BOW-00316.0 m2 hour $2.0012nonone within 25 m-
BOW-00336.4 m2 hour $2.0017nonone within 25 m-
BOW-00355.9 m2 hour $2.0012no4.4 mno
BOW-00375.5 m2 hour $2.0015no2.2 mno
BOW-00396.5 m2 hour $2.0015no2.0 mno
BOW-00416.0 m2 hour $2.005no1.4 mno
BOW-00476.2 m2 hour $2.0082no3.4 mno
BOW-00496.1 m2 hour $2.0093no3.4 mno
BOW-00516.3 m2 hour $2.0088no3.4 mno
BOW-00536.2 m2 hour $2.0084no3.4 mno
BOW-00556.3 m2 hour $2.0086no3.3 myes
BOW-00575.9 m2 hour $2.002yes3.0 myes

Reading

Caveats: OpenStreetMap building outlines and the city's space polygons are a few tens of centimetres off each other; "odd/even" here is the space ID's parity, not verified against the street side; trees use the city's trunk diameter; the 2022 ticket file appears to be missing from the dataset.

Experiment 1: which architecture detects parked cars best?

Monte Carlo, 2500 situations (half occupied). Thresholds are chosen on one half of the trials and scored on the other. Generated by research/sim/architectures.py.

ArchitectureAccuracyMissed carsFalse alarmsBest threshold
In-road upward radar (A121-class)99.6 %0.5 %0.3 %—
Pole/meter-post side radar or ToF99.5 %0.4 %0.6 %—
In-road 4-magnetometer array (24 x 20 cm)98.6 %2.6 %0.2 %2.5 uT
In-road 2-magnetometer gradiometer (cheese, 21 cm)93.7 %8.2 %4.5 %0.8 uT
In-road single magnetometer90.6 %14.7 %4.2 %1.9 uT
Curb-face magnetometer71.5 %43.2 %13.8 %1.5 uT

What each trial randomises: car size (small car to van) and where it stops in its 6 m space; gap to the curb (10-50 cm); cars in the spaces in front and behind (70 % each, anywhere in their space); a car or bus in the travel lane (30 %); street direction vs magnetic north; sensor noise (0.2 uT RMS); temperature drift since calibration (0.5 uT shared, plus 0.3 uT per sensor); each sensor's ~1 % gain error on Earth's field; and how magnetic cars really are (log-normal multiplier, x0.4 to x2.5, because our dipole model is uncalibrated).

Calibration: the car model is fitted to published measurements (magnetics report): 30-50 uT at the engine and axles, ~0-3 uT between the axles. With it, a single in-road magnetometer scores about 90 %, matching independent field studies (81-93 %), which is a good sign the model is realistic.

Assumptions to check against American cheese's data: the dipole car model; radar/ToF modelled as geometry with 99.5 % per-reading reliability (no snow on in-road radar, no snowbank in front of a pole sensor); a single reading per decision (real firmware confirms over 3 readings, which cuts false alarms further for all magnetometer designs).

Experiment 2: what does each form factor cost per space per year?

Monte Carlo (20,000 draws per form factor) over a 5-year horizon, 1,000 spaces. Everything: hardware, install labour, winter handling, damage/theft replacement, battery-death service, a share of the gateways and their SIMs. Generated by research/sim/cost_model.py; the input ranges are in that file.

Form factor$ per space per year (median)80 % rangePer monthNotes
Meter-pole radar 'Provolone' (2 spaces per unit)$13$11-15$1.10two radars, one aimed into each space (twin-head poles or space boundaries)
Meter-pole radar 'Provolone' (1 space per unit)$21$17-25$1.74TPT agreement for meter poles; no digging, no lane closure; accuracy unproven
Core-drilled puck, mag + radar (in-ground)$41$35-48$3.44Street Opening Permit + bond; no install in winter or on recently paved streets
Swiss cheese sheet (in-road, seasonal)$43$36-52$3.58removed every winter (Cambridge snow emergencies); 4-6 months a year without data
Swiss cheese + radar (in-road, seasonal)$46$39-55$3.86same as cheese; radar confirms events (industry practice)
Commercial sensor + service (IPS contract)$105$103-110$8.79reference point: Santa Ana pays $250 + $45 install + $3.50/space/month

Reading: our own hardware lands at a few dollars per space per month, all-in, versus ~$10/month for the commercial reference. The cheapest options are the ones that never need a crew in the road: pole sensors avoid lane closures, permits for digging and the twice-a-year winter removal that the in-road sheet needs. The in-road sheet's real cost is not money but 4-6 months a year without data.

Not included: our engineering time, city fees we don't know yet, insurance, and sales. Install labour assumes a trained technician; the first installs will be slower.

Experiment 3: what does a radar on a meter pole see?

Ray-traced geometry (research/sim/pole_radar.py): radar on the meter pole at the boundary between two spaces, aimed into its own space. Cars are boxes parked anywhere in their 6 m spaces (up to 40 cm over the line), neighbours present 70 % of the time, a vehicle in the lane 30 %. The radar reports "occupied" when enough of its beam hits a vehicle inside its range gate.

Searched 288 mountings: height 0.6 / 0.85 / 1.1 m (a strap on the bare post below the meter head reaches 0.6-0.85 m), aim 0-75 deg into the own space, down-tilt 0-30 deg, range gate 1.6-4.0 m. Pole 0.6 m behind the curb face; 30 deg beam half-angle (A121 datasheet).

Best mountings

HeightAim into own spaceDown-tiltRange gateAccuracyMissed carsFalse alarms (neighbour/lane)
0.6 m50 deg0 deg4.0 m100.0 %0.0 %0.0 %
0.6 m50 deg10 deg4.0 m100.0 %0.0 %0.0 %
0.6 m50 deg20 deg4.0 m100.0 %0.0 %0.0 %
0.6 m65 deg0 deg4.0 m100.0 %0.0 %0.0 %
0.6 m65 deg10 deg4.0 m100.0 %0.0 %0.0 %

For comparison: aiming straight across the street at 0.85 m height scores 66 % at best, and the worst mounting searched scores 50 %. Where you point it matters more than the sensor.

Snowbanks (with the best aim)

Snowbank heightSensor heightBlinded (reports "blocked")MissedFalse alarms
0.3 m0.6 m0 %0.0 %2.0 %
0.3 m0.85 m0 %0.0 %6.0 %
0.3 m1.1 m0 %0.0 %1.5 %
0.6 m0.6 m100 %0.0 %0.0 %
0.6 m0.85 m0 %0.0 %0.0 %
0.6 m1.1 m0 %0.0 %3.5 %
0.9 m0.6 m100 %0.0 %0.0 %
0.9 m0.85 m100 %0.0 %0.0 %
0.9 m1.1 m0 %1.5 %0.0 %

Reading: aim the radar diagonally into its own space (so the neighbour's car, which parks right next to the same pole, falls outside the beam) and cap the range so the travel lane is ignored. Mount it high on the pole so snowbanks along the curb don't blind it; when a bank does, the sensor can tell (everything is very close) and report "unknown" instead of guessing.

Assumptions: cars as boxes (body 0.3-1.45 m, or 1.8 m for tall vehicles), a 30 deg effective beam half-angle (A121 HPBW 65 x 53 deg), the pole at a space boundary 60 cm behind the curb, flat street, no pedestrians or cyclists in the beam (a real risk on the sidewalk side: the beam points away from the sidewalk).

Experiment 5: can firmware beat the dead zones?

Time-series simulation (research/sim/firmware_events.py): cars back into the space along a parallel-parking path, park anywhere in it (often with the sheet in a dead zone between the axles), stay 10 min-2 h, and drive out. The car model is Exp 1's, calibrated to measured fields. The cheese samples every dt seconds at a random phase.

SamplingStrategyArrivals caught (≤ 30 s)Departures caught (≤ 60 s)False alarm: car parks next doorAvg current
every 3 sToday's firmware (5 / 2 uT, steady)29 %96 %0 %~10 µA
every 3 sLower thresholds (2 / 0.8 uT)91 %6 %0 %~10 µA
every 3 sEvent latch (arrival transient > 8 uT)22 %100 %0 %~10 µA
every 3 sMagnetometer wakes a radar97 %100 %0 %~18 µA
every 1 sToday's firmware (5 / 2 uT, steady)32 %100 %0 %~24 µA
every 1 sLower thresholds (2 / 0.8 uT)90 %5 %0 %~24 µA
every 1 sEvent latch (arrival transient > 8 uT)20 %100 %0 %~24 µA
every 1 sMagnetometer wakes a radar98 %100 %0 %~32 µA
every 0.5 sToday's firmware (5 / 2 uT, steady)31 %100 %0 %~45 µA
every 0.5 sLower thresholds (2 / 0.8 uT)91 %6 %0 %~45 µA
every 0.5 sEvent latch (arrival transient > 8 uT)21 %100 %0 %~45 µA
every 0.5 sMagnetometer wakes a radar99 %100 %0 %~53 µA

Reading: a magnetometer alone can't both catch cars parked over a dead zone and ignore the car next door: lowering thresholds or latching on transients trades one error for the other, and catching brief transients needs faster sampling (more battery). A radar woken by the magnetometer settles it: the magnetometer only has to notice that something changed, and the radar, which sees the car body directly, decides.

Assumptions: radar per-check reliability 99.5 % and ~0.5 mC per check (A121 datasheet: ~74 mA during a few-ms sweep, plus start-up; to be measured); 40 parking events/day; noise 0.25 µT. The radar's own failure modes (slush on the window) are not modelled here.

Experiment 7: how should a pole radar poll?

On a meter pole there is no magnetometer to wake the radar, so it has to look on a timer. Event simulation (research/sim/pole_firmware.py), 30 days per setting: ~12 parked cars a day (5 min-3 h), people crossing the beam (~8/h by day, ~2 s each) and a few standing in it (4/day, 20-120 s), 0.5 % per-reading radar error. The firmware reads every P seconds and changes state after N readings in a row agree.

Read everyReadings that must agreeArrival reported (median / 95 %)Departure (median / 95 %)False "occupied" per day (people)Avg currentD-cell life
2 s11 s / 2 s1 s / 2 s234.5267 µA7 yr
2 s23 s / 4 s3 s / 4 s16.0267 µA7 yr
2 s35 s / 6 s5 s / 6 s3.1267 µA7 yr
5 s12 s / 5 s2 s / 5 s98.1117 µA15 yr
5 s28 s / 10 s8 s / 10 s3.9117 µA15 yr
5 s313 s / 15 s13 s / 15 s2.8117 µA15 yr
10 s15 s / 9 s5 s / 10 s53.767 µA15 yr
10 s216 s / 20 s16 s / 20 s3.167 µA15 yr
10 s325 s / 29 s25 s / 30 s2.567 µA15 yr
30 s114 s / 28 s15 s / 28 s19.734 µA15 yr
30 s246 s / 59 s45 s / 59 s1.934 µA15 yr
30 s376 s / 89 s75 s / 89 s1.234 µA15 yr

Reading: a pole sensor doesn't need a magnetometer. Reading every 5 s and requiring 2 agreeing readings reports cars within ~10 s, filters people walking through the beam, and still runs over 10 years on one D-size lithium cell. People who stand in the beam for a minute (loading a trunk) still cause brief false "occupied" episodes; requiring 3 readings cuts them but not to zero. The proper fix is the radar itself: a person is a weak, narrow reflector next to a car, so a strength threshold (measured in Exp 4) should separate them.

Assumptions: 0.5 mC per radar check including start-up (Acconeer's low-power figures suggest less; to be measured on the XM125), ~30 LoRa messages + 24 heartbeats a day at ~40 mC, 3 µA sleep, 17 Ah usable, 15-year shelf-life cap. Pedestrian rates are guesses for Bow Street, to be replaced with counts from the kit's data log.

Experiment 8: what happens as we scale?

Exp 2 priced 1,000 spaces without fixed costs. This adds volume pricing (small runs pay retail module prices, 10,000 units get ~30 % off), the fixed costs a real deployment carries (FCC Part 15B test, liability insurance, hosting, LoRaWAN network fees, a minimum number of gateways), and a possible city fee for using meter poles. Monte Carlo, 20,000 draws, 5-year horizon (research/sim/scaling.py; every input range is in that file). Pole sensor battery from Exp 7 (outlasts the horizon). Updated (tick 14): pole sensor unit costs from the priced bill of materials ($78 at 1,000 units vs $50 assumed before), spaces per gateway from Exp 11.

Cost per space per month, all-in

Form factor100 spaces1,000 spaces10,000 spaces
Pole radar 'Provolone' (1 space/unit)$8.82 ($7.58-10.22)$3.32 ($2.79-4.01)$2.18 ($1.70-2.86)
Pole radar 'Provolone' (2 spaces/unit)$7.27 ($6.16-8.58)$2.17 ($1.87-2.53)$1.28 ($1.03-1.61)
In-road sheet + radar (seasonal)$10.74 ($9.29-12.31)$5.18 ($4.38-6.11)$4.37 ($3.60-5.28)
Core-drilled puck, mag + radar$10.82 ($9.39-12.40)$5.27 ($4.46-6.25)$4.44 ($3.66-5.42)
Commercial reference (Santa Ana: $250 sensor + $45 install over 5 yr + $3.50/month)$8.42$8.42$8.42

Median, with the 80 % range in brackets.

What moves the pole sensor's cost (1,000 spaces)

Every input at its likely value: $2.43 per space per month. Each bar swings one input from its low to its high value.

InputRange$/space/month at lowat highSwing
city fee $/space/yr0-20$2.43$4.091.67
yearly visit min0-10$2.24$2.860.62
unit $ @1k67-95$2.20$2.780.58
loss %/yr2-10$2.22$2.780.56
liability insurance $/yr1500-6000$2.30$2.680.38
LoRaWAN network $/device/month0-0.2$2.38$2.580.20
labour $/h35-60$2.36$2.530.17
install min4-15$2.36$2.540.17
Part 15B test + labels, one-off $3000-12000$2.38$2.530.15
hosting $/month (per 1k spaces, min 1)25-150$2.39$2.520.12

If the city charges a fee per installed unit (tick 15)

The city permission report found no federal cap that protects a parking sensor: the FCC's $270/yr limit covers only phone-carrier small cells (47 CFR 1.6002), and Cambridge charges its own small cells $270/yr per installation, the likely template. Median cost at 1,000 spaces:

Fee per unit per year$0$20$90$270
Pole radar 'Provolone' (1 space/unit)$2.80$4.47$10.30$25.30
Pole radar 'Provolone' (2 spaces/unit)$1.91$2.74$5.66$13.16
Commercial reference (the city pays it today in Santa Ana)$8.42$8.42$8.42$8.42

A $270 fee per unit would make the pole sensor dearer than buying a commercial system ($25+/space/month vs ~$8.42). Two radars per unit halve it, still not enough. So the fee is not a detail to negotiate later: a pilot waiver, or a fee per block rather than per device, has to come first, and the alternatives that avoid city poles (private facades, the in-road options, which have their own permits) need a fair look.

Reading

Not included: our salaries, sales, R&D, financing. Assumptions to replace with real numbers: city fee, insurance quote, Part 15B lab quote, gateway coverage on Cambridge streets (American cheese's link test).

Experiment 9: does every space need a sensor?

A 12-space block over 60 simulated days, minute by minute (research/sim/coverage.py): demand follows a daily curve, cars stay 45 min on average and take a random free space. Only some spaces carry a sensor; sensors are taken as right. The question a driver cares about: when the block is nearly full (≥ 80 %) and a space is free, does the app know where?

BlockTime it's ≥ 80 % fullSpaces with a sensorApp can point to a free space (when it matters)Error in "free spaces on this block"Cost per space on the block per month
quiet (peaks ~70 % full)13 %25 %37 %2.25 spaces$0.83
quiet (peaks ~70 % full)13 %50 %67 %1.26 spaces$1.66
quiet (peaks ~70 % full)13 %75 %87 %0.75 spaces$2.49
quiet (peaks ~70 % full)13 %100 %100 %0.00 spaces$3.32
busy (peaks ~88 %)18 %25 %37 %2.19 spaces$0.83
busy (peaks ~88 %)18 %50 %66 %1.22 spaces$1.66
busy (peaks ~88 %)18 %75 %87 %0.73 spaces$2.49
busy (peaks ~88 %)18 %100 %100 %0.00 spaces$3.32
packed (peaks ~97 %)23 %25 %36 %2.12 spaces$0.83
packed (peaks ~97 %)23 %50 %65 %1.19 spaces$1.66
packed (peaks ~97 %)23 %75 %86 %0.71 spaces$2.49
packed (peaks ~97 %)23 %100 %100 %0.00 spaces$3.32

Reading

Assumptions: drivers take a random free space (in reality ends of the block and spaces near entrances fill first, which would let a few well-placed sensors do better or worse; the street log will tell); perfect sensors; no double-parking or loading. Demand curves are generic, not Bow Street's.

Report: the city's permission and fees for a sensor on a meter post

Research agent, 2026-11-07. Builds on the deployment report, which covers the permit paths for each form factor. Sources at the end; [unverified] = not confirmed from a primary source.

Bottom line

  1. No published process covers a private device on a meter post. The meters belong to the Department of Transportation (the former Traffic, Parking + Transportation, renamed April 2025); its Street Management division "installs and maintains parking meters". Likely route: written permission or a license from that department, possibly plus a Pole & Conduit Commission grant of location.
  2. No federal fee cap protects us. The FCC's $270/yr rule covers only "personal wireless service" equipment (47 CFR 1.6002), not a LoRaWAN sensor. The city can refuse or charge anything. Its own small-cell policy charges $270/yr per installation, the obvious template for staff.
  3. $270/unit/yr would sink the model: $22.50 per space per month at one space per unit, against our modelled $3.32 total (Exp 8's fee range tops out at $1.67/month). A pilot fee waiver, or a per-block fee, is the most valuable ask.
  4. The Surveillance Ordinance plausibly applies once the city receives our data. Cambridge reads it broadly: its reports list the Water Department's meter-reading system and TP&T's traffic-count cameras. Per-space occupancy radar is borderline; we need a written answer.

1. Meters, owners and permits

FactFinding
Owner / maintainerDepartment of Transportation, Street Management division (meters, signs, signals, traffic counts). Parking Management handles enforcement, permits and tickets. Commissioner: Brooke McKenna
Meters~2,530 metered spaces in service citywide (GIS layer, queried today). None flagged "SmartMeter". Coins + Passport + PayByPhone; no card readers ("considered years ago and rejected"). Some pay stations exist. Assets are tracked in Cartegraph. Meter make/model: [unverified], so check it in the Bow Street survey
PathWhoFeeFits us?
Written permission / license for meter postsDept of Transportationnone publishedMost likely route
Grant of location (City-owned poles)Pole & Conduit Commission (License Commission chair, City Electrician, Superintendent of Streets)Usual conditions: Electrical Dept utility permit, DPW permits, sidewalk preservation offset fee, start within 60 daysTold Flock (Oct 2025) that "even pilot programs, like temporary installations" need a grant. Whether a meter post counts as a City pole is the open question
Small-cell policyPole & Conduit Commission$500 application per 5 sites; $270/yr eachDoesn't legally apply to us, but staff may use it as the template
Street Occupancy PermitDept of Transportation$100 + $75/week per 20-ft space (2021)Only if we reserve curb space to install. A 5-min install from the sidewalk shouldn't need it
Sunday/holiday work permitDPW + Police$25Avoid by installing on weekdays

2. The Surveillance Technology Ordinance (Ch. 2.128, Dec 2018)

Definition (2016 drafting text; the enacted §2.128.020(G) couldn't be fetched, so [unverified]): any electronic device "capable of collecting... audio, visual, digital, location, thermal... information... specifically associated with, or capable of being associated with, any specific individual or group". Examples include "through-the-wall radar or similar imaging technology". Parking Ticket Devices (and, per a Brookline-hosted copy, "related databases") are excluded.

Process if it applies. It applies when a City department acquires the technology, or enters "an agreement with any other person or entity to acquire, share or otherwise use surveillance technology or surveillance data". The department files a Surveillance Technology Impact Report (how it works, purpose, where deployed and why, cost, civil-liberties impacts) and a Use Policy. Then come community meetings, a public hearing (draft: no sooner than 45 days after filing), a Council vote, and annual reports. Allow 3-6 months [unverified].

Does a non-imaging occupancy radar count?

Politics. The Council approved ALPRs (Feb 2025), paused them (Oct 2025), and the city ended the Flock contract (Dec 2025) after Flock installed two cameras "without the City's awareness". It dropped ShotSpotter (May 2026), then restored it for 90 days (Aug 2026). Lesson: never install without written permission, and label the box "not a camera". San Diego's 2017 meter-pole boxes caused alarm because they held calibration cameras.

3. Precedents elsewhere

CityWhatContractTerms worth copying
Burlington VT (2021)IPS Group pole-mounted sensors on Main St metersFree vendor test of 18 sensors; $250/unit, $65/mo for data if boughtVendor-funded pilot; presence only, "not cameras"
Milwaukee (2023)CivicSmart sensors on meters and signposts, 75 (+125)DPW pilot; city pays 1/3 of $245/sensorStated goal: "see how accurate the sensors are"
Bend OR (2023)Cleverciti, on lamppostsParking Services programProcessing on the sensor, "no video footage or license plate information"
Boston Smart StreetsVerizon intersection sensorsPilot + data license: vendor owns data, city may copy/use/share during and afterNo video stored, no LPR/biometrics; "no commitment to buy"
Pittsburgh PGH LabStartup pilots with departmentsCity pays $25k stipend, 4-6 monthsA "pilot program" model

(LA ExpressPark and SFpark were grant-funded procurements, not startup paths.) The pattern: a free vendor pilot under a short letter agreement, then procurement if the city buys.

4. Pilot agreement, insurance, who runs it

5. Questions to send (most plan-changing first)

  1. Who can approve a small battery sensor strapped to a meter post (no drilling, no wiring): your department alone, or also the Pole & Conduit Commission?
  2. Would there be a fee, per device or per space? Could a ~40-space Bow Street pilot be fee-free?
  3. If it records only "occupied/free" per space (no camera, images or plates), is it surveillance technology under Ch. 2.128? Does that change if the city gets no data during the pilot?
  4. Would you allow it on Bow Street meter posts at all, or prefer sign posts or another street?
  5. What paperwork does a pilot need (letter, revocable license, MOU), and what insurance and indemnity?
  6. Are meter replacements planned that would move Bow Street posts within 2 years?
  7. Could you share anonymised meter/app session counts for Bow Street so we can check accuracy?
  8. Who must be told before installs or battery swaps; any no-work periods (snow, sweeping)?
  9. If the pilot works, how would the city buy the data: quotes, RFP, or an existing contract?

Sources

Report: deploying on Bow Street, Cambridge

Research agent, 2026-11-07. Primary sources linked; [unverified] marks estimates.

Site facts that drive the choice

Form factors

Form factorPermit pathInstallWinterTheft / liabilityMaintenancePower
A. Under-car adhesive sheet (cheese)no published category; written TPT/DPW consent + space coned while it cures< 10 min, 1-2 peoplehighest: proud on a plowed, swept, salted surface; vendors steer snow regions to in-ground (Urbiotica)low theft; raised edge is a minor trip/bike hazardmust come out before each snow emergencybattery only
B. Core-drilled flush puckDPW Street Opening Permit + bond; no work on streets resurfaced in the last 5 years; winter construction moratorium (DPW regs)15-30 min, 2 people, cones, maybe police detail [unverified]low (Nwave: "designed for heavy snowplough regions")low; flushbattery death = re-coring; SFpark batteries ~3 yr, some sensors paved over (SFpark eval)battery only
C. Curb faceno precedent; DPW sign-off likely [unverified]10-15 minmedium-high: banks bury it, plow/sweeper contactmoderate thefteasy unless buriedbattery
D. Sidewalk / curb topDPW sidewalk obstruction / annual use permit~10 minmediumADA clear width + cane detectability (PROWAG); least likely to be approvedeasysome solar
E. Clamp-on meter / sign poleTPT agreement for meter poles; City light poles need a Pole & Conduit Commission grant of location, "even ... temporary installations" (minutes)5-10 min, 1 person, no closure [unverified]low: above snow, away from blades; banks can block a low-aimed viewmoderate theft (tamper-proof clamp; ≤ 4 in protrusion at 27-80 in height)easy battery swaps. Boston found meter-mounted sensors "had many problems with the data's accuracy" and needed "significant staff time to calibrate" (Boston report)small solar on top possible but canyon-shaded
F. Overhead camera / radargrant of location + Surveillance Ordinance (Ch. 2.128) for anything camera-like: Council approval after a public hearing; Flock ALPRs were switched off at the Council's requestbucket truck, 1-2 h per pole [unverified]; many spaces per unitlowlow theft; high political risk if a camerafew units, but one failure = many spacesstreetlight AC possible

Evidence from other pilots

Power

No solar under a car. At curb/pole height in a street canyon, winter sun is weak and often blocked; solar-only curb devices have struggled in northern winters. Primary lithium battery for 5+ years; solar trickle on a pole as a bonus.

Takeaways

  1. Cheese is a seasonal pilot device, not a city-scale product. If kept: even (non-tow-route) side of Bow Street only, recover before the first snow emergency.
  2. Clamp-on to the existing meter poles is the most deployable option: no dig, ~5 min, no lane closure, above plows, easy battery swaps, probably one TPT agreement. Its risk is accuracy (Boston's experience): it must be proven, including when snowbanks block the view.
  3. Core-drilled pucks are the proven winter answer but slow to permit and costly to service: a vendor play, not a student one.
  4. Avoid cameras (Surveillance Ordinance; Flock episode). Ask whether non-imaging radar counts.
  5. Design for a primary battery (5+ years) and over-the-air recalibration; report health data.
  6. Sell the data, not the hardware: SF and Boston both found per-space hardware maintenance was the long-term pain.

Questions for Jeffrey Parenti / TPT

Report: the radar on a building facade or behind a shop window (H10)

Research agent, 2026-11-07. Builds on the city report and the weather report. Glass losses are our own transfer-matrix calculation (57-64 GHz, ITU-R P.2040-1 glass: εr 6.27, ~0.56 dB/mm); we modelled each low-E coating as a metal sheet of resistance Rs and checked the results against published measurements. [unverified] = no primary source found; [est] = our estimate.

Bottom line

  1. Clear glass works; low-E glass blinds the radar. One-way loss is ~2.5-5 dB through single or laminated clear glass, 4-10 dB through clear double glazing, and 22-45 dB through any metal-coated (low-E or solar-control) glass, so 45-90 dB for the round trip. Every 12 dB two-way halves the range.
  2. Recent Massachusetts storefront glass is probably low-E [est] (needed to meet the energy code). The candidates are old single-pane windows and transoms. A $0 lighter test finds a coating.
  3. Inside a window: no city permit. A facade box sticking out ≤6 in avoids the Council and bond process but needs a Historical Commission certificate on Bow Street. The Surveillance Ordinance doesn't reach private hosts.
  4. It beats the meter post only if the city fee is over ~$67/unit/yr or the city says no, and only where the glass is clear or facade owners agree. An afternoon's test decides it (section 5).

1. Glass at 57-64 GHz

GlazingOne-way loss, our calc (0-50°)Published
Single clear, 3-6 mm2-5 dB (up to 7 at 50°)3.3 dB at 60 GHz (TIP 2019); 3.6 dB for 3 mm at 60 GHz (Anderson & Rappaport); 7.1 dB for 1 cm at 73 GHz (NYU)
Laminated 3+0.76 PVB+33.3-4.2 dB802.15 safety glass, 60 GHz: ~6.9 dB; PVB moisture varies it
Double clear, 4-12-4 / 6-12-64-6 / 6-10 dB (12 oblique)3GPP "standard multi-pane": 14 dB at 60 GHz (conservative)
Wired glass—10.2 dB, 3 mm, 60 GHz (Anderson & Rappaport)
Low-E / solar-controlhard coat (Rs ~15 Ω/sq) 20-25 dB; single silver (3-10) 26-37; double silver (1.5-3.5) 33-4833.2 dB double low-E, 60 GHz (TIP); ITU-R P.2554: coated ~20 dB above uncoated, 25-30 dB average (3-40 GHz); 3GPP IRR glass 32 dB

Why: a metal film far thinner than the skin depth attenuates ~20·log10(1 + 377/2Rs) at any frequency. Hard coats run under ~14 Ω/sq, single silver ≤10, double silver ≤3.5 (coater patents). Metallised window film acts the same way; dyed or ceramic film should be harmless [est].

Also: the glass reflects 10-40 % back: mount 2-3 mm off it, tilted 5-10°, and start the range gate beyond it. Winter condensation costs ~6 dB two-way per 0.05 mm. The A121 has worked through an intercom's hardened glass (Lund thesis).

Spotting low-E: (a) lighter or phone torch: one reflection with a different tint = a coating ($0); (b) EDTM AE1601 detector, single and dual pane, beeps on a coating (~$200); (c) best: the radar itself (section 5).

2. Cambridge rules

PlacementWhat applies
Inside a windowNo building, sign or historic permit: interior work and "alterations not visible from any public way" are exempt. Keep any label small so it isn't a regulated window sign [unverified]
Facade, ≤6 in (our 55-80 mm box, flat)Facades on the lot line overhang the sidewalk. Past 6 in: City Council petition, abutters, surety bond, ISD and DPW permits. Under 6 in, none of that; the owner still indemnifies the city for anything "in or over a street" (§12.12.220). DPW sign-off under 6 in [unverified]: ask
Historic districtBow Street is subdistrict B of the HSCD. Visible exterior changes need a certificate; staff issue Non-Applicability on the spot for storefront work that doesn't obscure historic features. Mount on storefront framing or in mortar joints, never through original trim. Mid Cambridge NCD (not Bow Street) is a similar certificate regime [unverified]
WiringA battery or USB box needs no permit; exterior mains wiring needs an electrician [est]
PrivacyThe Surveillance Ordinance covers City departments acquiring technology or agreeing "to acquire, share or otherwise use" surveillance data: private hosting doesn't trigger it; selling data to the city does. The wiretap law (c.272 §99) covers wire and oral communications, not range peaks; the privacy statute (c.214 §1B) needs an "unreasonable, substantial or serious" interference. Politics still apply (Flock): label it "no camera" and tell the city first

3. Owner agreements

PrecedentPaymentTerms
Small cells on private buildings~$150-800/month (consultants)5-10-year leases for scarce radio sites, which we aren't
LoRaWAN gateway host (Netmore, UK)£350/yrrooftop, 7 W, 12-month rolling
Helium hotspot hostsshare of rewards (e.g. 20 %) or flat rentsome ask 36 months
Footfall counters on shopfronts (UK BIDs)often free; "rent to landlord"landlord permission is "the problem" (Test Valley council)

For us [est]: a one-page revocable licence (12 months, auto-renew, 30 days' notice; we insure, indemnify, don't drill). The host gets $0-10/month and their block's parking data. The tenant signs for a window, the landlord for the facade.

Churn: Cambridge's empty storefronts doubled to 109 (2019 to fall 2024); vacant windows get leasing signs (2025 policy), fit-outs paper them over, cleaners move boxes. Expect 10-20 % of window hosts lost a year [est]; facade units survive tenant changes. One owner of several frontages (check assessor records in the Bow Street survey) could cover a block.

4. Power

A USB outlet allows 1 s polling (XM125: 0.33 mW at 1 Hz): arrivals in ~2-3 s and more readings to filter the pedestrians who constantly cross a facade beam. It also makes room for a gateway in the box: e.g. The Things Indoor Gateway Pro, $150 + $60/yr including cellular backhaul, ~2-3 W ≈ $5-6/yr of electricity at MA's ~24¢/kWh, though its ground-level range is short [est]. The new failure mode is being unplugged (cleaners, a new tenant), so add a small Li-ion backup that reports "power lost". Mains doesn't fix glass loss or geometry.

5. Verdict and the cheap test

Facade or window wins only when all of these hold:

  1. The city fee is over ~$67/unit/yr (Exp 8 break-even) or the city refuses; otherwise the post wins (aim, height, one landlord).
  2. The glass is uncoated single or laminated. If not, mount outside at ≤6 in with a Historical Commission certificate.
  3. The product is a block-level map: hosts cover only some frontages (Exp 9: 25-50 % suffices for a heat map, not per-space guidance).
  4. The geometry works: the radar looks across a 2-4 m sidewalk full of people, so mount high (transom, ≥2.2 m) looking down. Re-run Exp 3 and Exp 12 for this geometry.

Cost: the same ~$78 hardware without the hood or D-cell; $0-120/yr to the host instead of a possible $270/yr fee; plus a few hours of sales per host and the churn above [est].

The test (one afternoon, ~$50 of glass, plus the XM125 already on order):

  1. Bench: log a metal plate's peak strength at 3 m, then put samples in front of the radar: picture-frame glass, a 6 mm clear offcut, a clear double-glazed unit and a low-E unit (glass shops sell rejects), each at 0°, 30° and 50°. The drop in dB is the two-way loss.
  2. Bow Street walk: lighter-test every window and transom; note owner and sidewalk width.
  3. On site, with one willing owner: aim at a parked car from inside the window, then from outside on the sill, for an hour each.
  4. Rule: two-way ≤10 dB, the window works; 10-20 dB, marginal (try the transom or door glass); >25 dB, facade or nothing.

Sources

Report: what a magnetometer really sees under a parked car

Research agent, 2026-11-07. "(read from plot)" = read off published figures; "(derived)" = our calculation.

Summary: no public table gives "µT under engine / cabin / trunk", but every primary measurement points the same way: 30-50 µT at the engine and axles, ~0 µT in "dead zones" between the axles, and one car parked over a slot-centre sensor changed the field by only ~3 µT steady-state. A large vehicle ~40 cm outside the space can disturb a sensor more than a small car parked over it.

Measured values

QuantityValueConditionsSource
Change vs distance, "typical automobile"1 ft 27 µT · 3 ft 7.5 µT · 5 ft 1.0 µT · 10 ft 0.2 µTHoneywell Table 1AN218
Under a car, 24 models, 2-D scanpeaks +33 to +50 µT at engine/axles; dead zones ≈ 0 under the car (read from plot)two AMR sensors 30-40 cm apartMarkevicius et al. 2016
Car parked, sensor near slot centretransient ~+6.5 µT (axle passing); **steady \ΔB\≈ 3 µT** (read from plot)MAG3110, garageZhuang, UW thesis 2019
Lateral falloff (raw units)MPV: in-space 33 → 40 cm outside 15 → 80 cm outside 5; mini car: 10 → 4 → 2the MPV 40 cm outside exceeds the mini car in its own spaceSensors 19:2348 (2019)
Weakest pointbetween front and rear wheels; worst for SUVs, MPVs, pickupssame
Two-sensor gradient under a carnot reported anywhere
EVs / aluminium bodiesno measured data found

Accuracy in the field

SystemAccuracy
Magnetometer only, roadside (Sensors 2019)90.8 %; 99.6 % with radio-signal-strength fusion
Magnetometer only, garage, 3 months (UW)85.6 % (81.7-93.0 %); > 99.9 % with an added ultrasonic sensor
Omron "engine passage" algorithm100 % of 615 vehicles: latches on the engine passing over a sensor placed one-third from the front
Bosch PLS96 % over > 2,000 sensors; self-learns over the first 5-10 parkings

Failure modes: dead zones between axles (worse with high clearance), big vehicles next door or in the lane, slow traffic, sun/shade temperature swings, building steel, cars entering at an angle.

Drift

MMC5603NJ: offset drift 0.2 mG/°C typical (1.0 max), removed by SET/RESET; sensitivity changes 5 % over -40…85 °C (derived: ~0.14 µT/°C on Cambridge's vertical field, ~3.5 µT for a 25 °C pavement swing; common-mode, so it largely cancels between two sensors). Berkeley's fix: an adaptive baseline updated only while the slot is empty and quiet.

Datasets

None is a labelled parked-car raw-field dataset (IEEE DataPort road vehicles, moving traffic; Colorado School of Mines logger, tiny; Geelong occupancy events, no field values). We have to collect our own.

What it means for Glee

Report: Provolone v1 bill of materials

Research agent, 2026-11-07. Distributor prices looked up today (some are cached listings); est = our estimate where no public price exists, to be replaced by quotes. US dollars, per unit, before sales tax.

Bottom line

Line items: one-radar unit

100 and 1k: XM125 + Hammond box. 10k: bare A121 on a 4-layer board + moulded box.

ItemPart1001k10kSource / note
RadarXM125 → bare A121 (10k)17.5716.496.49DigiKey @100 / @500 / reel
Radar support24 MHz crystal, 6 caps––0.10A121 DS Table 13
2nd radar's carrier + flex (2-radar only)1.501.000.60est
LoRaRAK3172-9-SM-NI6.976.505.50Rokland / RAK + duty / est
AntennaJohanson 0915AT43A00260.850.410.35DigiKey
1.8 V buck, load switchTPS628400.900.600.45LCSC
TamperLIS2DH120.450.360.25LCSC
Passives, connector1.000.700.50est
PCB ~70×50 mm2-layer → 4-layer (10k)0.600.250.25JLCPCB
SMT assemblyincl. setup, fixtures, X-ray2.500.700.50JLCPCB fees
CellEVE ER34615, 19 Ah9.006.004.50nkon; Alibaba; est
Pulse supportEaton PHV-5R4V255-R 2.5 F4.503.402.80DigiKey
Cell holder, leads1.501.000.60est
EnclosureHammond 1555F2GY → moulded PC ($30k tooling)14.2211.007.00Mouser; est
Window + rain hood1.49 mm PC, bonded5.002.500.70est
Vent + desiccantGore VE80205 → generic4.052.650.60RS
Pole saddleprinted → moulded6.003.000.80est
Bands2× BAND-IT 3/4"13.128.005.00Zoro; est
Security screws, labels1.701.050.50est
Contingency10 % of parts9.006.463.69
Hazmat freightUN30901.500.800.40est
Labour + test15 / 8 / 4 min11.256.002.80$45/h; jig
Unit cost before certification111.6777.8743.78
Certification~$10k ($6-18k)100.0010.001.00
Unit cost, all-in211.6787.8744.78

Totals

Configuration1001k10k
1 radar, before certification$112$78$44
1 radar, all-in$212$88$45
2 radars, before certification$133$97$52
2 radars, all-in$233$107$53
Cheapest credible, 1 radar, before certification (bare A121, generic vent)–$67 (+$5 layout work)~$38-44
Exp 8 assumption, 1 radar$57-105$38-70$27-49

Choices

Radar. The bare A121 ($8.22 at 1k vs $16.49 for the XM125) saves ~$8 per radar. It needs:

Recommendation: XM125 for the first 100, bare A121 from 1k.

FCC. Both paths carry "Contains FCC ID: 2AQ6KA1201". Because the grant is limited, the host maker must follow Acconeer's integration instructions, run "a limited set of transmitter module verification testing, including radiated spurious emissions", test the host under Part 15B / SDoC, and evaluate co-location with LoRa (firmware can avoid simultaneous transmission).

LoRa.

OptionUnit costCertification
RAK3172$5.99 at RAK (plus US import), $6.97 at Roklandmodular: host only
Bare STM32WLE5JC + 32 MHz TCXO + RF matchchip $15.55 at LCSC today (out of stock); ~$5-6 at 10k (est) + ~$1 of other partsown Part 15.247 / RSS-247, ~$8-15k

Cell and pulse support (Exp 7 draws ~1 Ah/yr, so any 17-19 Ah D cell is enough):

OptionPrice foundNote
EVE ER34615 (19 Ah)€6.95 @120; ~$6 @1k MOQ (Alibaba)cheapest credible; major maker
Fanso ER34615no public pricequote only; expect about EVE's price
Tadiran TL-5930/S (19 Ah)$15.15 @500 (Master Electronics)the reference cell; +$9
Tadiran SL-2780 (19 Ah)~€17 (10-pack)Tadiran's industrial line
Saft LS33600 (17 Ah)$37.95 @100 (DigiKey marketplace); €16.6-19 (TME, a variant)+$11-30
Tadiran PulsesPlus TLP-93111 (cell + HLC)$33.85 @400some variants discontinued (RS); HLC-1550A £25.72, sold only with Tadiran cells
EVE ER34615 + SPC1520 (ES341520)quote onlyEVE's cell + hybrid-capacitor pack
Low-ESR EDLC, 2.5 F / 5.4 V€2.99 @1kin the BOM: a 120 mA × 0.4 s burst drops it ~20 mV

Avoid coin-type 0.47 F supercaps: their ESR is tens of ohms, useless for 120 mA pulses.

Mechanical. Hammond 1555 (IP68 PC, gasketed) fits a D cell and the board; fallbacks Takachi WP11-15 (~A$33) and Polycase WP-23 ($12.77 @250, IP65 only). Polycase pole kits ($28-37) cost more than our saddle + bands. Hose clamps (~$2) save ~$6 at 1k but come off with a screwdriver.

Uncertain: check before buying

  1. Certification cost. Published Part 15B figures: $800-5,500 (vendor guides). Our $6-18k adds 60 GHz radiated-spurious verification (few labs; up to 200 GHz), LoRa host checks, ISED. Get two lab quotes. At 100 units it is $60-180 per unit.
  2. Does the limited grant cover our own A121 layout? Ask Acconeer and a TCB. The XM125 carries the same "limited" condition.
  3. Box wall. If the Hammond wall is 3.0 ± 0.1 mm PC (second half-wave), the radar can look through it with no separate window. 2.25 mm is the worst case.
  4. XM125 supply. DigiKey: 0 in stock, 16-week lead time. A121: 10,698 in stock.
  5. Tariffs. RAK's store price excludes ~25 % US import duty; the boards and cells are also Chinese. Only the 10 % contingency covers this.
  6. Voltage. A fresh Li-SOCl2 cell (3.67 V) is just above the RAK3172's 3.6 V rating (STM32WL absolute max 3.9 V): common practice, but confirm. The XM125 (VIN max 3.45 V) must run from the 1.8 V rail, never straight from the cell.
  7. "est" prices at 10k (tooling, bands, saddle, cell) are judgement, not quotes.

Sources

Report: parts for a meter-pole radar ("Provolone")

Research agent, 2026-11-07, from datasheets and vendor/municipal documents. (unverified) marks secondary sources or inferences.

Radar: Acconeer A121 / XM125

ParameterValueSource
Frequency / EIRP57-64 GHz, 11 dBmA121 datasheet
Beam (HPBW, simulated)65° H-plane, 53° E-planeA121 DS Table 8
Range resolution43 mm (profile 1) to 346 mm (profile 5)A121 DS Table 10
Current while sweeping~74 mA at 1.8 V (only during the sweep); hibernate 11 µA; off ~0.4 µAA121 DS Table 7
XM125 average power (distance detector, 2.75 m)0.04 mW at 0.1 Hz (~22 µA), 0.33 mW at 1 Hz (~183 µA); module idle 17.7 µA hibernate / 6.9 µA offXM125 DS Table 4
Acconeer parking app"Ground" preset 0.075 mA; "Pole" preset 1.075 mA; recommends ~20° down-tilt on poles; signature-based, rejects passers-byParking app docs
Supply / temperature1.8 V core; -40…+85 °CXM125 DS
Module18.6 × 15 mm LGA with an STM32L431; ~$22 (DigiKey); SparkFun Qwiic board $49.95
I2C (distance-detector firmware)address 0x52; 16-bit registers, 32-bit values; 0x10 result, 0x11-0x1A peak distances (mm), 0x1B-0x24 strengths, 0x40-0x4C config (start 250 mm, end 3000 mm, profile, threshold), 0x100 command (1 = apply config + calibrate, 2 = measure)SparkFun library
Radomethickness m·λ/2 in the material: polycarbonate ~1.5 mm or 3.0 mm (avoid 2.25 mm); ~2.5-3.5 mm from the PCBAcconeer radome guide
FCCA121 has a limited single-modular approval (FCC ID 2AQ6KA1201, §15.255 field-disturbance sensor); host needs the label, its own Part 15B test and co-location checks with LoRaA121 DS §8.2

Existing meter / pole sensors

VendorSensingAccuracy / issues
IPS "dome" (on the meter)stereoscopic + magnetometer"up to 99 %"†; Burlington VT pole pilot: $250 + $65/month for 18 units, delayed by technical problems
CivicSmart (Milwaukee)radar under the meter$245; "> 99 %"†, results not published
Duncan patent US10043337RF sensor in the meter cap, aimablethe patent says the metal collar "might result in vehicle detection errors"; aim must be set per space; adjacent spaces must be excluded
Boston Seaport 2017 (591 meters)meter-mounted (vendor not named)"many problems with the data's accuracy", "significant staff time to calibrate"; no technical cause given: calibration and ground-truth labour

Cambridge meters and poles

Battery

CellCapacityPulseTemperature
Saft LS33600 (D, bobbin Li-SOCl2)17 Ah (61 Wh)~400 mA × 0.1 s at 20 °C; "a capacitor may be recommended"-60…+85 °C
Saft LSP 33600-20Fsame + 20 F Li-ion capacitor1 A for 3 s-20…+70 °C

RAK3172: 87 mA at 20 dBm (datasheet), users measure 115-148 mA at 20-22 dBm; 22 dBm needs ≥ 3.3 V. Use a pulse capacitor and 20 dBm max. Budget: radar at 1 Hz ≈ 3.4 Wh/yr + ~60 uplinks/day ≈ 1 Wh/yr → well over 5 years on one D-cell (~40 usable Wh).

Mounting

Stainless band clamps (BAND-IT, removable only by cutting: the street-furniture norm), Polycase pole-mount kits ($28-37), pin-in Torx screws (~$0.20-0.40 each), IP67 polycarbonate enclosure, tilt/accelerometer tamper alarm.

Recommendations

Report: the radar in rain, snow, salt and dirt

Research agent, 2026-11-07. Window losses are our own normal-incidence multilayer calculation at 60 GHz (1.5 mm polycarbonate window + one layer; water from the Liebe 1991 model at 0 °C; snow, slush, mud and leaves by a mixing rule, ±30 %). Check: it gives ~20 dB per mm of water, vs 18 dB/mm measured at 24 GHz (Suzuki 1979). † vendor claim.

Rule of thumb: range scales with loss^-1/4, so every 12 dB of two-way loss halves the range. Our real margin needs Exp 4; working guess: <6 dB harmless, 10-20 dB marginal on the pole, >25 dB blind.

1. What blinds the sensor

On the window (two-way loss, plus how much power the layer reflects straight back):

Layer on a 1.5 mm PC windowTwo-way lossReflectedVerdict
Clean window0.4 dB~0 %—
Water film 0.05 mm (mist, condensation)6 dB10 %noticeable
Water 0.1 / 0.2 mm10 / 16 dB22 / 39 %marginal
Water 0.5 / 1 / 2 mm27 / 47 / 87 dB~40 %blind
Salt brinesame as water ±1 dBsameblind at ≥0.5 mm (salt barely matters at 60 GHz)
Ice 1-10 mm1-3 dB≤25 %minor (low-loss; detunes the window). Melting ice = water
Dry snow 1-10 cm0.5-2 dB + scattering~0minor; Acconeer: "snow and ice are transparent". Scattering grows with grain size (Hallikainen 1987)
Wet snow, 2-5 % liquid water, 1 cm / 3 cm7-16 dB / 18-45 dB3 %blind at a few cm
Slush (~55 % water), 2 mm44 dB22 %blind
Wet mud 0.5 / 1 / 2 mm14 / 21 / 38 dB20-37 %blind at ≥1 mm
Dry dust 0.5-2 mm3-6 dB~15 %minor
Fresh or wet leaf (0.25 mm); wet leaf plus a 0.2 mm film12 dB; 22 dB30 %marginal → blind
Dry leaf~2 dB3 %minor

In the air, over the full 6 m round trip of a 3 m gate:

ConditionSpecific attenuationOver 6 m
Rain 25 / 100 mm/h9.5 / 27 dB/km (ITU-R P.838-3)0.06 / 0.16 dB
Oxygen (the 60 GHz absorption line)15 dB/km (ITU-R P.676)0.09 dB
Heavy fog, 0.5 g/m³1.2 dB/km (ITU-R P.840)<0.01 dB
Snowfall, 5-10 mm/h water equivalent0.8-2.3 dB/km (Gunn-East model)<0.02 dB
Rain backscatter, 25 mm/h, 10 cm range cell at 2 mabout -25 dBsm (calc, Rayleigh upper bound)far below a pedestrian (about -5 to 0 dBsm) and a car

Bottom line: the air is negligible; the window is everything. Liquid water blinds (a 0.3-0.5 mm film, wet snow, slush, brine, wet mud); ice, dry snow, dust and dry leaves don't. A blinding layer also reflects 20-40 % of the power straight back: an easy signature to spot.

2. Window (radome) design

ItemNumberSource
Thicknessm·λ/2 in the material. Two-way loss at its worst point across 57-64 GHz: PC 1.49 mm: 0.5 dB (±0.1 mm: ≤0.9 dB); PC 3.0 mm: 1.2 dB; PC 2.25 mm (3λ/4): 2.6 dB and 21 % reflected. AvoidAcconeer; calc
Other materialsPMMA 1.55 mm; ABS ~1.52 mm (εr varies 2.0-3.5 by grade, so measure it); PP 1.69 mm (lowest loss)Acconeer εr table; TI loss tangents (PC 0.012, PMMA 0.009, PE 0.0003)
Distance from the board2.5 mm (Acconeer summary) to 3.0-3.5 mm (≈λ0/2, least ripple) from the PCB ground plane. TI: n·λ0/2Acconeer; TI SWRA705
Shapeflat is fine. A curved radome (R 20-50 mm) lowers sidelobes and sheds waterAcconeer
Don'tsmetallic paint, potting over the antenna, bubbles or uneven walls. A ~1 µm protective coating is fineTI
Water"design the product so water runs off and doesn't pool"Acconeer developer
Hydrophobic coatingA superhydrophobic spray (contact angle 165°) cut wet-radome loss from 3.7-5.2 dB to 0.05-0.28 dB at 24-40 GHz (5G bands n257-n261). But outdoors it stayed superhydrophobic only ~40 days; after 670 days drops needed a 30° slope to slideWei 2023

A coating helps a tilted pole window (drops roll off), not a horizontal in-road one (drops sit; tyres and plows abrade it). Treat it as a consumable.

3. How commercial radar + magnetometer sensors cope

Pattern: magnetometer always on, radar confirms; when the radar can't see, the magnetometer decides. Nobody publishes an "unknown" state.

4. Risks specific to the pole (Provolone)

RiskWhat the A121 seesHandling
Pedestrian or cyclistweak (~-5 to 0 dBsm), moving, secondsparking app: 60 % of 5 queued signatures must agree; pole preset polls faster to ride through passers-by
Person leaning on post or boxa strong return at 0-0.3 m; the body hides everything behindNEAR START EDGE or peaks <0.3 m → "occluded, hold"
Plow windrow between curb and carfresh snow see-through; plowed snow is dense and wet → wide static near return, car hiddenmount at 1.2 m (Exp 3); a return nearer than the learned car distance lasting hours = "blocked by snow"
Snow piled in an empty spacea static return at car distance that grows slowlycount only fast transitions (<~30 s) as arrivals
Rain, road spray, slush thrown by plowsair: nil. Window: a 2 mm slush splash costs 44 dBrain hood, tilt, height, blocked detection
Curb and ground multipathstatic returns from the curb face and pavement; ghost peaks just beyond the carlearn the empty-space background. Only presence matters, not exact range. Tilt ~20° down (Acconeer)

Detector settings (Acconeer docs; I2C register map): CFAR threshold (default, 0x46) adapts per sweep but is one-sided near the start; RECORDED learns static clutter but must be re-recorded when the scene changes (e.g. a snowbank). Close-range leakage cancellation (0x43) is on by default in the I2C firmware, yet only applies when the range starts below ~20 cm and holds for ±15 °C; without it CFAR reaches ~6-7 cm. Reflector shape 0x4B: GENERIC (PLANAR is for liquids). All 10 peaks are returned regardless of sorting; register 0x10 carries NEAR START EDGE, CALIBRATION NEEDED and a relative temperature.

5. Recommendations

Hardware

  1. 1.5 mm UV-stabilised PC window (±0.1 mm), 2.5-3.5 mm from the PCB; never ~2.25 mm. (Acconeer; calc)
  2. Pole: tilt ~20° down under a short rain hood, plus a superhydrophobic coating renewed yearly. (Acconeer; Wei 2023)
  3. Pole height 1.2 m, not 0.85 m: above snowbanks and most spray. (Exp 3; slush row)
  4. Vent membrane + desiccant: 0.05 mm of condensation inside costs ~6 dB. (calc)
  5. In-road: expect the radar blind whenever water stands on the sheet (≥0.3 mm); the magnetometer must decide then. (calc; Acconeer; Bosch)

Firmware

  1. Detect "blocked": (a) custom XM125 firmware: Acconeer's obstruction detection; (b) stock I2C firmware: a second config starting ~60-70 mm (CFAR, leakage cancellation off) where NEAR START EDGE or a strong peak <0.2 m = covered; (c) background canary: if the empty scene's learned static peaks (curb, pavement) all drop >10 dB at once with no new peak, the window is blind. (Acconeer parking app; I2C guide; TI "RF visibility obscured" diagnostics)
  2. Fallback: in-road, blocked → the magnetometer decides and the uplink says "radar blind" (reuse the "radar decided" flag). Pole, blocked → report unknown and hold the last state, never "free". Blocked >6 h → maintenance alert. (Acconeer developer; TI)
  3. Car config: 0x43 = 0 (gate starts ≥0.25 m anyway), CFAR, sensitivity 500, GENERIC, max profile 3-4; read all 10 peaks; keep the empty-scene background on our MCU. (Acconeer; I2C guide)
  4. Recalibrate on CALIBRATION NEEDED or a >15 °C change, only when the scene looks clean and empty (magnetometer quiet, canary normal), or snow gets baked into the baseline. (Distance-detector docs)
  5. Change occupancy only on fast, stable changes (a car-distance peak appearing within ~30 s, held ≥3 readings). Slow growth = snow → unknown; near moving peaks = people → hold. (Parking-app logic, adapted)
  6. Exp 4 add-on: weighed spray-bottle films to measure our real dB margin against this table; log background-peak strength daily against weather.

Sources

Report: every way to detect a parked car

Research agent, 2026-11-07, from datasheets, papers and city reports. † vendor claim, not independently tested. ‡ estimate or not confirmed in the primary document. "SFpark 2014" figures via Table V of arXiv 1902.07401.

MethodAccuracy in parking useAvg power at ~3 sUnit cost @1kMountingWeather riskNotes
Magnetometer, single81 % (StreetSmart, SFpark 2014); 86 % SFpark (Roman et al.); F1 0.93 over 13 months outdoors (Huang, PerCom'17); 99 % in a campus lot (Dartmouth); 98 % Urbiotica†~2-10 µA‡sensor ~$1; finished pucks $245-299in-road / surfacevery low; works under snowa parked car changed the field ~27-37 µT in one AMR study (KSC); failure modes: cars next door, rail/power-line interference, high-clearance vans, aluminium EVs, drift
Magnetometer gradiometer (Glee)no published parking figuresame~2× sensorsamevery lowHuang used two magnetometers 95.5 mm apart to tell arrivals from departures
60 GHz pulsed coherent radar (Acconeer A121)radar-only Sensys MicroRadar 98 % (SFpark 2014)0.2 mW at 0.1 Hz, 0.23 mW at 1 Hz → ~30-60 µA at 3 s‡; < 1 µA if it only wakes on a magnetometer change‡A121 ~$9-13 (DigiKey)in-road (up), curb, polewater film / snow on the window: 2-4 dB per 0.5 mm water, 5-20 dB snow/ice (77 GHz figures)measures distance to stationary objects (30-600 mm in Option SPS200); chip ~5×5 mm: fits a thin sheet
60 GHz Doppler (Infineon BGT60LTR11)not suitable alone2.3 mW min~$5-10‡anyas abovemotion only: can't see a car that's already parked
24 / 77 GHz radarmag+radar Fybr 78 % (SFpark 2014)mA-level‡$10-30‡pole / overheadas aboveoverkill for one space
Optical ToF (VL53L1X)IR (CPT) 92 % (SFpark 2014)~25 µA at 3 s‡$2.5-2.9in-road / curbhigh: dirt, snow, leaves, sunlightUrbiotica: a dirty IR sensor reports "occupied"
Passive light (shadow)low alone; light + mag + RSSI fusion F1 0.98 (Huang)~1 µA< $1in-roadclouds/treesgood wake-up trigger
Ultrasonicup to 99.9 %†, mostly indoormA per ping‡$20-100overhead / curbwind, rain, snow, temperaturegarages
Camera (pole / overhead)Parquery 99 %†; Cysen 77 % (SFpark); Bellevue best vendor ~83 %watts~$32 per space (MIT est.)light pole / buildingnight, glare, snow, occlusion by trucksCambridge Surveillance Ordinance; Flock cameras shut off in 2025
Inductive loop / piezohigh for moving trafficmains~$350 per loop (1980s $)saw-cutpavement damagenot practical per space
RF RSSI (LoRa/BLE)LoRa RSSI 96 % (HMM) / 97 % (NN) (Dujić Rodić); Libelium mag + RSSI 99 %†~0 extra$0anyrain, people, multipathseparates own car from neighbours only when baseline RSSI > -90 dBm (Huang)
Wi-Fi sensing / acousticresearch stage, not per spacenot pursued

Commercial products

ProductUsesAccuracy / price
Bosch Parking Lot Sensormagnetometer + radar96 %†; 5 yr† (integrator expects 2-3)
Libeliummag → mag + cloud RSSI (2018) → mag + radar (2019)99 %†; radar added against interference, neighbours, double-parked cars
Option Spot-OnSPS100 → SPS200 adds 60 GHz pulsed coherent radar10 yr on 8100 mAh at ≤ 50 events/day†
Fleximodomag + radar~95 % mag-only vs 99.96 % mag + radar†
Nedap SENSITIR + mag"close to 100 %"†
Urbioticadropped mag + IR for mag-only98 %†; IR fails when dirty
PNI PlacePodRM3100 magnetometer$290-299 retail
Sensysmagnetometer, MicroRadar variantMicroRadar 98 % (SFpark)
Fybrmag + radar78 % (SFpark)
Clevercitioverhead opticalup to 100 spaces per unit; Redwood City $904k + ~$18k/month
IPS (meter / pole mount)stereoscopic + magnetometerSanta Ana: $250/sensor + $45 install + $3.50/space/month
KKM LAS7geomagnetic + microwave radarno datasheet found

City prices: NYC $250 per sensor (2 per space); Milwaukee $245; Burlington VT $250.

Takeaways

Report: can a stuck-on sheet stay in over winter?

Research agent, 2026-11-07. Tests H8's "remove every winter" assumption. [estimate] marks our own judgment, not a published figure.

Short answer

Not "always remove", but "remove unless the sheet is built like a snowplowable marker and sits on the even side". No one publishes winter loss rates for glued-on street parking sensors, and every snowy-city deployment we found is in-ground. The analogues (road markers, rubber speed humps, marking tape) show that height, edge angle, hardness and anchoring decide survival, plus whether a steel blade ever reaches that pavement. Today's 7 mm polymer sheet on butyl has a casting's height with tape's strength: the worst mix. A lower, ramped sheet in a space the plow rarely scrapes could plausibly stay in, losing perhaps 5-25 % per winter [estimate].

1. Surface-mounted parking sensors in snow

Vendor / sourceWhat it says
UrbioticaSurface "not ideal … where snow plows are used regularly"; Burlington (Ontario) went buried: "a surface one would be damaged"
Nedap SENSITSurface mount is for indoor/rooftop parks; only the flush mount is snowplough resistant
Bosch PLSGlued (2K epoxy/PU), 30.5 mm tall, "resistant to … snowplough", but footnote: plow ≤ 5.5 t, flexible rubber flap, ≤ 20 km/h: a parking-lot plow, not a city steel blade
FleximodoPhoto of a sensor "seriously damaged by careless snow-plough drivers"; brief the drivers
LibeliumBury it "to allow for snowplow operation in winter"
Hansab ParkSolClaims plowing is fine (no data)
Moscow (1,000 Nedap), Montreal, Glens Falls, TrondheimAll in-ground
NYC Bronx, Burlington VT pilotsPromised winter tests; no results published

Bottom line: no published plow-loss rate for surface parking sensors; the one plow-rated surface product is rated only against light rubber-edged plows.

2. What survives plows: markers, markings, humps

ObjectHeightResult
Snowplowable marker casting (Stimsonite 96 / 96LP / 101)10.4 mm / 6.4 mmHardened nodular iron (51-55 RC), ramps 6° / 4° (a later patent uses 3.5°), keels epoxied into saw cuts. Texas caps height at 25 mm
Same, in service–NJ: ≤ 9.5 % of reflectors replaced in year 1, no castings lost. Illinois: > 40 % of lenses gone in 2 yr. Kentucky: 11 % missing on old pavement, 30 % on poor asphalt. NCDOT banned metal castings (2021): loose ones become projectiles
Ordinary raised markers10-20 mmNot used where plows run; some states dropped raised markers entirely
Recessed marker in a groovegroove 9.4 mm deep (25 mm at lens)Kentucky: < 1 % of 1,850 lenses lost after one light winter
Surface thermoplastic~3.2 mmSurvives but chips; plow damage is "the single most deleterious factor" (Vermont)
Markings, surface vs grooved2-4 mmIndiana: grooved tape > 10 winters, grooved thermoplastic ~5, paint 1-2. Virginia moved waffle tape to inlay after plow damage
Bolted rubber speed cushions~50-75 mmPhiladelphia: ~140 (≈10 %) damaged in one winter (blade "pulls from the lip … shears the bolt"). Edmonton: "most" damaged; Hamilton quit; Mansfield, Worcester remove them each winter

Lessons: a blade catches a lip, so survivors ramp ≤ 6° all round; even 6-10 mm needs hardened metal keyed into the pavement; 2-4 mm fused material survives but wears; a shallow groove protects what can't be made strong.

3. How Cambridge (and Boston) actually plow

Implication: on the even side the sheet spends most plow events under a parked car or a windrow. The risk is an empty space at the first pass or during widening, plus shovels and ice chippers.

4. Adhesives in cold, salt and freeze-thaw

AdhesiveMin. install tempNotes
Butyl pad (H.B. Fuller ST-3001)-7 °C"often outlasts the marker"
Butyl pad (Uline / Pexco)pavement 21 °C or torch-warm; prime below 10 °Cup to 2 h to adhere
Hot-melt bitumen (TxDOT DMS-6130)4 °Cpolymer-modified "flexible" type exists
2-part epoxy10 °C typical (E-Bond 4 °C)~13 h set at 10 °C
Marking tape (ASTM D4592)10 °C–
Bosch PLS 2K PUper maker> 12 h cure; pressure-wash and flame-dry first

Nevada DOT dropped cold-applied adhesives as unreliable. Freeze-thaw failure starts at the edge: water under a lifted edge freezes, wedges it open, and gives the blade a lip. Practical: dry pavement measured ≥ 10 °C, torch-warm, roll hard, seal the perimeter: the next few sunny November afternoons. December-March is outside almost every spec.

5. When could a sheet stay in?

ConditionTargetWhy
Sideeven onlyNo tow, no curb-to-curb blading
Height≤ 6 mm, ideally ≤ 5Matches the low-profile casting (6.4 mm)
Edgeramp ≤ 6°, ideally ≤ 4°, all round6 mm needs an 86 mm ramp at 4° (57 mm at 6°); or dome the whole sheet
Skinhard, slick top (UHMW or thin steel), no lipBlade rides over, doesn't bite
Bondfull-area butyl/bitumen, sealed edge, ≥ 10 °CStops ice-jacking
Placementmid-space, away from the lane edgeUnder cars and windrow
Best (needs permit)flush in a 5-7 mm milled pocketLike recessed markers (< 1 %); a DPW street opening

Loss per winter (gone or lifted) [estimate], anchored on ~10 %/yr casting and speed-cushion losses:

Design / locationLoss per winter
7 mm, square edge, odd (tow-route) side50-90 %
7 mm, square edge, even side20-50 %
≤ 6 mm, ≤ 6° ramp, sealed, even side5-25 %
Flush in a milled pocket< 5 %

A dislodged sheet is also debris/liability.

6. A cheap winter field test (2-3 dummies, even side)

Install at pavement ≥ 10 °C with TPT/DPW told (ask them to brief the plow contractor). Dummies match real footprint, weight and adhesive; vary the edge: square, 6° ramp, 4° ramp/dome. Paint reference marks beside each. After each plowable storm (log date, snowfall) and monthly, record:

  1. Present / moved / gone (fixed-spot photo, offset from paint marks).
  2. Edge lift: feeler gauge at 8 points, % of perimeter debonded.
  3. Blade evidence: scrapes, gouges, chipped ramp.
  4. Ice under the edge on freeze-thaw mornings.
  5. Space occupied during plowing? One dummy with an accelerometer on the LoRa link logs strikes and heartbeats.
  6. Install pavement temperature; adhesive tack in January.

Honest reading: 0 of 3 lost only bounds loss below ~63 % (95 %). The test finds failure modes; it can't measure a 10 % rate (that needs ~30 sheet-winters). Rule: any loss or > 25 % edge lift on a ramped sheet by March means removal stays policy; clean survival through ≥ 3 plowable storms justifies a 10-20 sheet trial next winter.

Sources