Sionna installation is straightforward once the basic environment is ready. The library is built on TensorFlow, so the first step is preparing a Python setup that matches the supported TensorFlow version. This usually means using Python 3.8 to 3.12 and running the installation on Linux or WSL, since these environments provide the most stable support for TensorFlow. GPU acceleration requires an NVIDIA GPU, a proper CUDA toolkit, and matching cuDNN libraries, but CPU-only installation works with just pip. Most installation issues come from missing AVX support, unsupported Python versions, or running inside VirtualBox where GPU access is blocked. With a compatible environment, installing Sionna is as simple as installing TensorFlow and running pip install. Therefore, the key to smooth installation is preparing the correct system environment before running the commands.
Official Instruction
For the official instruction from the publisher, check out this page : Sionna | Installation
My Setup
As with many open-source tools, installing Sionna does not always work smoothly by simply following the official instructions. There are several factors that can affect the setup. Python versions must match TensorFlow’s supported versions. TensorFlow itself requires AVX support on the CPU, so older hardware or some virtual machines will fail immediately. GPU installation adds more complexity because CUDA, cuDNN, TensorFlow, and the NVIDIA driver must align exactly. Some environments, like VirtualBox, cannot expose a real GPU to the guest OS, so Sionna GPU mode becomes impossible regardless of configuration. Different Linux distributions may package dependencies differently, which can cause unexpected build errors. Even pip installations can behave differently depending on whether you use system Python, virtual environments, or conda. Therefore, preparing Sionna requires checking all these environmental factors first. Once the system environment is aligned with the requirements, installation usually becomes straightforward.
So I thought it would be helpful to introduce my personal setup process to give me some idea on the installation process. It may or may not work if you just blindly copy and paste the process described here depending on PC hardware, Operating System etc. But it can be a good start to try and you may ask AI (e.g, chatGPT, Gemini etc) when you have problems.
NOTE : If you are using a PC with Windows only, this will be especially helpful.
NOTE : I tried to run sionna on Ubuntu in my virtual box, but it didn't work due to the factors mentioned in this note. So I set it up on wsl/Ubuntu on my Windows.
What I have ?
I am using a laptop with Windows 11. So the command line commands shown here are windows shell commands
Following is the system information of the PC and Operating system that I am currently using on which Sonnia is installed.
|
PS C:\> systeminfo
Host Name: **** OS Name: Microsoft Windows 11 Home OS Version: 10.0.26100 N/A Build 26100 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Workstation OS Build Type: Multiprocessor Free Registered Owner: ***** Registered Organization: HP Product ID: ****** Original Install Date: 2025-10-15, 6:09:48 PM System Boot Time: 2025-11-20, 8:42:42 AM System Manufacturer: HP System Model: HP OmniBook 5 Laptop 16-af1xxx System Type: x64-based PC Processor(s): 1 Processor(s) Installed. [01]: Intel64 Family 6 Model 181 Stepping 0 GenuineIntel ~2000 Mhz BIOS Version: Insyde F.04, 2025-07-30 Windows Directory: C:\windows System Directory: C:\windows\system32 Boot Device: \Device\HarddiskVolume1 System Locale: en-us;English (United States) Input Locale: en-us;English (United States) Time Zone: (UTC-05:00) Eastern Time (US & Canada) Total Physical Memory: 32,218 MB Available Physical Memory: 10,214 MB Virtual Memory: Max Size: 64,986 MB Virtual Memory: Available: 30,509 MB Virtual Memory: In Use: 34,477 MB Page File Location(s): C:\pagefile.sys Domain: WORKGROUP Logon Server: \\**** Hotfix(s): ***** Network Card(s): 3 NIC(s) Installed. [01]: Intel(R) Wi-Fi 6E AX211 160MHz Connection Name: Wi-Fi DHCP Enabled: Yes DHCP Server: 10.0.0.1 IP address(es) **** [02]: Bluetooth Device (Personal Area Network) Connection Name: Bluetooth Network Connection Status: Media disconnected [03]: VirtualBox Host-Only Ethernet Adapter Connection Name: Ethernet 2 DHCP Enabled: No IP address(es) **** Required Security Properties: Base Virtualization Support Available Security Properties: Base Virtualization Support Secure Boot DMA Protection UEFI Code Readonly SMM Security Mitigations 1.0 Mode Based Execution Control APIC Virtualization Services Configured: Hypervisor enforced Code Integrity Secure Launch SMM Firmware Measurement Services Running: Hypervisor enforced Code Integrity Secure Launch SMM Firmware Measurement App Control for Business policy: Enforced App Control for Business user mode policy: Off Security Features Enabled: SMM Isolation Level: 30 Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed. |
Enable WSL with Ubuntu
Following is a short instroduction on enable WSL on the windows system and run it with Ubuntu. There are many different variations with commands. You may try with the copy and paste this command and ask AI if it cause any problem.
|
wsl --install -d Ubuntu |
Upgrade Ubuntu Package
It may not be required, but always good practice to start with the latest package (You should run this within your wsl)
|
sudo apt update sudo apt upgrade -y |
Check out the Ubuntu version
This is the ubuntu release that is insalled on my wsl
|
jaeku@jaeku:/mnt/c/Users/jaeku$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.3 LTS Release: 24.04 Codename: noble |
Setup Python environment
Now let's setup a python environment (You should run these command within the wsl. Command prompt is not shown here)
Create a working directory that you want. This is my working directory
|
cd ~ mkdir -p ~/nvidia cd ~/nvidia |
Install Python Tools
Install python packages
|
sudo apt update sudo apt install -y python3-venv python3-pip |
- python3-venv → lets you create isolated Python environments
- python3-pip → Python package manager
Create a virtual environment for Sionna
Create a virtual environment for Sionna.
|
python3 -m venv venv-sionna |
This creates a folder: ~/nvidia/venv-sionna
This is not required, but we create a virtual environment for Sionna to keep its Python dependencies isolated from the rest of the system so that installation and upgrades do not cause conflicts. TensorFlow, which Sionna relies on, is particularly sensitive to specific versions of Python, NumPy, and other libraries, and installing it directly into the system Python can easily break other tools or projects. By using a virtual environment, we ensure that Sionna and TensorFlow receive exactly the versions they require while leaving the system Python untouched. This also allows multiple independent environments to coexist—for example, separate setups for Sionna, PyTorch, Whisper, or other ML frameworks—without interfering with each other. A virtual environment also makes it easy to recreate, reset, or delete the entire setup if needed, providing a clean, reproducible workspace that remains stable even when the underlying WSL or Ubuntu system updates.
Activate the virtual environment
Then acticate the virtual environment that you just created.
|
source venv-sionna/bin/activate |
Then you will get the prompt something like this : (venv-sionna) jaeku@jaeku:~/nvidia$
Upgrade pip inside the venv
Upgrade the pip inwide the venv. Keep in mind that you should run this command within the venv as shown below
|
(venv-sionna) jaeku@jaeku:~/nvidia$ pip install --upgrade pip |
Install Sionna (and TensorFlow)
Install and Sionna with TensorFlow within the venv. Keep in mind that you should run this command within the venv as shown below
|
(venv-sionna) jaeku@jaeku:~/nvidia$ pip install sionna |
- This will automatically install a compatible TensorFlow 2.x for your Python version.
- On a machine without NVIDIA GPU / CUDA, TensorFlow will run in CPU mode (which is fine for small experiments).
Verify the installation status
You can check out the status of installation with a simple python command : python3 -c "import sionna, tensorflow as tf; print('Sionna:', sionna.__version__, 'TF:', tf.__version__); print(tf.config.list_physical_devices())"
To verify installation, run the one-line import test; if Sionna and TensorFlow versions print and at least /physical_device:CPU:0 appears, the setup is OK. CUDA-related warnings can be ignored if no GPU is configured.
|
(venv-sionna) jaeku@jaeku:~/nvidia$ python3 -c "import sionna, tensorflow as tf; print('Sionna:', sionna.__version__, 'TF:', tf.__version__); print(tf.config.list_physical_devices())"
2025-12-07 16:33:37.825133: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used. 2025-12-07 16:33:37.841192: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-12-07 16:33:38.416914: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. 2025-12-07 16:33:40.508782: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-12-07 16:33:40.511709: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used. Sionna: 1.2.1 TF: 2.20.0 2025-12-07 16:33:41.684353: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303) [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')] |
Key parts:
- Sionna: 1.2.1 TF: 2.20.0 → both libraries import fine inside the venv.
- [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')] → TensorFlow sees your CPU and will run on it.
- The CUDA messages: "Could not find cuda drivers on your machine, GPU will not be used.failed call to cuInit: ... UNKNOWN ERROR (303)" just mean: “no usable NVIDIA GPU / CUDA in this WSL, so I'll fall back to CPU.” That’s expected and harmless since I haven’t set up GPU/CUDA in WSL.
Check Out the Operation
Now check out operation in a little bit large scale. A kind of sionna hello world
|
import numpy as np import tensorflow as tf
from sionna.phy.mapping import Mapper, Demapper, BinarySource from sionna.phy.channel import AWGN from sionna.phy.utils import ebnodb2no
# Simple parameters num_bits_per_symbol = 2 # QPSK num_bits = 1000
# Blocks source = BinarySource() mapper = Mapper("qam", num_bits_per_symbol) demapper = Demapper("app", "qam", num_bits_per_symbol) channel = AWGN()
# Generate random bits b = source([num_bits]) # shape [num_bits] x = mapper(b) # QAM symbols ebno_db = 10.0 no = ebnodb2no(ebno_db, num_bits_per_symbol, 1.0)
# Send over AWGN y = channel(x, no)
# Soft demap llr = demapper(y, no)
print("b shape:", b.shape) print("x shape:", x.shape) print("y shape:", y.shape) print("llr shape:", llr.shape) |
Following is the result of this script
|
(venv-sionna) jaeku@jaeku:~/nvidia$ python3 hello_sionna.py 2025-12-07 16:44:18.611228: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used. 2025-12-07 16:44:18.627213: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-12-07 16:44:19.217875: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. 2025-12-07 16:44:21.233638: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. 2025-12-07 16:44:21.236828: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used. 2025-12-07 16:44:23.081131: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303) b shape: (1000,) x shape: (500,) y shape: (500,) llr shape: (1000,) |
Key Points Execution Result
- Sionna / TensorFlow Status
- Sionna and TensorFlow ran successfully without errors.
- The script completed and printed tensor shapes, so the Sionna PHY chain is working correctly.
- Execution Mode (CPU vs GPU)
- Messages such as “Could not find cuda drivers on your machine, GPU will not be used” indicate that no CUDA driver or NVIDIA GPU is available in WSL.
- TensorFlow therefore runs in CPU-only mode, which is expected for this setup.
- The cuInit error (UNKNOWN ERROR 303) is just a consequence of CUDA not being configured and can be ignored for CPU-only use.
- CPU Optimizations
- TensorFlow reports that oneDNN custom operations are enabled, meaning it uses optimized CPU kernels.
- The message about AVX2 / AVX_VNNI / FMA indicates that TensorFlow is compiled to take advantage of available CPU instructions where possible.
- Verification via Tensor Shapes
b shape: (1000,)→ 1000 input bits generated by the binary source.x shape: (500,)→ 500 QPSK symbols after mapping (2 bits per symbol).y shape: (500,)→ 500 noisy symbols after the AWGN channel.llr shape: (1000,)→ 1000 soft-output LLRs from the demapper, one per original bit.- These shapes confirm that the Mapper → Channel → Demapper chain in Sionna is behaving as expected.
- Overall Conclusion
- The environment
(venv-sionna)is correctly configured for Sionna. - The test script validates that Sionna can be used for PHY-level experiments on CPU in WSL.
- The environment