Open-LIFU Quick Start Guide¶
Install the Desktop Application, or run from source at whichever layer of the software stack you need.
Research use only
The Open-LIFU platform is not yet cleared by the FDA and is intended for research purposes only. Not for commercial sale. Read the full safety and handling warnings before you build or operate any hardware.
Welcome to Open-LIFU¶
Open-LIFU is Openwater's programmable low-intensity focused ultrasound platform: a console, a transducer, and a software stack that runs from a one-click Desktop Application down to a Python SDK that talks directly to the hardware. This page is the single place to start. Repositories, READMEs, and the device user manual all link here.
| 2 paths | Desktop Application, or run from source |
| 3 source layers | Slicer extension · Python library · hardware SDK |
| ~15 min | Clone to first pull request |
The stack at a glance¶
┌──────────────────────────────────────────────────────────────────┐
│ Desktop Application ◄── standalone installer (bundles Slicer) │
├──────────────────────────────────────────────────────────────────┤
│ SlicerOpenLIFU ◄── 3D Slicer extension (10 modules) │
├──────────────────────────────────────────────────────────────────┤
│ openlifu ◄── Python library: algorithms, planning │
├──────────────────────────────────────────────────────────────────┤
│ openlifu-sdk ◄── low-level hardware I/O │
│ openlifu-test-app ◄── QML engineering UI (binary + source) │
└──────────────────────────────────────────────────────────────────┘
Install the top of the stack (the Desktop Application) or run from source at the layer that matches what you are doing. You do not need to install multiple layers: pick one entry point. The full architecture is described in Software Development.
Choose your path¶
-
Path A · Desktop Application
Download the installer and run it. It bundles its own Slicer and all OpenLIFU modules. No framework setup and no Python.
- Best for research and study teams
- Guided research workflows
- No separate 3D Slicer install
- No Python environment
-
Path B · Run from source
Build and run from any layer of the stack. Three sub-paths, depending on whether you want a UI, a library, or raw hardware I/O.
- B1 · Slicer + extension: power-user GUI
- B2 ·
openlifu: scripting and pipelines - B3 ·
openlifu-sdk: firmware and hardware comms - Best for contributors and researchers
Path A · Desktop Application¶
Three steps. The Desktop Application bundles its own Slicer, so do not install 3D Slicer separately for this path.
1. Download the latest installer¶
Grab the system-specific installer (.exe on Windows, .tar.gz on Linux) from
the latest release.
Approve the security warning if prompted.
NVIDIA GPU required
A number of features need an NVIDIA GPU. Make sure your system has one before you start.
2. Run the installer¶
Start the installer and follow the prompts.
Windows path gotcha
The install path cannot contain spaces. The default folder includes a space after "OpenLIFU": remove it. Also make sure your Windows username has no spaces (install to a different location if it does).
3. First launch¶
Launch the application. The first run finishes installing dependencies before it opens to the home page. You are then in the guided research workflow: use PrePlanning to pick a target, then SonicationPlanner to simulate.
Success
The Desktop Application handles everything. You do not need Slicer, Python, or anything else for this path.
For the complete operating procedure, see the User Manual.
Path B · Run from source¶
Pick the layer that matches what you are building. Each sub-path is independent: you do not stack them.
B1 · 3D Slicer + SlicerOpenLIFU extension¶
Best for power-user researchers working in Slicer.
Use your own 3D Slicer install. SlicerOpenLIFU exposes all ten OpenLIFU modules (Home, Database, Login, Data, PrePlanning, TransducerLocalization, SonicationPlanner, SonicationControl, ProtocolConfig, Lib). Every parameter is reachable; there is no curated wrapper. See Slicer Open-LIFU for the module reference.
Install
- Install 3D Slicer (the version is listed in the SlicerOpenLIFU release notes).
- Open Slicer, go to Extensions Manager, search for OpenLIFU, and install it.
- Restart Slicer.
Or build from source
Follow the
standard Slicer extension build process
for the SlicerOpenLIFU repository.
First workflow
- Open OpenLIFUHome.
- In OpenLIFUDatabase, point at a local clone of
openlifu-sample-database. - Sign in as
example_admin. - Open PrePlanning, pick a target, then open SonicationPlanner and simulate.
B2 · openlifu-python (the openlifu library)¶
Best for scripting, pipelines, ML, and simulation.
The core Python library: algorithms, planning, simulation, protocols, and database structures. It has no GUI. Use it as a standalone library or as the engine that drives SlicerOpenLIFU.
Install the published package from PyPI:
Or set up for development (Python 3.10–3.12 on Windows or Linux):
git clone https://github.com/<your-username>/openlifu-python.git
cd openlifu-python
git remote add upstream https://github.com/OpenwaterHealth/openlifu-python.git
python -m venv env
# Linux:
source env/bin/activate
# Windows:
.\env\Scripts\activate
pip install -e . # basic
# or: pip install -e '.[dev]' # with dev tools
# Smoke test
python -c "import openlifu; print(openlifu.__version__)"
Then pull the sample database via Git LFS and browse examples/:
B3 · openlifu-sdk + Test App¶
Best for firmware, hardware communication, and embedded work.
The lowest layer: direct communication with the TX module and HV controller. Use it if you are working on firmware, debugging hardware, or building tooling that needs raw device I/O without the planning layer on top.
The Python SDK
Published to PyPI:
Or for development:
git clone https://github.com/OpenwaterHealth/openlifu-sdk.git
cd openlifu-sdk
pip install -e ".[dev]"
Sanity-check the hardware connection:
from openlifu_sdk import LIFUInterface
interface = LIFUInterface()
tx_connected, hv_connected = interface.is_device_connected()
print("TX:", tx_connected, " HV:", hv_connected)
The Test App (engineering UI)
For end-to-end hardware bring-up, verification, and diagnostics, use the OpenLIFU Test App: a QML-based engineering UI with dedicated pages for console and transmitter bring-up, sonication, automated verification scripts, firmware updates, and PDF reporting.
Easiest: grab the prebuilt Windows binary from the
openlifu-test-app releases page
and run TestApp.exe (or TestApp_console.exe to see console output).
From source (Python 3.10+; requires both openlifu-sdk and openlifu
installed):
git clone https://github.com/OpenwaterHealth/openlifu-test-app.git
cd openlifu-test-app
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -e . # or .[dev], .[test], .[dev,test]
openlifu-sdk repository openlifu-test-app repository
Advanced: developing across layers at once
SlicerOpenLIFU and openlifu can be developed together. In Slicer's Python
console, use slicer.util.pip_install and slicer.util.pip_uninstall to
side-load your local openlifu build, and add your local SlicerOpenLIFU
clone to Slicer's Application Settings → Modules so it loads from your
working tree. This is the recommended workflow for active extension
development: you run customized versions of both the UI and the engine at
the same time. You own compatibility when you do this; SlicerOpenLIFU
normally pins a tested openlifu version on purpose.
Make your first contribution¶
The fork, branch, commit, PR, CLA, merge loop is the same regardless of which layer you started at. See How to Contribute and Best Practices for the full process.
Pick one of these and ship it:
- Docs fix: a typo, broken link, or unclear sentence in a README.
- Unit test: add a missing test case for an existing function.
- Sandbox experiment: a new example notebook in
examples/.
git checkout -b fix/short-description
# make changes
git add .
git commit -m "Docs: fix typo in transducer README"
git push origin fix/short-description
# then open a PR on GitHub
CLA
Your first PR triggers an automated CLA signature. It takes under two minutes.
Where to land the PR
- UI or workflow bug:
SlicerOpenLIFUoropenlifu-desktop-application - Algorithm, planning, or simulation:
openlifu-python - Hardware comms or firmware support:
openlifu-sdk
The full repository list is in the repository map.
Optional: photogrammetry add-ons¶
Only needed if you are running transducer-tracking workflows with the Android scanner. These apply to all paths above.
Install Meshroom 2025.1.0¶
Required if you use openlifu.nav.photoscan (Python) or run transducer
tracking through the Desktop Application.
- Download Meshroom 2025.1.0 for your OS from the official release.
- Extract the archive to a directory of your choice.
- Windows: add the folder containing
Meshroom.exeto your user PATH (Start menu → "Edit environment variables for your account" → User variables → Path → Edit → New). - Linux: add the extracted folder to your PATH
(
export PATH="<path-to-meshroom>/Meshroom-2025.1.0-Linux:$PATH", or persist it by appending that line to~/.bashrc). - Optional GPU (Windows): NVIDIA Control Panel → 3D Settings → Manage 3D
settings → Program Settings → add
Meshroom.exe→ set "High-performance NVIDIA processor".
Desktop Application users
Launch the application from an environment that has Meshroom on its PATH.
Install Android Platform Tools (ADB)¶
Option 1: download Google's
platform-tools,
extract it, and add the folder containing adb.exe to your PATH. Verify with
adb --version.
Option 2 (PowerShell):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
scoop install android-platform-tools
Install the Android photogrammetry app¶
- On your Android phone, open OpenLIFU-3DScanner or install it from Google Play.
- For the GitHub route, open Releases, pick the latest version, and tap the
.apk. - Approve the install. Open the app and allow camera and storage permissions.
Enable Developer Mode and USB debugging¶
- Settings → About Phone → tap Build number 7 times.
- Settings → System → Developer options → enable USB debugging.
- Plug the phone into your PC and check "Always allow" when prompted.
Where to ask questions¶
- Discord — fastest response: discord.gg/fS7vfAX4fA
- GitHub Issues in the relevant repo (see the repository map)
- Email — support@openwater.cc
Ready to ship your first PR? Browse open issues, pick one, and we will review within 48 hours. Using Open-Motion instead? See the Open-Motion Quick Start Guide.
Open-LIFU is a research-use-only platform, not yet cleared by the FDA and not for commercial sale. See the Overview for the full statement.