Skip to content

Real-time tactical monitoring dashboard for OpenAirInterface 5G Sidelink Mode 2 D2D communications

Notifications You must be signed in to change notification settings

shariquetelco/Sidelink-5G-OAI-dashboard

Repository files navigation

IABG 5G Sidelink Tactical Dashboard

IABG Logo

Real-time monitoring dashboard for OpenAirInterface 5G Sidelink Mode 2 tactical communications

Dashboard Screenshot


🎯 Mission Overview

A military-grade tactical dashboard designed for monitoring OpenAirInterface (OAI) 5G Sidelink Mode 2 device-to-device (D2D) communications in defense and critical infrastructure scenarios where autonomous communications are mission-critical.

🎬 Video Demo

Watch the full demonstration: Sidelink_5G - Dashboard_IABG.mp4


πŸ›‘οΈ Tactical Use Case: Operation Desert Shield

Scenario: Border Patrol Mission

Mission Date: December 28, 2025
Location: Remote desert region, 50km from nearest cell tower
Units Deployed: Infantry Squad Alpha & Bravo
Communication Requirement: Secure, autonomous D2D link

Unit Deployment

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    TACTICAL THEATER                         β”‚
β”‚                                                             β”‚
β”‚   [Cell Tower]                                              β”‚
β”‚        β”‚                                                    β”‚
β”‚        β”‚ 50 km (No Coverage)                               β”‚
β”‚        β–Ό                                                    β”‚
β”‚   ╔═══════════════════════════════════════════════════╗   β”‚
β”‚   β•‘        AUTONOMOUS OPERATION ZONE                  β•‘   β”‚
β”‚   β•‘                                                   β•‘   β”‚
β”‚   β•‘   πŸ”΄ UNIT ALPHA           πŸ”΅ UNIT BRAVO          β•‘   β”‚
β”‚   β•‘   (SyncRef UE)            (Nearby UE)            β•‘   β”‚
β”‚   β•‘   Position: Checkpoint    Position: Patrol       β•‘   β”‚
β”‚   β•‘   Role: Command           Role: Field Recon      β•‘   β”‚
β”‚   β•‘                                                   β•‘   β”‚
β”‚   β•‘              ◄──── 2.6 GHz Sidelink ────►       β•‘   β”‚
β”‚   β•‘                   Direct PC5 Link                β•‘   β”‚
β”‚   β•‘                   Range: 500m                    β•‘   β”‚
β”‚   β•‘                                                   β•‘   β”‚
β”‚   β•‘   Status: βœ… OPERATIONAL                         β•‘   β”‚
β”‚   β•‘   Link Quality: 100% EXCELLENT                   β•‘   β”‚
β”‚   β•‘   Packets TX: 563,468 | RX: 563,373             β•‘   β”‚
β”‚   β•‘   Success Rate: 100%                             β•‘   β”‚
β”‚   β•‘                                                   β•‘   β”‚
β”‚   β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•   β”‚
β”‚                                                             β”‚
β”‚   ⚠️  No gNB Available                                     β”‚
β”‚   ⚠️  No Core Network                                      β”‚
β”‚   βœ…  Mission-Critical Comms: ACTIVE                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Mission Timeline

T+00:00 - Deployment

  • Unit Alpha establishes position at checkpoint
  • Unit Bravo begins patrol route
  • Both units power on 5G sidelink devices

T+00:30 - Link Establishment

  • Unit Alpha (SyncRef) broadcasts PSBCH on 2.6 GHz
  • Unit Bravo detects S-PSS/S-SSS signals
  • Synchronization acquired: RSRP -45 dBm (Excellent)
  • Tactical link established: βœ… OPERATIONAL

T+00:31 - Mission Communications Begin

[UNIT ALPHA β†’ UNIT BRAVO]
"Bravo, this is Alpha. Radio check, over."

[Dashboard Metrics]
PSBCH TX: 1,561 packets
PSSCH TX: 8,630 packets
Link Quality: 100%
Status: βœ… TACTICAL LINK ESTABLISHED

