Dennis Burke - Lightning & Thunder (TDOA/ToF) Project Status
Contact: Dennis Burke dennisfburke@verizon.net
Location: 1465 Cobblecreek St, Manteca, CA 95336 (510-828-3036)
Last Updated: February 10, 2026
๐ฏ Project Overview
Lightning & Thunder (L&T) โ Time Difference of Arrival (TDOA) / Time of Flight (ToF) acoustic ranging system for ZTAG proximity detection.
- Lightning = RF packet (ESP-NOW broadcast)
- Thunder = Acoustic burst (16-18kHz ultrasonic tone)
- Goal: 10-15cm spatial resolution within 2-3 meter range
- Target jitter: 200-300 microseconds (>1ms = 30+ cm variance, unusable)
๐
Recent Timeline
Feb 3, 2026 โ Doppler Analysis + Espressif Follow-Up
- Dennis calculated Doppler guard-band formula
- 19-20 frequency slots between 10-10kHz with ~10% guard-band
- Assumption: ฮV ~20 MPH (arm-waving motion)
- Asked: "Any feedback from Espressif regarding ESP-NOW enhancements?"
Jan 29, 2026 โ ESP-NOW Enhancement Request to Espressif
- Critical request: Dennis needs Espressif cooperation
- Specific ask: Add 4x 16-bit timestamp fields to ESP-NOW packet (managed at stack level)
- Quan forwarded request to Espressif (via email Jan 29)
- Timestamps needed:
- T1 (Build-Send): Packet placed on stack (sender local time)
- T2 (Transmission): Packet positioned to transmit (updated every retry)
- T3 (Reception): Packet received on stack (receiver local time)
- T4 (Consume): Packet arrives at application (receiver local time)
- WiFi/RF delta = (T2 - T1) + (T4 - T3) โ self-referential, clock-rate error negligible
- Resolution: 16-bit field gives ~65ms range with 1ฮผs resolution
- Benefit to Espressif: Provides tight time-sync useful beyond ZTAG (tri-corner hat, etc.)
Jan 22, 2026 โ L&T Architecture Discussion
- Dennis proposed 4-timestamp solution to eliminate RF RX jitter
- Quan demonstrated acoustic pulse detection works with good accuracy
- Remaining uncertainty: interval between lightning packet generation and reception
- Consensus: TDM scheduling must come into play for meaningful L&T function
Jan 13, 2026 โ Hardware Limitations Discovered
- M5Stack Fire hardware constraint: PDM mic (SPM1423) and Internal DAC (GPIO 25) both require I2S0
- Result: True simultaneous TX+RX impossible on this hardware
- Workarounds:
- I2S1 supports PDM but requires software PCMโPDM conversion
- DAC can be bit-banged (performance hit)
- Audio startup issue: DAC tear-down for half-duplex creates broadband clicks
- Dennis suggested AC coupling issue: pumping low-frequency signal during idle reduces clicks
Jan 11, 2026 โ Global Clock Approach
- Quan's new strategy: Stop using RF RX timestamps (too much jitter)
- New approach: Phase-lock all devices to shared timebase
- Encode TX timestamp in RF payload
- Schedule acoustic emission at known offset
- Only timestamp acoustic arrival against global clock
- Rationale: RF becomes coordination channel, not timing sensor
- Early results: Far more stable, avoids pathological outliers
- Aligns with TDM: Global time infrastructure needed anyway
Jan 2, 2026 โ Milestone 5 Achieved
- Quan: Single burst at 16k-18kHz, 2ms-10ms length, detectable up to 3 meters
- No broadband noise in signals (big physical layer milestone)
- Working on multiple bits back-to-back for preamble detection
- Original LT: Used relative frequency intensities to encode 0/1 (like differential signaling RS485)
Dec 29, 2025 โ Marco Polo vs. Lightning & Thunder
- Quan explored Marco-Polo (RF trigger โ acoustic response)
- Abandoned: Jitter in MarcoโPolo response exceeded tolerance
- Returned to L&T: Device always sends ESP-NOW + audio burst together
- Once refined, can layer call-and-response on top
Dec 8, 2025 โ Dennis' Deep Dive Summary
- Timing consistency critical: 200-300ฮผs jitter budget
- Clean phase-stable tones required
- ESP32 hardware cosine generator can't change frequencies mid-output (discontinuities)
- Moving to raw DAC control + custom audio driver
- Multi-frequency signatures needed (pure tones fail with reflections/multipath)
- Adjacency gating approach:
- RSSI threshold (optional, coarse)
- Acoustic preamble validation
- Slot-timing identity bursts
- SNR + echo-rejection filters (direct-path arrivals only)
Nov 24, 2025 โ UWB vs. L&T Discussion
- Dennis explored UWB positioning (DW1000 modules)
- UWB pros: Better accuracy, anchors define plane
- UWB cons: Anchors not viable for ZTAG, $15-20/unit cost, hardware changes required
- Quan's constraints:
- 60,000+ ZTAGGERs deployed across 500-600 systems
- Enhancements must be software-only
- 2-minute setup time non-negotiable
- UWB impractical across application, hardware, business dimensions
- Dennis' ad-hoc localization dream: Anchorless UWB (experimental)
Sep 25, 2025 โ Hardware Request
- Dennis unable to run standard ZTAG code on M5Core/M5Core2
- Requested ZTAG kit from Quan
Aug 6-20, 2025 โ Onboarding
- Dennis signed NDA
- Initial Zoom meetings with Quan + Malachi
- Set up M5Stack modules for testing
๐ง Technical Architecture
Current L&T Design (Quan, Jan 2026)
TX Device:
1. Generate RF packet (ESP-NOW) with TX timestamp
2. Schedule acoustic burst at T_offset from TX timestamp
3. Broadcast both over air
RX Device:
1. Receive RF packet โ extract TX timestamp
2. Detect acoustic arrival โ timestamp against global clock
3. Calculate distance: (T_acoustic_rx - T_tx - T_offset) ร speed_of_sound
4. Phase-lock to shared timebase (global clock sync)
Dennis' Proposed ESP-NOW Enhancement
ESP-NOW Packet Header (4x 16-bit fields):
T1: Build-send (sender local time, packet queued)
T2: Transmission (sender local time, updated on retry)
T3: Reception (receiver local time, packet on stack)
T4: Consume (receiver local time, packet at app)
WiFi/RF latency = (T2 - T1) + (T4 - T3)
Thunder pulse age = T_acoustic_rx - (T_tx + WiFi_latency)
Distance = Thunder_pulse_age ร speed_of_sound
Multi-Tone Encoding (Dennis' Research)
- Frequency range: 10-10kHz (audible range limit)
- Doppler compensation: Non-uniform spacing (~10% guard-band)
- Capacity: 19-20 identity slots
- Detection: Goertzel algorithm (falls down at some point) โ FFT required
- Challenge: Continuous frequency detection consumes heavy ESP compute
Adjacency Gating (4 layers)
- RSSI threshold (ESP-NOW exposes RSSI, coarse filter)
- Acoustic preamble validation (strong, properly-timed signatures only)
- Slot-timing identity bursts (avoids ambiguity with multiple nearby devices)
- SNR + echo-rejection (direct-path arrivals, suppress multipath)
๐ง Current Blockers
CRITICAL: Espressif ESP-NOW Enhancement
- Status: Request sent Jan 29, 2026 (Quan โ Espressif)
- Blocker: Need Espressif to add 4x 16-bit timestamp fields to ESP-NOW vendor header
- Rationale: User-land RF RX timestamps have unacceptable non-deterministic jitter
- Impact: Without this, must rely on global clock sync (more complex, less robust)
- Espressif incentive: Feature useful for any ESP-NOW time-sync application
Hardware Limitations (M5Stack Fire)
- I2S conflict: PDM mic + DAC both require I2S0 (can't do full-duplex)
- Audio clicks: DAC startup/teardown creates broadband noise
- Workaround options:
- Software PCMโPDM conversion on I2S1 (CPU hit)
- Bit-bang DAC (performance hit)
- Keep DAC on continuously (power/thermal?)
- Pump low-frequency signal during idle (reduces clicks)
RF RX Timestamp Jitter
- Problem: ESP-NOW RX timestamps exposed to userland show non-deterministic jitter
- Cause: WiFi/ESP-NOW reception scheduled above MAC/PHY boundary (not true RF arrival time)
- Impact: Intermittent outliers imply unrealistically short arrival times
- Solution: Either Espressif stack-level timestamps OR abandon RF-based timing entirely
โ
Action Items
For Quan
For Dennis
For Malachi Burke
๐ Technical Metrics & Constraints
| Parameter |
Target |
Current |
Notes |
| Spatial resolution |
10-15 cm |
~10 cm achieved (early test) |
Quan's first L&T proof-of-concept |
| Jitter budget |
200-300 ฮผs |
Variable (RF RX unreliable) |
>1ms = 30+ cm variance (unusable) |
| Detection range |
2-3 meters |
3 meters (Milestone 5) |
Acoustic burst at 16-18kHz |
| Frequency range |
10-10 kHz |
16-18 kHz tested |
Dennis researching wider band |
| Identity channels |
19-20 slots |
TBD |
Doppler-compensated spacing |
| Update rate |
12 Hz |
TBD |
Quan's Marco-Polo target |
| Player capacity |
30-50 |
TBD |
Limited by tone count ร TDM slots |
๐ Key Documents & Repos
GitHub Repos
Google Docs
External References
๐ค In-Person Meetings
Jan 6, 2026 โ Oakdale Training
- Location: OJUSD Technology Center, 331 Hinkley Ave, Oakdale, CA 95361
- Time: 8:00 AM
- Attendees: Quan, Steven Hanna, Dennis Burke
- Purpose: ZTAG training for teachers + face-to-face L&T discussion
- Outcome: (meeting occurred, no notes captured in emails)
Dec 2, 2025 โ Twin Rivers (Cancelled)
- Original: Dec 5 (Thursday) โ Rescheduled to Dec 2 (Tuesday)
- Location: Twin Rivers School District, 5115 Dudley Blvd, McClellan Park 95652
- Time: 10:00 AM
- Dennis' response: "HVAC issue, can't make it"
- Outcome: Did not occur
Nov 25, 2025 โ Sacramento Training (Proposed)
- Location: TBD (Northern California, early Dec)
- Purpose: Group training for teachers, invite Dennis to observe + meet in person
- Outcome: Evolved into Dec 2 Twin Rivers meeting (which was cancelled)
๐ก Dennis' Technical Insights
On Doppler Effect (Feb 3, 2026)
"The doppler effect may be uniform but the result is frequency dependent so it makes it possible to use non-uniform spacing to squeeze in more useable frequencies. A delta V of just over 20 MPH [assumes waving arms]. 19-20 slots between 10 and 10 KHz inclusive with ~10% guard-band."
On ESP-NOW Limitations (Sep 20-23, 2025)
"ESP-NOW by itself is a no-go for the ZTAG use case. [It] detected more than one master (isolated devices) and didn't self-heal when master A became unavailable."
Resolution: Malachi clarified master device concept is software-layer, not ESP-NOW behavior. Dennis discovered example code hard-coded 2 peers (recoded to 32).
On Localization vs. Adjacency (Nov 24, 2025)
"Is an ad-hoc localization scheme something I should pursue or is L&T to be a confirmation of adjacency?"
Quan's answer: "For now, I'm okay with foregoing a full spatial map unless we have a permanent, controlled environment. L&T is for proximity/tagging within 2m cluster."
On Audio Ranging (Dec 8, 2025)
"When I look at the range of the audio I think 'If I hear you, we're in a cluster, otherwise not.' Marco sends RF saying there will be a subsequent audio pulse. Then all responding Polo RF packets will only come from adjacent units. Resolving RF latency is much less time-constrained than flipping audio pulse onto Polo units."
On Multi-Tone Detection (Jan 11, 2026)
"Goertzel algorithm falls down at some point making an FFT the best/only option. Continuous frequency detection consumes a great deal of ESP compute power and can limit L&T update rate. It may well impact 'system' behavior."
๐ฏ Strategic Decisions
Why Not UWB?
- Anchors not feasible โ ZTAG customers prioritize 2-minute setup, no infrastructure
- 60,000+ devices deployed โ Software-only enhancements required
- Cost prohibitive โ $15-20/unit adds significant margin impact
- Use case mismatch โ Full spatial map unnecessary; proximity/tagging within 2m sufficient
Why Global Clock Sync Over RF RX Timestamps?
- RF RX jitter unacceptable โ Non-deterministic outliers above MAC/PHY boundary
- Espressif enhancement uncertain โ Can't block on vendor cooperation
- Aligns with TDM โ Global time infrastructure needed anyway for scheduled slots
- Proven stability โ Quan's early results show far fewer pathological outliers
Why ESP-NOW Over Other Mesh Protocols?
- Dennis tested painlessMesh โ Required down-rev libraries, "not optimal"
- ESP-NOW advantages: Low latency, vendor-supported, already integrated in ZTAG
- Limitations addressed: TDM scheduling + global clock sync overcome ad-hoc issues
๐ง Communication Preferences
Dennis Burke:
- Preferred: Email (paper trail, checks frequently)
- Secondary: Text (510-828-3036, ringer often off due to spam)
- Availability: Flexible, based in Manteca (close to Oakdale, Sacramento)
Best contact method: Email first, text for time-sensitive
๐ฎ Future Considerations
If Espressif Declines ESP-NOW Enhancement
- Path A: Fully commit to global clock sync approach (Quan's Jan 11 design)
- Pro: Software-only, no vendor dependency
- Con: More complex, requires tight phase-lock discipline
- Path B: Hybrid approach โ use RF as coordination channel only
- Encode TX timestamp in payload
- Accept RF RX timestamp unreliability, only trust acoustic timing
- Path C: Explore ESP32-S3 sub-microsecond time sync (Dennis' Jan 12 link)
- Requires hardware migration (current: ESP32, not S3)
Hardware Evolution
- Current: M5Stack Fire (ESP32, I2S limitations)
- Next-gen considerations:
- Separate I2S channels for PDM mic + DAC (full-duplex)
- Or: ESP32-S3 with sub-ฮผs time sync primitives
- Or: External audio codec with independent I2S buses
Scaling to 30-50 Players
- TDM slots required: 19-20 identity channels ร time multiplexing
- Update rate tradeoff: 12 Hz target may drop with player count
- Collision mitigation: 160 channels (10 time slots ร 4 frequencies ร 4 preamble phases)
๐ Notes from Recent Conversations
Breakfast Discussion (referenced Jan 11, 2026)
"TDM scheduling must come into play, as I mentioned when we spoke over breakfast last week."
Context: Quan and Dennis met in person (likely early Jan 2026, exact date unclear). Discussed need for Time Division Multiplexing to make L&T work at scale.
Fathom Transcripts
- No Fathom meeting notes found with Dennis Burke in Google Drive search
- Meetings likely occurred via Zoom (Malachi's account) without Fathom recording
โ ๏ธ Open Questions
Espressif Response Status?
- Quan forwarded request Jan 29, 2026
- No follow-up email found through Feb 10
- Need to check: Did Espressif respond? What was their answer?
M5Stack vs. ZTAG Hardware
- Dennis requested ZTAG kit Sep 25, 2025
- Unclear if hardware was sent
- Last mention: Malachi provided "small collection of ZTAG units" (Sep 23)
Legacy LT Code Status
- Dennis: "Old Lightning and Thunder [code] doesn't run on [new ZTAGGERs]. Haptic motor comes on and nary a peep."
- Quan (Dec 8): "Entire audio path and DAC configuration changed on new ZTAG hardware, legacy implementation obsolete."
- Question: Did Quan ever provide updated LT code compatible with new hardware?
Global Clock Sync Implementation
- Quan described approach Jan 11
- No updates found through Feb 10
- Question: What's the current status of phase-lock implementation?
Oakdale Meeting Outcome (Jan 6, 2026)
- Meeting confirmed, Dennis attended
- No follow-up email discussion found
- Question: What was discussed? Any decisions made?
๐ฌ Experimental Insights
From Quan's Testing (LT2/LT3 branches)
- Milestone 5 complete: Clean single bursts at 16-18kHz, 2-10ms length, 3m range
- Current challenge: Extending to multiple bits back-to-back (preamble detection)
- Previous implementation: 1.6ms bit width
- Current: 4-8ms bit width for reliable separation
- Goal: Optimize down toward original 1.6ms (tighter jitter, faster update rate)
From Dennis' UWB Experiments
- Testing DW1000 eval kits (not integrated with ZTAG)
- Exploring anchorless, ad-hoc localization (no success reported)
- "Pretty cool stuff but architecturally reliant on stationary reference points"
๐๏ธ Dennis' Background
- Expertise: RF/audio systems, signal processing, embedded systems (ESP32/Arduino/ESP-IDF)
- Tools: VS Code, PlatformIO, Arduino, painlessMesh (experimented), M5Stack hardware
- Projects: FPV drones (Mobula 7 HDZero), UWB positioning research
- Relationship: Met through Malachi Burke, signed NDA Aug 2025
- Collaboration style: Email-first, detailed technical write-ups, references academic papers
๐ Acronyms & Terms
- L&T / LT: Lightning & Thunder
- TDOA: Time Difference of Arrival
- ToF: Time of Flight
- TDM: Time Division Multiplexing
- FFT: Fast Fourier Transform
- Goertzel: Algorithm for detecting specific frequencies (faster than full FFT)
- ESP-NOW: Espressif's connectionless WiFi protocol (low latency, no AP required)
- I2S: Inter-IC Sound (digital audio bus)
- PDM: Pulse Density Modulation (mic format)
- DAC: Digital-to-Analog Converter (speaker output)
- UWB: Ultra-Wideband (alternative positioning technology)
- RSSI: Received Signal Strength Indicator
- SNR: Signal-to-Noise Ratio
End of Report
Last email in thread: Feb 3, 2026 (Dennis on Doppler + Espressif feedback question)
Status as of Feb 10, 2026: Awaiting Espressif response on ESP-NOW enhancement request