Fox Red Labs / Builds / Motor control, power and sensing
See whether a room is occupied with an IWRL6432BOOST 60 GHz radar
TI's IWRL6432BOOST streams presence and range frames over USB with no setup. A short script reads them and a timed test scores detection, delay and false alarms.
MediumNo wiringten minutes to see frames
Parts and steps
You need
- IWRL6432BOOST 60 GHz mmWave radar evaluation module the radar board
- Micro-USB B cable power and data; the stand and tape for the timed test
Plug the board in and stand clear.BENCH
Plug the board's micro-USB port (J5) into the computer. Leave the switches as shipped. Keep 20 cm between the board and a person while it transmits (TI's board guide).
You should see: Lights D6 (5 V) and D3 (power good) come on; the antenna side faces the room.
Find the data port.TERMINAL
The board adds two serial ports; the one ending in 1 carries the data.
ls /dev/cu.usbmodem*You should see: Two ports, one ending in
1and one in4.Set up Python and capture 15 seconds.TERMINAL
Make a venv with pyserial, then capture 15 s at 115,200 baud from the port ending in 1 into a file with any serial tool.
python3 -m venv ~/radar-venv && ~/radar-venv/bin/pip install pyserialYou should see: A capture file of about 6 kB (4 frames a second, 384 bytes each).
Read the frames.TERMINAL
The parser prints one line per frame. Test it without a board first with
--selftest.python3 iwrl6432boost/tools/tlv_parse.py capture.binYou should see: Frame number, bytes, detected objects and the block types; presence blocks are type 315 and range profiles 303.
Check the antenna settings answer.TERMINAL
Open
iwrl6432boost/eval/radar_link.pyand setPORTandCFG(written for this bench's folders) to your port and configuration folder. Then apply each setting and check the stream.python3 iwrl6432boost/eval/radar_eval.py acceptYou should see: The board's answer to every configuration line, then a stream check for 1x1 (refused with error -40107), 2x2 and 2x3.
Run the timed passes.TERMINAL
Put the board on a stand at about 1.5 m, antenna toward the room, a tape line out from it, and two chairs at 2 m and 4 m. Leave the room for the empty run, then run the cued walk-in and seated passes; Enter in the terminal confirms that the person is in place, and the tool speaks the cues.
python3 iwrl6432boost/eval/radar_eval.py empty --seconds 60 python3 iwrl6432boost/eval/radar_eval.py run --passes walk,sit2,sit4You should see: A results file per setting in
iwrl6432boost/eval/results/: flags in the empty room, detect delay after the cue, hold while seated, and the distance at first flag on the walk-in.Put the shipped setting back.TERMINAL
Restore the shipped configuration.
python3 iwrl6432boost/eval/radar_eval.py restoreYou should see: The board prints the shipped lines again and streams at about 4 frames a second.
Or hand it to a coding assistant
Paste this in a terminal. It hands off to an AI assistant.
git clone --depth 1 --filter=blob:none https://github.com/Fox-Red-Labs/fox-red-labs.git && cd fox-red-labs
./start.sh iwrl6432boost radar-presence --assistant claudegit clone --depth 1 --filter=blob:none https://github.com/Fox-Red-Labs/fox-red-labs.git && cd fox-red-labs
py start.py iwrl6432boost radar-presence --assistant claudeIt runs the steps above and reports what it saw.
Not Claude Code? Copy this prompt instead.
If something goes wrong
| No lights | Try another cable; the port is micro-USB B. |
| No ports listed | Check the cable is a data cable and the board is powered. |
| An empty file | Check that you read the port ending in 1, then press the board's reset button (S2) and capture again. |
| The self test fails | You are not at the top of the repository. |
| At step 5 | The demo ignores its command line until one press of the board's reset button (S2) after power-up. |
More troubleshooting
| At step 6 | Put the shipped configuration back afterwards with restore. |
| At step 7 | Press reset (S2) if it does not answer. |
What to build next
Every build. The code for all of them is in the GitHub repository.
Evidence and limitsA seated person at 2 m and 4 m was held in 100 percent of frames; with a modified configuration an empty room gave 0 flags in 87,602 frames (6.08 h). Ran on 1 board. Results, sources, timing and limits.
Expected result: The board streams presence and range frames about four times a second. In the timed test a seated person at 2 m and 4 m is held as present on 2x2 and 2x3 (100 percent of frames, one pass each).
What this shows
- A person sitting still at 2 m and 4 m was held in 100 percent of frames on 2x2 and 2x3. An arrival was flagged 4.7 to 6.2 s after the cue, which includes the person's reaction and walk. With a modified configuration (PresenceDetect-hold12.cfg) the empty room gave 0 flags in 6.08 h, until a flag whose cause was not checked.
- A short Python parser reads the frames, and the timed test needs no change to the board's firmware.
What this does not establish, and limits
What this does not establish
- How many people are in the room: the demo reports four floor zones on or off.
- Anything past 4 m seated or about 7 m walking: not tested.
- Your room: glass, metal shelving and fans change the result. One room, one afternoon, one pass per cell, so no spread.
- Power use: the demo does not report it and no measurement was made.
Limits to keep in mind
- The steps are from the 2026-10-09 and 2026-10-10 runs.
- The tool's serial port and configuration paths are written for this bench (
PORT,CFGinradar_link.py). - Checked on one Intel Mac only.
Sources
Why this board
It is the one radar board here; the same chip family has no 1 transmit by 1 receive part, so the 1x1 setting was refused by the demo.
Versions, sizes and timing
| Frame rate | 4.00 a second as shipped; 3.85 a second with the evaluation setting | README notes |
|---|---|---|
| Range bin | 0.121 m (derived from the settings, not checked against a measured distance) | evaluate a presence radar notes |
| Chip | IWRL6432, 2 transmit and 3 receive channels, 57 to 64 GHz; Cortex-M4F core | README notes |
Evidence
- 2026-10-10: empty room 60 s gave 0 flags in 240 frames on 2x2 and on 2x3. A person seated at 2 m and at 4 m was held in 100 percent of frames. Flagged 3.9 to 6.7 s after the cue; cleared 10.7 to 14.1 s after leaving (the demo's hold time). Walk-in first flagged at about 6.5 m on 2x3. One pass per cell. evaluate a presence radar notes
- Overnight, 2x3, modified configuration (PresenceDetect-hold12.cfg), 12-frame hold: 0 flags in 87,602 frames (6.08 h) in an empty room, until a flag whose cause was not checked; 95 percent upper bound 0.49 an hour. radar antenna eval notes
- The shipped image streams 4.00 frames a second, 384 bytes each, with no frame missing in 60 s. README notes
Other boards
What the status words mean
Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why
Result grid
Works ran here and did what it shouldShould work it builds; only naming, packaging or build glue is in the way; hover for whichCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why
Experiments (5)
| Status | What was tried | Result |
|---|---|---|
| What do you get from all the antennas of the TI IWRL6432BOOST radar, against using one transmitter and one receiver? IWRL6432BOOST, 2026-10-10 | 2x2 and 2x3 ran. The presence demo refuses 1x1 with error -40107. In an empty room neither gave a false alarm in 240 frames. Overnight, 2x3 at a 12-frame hold gave none in 87,602 frames, which is 6.08 h in an empty... | |
| Could work | Can TI's Motion and Presence demo on the IWRL6432BOOST board's IWRL6432 radar report room zones with no reflash, and can each zone become a Home Assistant sensor? IWRL6432BOOST, 2026-10-13 | Room zones need only a configuration change to TI's shipped Motion and Presence demo: up to 12 boxes, each reported in every frame. The four-zone configuration, zone logger, live page and Home Assistant poster are... |
| Could work | Does the reference ROS driver for TI mmWave read the IWRL6432BOOST? IWRL6432BOOST, 2026-11-03 | The reference ROS 1 driver for TI mmWave (radar-lab/ti_mmwave_rospkg) builds on ROS Noetic with one build-file edit and publishes every point of an IWRL6432BOOST walk recording, identical to the recording, when frames... |
| Works | Does the popular Python mmWave SDK 3 reader work on the IWRL6432BOOST? IWRL6432BOOST, 2026-11-03 | The most-forked Python reader for mmWave SDK 3 point clouds (ibaiGorordo/AWR1843-Read-Data-Python-MMWAVE-SDK-3-) reads every point of two IWRL6432BOOST walk recordings, identical to the recordings, with its parser... |
| Could work | Can the popular mmWave gesture recognizer run on the IWRL6432BOOST? IWRL6432BOOST, 2026-11-03 | The most-starred open gesture recognizer for TI mmWave (vilari-mickopf/mmwave-gesture-recognition) reads none of an IWRL6432BOOST stream: its config loader stops on a low-power SDK cfg, and its frame parser, built for... |
Source files
- Experiment write-up (IWRL6432BOOST): what was tried and where it stopped
Code brought from elsewhere
This project uses code that was written for other chips or tools. Each links to how to get it running.
- Open radar readers on the IWRL6432BOOST: the ROS driver, the Python SDK 3 reader, the gesture recognizer Could work Once the board sends the standard point format (guiMonitor 1), the most-forked Python mmWave SDK 3 reader reads every point of two recorded walks with its parser unedited; the reference ROS 1 driver publishes every point when frames come every 50 ms, nothing at the board's 250 ms; the most-starred gesture recognizer reads no frame, because it expects an AWR1642 SDK 2 layout and near-field gestures at 10 frames a second.
Get the code and tell us how it wentThe clone command, the board folder with its AGENTS.md, reports from others, and the three report forms.
Built it? Tell us
Built this, or got stuck? Report it on GitHub with a few short answers. Your report shows here in your words, marked as yours. A failure that repeats on the bench gets its fix here.