[UNIT BRAVO β†’ UNIT ALPHA]
"Alpha, this is Bravo. Lima Charlie. Moving to grid reference 347892."

[Dashboard Metrics]
PSBCH RX: 581 packets (Synced: βœ… YES)
PSSCH RX: 5,614 packets
Decode Success: 100%

T+01:00 - Continuous Operations

  • Real-time position updates via sidelink
  • Situational awareness maintained
  • No dependency on infrastructure
  • Autonomous Mode: ACTIVE

T+02:30 - Mission Complete

  • Total packets exchanged: 1,126,841
  • Packet Error Rate: 0.00%
  • Mission Success: βœ… COMPLETE

πŸŽ–οΈ Key Advantages Demonstrated

βœ… Infrastructure Independence

  • No Cell Tower Required: Operates 50km beyond coverage
  • No Core Network: Pure P2P communication
  • Autonomous Mode: Self-sufficient tactical network

βœ… Reliability

  • 100% Link Availability: Continuous operation throughout mission
  • Zero Packet Loss: 0.00% error rate
  • Excellent Signal Quality: RSRP -45 dBm

βœ… Security

  • Direct D2D: No intermediary infrastructure to compromise
  • Low Probability of Intercept: Directional transmission
  • Tactical Frequencies: Military-grade spectrum (2.6 GHz configurable)

βœ… Real-time Monitoring

  • Live Dashboard: Command center visibility
  • 2-second Updates: Near real-time situational awareness
  • Comprehensive Metrics: PHY layer to application layer visibility

Research-Grade Charts

The dashboard includes IEEE-publication-ready visualizations:

  • Real-time throughput analysis
  • Signal quality trends
  • Channel frequency response
  • Protocol message flow diagrams

Perfect for:

  • πŸ“„ Academic papers (IEEE, ESA)
  • πŸŽ“ Research demonstrations
  • πŸ›‘οΈ Defense customer presentations
  • πŸ“Š Performance analysis reports

πŸš€ Features

Dashboard Capabilities

  • βœ… Dual UE Monitoring - Simultaneous SyncRef + Nearby UE tracking
  • βœ… Real-time Metrics - 2-second refresh interval
  • βœ… PHY Layer Statistics - PSBCH, PSCCH, PSSCH, PSFCH monitoring
  • βœ… Link Quality Indicators - RSRP, SINR, CQI, success rates
  • βœ… Live Terminal Output - Direct log feed from both UEs
  • βœ… Network Topology View - Visual link status representation
  • βœ… Performance Graphs - Dynamic quality percentage bars
  • βœ… Events Log - Timestamped system activities
  • βœ… Tactical UI Design - Military-grade dark theme with IABG branding
  • βœ… Defense Use Cases - Scenario-specific applications

Research-Grade Features (NEW)

  • βœ… Real-Time Throughput Graphs - Bidirectional TX/RX monitoring for both UEs
  • βœ… Signal Quality Trends - RSRP, SINR, CQI historical analysis
  • βœ… Spectrum Visualization - Channel frequency response (FFT-style)
  • βœ… Protocol Message Flow - Live sequence diagrams (Mermaid.js)
  • βœ… Data Export - CSV export for academic publications
  • βœ… Historical Data Storage - 4-minute rolling buffer (120 samples)
  • βœ… Multi-Metric Charts - Chart.js powered visualizations

Technical Specifications

Sidelink Configuration:

  • Mode: 5G NR Sidelink Mode 2 (Autonomous)
  • Carrier Frequency: 2.6 GHz (configurable)
  • Bandwidth: 106 Resource Blocks
  • MCS: Up to 9 (dynamically adaptive)
  • TX Power: 23 dBm
  • Simulator: RFSIM (RF Simulator for software testing)

Supported Channels:

  • PSBCH (Physical Sidelink Broadcast Channel)
  • PSCCH (Physical Sidelink Control Channel)
  • PSSCH (Physical Sidelink Shared Channel)
  • PSFCH (Physical Sidelink Feedback Channel)

πŸ“‹ Prerequisites

