A Wearable 32-Channel Multi-Modal Wireless Ultrasound Probe
This repository contains ongoing work on TinyProbe, an advanced wearable ultrasound platform developed at the Integrated Systems Laboratory (IIS) of ETH Zurich.
- 64 V peak-to-peak bipolar excitations
- 32 pattern profiles (fully programmable)
- 16 delay profiles (fully programmable)
- 21, 18, or 15 dB low-noise amplifier (programmable)
- 21, 24, or 27 dB programmable gain amplifier (PGA)
- Up to 36 dB TGC (fully programmable)
- 32 channels (simultaneously sampled at up to 30 MSps, 10 bit)
Wi-Fi 6 link, data rates up to 35.7 Mbps
- A-mode, B-mode, M-mode with 32 channels (175 FPS with Wi-Fi 6, 32 channels, 400 samples per channel)
- Doppler mode with 2 channels (1500 FPS)
- Raw RF data streaming (55 FPS, 32 channels, 2000 samples per channel, 10 bit per sample)
The system design is described in detail in our publications in the IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control (TUFFC), and in the Proceedings of the IEEE International Ultrasonics Symposium (IUS 2025).
Please also take a look at our overview video on YouTube:
Host software, MCU firmware, and board hardware are in this repository. FPGA gateware is planned for a later release.
flowchart TB
Host["Host computer<br/>tipy Python package · software/"]
subgraph Probe["TinyProbe hardware · hardware/"]
MCU["SiWG917 Wi-Fi 6 MCU<br/>Firmware · firmware/"]
FPGA["IGLOO 2 FPGA<br/>Gateware · release planned"]
Analog["Analog front end and pulser<br/>AFE5832LP + TX7332"]
MCU <-->|"SPI · control and captured data"| FPGA
FPGA -->|"Configuration, clocks and triggers"| Analog
Analog -->|"LVDS · receive data"| FPGA
end
Host <-->|"Wi-Fi · commands and RF data"| MCU
style FPGA stroke-dasharray: 5 5
See the hardware overview for individual boards and their interconnections.
.
├── software/ # Host Python package, demos, and tests
├── firmware/ # SiWG917 Wi-Fi 6 MCU firmware
├── hardware/ # Board PCB designs
│ ├── wifi_board/ # Wi-Fi 6 PCB
│ ├── hv_board/ # Pulser PCB
│ └── acquisition_board/ # Acquisition board and its power-fix board
├── container/ # Docker and Apptainer firmware toolchain
├── config/ # Description files for methods and register maps
├── docs/ # Documentation files (Markdown, images, mkdocs)
└── licenses/ # Hardware, software, and image licensesThis repository uses uv and just for Python dependency and tool management. just is also included in the Python environment for convenience.
You can run just from the project root to see all available targets:
uv run just # Without activating Python environment
just # After activating Python environment / Using native binaryThere is a root workspace at the project root as well as a host project project in the software directory.
The root workspace installs the host project in editable mode, so host development commands can also be run from the repository root.
You may not always need all of the dependencies, which is why there are multiple dependency groups with their own set of packages.
| Group | Purpose |
|---|---|
| base | just and the host project |
dev |
Code generation and pre-commit hooks (embgen, Protocol Buffers, prek) |
doc |
Documentation generation and serving (Material for MkDocs) |
To install all of dependencies, run:
uv sync --group dev --group doc| Group | Purpose |
|---|---|
| base | Core dependencies for all functionalities |
dev |
Tests, linting, and type checking (pytest, ruff, ty) |
demo |
Demonstration and visualization (matplotlib) |
To install all of dependencies, run:
cd software
uv sync --group dev --group demoThe MkDocs documentation in docs/ starts with a system overview, followed by host software and Wi-Fi 6 firmware references. New
contributors should begin with the system overview to understand how the host,
MCU, FPGA, AFE, and TX paths fit together. Build or serve the site locally from
the repository root:
just docs_serveIf you would like to reference the TinyProbe project, please cite:
@article{vostrikov2024tinyprobe,
title={TinyProbe: A wearable 32-channel multi-modal wireless ultrasound probe},
author={Vostrikov, Sergei and Tille, Josquin and Benini, Luca and Cossettini, Andrea},
journal={IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control},
year={2024},
publisher={IEEE}
}
If you would like to reference only the Wi-Fi 6 PCB design, please cite:
@inproceedings{hirschi2025high,
title={High Frame Rate Arterial Monitoring via Wi-Fi 6 on a 32-channel Wearable Ultrasound Probe},
author={Hirschi, Cédric and Vostrikov, Sergei and Cossettini, Andrea and Benini, Luca},
booktitle={2025 IEEE International Ultrasonics Symposium (IUS)},
pages={1--4},
year={2025},
organization={IEEE}
}
The TinyProbe system was developed at the Integrated Systems Laboratory (IIS) at ETH Zurich by:
- Sergei Vostrikov (Full-stack TinyProbe design)
- Cédric Hirschi (Wi-Fi 6 Hardware development, Firmware & Software development)
- Federico Villani (Hardware development)
- Andrea Cossettini (Supervision, project administration)
- Luca Benini (Supervision, project administration)
Thanks to all the people who contributed to the TinyProbe platform:
- Josquin Tille (Silicone Package, Adapter PCB design)
- Soumyo Bhattacharjee (Gateware, Firmware QSPI development)
This repository makes use of the following licenses:
- for all hardware (
hardware/): Solderpad Hardware License Version 0.51 - for all software (
software/): Apache License Version 2.0 - for all images (
docs/images/): Creative Commons Attribution 4.0 International License
For further information, please refer to the license files: licenses/LICENSE.hw, licenses/LICENSE.sw, licenses/LICENSE.images.
The firmware/ and software/ directories contain third-party sources that come with their own licenses. See their respective README and README for more information.
