# Sionna 2.1: NVIDIA's Differentiable Simulator for Wireless Research

> Sionna splits into three packages, Sionna RT, Sionna PHY and Sionna SYS, so a 6G researcher can pick a ray tracer, a link-level simulator or both. The pip install is one line; the hardware requirements are not.

**NVlabs/sionna** — Sionna: An Open-Source Library for Research on Communication Systems

- Repository: https://github.com/NVlabs/sionna
- Website: https://nvlabs.github.io/sionna/
- Stars: 1,621 · Forks: 415
- Language: Jupyter Notebook
- License: NOASSERTION
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/nvlabs-sionna

## What Sionna Actually Simulates

Sionna is a Python library for research on communication systems, published by NVIDIA Labs. It is not one simulator but three, each with its own documentation site under nvlabs.github.io/sionna: Sionna RT, described as a stand-alone ray tracer for radio propagation modeling; Sionna PHY, a link-level simulator for wireless and optical communication systems; and Sionna SYS, a system-level simulator built on physical-layer abstraction. The split matters because the packages have different dependencies and different audiences. Someone modeling a mmWave deployment cares about RT. Someone building a neural receiver cares about PHY. Someone studying scheduling across many cells cares about SYS. The pyproject.toml keywords list reads like a research agenda: differentiable ray tracing, gradient-based optimization, automatic differentiation, channel model, 5G, 6G. The intended user is a researcher or graduate student who wants to differentiate through a propagation or link model, not an engineer sizing a live network.

## Differentiable Ray Tracing and the Three-Package Split

The mechanism that ties the packages together is differentiability on top of PyTorch. Because the simulators are written against PyTorch tensors, gradients can flow through them, which is what the project's own description calls a hardware-accelerated differentiable library. Sionna RT is the clearest case: it is a radio propagation ray tracer, and the repository keeps its source in a separate GitHub repository, NVlabs/sionna-rt, pulled in here as a submodule under ext/. The main repo's pyproject.toml deliberately excludes sionna.rt from the packages it builds, so RT arrives as its own dependency rather than as code inside this tree. That is an architectural decision with a visible cost: cloning without --recursive leaves you with a repository that cannot build RT, and the README documents the fix, git submodule update --init --recursive --remote. Sionna PHY and Sionna SYS live in src/ and share the PyTorch dependency. The three-package layout means version skew is possible: the top-level project depends on sionna-rt, and the release notes show v2.1.0 landing on 2026-09-09, with v2.0.1 before it on 2026-04-01 and v2.0.0 on 2026-03-19. The last push to the repository was on 2026-09-09, the same day as the v2.1.0 release.

## Installing Sionna and Running a First Simulation

The README calls pip the recommended way to install Sionna. Sionna PHY and Sionna SYS require Python 3.11+ and PyTorch 2.9+, and Ubuntu 24.04 is recommended; the PyTorch get-started guide is where the project points for CUDA support and driver setup. The default install pulls in RT as well.

```bash
pip install sionna
```

If you only want the ray tracer, the README gives a narrower package. This is the right choice when you are working on propagation and do not need the link-level stack.

```bash
pip install sionna-rt
```

There is also an inverse option for people who want PHY and SYS but not RT. The README documents it as a separate distribution name.

```bash
pip install sionna-no-rt
```

Sionna RT inherits the requirements of Mitsuba 3, and the README defers to Mitsuba's installation guide. Running RT on CPU requires LLVM because Dr.Jit needs it; the README links to Dr.Jit's backend instructions rather than restating them. If you want to run the tutorial notebooks locally you also need JupyterLab, and the README notes they can be tested on Google Colab instead. Docker or a Python virtual environment is recommended but not required. From a source checkout, the README's sequence installs the RT submodule first and then the main package.

```bash
git clone --recursive https://github.com/NVlabs/sionna
cd sionna
pip install ext/sionna-rt/ .
pip install .
```

To run the test suite, install the test extra and invoke pytest from the test folder. That is the fastest way to confirm your platform is actually supported before you invest in a model.

```bash
pip install '.[test]'
cd test
pytest
```

## Where Sionna Is the Wrong Tool

The requirements are the first limitation and the most concrete one. Python 3.11+ and PyTorch 2.9+ are floors, not suggestions, and the README says earlier PyTorch versions may still work but are not recommended. If your lab is pinned to an older framework for other work, Sionna does not meet you halfway. The second limitation is platform. Sionna RT's requirements are Mitsuba 3's requirements, and CPU ray tracing needs LLVM installed through Dr.Jit's backend path. That is a chain of three projects, and when RT fails to import, the failure can originate in any of them. The README does not document a troubleshooting path for that, and it does not document rollback between the sionna, sionna-rt and sionna-no-rt distributions. The third limitation is scope. This is a research library, not a network planning product. There is no documented workflow for importing operator measurement data, no calibration procedure, and no compliance or certification story. If your question is whether a deployment will meet a coverage obligation, Sionna answers a different question: what a differentiable model of the channel predicts. Finally, the package split is itself a failure mode. Installing sionna and sionna-no-rt in the same environment, or letting sionna-rt drift from the version the main package expects, produces an environment the README never describes.