System Requirements

  • OS: Ubuntu 24.04 LTS / WSL2
  • RAM: 8GB minimum (16GB recommended)
  • Disk: 20GB free space
  • CPU: Multi-core processor (4+ cores recommended)

Software Dependencies

  • Python: 3.8+
  • Docker: Latest version
  • Docker Compose: Latest version
  • OAI 5G Sidelink: sl-release-1.0 branch

OAI Sidelink Installation

You must have OAI 5G Sidelink built and configured. Installation guide:

# Clone OAI repository
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git oai-5g-sidelink
cd oai-5g-sidelink

# Checkout sidelink branch
git checkout sl-release-1.0

# Build OAI with RFSIM support
cd cmake_targets
./build_oai --nrUE -w SIMU --ninja -c

Reference: OAI Sidelink Documentation


πŸ”§ Installation

Method 1: Automated Installation (Recommended)

# 1. Clone repository
git clone https://github.com/shariquetelco/oai-sidelink-dashboard.git
cd oai-sidelink-dashboard

# 2. Run automated installer
chmod +x install.sh
./install.sh

The installer will:

  • βœ… Check system requirements (OS, RAM, disk space)
  • βœ… Verify dependencies (Python, Docker, Docker Compose)
  • βœ… Install Python packages
  • βœ… Build Docker image
  • βœ… Create necessary directories
  • βœ… Display usage instructions

Method 2: Docker Installation (Production)

Prerequisites

# Install Docker
sudo apt-get update
sudo apt-get install -y docker.io docker-compose

# Add user to docker group
sudo usermod -aG docker $USER

# Logout and login for group changes to take effect

Build and Run

# 1. Clone repository
git clone https://github.com/shariquetelco/oai-sidelink-dashboard.git
cd oai-sidelink-dashboard

# 2. Build Docker image
docker-compose build

# 3. Start dashboard
docker-compose up -d

# 4. Check status
docker-compose ps
docker-compose logs -f

Docker Management Commands

# Start dashboard
docker-compose up -d

# Stop dashboard
docker-compose down

# View logs
docker-compose logs -f dashboard

# Restart dashboard
docker-compose restart

# Rebuild image
docker-compose build --no-cache

# Check health
curl http://localhost:5000/api/health

Method 3: Manual Installation (Development)

# 1. Clone repository
git clone https://github.com/shariquetelco/oai-sidelink-dashboard.git
cd oai-sidelink-dashboard

# 2. Install Python dependencies
pip3 install -r requirements.txt --break-system-packages

# Or use virtual environment (recommended for development)
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

# 3. Run dashboard
python3 app.py

Environment Variables

Configure log file locations:

# Default locations (used if not specified)
export SYNCREF_LOG=~/syncref_sl.log
export NEARBY_LOG=~/nearby_ue_sl.log

# Custom locations
export SYNCREF_LOG=/custom/path/syncref.log
export NEARBY_LOG=/custom/path/nearby.log

For Docker, edit docker-compose.yml:

environment:
  - SYNCREF_LOG=/logs/custom_syncref.log
  - NEARBY_LOG=/logs/custom_nearby.log
volumes:
  - /custom/path/syncref.log:/logs/custom_syncref.log:ro
  - /custom/path/nearby.log:/logs/custom_nearby.log:ro

Verify Installation

# Check if dashboard is running
curl http://localhost:5000/api/health

# Expected response:
# {"service":"OAI Sidelink Dashboard","status":"ok"}

# Check Docker container
docker ps | grep sidelink

# View dashboard logs
docker-compose logs dashboard

πŸ’» Usage

Step 1: Start OAI Sidelink UEs

Terminal 1 - Unit Alpha (SyncRef UE):

cd /path/to/oai-5g-sidelink/cmake_targets/ran_build/build

sudo LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH -E \
  ./nr-uesoftmodem \
  -O ../../../targets/PROJECTS/NR-SIDELINK/CONF/sl_sync_ref.conf \
  --sa \
  --sl-mode 2 \
  --sync-ref \
  --rfsim \
  --rfsimulator.serveraddr server \
  --rfsimulator.serverport 4048 \
  --log_config.global_log_options level,nocolor,time \
  2>&1 | tee ~/syncref_sl.log

Terminal 2 - Unit Bravo (Nearby UE):

cd /path/to/oai-5g-sidelink/cmake_targets/ran_build/build

sudo LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH -E \
  RFSIMULATOR=127.0.0.1 \
  ./nr-uesoftmodem \
  -O ../../../targets/PROJECTS/NR-SIDELINK/CONF/sl_ue1.conf \
  --sa \
  --sl-mode 2 \
  --rfsim \
  --rfsimulator.serverport 4048 \
  --log_config.global_log_options level,nocolor,time \
  2>&1 | tee ~/nearby_ue_sl.log

Step 2: Start Dashboard

Option A - Docker:

docker-compose up -d

Option B - Direct Python:

python3 app.py

Step 3: Access Dashboard

Open browser: http://localhost:5000


πŸ“Š Dashboard Sections

1. Network Topology

  • Visual representation of Unit Alpha ↔ Unit Bravo link
  • Real-time connection status
  • Infrastructure status indicators (gNB/Core offline)

2. Link Performance Metrics

  • Overall link quality percentage bar
  • PSSCH decode success statistics
  • PSBCH synchronization metrics
  • Packet Error Rate (PER)
  • Estimated throughput

3. Unit Cards (Alpha & Bravo)

Radio Parameters:

  • Carrier frequency
  • Bandwidth (Resource Blocks)
  • Modulation & Coding Scheme (MCS)
  • TX Power / RX Gain

PHY Layer Statistics:

  • Frame/Slot numbers
  • Channel-specific TX/RX counts:
    • PSBCH (Broadcast)
    • PSCCH (Control)
    • PSSCH (Data)
    • PSFCH (Feedback)
  • Success rates
  • Synchronization status

Link Quality:

  • RSRP (Reference Signal Received Power)
  • SINR (Signal-to-Interference-plus-Noise Ratio)
  • CQI (Channel Quality Indicator)
  • Decode error counts

Live Terminal:

  • Real-time log output
  • Last 5 lines from UE logs
  • Color-coded for readability

4. Mission Events Log

  • Timestamped system events
  • Link establishment notifications
  • Quality alerts
  • Operational status changes

5. Tactical Use Cases

  • Infantry squad communications
  • Vehicle-to-vehicle coordination
  • Disaster relief operations
  • Border patrol mesh networks
  • Critical infrastructure monitoring
  • Military convoy coordination

πŸ—οΈ Architecture

See ARCHITECTURE.md for detailed system architecture diagrams.

High-level Overview:

Dashboard (Flask) β†’ Log Parser β†’ REST API β†’ Web UI (Tactical Theme)
                        ↑
                        β”‚
               Log Files (real-time)
                        ↑
                        β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚                       β”‚
      Unit Alpha              Unit Bravo
      (SyncRef)               (Nearby)
            └───── RFSIM β”€β”€β”€β”€β”€β”€β”˜
                  (Socket)

πŸ”Œ API Endpoints

Endpoint Method Description
/ GET Main dashboard page
/api/syncref GET Unit Alpha metrics (JSON)
/api/nearby GET Unit Bravo metrics (JSON)
/api/link_status GET Overall link status (JSON)
/api/events GET Events log (JSON)
/api/health GET Health check

Example API Response

{
  "ue_type": "syncref",
  "status": "running",
  "frame": 128,
  "slot": 19,
  "psbch": {"tx": 58969, "rx_ok": 0, "rx_not_ok": 0},
  "pssch": {"tx": 563468, "rx_ok": 563373, "rx_not_ok": 0},
  "quality": {
    "quality": "EXCELLENT",
    "quality_level": 100,
    "rsrp": -45,
    "sinr": 25,
    "cqi": 15
  }
}

🎯 Defense & Critical Infrastructure Use Cases

Military Operations

  • βœ“ Infantry Squad Communications - No cell tower dependency
  • βœ“ Vehicle-to-Vehicle Tactical Data - Convoy coordination
  • βœ“ Special Operations - Covert communications
  • βœ“ Border Patrol - Mesh networks in remote areas
  • βœ“ Military Convoys - Real-time positioning

