This is a toolbox composed of Python scripts to interact with TI's evaluation module (BoosterPack) for IWRxx43 mmWave sensing devices. The toolbox provides easy access to particular OOB firmware versions, which are included in TI's mmWave SDKs and Industrial Toolboxes while focusing on data capturing and visualization with Python 3. Some elements of the toolbox can be considered being a Pythonic alternative to TI's mmWave Demo Visualizer.
Make sure to connect the carrier board (i.e. ICBOOST) of the antenna module used (e.g. IWR6843-ISKODS) via FTDI to enable resets without pressing NRST. Resets via XDS110 are supported for IWR-BOOST-EVMs devices only.
Advanced frame configuration with subframes is yet not supported.
3D plots are currently not implemented for IWR1843 ES1.0 and IWR6843 ES2.0.
The launcher of the toolbox is pymmw.py
:
usage: pymmw.py [-h] [-c PORT] [-d PORT] [-f HANDLER] [-n]
arguments:
-h, --help show this message and exit
-c PORT, --control-port PORT set port for control communication
-d PORT, --data-port PORT set port for data communication
-f HANDLER, --force-handler HANDLER force handler for data processing
-n, --no-discovery no discovery for USB devices
In GNU/Linux, the launcher attempts to find and select serial ports of a valid USB device if no serial ports are provided.
/mss/*.py
) for the firmware./mss/*.cfg
) once at startup./app/*.py
) defined in _meta_
with their required arguments./log
.Be patient when using Capture Demo for the "FFT of IF signals" application as the ADC data is first copied from ADC buffers to L3 memory and then published via UART. The update interval is about 10 seconds.
The configuration files are pretty much like the original TI's profiles, except that they are JSON-formatted. Furthermore, all entries without a value (set to null) are attempted to be filled up with inferred values from the additional _settings_
block, which contains advanced settings for postprocessing (like range bias due to delays in the RF frontend) and a generic antenna configuration.
Make sure to have an appropriate configuration file with reasonable settings related to the firmware and handler, respectively, residing in
/mss
. Several configuration files with exemplary settings for different profiles and use cases are stored in/mss/cfg
.
The toolbox works at least under GNU/Linux and Windows 10 with Python 3.8.5 - 3.8.9 if the following dependencies are met:
To make the tiflash module and the "FFT of IF signals" application work properly, an environment variable named CCS_PATH should point to the Code Composer Studio directory.
Insufficient permissions to access the device: probe usb_discover The device has no langid (permission issue, no string descriptors supported or device error)
. Add the required permissions for the XDS110 (and FTDI) device in udev, e.g. in /etc/udev/rules.d/99-mmwave.rules
:
# XDS110 (xWR EVM)
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="0451",ATTRS{idProduct}=="bef3",MODE:="0666"
# FTDI (DCA, ICBoost)
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="0451",ATTRS{idProduct}=="fd03",MODE:="0666"
KERNEL=="ttyACM[0-9]*",MODE:="0666"
No handler for a supported device and firmware could be found: pymmw _read_ no handler found
. If pymmw.py
is not able to read the welcome message of the firmware for some reason, try to set the USB ports manually and disable the USB discovery:
pymmw.py -c /dev/ttyACM0 -d /dev/ttyACM1 --no-discovery
Use the NRST button to reset the device if the no-discovery option is activated.
If you find this toolbox or code useful, please consider citing our paper:
@inproceedings{constapel2019practical,
title={A Practical Toolbox for Getting Started with mmWave FMCW Radar Sensors},
author={Constapel, Manfred and Cimdins, Marco and Hellbr{\"u}ck, Horst},
booktitle={Proceedings of the 4th KuVS/GI Expert Talk on Localization},
year={2019}
}