Independent fork by @Sergio5714 with enhanced reproduction instructions and minor improvements.
This repository contains a stable release of WULPUS, a truly wearable ultra-low-power open research ultrasound platform.
To date, more than 70 probes have been produced worldwide, and over 12 groups have used it in academic and industrial research.
WULPUS probe comprises two printed circuit boards (PCBs):
- Acquisition PCB: featuring an ultrasound MCU (MSP430FR5043) and BLE MCU (nRF52832)
- High-Voltage PCB: featuring a High-voltage multiplexer (HV MUX), a transmit/receive switch, and a MOSFET driver.
Hardware unchanged from v1.2.2; photos show Acquisition PCB v1.2.2 and HV MUX PCB v1.1.1.
Acquisition PCB (v1.2.2, top) |
HV MUX PCB (v1.1.1, top) |
| Feature | Specification |
|---|---|
| Channels | 8 (time-multiplexed) |
| ADC | 1 channel, up to 8 Msps, 12-bit resolution, approx. 1.4 MHz -3 dB bandwidth |
| Analog front-end | 30.8 dB Programmable-Gain Amplifier + 10 dB Operational Amplifier |
| Wireless link | Bluetooth Low Energy (BLE), 320 kbps throughput |
| Acquisition rate | Up to 50 Hz PRF, 400 samples per acquisition (raw data streaming mode) |
| Size & weight | 46 x 25 mm footprint, 9 g |
| Power | 25 mW (raw data streaming mode, 50 Hz PRF) |
This repository has the following folders:
-
fw, containing the firmware source code, namely:- source code for the nRF52832 MCU of the WULPUS probe, located at
fw/nrf52/ble_peripheral/US_probe_nRF52_firmware - source code for the nRF52840 USB dongle, located at
fw/nrf52/peripheral/US_probe_dongle_firmware - source code for the MSP430 ultrasound MCU, located at
fw/msp430
- source code for the nRF52832 MCU of the WULPUS probe, located at
-
sw, containing the Python code for the WULPUS Graphical User Interface -
hw, containing the CAD source files for- WULPUS Acquisition PCB (located at
hw/wulpus_acquisition_pcb) - WULPUS High-Voltage PCB (located at
hw/wulpus_hv_pcb) - WULPUS Programmer PCBs (located at
hw/wulpus_programmer_pcbs) - WULPUS Silicone Rubber package (located at
hw/wulpus_silicone_package)
- WULPUS Acquisition PCB (located at
-
docs, containing the project documentation (e.g., images of the device, user manual, ...)
The comprehensive WULPUS User Manual can be found in the docs/ folder. It covers everything about WULPUS, from assembly instructions to example measurements and troubleshooting, making the platform user-friendly for everyone, regardless of technical expertise.
Please find the detailed instructions in chapter 2 of the WULPUS User Manual.
In a nutshell, to build your own instance of WULPUS, the following steps should be completed:
- PCBs manufacturing and assembly
You can find the design files (Altium source files, schematics, bills of materials) under thehwfolder. - Flashing MSP430 firmware
You can find the instructions on setting-up the toolchain, compiling the firmware and flashing the MSP430 MCU in thefw/msp430folder. - Flashing nRF52 MCU and USB dongle firmware
You can find the instructions on setting-up the toolchain, compiling the firmware, flashing the nRF52 MCU and USB dongle in thefw/nrf52folder. - Python dependencies installation on the host PC
Follow the instructions in theswfolder to install the dependencies.
For convenient one-click PCB production and assembly, you can use the PCBWay shared projects (optional; DIY via the hw folder is also supported):
This option is convenient for outsourced PCB production and assembly, with an estimated ~1 month lead time and a price of about USD 180 per probe (Acquisition + HV PCB), based on mid-2025 pricing.
Please refer to chapter 3 of the WULPUS User Manual for detailed information.
Starting a measurement with WULPUS can be accomplished in three simple steps:
- Power up the probe, either from the micro-USB connector or from the battery connector
- Connect the USB dongle to the host PC
- Activate the Python environment, launch the Jupyter notebook located in
swfolder, and follow the instructions in the notebook
If you would like to cite the project, please use the following repository citation:
@misc{wulpus_repo_sergio5714_2026,
title={WULPUS: Wearable Ultra Low-Power Ultrasound (Independent Fork)},
author={Vostrikov, Sergei},
year={2026},
howpublished={GitHub repository},
url={https://github.com/Sergio5714/wulpus}
}
If you prefer to cite the original scientific publication, please use:
@inproceedings{frey2022wulpus,
title={WULPUS: a Wearable Ultra Low-Power Ultrasound probe for multi-day monitoring of carotid artery and muscle activity},
author={Frey, Sebastian and Vostrikov, Sergei and Benini, Luca and Cossettini, Andrea},
booktitle={2022 IEEE International Ultrasonics Symposium (IUS)},
pages={1--4},
year={2022},
organization={IEEE}
}
Selected highlights:
[1] Vostrikov S, Anderegg M, Benini L, Cossettini A. "Unsupervised Feature Extraction from Raw Data for Gesture Recognition with Wearable Ultra Low-Power Ultrasound." IEEE Transactions on Ultrasonics, Ferroelectrics, and Frequency Control. 2024 May 24.
[2] Spacone G, Vostrikov S, Kartsch V, Benatti S, Benini L, Cossettini A. "Tracking of Wrist and Hand Kinematics with Ultra Low Power Wearable A-mode Ultrasound." IEEE Transactions on Biomedical Circuits and Systems. 2024 Sep 23.
[3] Lu, Jinhao, et al. "Compact Low-Cost Wireless Ultrasonic System for Non-Destructive Testing and Wearables." 2025 IEEE International Ultrasonics Symposium (IUS). IEEE, 2025.
Full list: see docs/works.md.
This fork is maintained independently by @Sergio5714 (Sergei Vostrikov).
The WULPUS system was originally developed at the Integrated Systems Laboratory (IIS) at ETH Zurich by:
- Sergei Vostrikov (Component Selection, Firmware, Software, Open-Sourcing, Documentation)
- Sebastian Frey (PCB design, Firmware, Documentation)
- Cédric Hirschi (GUI, Documentation)
- Luca Benini (Supervision, Conceptualization)
- Andrea Cossettini (Supervision, Project administration)
Thanks to all the people who contributed to the WULPUS platform:
- Josquin Tille (Silicone package design, Documentation)
- William Bruderer (Documentation)
The following files are released under Apache License 2.0 (Apache-2.0) (see sw/LICENSE):
sw/
The following files are released under Solderpad v0.51 (SHL-0.51) (see hw/LICENSE):
hw/
Images are licensed under Creative Commons, but not all under the same terms:
docs/images/isCC-BY-4.0by default (seedocs/images/LICENSE)docs/images/v1_2_2/isCC-BY-ND-4.0(no derivatives) Seedocs/images/README.mdfor details.
The fw/msp430/ and fw/nrf52/ directories contain third-party sources that come with their own
licenses. See the respective folders and source files for the licenses used.
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.



