Channel

Channel is a GPU ray tracer for wireless propagation that returns paths, channel responses and radio maps, with gradients through the scene.

Channel (witwin-channel, Python package witwin.channel) simulates how a radio signal travels from transmitters to receivers in a 3D scene. It traces line-of-sight, specular reflection, edge diffraction, transmission through walls and rough-surface scattering on an NVIDIA GPU, and returns complex path coefficients, delays, angles, channel impulse and frequency responses, and coverage maps. The supported solvers are differentiable, so you can compute gradients of any result with respect to material parameters, carrier frequency, endpoint positions and mesh vertices with PyTorch autograd.

Use Channel when you need to:

  • predict coverage (path gain) over an area for network planning;
  • extract per-path channel parameters for link-level or system-level simulation;
  • fit a digital twin of a real environment to measurements, or optimize antenna placement and materials by gradient descent.

This documentation covers witwin-channel 0.5.0. It requires CPython 3.11, PyTorch 2.10 with CUDA 12.8 and an NVIDIA GPU. See Installation.

Example#

Compute the free-space path gain of a 10 m link at 3.5 GHz:

import torch
 
from witwin.core import AntennaState, Scene
from witwin.channel.deterministic import Config, solve
 
scene = Scene(
    structures=[],
    endpoints=[
        AntennaState(1, "tx", torch.tensor([0.0, 0.0, 1.5]), power_w=1.0),
        AntennaState(2, "rx", torch.tensor([10.0, 0.0, 1.5])),
    ],
)
result = solve(scene, Config(max_depth=0, components={"los"}), reference_frequency_hz=3.5e9)
print(result.path_gain)  # tensor([[4.6461e-07]], device='cuda:0')

The value equals the Friis free-space gain (wavelength / (4 * pi * distance))**2 for isotropic antennas.

How Channel fits in WiTwin#

The scene (structures, materials, antennas) is described with witwin.core, the shared WiTwin world model. Channel compiles that scene into GPU-resident ray-tracing resources built on RayD, the WiTwin GPU ray geometry library, and runs one of four solvers on it. In WiTwin Studio, the Channel Plugin builds the same witwin.core scene from the editor and shows radio maps in the viewport.

Where to go next#

Citation#

If you use Channel in academic research, cite:

@inproceedings{chen2026rfdt,
  title     = {Physically Accurate Differentiable Inverse Rendering
               for Radio Frequency Digital Twin},
  author    = {Chen, Xingyu and Zhang, Xinyu and Zheng, Kai and
               Fang, Xinmin and Li, Tzu-Mao and Lu, Chris Xiaoxuan
               and Li, Zhengxiong},
  booktitle = {Proceedings of the 32nd Annual International Conference
               on Mobile Computing and Networking (MobiCom)},
  year      = {2026},
  doi       = {10.1145/3795866.3796686},
  publisher = {ACM},
  address   = {Austin, TX, USA},
}

Channel is available under a dual license for academic and non-commercial research use, or for commercial and enterprise use. See the LICENSE file in the repository.