Real-time monitoring dashboard for OpenAirInterface 5G Sidelink Mode 2 tactical communications
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.
Watch the full demonstration: Sidelink_5G - Dashboard_IABG.mp4
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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
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
- No Cell Tower Required: Operates 50km beyond coverage
- No Core Network: Pure P2P communication
- Autonomous Mode: Self-sufficient tactical network
- 100% Link Availability: Continuous operation throughout mission
- Zero Packet Loss: 0.00% error rate
- Excellent Signal Quality: RSRP -45 dBm
- Direct D2D: No intermediary infrastructure to compromise
- Low Probability of Intercept: Directional transmission
- Tactical Frequencies: Military-grade spectrum (2.6 GHz configurable)
- Live Dashboard: Command center visibility
- 2-second Updates: Near real-time situational awareness
- Comprehensive Metrics: PHY layer to application layer visibility
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
- β 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
- β 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
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)
- OS: Ubuntu 24.04 LTS / WSL2
- RAM: 8GB minimum (16GB recommended)
- Disk: 20GB free space
- CPU: Multi-core processor (4+ cores recommended)
- Python: 3.8+
- Docker: Latest version
- Docker Compose: Latest version
- OAI 5G Sidelink:
sl-release-1.0branch
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 -cReference: OAI Sidelink Documentation
# 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.shThe 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
# 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# 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# 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# 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.pyConfigure 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.logFor 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# 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 dashboardTerminal 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.logTerminal 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.logOption A - Docker:
docker-compose up -dOption B - Direct Python:
python3 app.pyOpen browser: http://localhost:5000
- Visual representation of Unit Alpha β Unit Bravo link
- Real-time connection status
- Infrastructure status indicators (gNB/Core offline)
- Overall link quality percentage bar
- PSSCH decode success statistics
- PSBCH synchronization metrics
- Packet Error Rate (PER)
- Estimated throughput
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
- Timestamped system events
- Link establishment notifications
- Quality alerts
- Operational status changes
- Infantry squad communications
- Vehicle-to-vehicle coordination
- Disaster relief operations
- Border patrol mesh networks
- Critical infrastructure monitoring
- Military convoy coordination
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)
| 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 |
{
"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
}
}- β 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
- β 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
- β 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
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
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_LOGProblem: 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)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 -9Problem: 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)
# Docker logs
docker-compose logs -f dashboard
# Direct Python logs
tail -f app.log# Pull latest changes
git pull origin main
# Rebuild Docker image
docker-compose build
# Restart
docker-compose restartAhmad Sharique
- Position: Strategy Lead - 5G Division
- Company: IABG mbH Munich
- Email: ahmad@iabg.de
- Personal: eshariq.am@gmail.com
- GitHub: @shariquetelco
- GitLab IABG: Ahmad
Copyright Β© 2025 IABG mbH Munich. All rights reserved.
For IABG internal use and authorized defense/critical infrastructure demonstrations.
- 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
- OAI 5G Sidelink Repository
- OAI Sidelink Documentation
- srsRAN 5G Dashboard (Related IABG project)
- BDBOS KOMET Project
Built with β€οΈ for tactical defense communications
Prepared by Ahmad Sharique, IABG CTSF 20

