How 60GHz mmWave Radar Detects Sleep Position: An Engineering Explainer
Dovy Paukstys
Founder, Komori Care

Most people think radar = airplanes. Here's how a chip the size of a fingernail tracks your sleep position through a comforter.
We get this question a lot: "Wait, you put a radar in the bedroom?" Yes. And the technology that lets a small sensor on the nightstand measure whether you're on your back, side, or stomach, while you're under three layers of bedding, is the same family of physics that lands jets in fog. Just scaled down by about a factor of a billion in transmit power and roughly the same factor in size.
This post is for the engineer who's never built a radar before, but wants to know what's actually happening inside the chip. We'll walk through chirps, beat frequencies, range-Doppler matrices, micro-Doppler, MIMO antennas, and why 60GHz beats every other frequency we considered.
Key facts
- Komori uses a 60GHz mmWave FMCW radar in the unlicensed 57-71GHz band, governed by 47 CFR § 15.255.
- Available bandwidth at 60GHz is roughly 7GHz, which gives you a range resolution of about 2cm in free space.
- The chip transmits hundreds of frequency-swept "chirps" per frame and recovers range from the beat frequency at the mixer output.
- Range-Doppler processing separates static returns (mattress, walls) from moving ones (chest, limbs).
- Micro-Doppler can recover sub-millimeter chest displacement from breathing (4-12 mm peak-to-peak) — a capability enabled by the Pro sensor suite, not the Lite SKU.
- All processing runs on-device. No camera, no images leave the room. On-device microphones classify sound events locally; only audio features are recorded, and raw audio is not kept unless the user explicitly asks for it.
The physics: why 60GHz penetrates fabric but not skin
A 60GHz wave has a wavelength of about 5mm. That's small enough to bounce off a person's torso, but large enough to slip through cotton, polyester, and the air gaps in a comforter without much loss. Skin and the watery tissue underneath have a high dielectric constant, so most of the energy reflects at that boundary. That reflection is what we measure.
There's a second reason 60GHz is great for indoor use. Atmospheric oxygen has an absorption peak right around 60GHz, peaking near 15 dB/km in dry air. That sounds like a problem, but for a sleep sensor sitting two meters from a person, the loss is negligible (we're talking 0.03 dB across the whole link). It's actually a feature outdoors: the band self-isolates between buildings, which is why the FCC opened it for unlicensed use (FCC fact sheet, 2023).
Transmit power is tiny. Indoor field-disturbance sensors are limited to roughly 20 dBm (100 mW) peak EIRP under the 2023 amendments to Part 15.255 (Wiley alert, 2023). Average power is much lower because of low duty cycles. For comparison, a Wi-Fi router typically runs at 100-200 mW. Your microwave oven puts out 1,000,000 mW, at a frequency that water absorbs much more strongly. The wave is doing essentially nothing to your tissue.
FMCW chirps and what comes back
FMCW stands for Frequency Modulated Continuous Wave. Instead of transmitting a short pulse like classical pulse radar, FMCW continuously transmits a sinusoid whose frequency ramps linearly upward over time. That ramp is called a chirp.
A typical chirp for our application looks like this:
| Parameter | Symbol | Typical value |
|---|---|---|
| Start frequency | f_c | 60.0 GHz |
| Bandwidth | B | 4.0 GHz |
| Chirp duration | T_c | 60 us |
| Slope | S = B/T_c | 66.67 MHz/us |
| Chirps per frame | N_c | 128 |
| Samples per chirp | N_s | 256 |
| Frame period | T_f | 50 ms |
Each chirp goes out the transmit antenna, reflects off everything in the room, and comes back to the receive antennas. The receiver doesn't try to digitize the raw 60GHz signal directly (that would need a converter running at >120 GS/s, which doesn't exist in any reasonable power budget). Instead, the chip mixes the received chirp with a copy of the transmitted chirp. The mixer output is the IF signal, also called the beat frequency.
Here's the key insight. If the target is at range R, the round-trip delay is τ = 2R/c. During that delay, the transmit chirp's frequency has already moved up by S·τ. So when the mixer multiplies the delayed return by the current transmit signal, the difference frequency is:
f_beat = S · τ = S · 2R / c
Which rearranges to:
R = c · f_beat / (2 · S)
That's it. Range becomes a frequency measurement. You sample the IF signal, run an FFT across the samples in one chirp ("range FFT"), and each FFT bin corresponds to a specific distance. With B = 4 GHz, your range resolution is c/(2B) = 3.75 cm. With the full 7GHz of unlicensed bandwidth, you get under 2.2 cm. This is the standard derivation you'll find in Skolnik's Introduction to Radar Systems and Richards' Fundamentals of Radar Signal Processing; it's also reproduced in Infineon's FMCW DSP training material and TI's IWR6843 datasheet.
For a great visual walkthrough, see Wireless Pi's FMCW radar tutorial, which derives the same equations from scratch.
Range-Doppler: separating "what's there" from "is it moving"
Range alone tells you there's a thing 1.8m away. It doesn't tell you whether the thing is your chest rising and falling or the headboard. To get motion, you need a second axis.
Within one frame, the radar transmits N_c chirps back-to-back. If a target is moving, each successive chirp sees the target at a slightly different range, which shows up as a small phase shift between the corresponding range bins of consecutive chirps. Stack those phase samples across chirps, run a second FFT (the "Doppler FFT"), and you've got velocity for every range bin.
The output is a 2D range-Doppler matrix: rows are range, columns are velocity. Static returns from walls, the bed frame, and the mattress all collapse onto the zero-velocity column. Anything moving, including breathing, lights up off-axis. This is the bread and butter of every modern automotive and indoor radar; see Wireless Pi's Part 2 on velocity and the data cube for a clean derivation, or Remcom's WaveFarer chirp/range-Doppler reference for the simulation perspective.
For sleep monitoring this matters enormously. Beds are full of clutter (the frame, the mattress springs, the wall behind the headboard). Range-Doppler processing lets the algorithm reject all of it in one pass.
Micro-Doppler: breathing, heartbeat, position shifts
Doppler tells you bulk velocity (someone walking across the room). Micro-Doppler captures the small modulations that happen on top of bulk motion: arms swinging, chest expanding and contracting, even the limbs of a dog at the foot of the bed.
Victor Chen and David Tahmoush wrote the canonical reference here, Radar Micro-Doppler Signatures: Processing and Applications (IET, 2014). Tahmoush's review article is a more accessible starting point.
For breathing, the chest wall moves about 4-12mm peak-to-peak during normal respiration. At 60GHz that translates into a phase change in the range bin of nearly 4π radians for a 4mm displacement, far above the noise floor of any modern radar IC. You extract the phase from the complex range-FFT output at the bin where the person's torso lives, unwrap it, and you've got a respiratory waveform. Run an FFT on a 30-60 second window and the dominant peak is the breathing rate.
Heart rate is harder. The cardiac mechanical signal at the chest wall is on the order of 0.1-0.5mm, often buried under the second harmonic of respiration. Recent work has shown 60GHz FMCW radar can recover heart rate to within a few BPM using techniques like MUSIC, Prony, and various deep learning approaches (Nature Scientific Reports, 2025; IEEE conference paper, 2023).
Sleep position changes show up as larger, transient micro-Doppler events. When you roll from supine to side, the radar sees a coordinated shift in the spatial distribution of returns and a brief Doppler burst. Researchers have used these signatures to build sleep posture transition datasets (SPT dataset, 2025) and sleep stage classifiers (Lee et al., Journal of Sleep Research, 2024).
Beamforming and MIMO antenna arrays
So far we've covered range and velocity. To answer "is the person on the left side of the bed or the right," you need a third axis: angle.
Modern 60GHz radar chips use MIMO (multiple-input multiple-output) antenna arrays. The TI IWR6843, for example, has 3 transmit and 4 receive antennas, which by virtual-array synthesis gives you 12 effective spatial channels. The Infineon BGT60TR13C has 1 Tx and 3 Rx (see the Infineon product page). In either case, the phase difference of the received signal across the array tells you the angle of arrival.
Run a third FFT across the antenna dimension and you go from range-Doppler to a full point cloud: every detected reflector has a range, a velocity, and an angle. That's enough to draw a rough silhouette of where the body is on the mattress, distinguish the person from a pet at the foot of the bed, and infer trunk orientation from the shape of the cluster.
The point cloud is sparse on purpose. We're talking dozens to a few hundred points per frame, not the millions a depth camera would produce. That sparsity is a feature: it's enough to localize and classify a body, but nowhere near dense enough to recognize a face, read a book over your shoulder, or do anything you'd reasonably call "imaging."
Why 60GHz over 24GHz, 77GHz, or UWB
This is where engineering becomes opinion. We looked hard at every alternative.
24GHz: Old workhorse. Cheaper chips, established ecosystem. But the bandwidth is limited to 250MHz in the ISM band, which gives you a range resolution of 60cm. Useless for distinguishing chest from headboard. Hard pass.
77GHz: The automotive favorite. Wider available bandwidth (up to 4GHz in the SRR band), excellent angular resolution because of shorter wavelength, mature toolchains. But the chips are tuned for outdoor automotive ranges of 100m+, draw more power than we want for a nightstand sensor, and the FCC rules for 77GHz aren't aimed at consumer indoor use. The cost-per-unit is also still much higher than 60GHz at the volumes a wellness device sees.
UWB pulse radar (3.1-10.6GHz): Used by some competitors and in Apple's U1/U2 chips for ranging. Strengths: low power, excellent through-wall behavior, well-understood from decades of ground-penetrating-radar work. Weaknesses for sleep: comparatively low resolution per unit bandwidth, larger antennas, and (importantly) much weaker reflections off small chest movements at the lower frequencies. A recent SpringerLink chapter, UWB and 60GHz Radar Technology for Vital Sign Monitoring, and Novelic's in-cabin comparison both land roughly where we did: FMCW mmWave wins on resolution and sensitivity for vital signs, UWB wins on raw range and wall penetration.
Sleepiz, the Swiss medical-device company that runs clinical sleep studies for hospitals, picked Infineon 60GHz for the same reasons we did (Infineon press release, 2022). When the company whose entire FDA pathway depends on getting this right makes the same call, that's a useful tiebreaker.
60GHz mmWave FMCW wins because: bandwidth up to 7GHz gives sub-3cm range resolution, the wavelength is short enough for compact MIMO arrays to fit in a phone-sized device, the unlicensed band is global (US, EU, Japan), and the chips (TI's IWR6843-class, Infineon's BGT60 family) have integrated antennas-in-package that eliminate the worst of the RF design pain. The tradeoff is shorter useful range (a few meters), but for a nightstand sensor watching one bed, that's exactly what you want.
Privacy: radar is inherently non-imaging
Here's the part we care about most. A camera produces a 2D image of light bouncing off everything in front of it. Even an IR camera produces something a human can identify a face from. Radar produces a sparse point cloud. It's physically incapable of imaging a face at any reasonable cost or chip size.
The angular resolution of an array is roughly λ / (N · d), where N is the number of antennas and d is element spacing. To resolve a face at 1m to the level you'd need for biometric identification (say 5mm), you'd need an array hundreds of elements wide. The IWR6843 has 12 virtual channels. Two orders of magnitude short of "imaging," by design.
That's why we built Komori on radar in the first place. You can read more about why we chose privacy-first design, how we build sleep monitoring without a camera, and what we believe movement actually says about sleep. It's also why we don't generate a sleep score: we'd rather give people the underlying data than a black-box number.
Where the processing happens
Every step described above (range FFT, Doppler FFT, angle FFT, peak detection, micro-Doppler extraction, position classification) is designed to run on the device next to your bed. The IWR6843 has a hardware accelerator for the FFTs and a Cortex-R4F for the higher-level processing. Nothing about the raw point cloud, raw IF samples, or micro-Doppler waveforms ever leaves the room. What gets uploaded is summary data: minutes per position, bed exits, and — on the Pro sensor suite — respiratory metrics derived from the micro-Doppler phase.
That's a deliberate design choice, not a side effect. You can read more about how this fits into the overall sleep monitoring architecture on our product page.
Closing: this is the kind of tradeoff we made on purpose
Building Komori meant choosing among real engineering options, each with real costs.
We could've used a camera. Better classification, off-the-shelf ML, lower BOM. Hard no on privacy.
We could've used a contact sensor (mat, wearable, ring). Easier physics, but you can't put it on someone with dementia who'll pull it off, and you can't do bed-exit detection or environmental tracking with a wrist device.
We could've used UWB at 6GHz. Lower power, but worse resolution and weaker chest signal.
We picked 60GHz FMCW radar because it solves the actual problem (knowing position and presence under bedding, with respiratory motion available on the Pro sensor suite) without solving problems we don't want to solve (capturing what someone looks like). It's not the cheapest option. It's not the most familiar to consumers. It's the one we'd want in our own bedroom.
That's how engineering tradeoffs are supposed to work: optimize for the thing you actually care about, accept the costs that come with it, and be honest about what you gave up.
If you're an engineer reading this and you want to talk shop, we love that conversation.
Want updates on Komori?
Join the waitlist — free. No spam, just launch updates and sleep insights.
Want to see your sleep position data?
Get the Insider Pass and be first to experience Komori when it ships.


