My 5G-NTN Toolkit
The problem this solves
Most 5G simulators assume terrestrial topology. You get clean line-of-sight, predictable propagation, and manageable handover events. Real NTN deployments involve LEO satellites with fast orbital dynamics, intermittent connectivity, and link budgets that swing wildly depending on elevation angle. If your entire toolchain can't inject those conditions, you're testing against a fantasy deployment.
I needed a way to:
- Simulate satellite orbit dynamics and generate realistic link availability windows
- Inject NTN-specific channel impairments (rain fade, Doppler shift, power control loops)
- Drive a 5G NR gNB simulation with those dynamics as input
- Do all of this from one command without manually configuring ten different services
How I built it
The toolkit pulls together three layers. At the bottom sits an orbital propagator that computes satellite positions and visibility polygons given a ground-station footprint. That feeds into a channel model implementing 3GPP TR 38.821 NTN parameters — the clipping, the Doppler scaling, the delay profile. The top layer wraps everything as a gRPC service that a standard 5G simulation framework can call as an external NTN source.
The key design decision was making the entire pipeline startable with a single docker compose up command. Each component (propagator, channel emulator, API gateway) runs in its own container, but the compose file handles networking, volume mounts for orbit ephemeris data, and environment variables for frequency band selection. A make setup script clones the required submodules, pulls the latest TLE data, and spins everything up.
Getting started
Clone the repo and make sure Docker and Python 3.11 are available. The README.md walks through a five-minute quickstart: pick a TLE file, set your ground-station coordinates, and run the CLI tool to generate a 24-hour visibility forecast. From there, you can fire up the channel emulator and point your 5G simulator at the gRPC endpoint.
I've included configuration examples for both n25 (3.5 GHz FR1) and n257 (28 GHz FR2) NTN scenarios, since those are the bands most people are prototyping with right now.
Is it worth using
If you're doing serious NTN research or deployment planning, yes — it saves weeks of duct-taping together separate propagation tools and channel models. The one thing it's not is a replacement for over-the-air testing. It gives you a credible indoor development loop so you can iterate on your algorithms before you ever need to book antenna time.
The repo is open-source and I'm actively merging PRs, particularly for additional satellite constellations and more detailed rain-attenuation models based on ITU-R P.618. If you've been struggling to get NTN simulation into your 5G workflow, this is worth a look.
