Skip to content
pulp-bioPublic

About

A Wearable 32-Channel Multimodal Wireless Ultrasound Probe

Resources

Stars

35 stars

Watchers

2 watching

Forks

Repository files navigation

TinyProbe main

TinyProbe

A Wearable 32-Channel Multi-Modal Wireless Ultrasound Probe

Introduction

This repository contains ongoing work on TinyProbe, an advanced wearable ultrasound platform developed at the Integrated Systems Laboratory (IIS) of ETH Zurich.

Transmit

  • 64 V peak-to-peak bipolar excitations
  • 32 pattern profiles (fully programmable)
  • 16 delay profiles (fully programmable)

Receive

  • 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)

Connectivity

Wi-Fi 6 link, data rates up to 35.7 Mbps

Operating Modes

  1. A-mode, B-mode, M-mode with 32 channels (175 FPS with Wi-Fi 6, 32 channels, 400 samples per channel)
  2. Doppler mode with 2 channels (1500 FPS)
  3. 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:

YouTube thumbnail

Contents

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
Loading

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 licenses

Development

This 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 binary

There 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.

Dependency groups

You may not always need all of the dependencies, which is why there are multiple dependency groups with their own set of packages.

Root Workspace

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

Host Project

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 demo

Documentation

The 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_serve

Citation

If 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}
}

Authors

The TinyProbe system was developed at the Integrated Systems Laboratory (IIS) at ETH Zurich by:

Thanks to all the people who contributed to the TinyProbe platform:

License

This repository makes use of the following licenses:

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.

About

A Wearable 32-Channel Multimodal Wireless Ultrasound Probe

Resources

Stars

35 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages