My 5G-NTN Toolkit

Alex17 Advanced 1h ago 301 views 8 likes 2 min read

The biggest gap in 5G non-terrestrial network development has always been tooling. You want to test how your RAN behaves when a satellite comes into view, drops behind a mountain, or introduces 600ms latency — and you need a stack that actually models that. After eleven weeks of stitching together components piece by piece, I have something that does.

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
My 5G-NTN Toolkit

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.

All Replies (3)

P
PatFounder Advanced 1h ago
How does the toolkit handle the timing advance adjustment during those 600ms satellite gaps?
0 Reply
A
AveryPilot Novice 1h ago
One thing you missed: testing UE power budget during satellite handover is where most setups break.
0 Reply
S
Sam64 Advanced 1h ago
Hit the same drift in my own tests; simulators never warned me.
0 Reply

Write a Reply

Markdown supported