## Sionna PHY Versus a General-Purpose Deep Learning Stack

The natural alternative for the deep learning half of this work is plain PyTorch with hand-written channel models. The difference is what you inherit. With a general framework you write the fading model, the modulator, the resource grid and the receiver yourself, and you own every convention in them; nothing is standardized and nothing is reusable by another group. Sionna PHY supplies the link-level pieces as library components on top of PyTorch, so a neural receiver experiment starts from an existing simulator rather than from an empty file. The cost of that convenience is the dependency floor: you take PyTorch 2.9+ and Python 3.11+ whether or not the rest of your project wants them. For the propagation half, the alternative is a classical ray tracer or an empirical channel model. Those are typically not differentiable, which is the whole point of Sionna RT: gradient-based optimization over a propagation scene is not something a conventional ray tracer offers. If you never need a gradient, you are paying the Mitsuba, Dr.Jit and LLVM installation cost for a capability you will not use.

## Licence, Citation and the Cost of Upgrades

Sionna is Apache-2.0 licensed, as stated in the README and in the LICENSE file at the repository root, and pyproject.toml carries the same identifier. The repository's SPDX headers attribute copyright to NVIDIA Corporation and affiliates. Note that the repository metadata carries a NOASSERTION licence classification while the README, pyproject.toml and LICENSE all say Apache-2.0; if the exact terms matter to your organization, read LICENSE directly rather than trusting the classifier. Apache-2.0 is permissive and includes an explicit patent grant, but this is not legal advice, and the submodule arrangement means Sionna RT's licence terms should be checked in the sionna-rt repository, not assumed from this one. The README asks that you cite the software using a supplied BibTeX entry with version 2.1.0, which is a practical obligation for academic users. On upgrade cost: the release history shows v2.0.0 in March 2026, v2.0.1 in April 2026 and v2.1.0 in September 2026. The jump from the 2.0 line to 2.1 within six months, combined with the RT submodule, means an upgrade is not a single pip command in a source checkout. The Makefile in the repository is for SPDX header maintenance, not for building or releasing the package.

## Building the Documentation Locally

Documentation is part of the workflow here because the tutorials are notebooks. The README documents a doc extra and a Makefile target in the doc folder. Pandoc may need to be installed manually.

```bash
pip install '.[doc]'
cd doc
make html
```

To serve the built documentation locally, the README gives make serve, which serves at http://localhost:8000/sionna/ with the same URL structure as the production site, and a PORT variable to change the port. For local development without the /sionna/ prefix, the README says to set BASE_PATH to an empty value for both targets. Those two commands are the ones to try first if a tutorial notebook imports something that does not match the published docs.

## Conclusion

Adopt Sionna if you are doing wireless research that needs gradients through a channel model or a differentiable ray tracer, and if you have a CUDA GPU or are willing to install LLVM for CPU ray tracing. Do not adopt it if you need a production link budget tool or a deployable 5G stack; this is a research library with PyTorch 2.9+ as a hard floor. Before committing, verify three things in your own environment: that pip install sionna pulls a working sionna-rt on your platform, that the tutorial notebooks run under your CUDA driver, and that the Apache-2.0 terms in LICENSE match how you intend to redistribute anything you build on top.

## FAQ

### What is NVIDIA Sionna?

It is an open-source Python library from NVIDIA Labs for research on communication systems, composed of three packages: Sionna RT for radio propagation ray tracing, Sionna PHY for link-level simulation, and Sionna SYS for system-level simulation.

### How do I install Sionna?

The README recommends pip install sionna. Sionna PHY and Sionna SYS require Python 3.11+ and PyTorch 2.9+, with Ubuntu 24.04 recommended. You can also install only the ray tracer with pip install sionna-rt, or everything except RT with pip install sionna-no-rt.

### How do I install Sionna RT?

Either install the whole library with pip install sionna, which includes RT, or install it alone with pip install sionna-rt. Sionna RT has the same requirements as Mitsuba 3, and running it on CPU requires LLVM because Dr.Jit needs it.

### What is Sionna RT?

Sionna RT is the ray tracer for radio propagation modeling, described in the README as a stand-alone component. Its source lives in a separate GitHub repository, NVlabs/sionna-rt, which this repository pulls in as a submodule under ext/.

### How do I use Sionna?

The README points to the official documentation at nvlabs.github.io/sionna and to the tutorials directory in the repository. The tutorial notebooks need JupyterLab to run locally, or can be tested on Google Colab. Installing the test extra and running pytest from the test folder is the documented way to check that your environment works.

### What does Sionna mean?

The repository does not define the name. It only states that Sionna is an open-source Python library for research on communication systems, published by NVIDIA Labs, with the trademark symbol attached to the name in the README heading.

## Sources

- [Issues](https://github.com/NVlabs/sionna/issues)
- [NVlabs/sionna on GitHub](https://github.com/NVlabs/sionna)
- [Project website](https://nvlabs.github.io/sionna/)
- [README](https://github.com/NVlabs/sionna/blob/main/README.md)
- [Releases](https://github.com/NVlabs/sionna/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nvlabs-sionna