Emergency Response

  • βœ“ Disaster Relief - Operations when infrastructure is down
  • βœ“ Search & Rescue - Team coordination in remote areas
  • βœ“ First Responders - Fire/Police/Medical coordination
  • βœ“ Natural Disasters - Hurricane, earthquake response

Critical Infrastructure

  • βœ“ Oil Rigs & Platforms - Remote facility monitoring
  • βœ“ Ports & Harbors - Equipment coordination
  • βœ“ Mining Operations - Underground communications
  • βœ“ Power Plants - Emergency backup communications
  • βœ“ Maritime Operations - Ship-to-shore links

πŸ“ Project Structure

oai-sidelink-dashboard/
β”œβ”€β”€ app.py                          # Flask backend
β”œβ”€β”€ Dockerfile                      # Container build
β”œβ”€β”€ docker-compose.yml              # Orchestration
β”œβ”€β”€ install.sh                      # Installation script
β”œβ”€β”€ requirements.txt                # Python dependencies
β”œβ”€β”€ .gitignore                      # Git exclusions
β”œβ”€β”€ .dockerignore                   # Docker exclusions
β”œβ”€β”€ README.md                       # This file
β”œβ”€β”€ parsers/
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── sidelink_parser.py          # Log parser module
β”œβ”€β”€ static/
β”‚   β”œβ”€β”€ css/
β”‚   β”‚   └── tactical.css            # Military-grade styling
β”‚   β”œβ”€β”€ js/
β”‚   β”‚   └── dashboard.js            # Real-time updates
β”‚   └── images/
β”‚       └── IABG_Logo.png           # Company logo
β”œβ”€β”€ templates/
β”‚   └── tactical_dashboard.html     # Main UI
└── docs/
    β”œβ”€β”€ ARCHITECTURE.md              # System architecture
    β”œβ”€β”€ Sidelink_5G - Dashboard_IABG.mp4  # Video demo
    └── screenshots/
        └── dashboard_main.png       # Screenshot

πŸ› Troubleshooting

Dashboard shows "OFFLINE" status

Problem: UE logs not found or UEs not running

Solution:

# Verify log files exist
ls -lh ~/syncref_sl.log ~/nearby_ue_sl.log

# Check if UEs are running
ps aux | grep nr-uesoftmodem

# Verify log file paths match
echo $SYNCREF_LOG
echo $NEARBY_LOG

No data updating

Problem: UEs not writing to logs

Solution:

# Check if logs are growing
tail -f ~/syncref_sl.log

# Restart UEs with proper logging
# (See Usage section for commands)

Port 5000 already in use

Problem: Another service using Flask's default port

Solution:

# Option 1: Change port in docker-compose.yml
ports:
  - "5001:5000"

# Option 2: Kill existing process
sudo lsof -ti:5000 | xargs kill -9

Link shows "DOWN" status

Problem: UEs not synchronized

Solution:

  • Start SyncRef UE first, wait for "Waiting for connection"
  • Then start Nearby UE
  • Verify RFSIM connection on port 4048
  • Check PSBCH RX count on Nearby UE (should increment)

πŸ”„ Updates & Maintenance

Check Dashboard Logs

# Docker logs
docker-compose logs -f dashboard

# Direct Python logs
tail -f app.log

Update Dashboard

# Pull latest changes
git pull origin main

# Rebuild Docker image
docker-compose build

# Restart
docker-compose restart

πŸ“§ Contact

Ahmad Sharique


πŸ“„ License

Copyright Β© 2025 IABG mbH Munich. All rights reserved.

For IABG internal use and authorized defense/critical infrastructure demonstrations.


πŸ™ Acknowledgments

  • OpenAirInterface (OAI) - 5G Sidelink implementation
  • EpiSci - Sidelink Mode 2 PHY/MAC development
  • IABG 5G Division - Testing, validation, and tactical use case development
  • EURECOM - OAI platform development

πŸ”— Related Projects & Resources


Built with ❀️ for tactical defense communications
Prepared by Ahmad Sharique, IABG CTSF 20