OmniLCS Operations Guide
OmniLCS is an integrated LTE/GSM Location and Cell Broadcast platform. It combines an E-SMLC (Evolved Serving Mobile Location Centre) for UE positioning with a CBC (Cell Broadcast Centre) for public warning and commercial broadcast services, all within a single Elixir/OTP application.
Architecture Overview
Feature Overview
E-SMLC -- Location Services
- Positioning Methods: Cell ID, Enhanced Cell ID (E-CID), GNSS/A-GPS, OTDOA
- LCS-AP over SCTP (SLs Interface): Communicates with the MME using native LCS-AP per 3GPP TS 29.171, port 9082, PPID 29
- LPPA/LPP Relay: Sends positioning protocol messages to eNBs and UEs through the MME via LCS-AP Connection Oriented Information
- Cell Database: Stores cell positions for Cell ID and OTDOA positioning. Supports import from Huawei U2020 XLSX (GSM/UMTS/LTE/NR), vendor-specific CSV, JSON, and InfluxDB sync. Persisted to Mnesia for survival across restarts
- OTDOA Multilateration: Computes UE position from RSTD measurements using iterative least-squares
- Location Logging: Persists every location fix to CSV and in-memory history. Optional InfluxDB logging when configured
- Subscriber Tracking: Periodic location polling per IMSI with configurable interval and method. Results stored in Mnesia with KML/CSV export
- Virtual Drive Test: Multi-IMSI campaigns combining GNSS positioning with E-CID signal measurements (RSRP/RSRQ). Campaign-level management with real-time monitoring, InfluxDB logging, and KML/CSV export with signal quality data
GMLC -- Gateway Mobile Location Centre
- Le Interface: Diameter interface for external LCS clients (PSAPs, fleet management, lawful intercept) per 3GPP TS 29.172
- Client Authorization: Per-client access control with type matching and configurable rate limits
- Periodic Location: Deferred sessions performing position fixes at configurable intervals with InfluxDB logging and Diameter LRR delivery
- Triggered Location (Geo-fence): Area event subscriptions with entering/leaving/being-inside triggers against circular or polygon areas
- Location Report Delivery: Sends Diameter Location-Report-Request (LRR) messages to originating clients for each deferred fix
CBC -- Cell Broadcast
- 2G CBSP: TCP server on port 48049 accepting connections from BSCs
- 3G SABP: TCP on port 3452 (Iu-BC interface, 3GPP TS 25.419, transport per TS 25.414 §7.1.3.3). CBC connects outbound to configured RNC peers; also listens for inbound RNC connections (Failure/Restart Indications)
- 4G SBC-AP: SCTP client connecting to MME peers on port 29168
- Multi-Language Broadcasts: Send the same alert in multiple languages simultaneously, each with its own CBS Data Coding Scheme and Message Code per 3GPP TS 23.038
- Broadcast Updates: Update an active broadcast by incrementing the Update Number. Automatically sends Stop-Warning for the old serial before the new Write-Replace
- Message Formatting: GSM 7-bit and UCS-2 encoding, CBS page assembly, serial number construction
- Warning Types: ETWS support (earthquake, tsunami, test) with emergency alert and popup activation
- Broadcast State Management: Active broadcast tracking with persistence across restarts, response timeout monitoring
- Mnesia Persistence: Cell database and CAP alert state persisted to Mnesia disc_copies tables, surviving application restarts without re-import
- PWS Procedures: Handles PWS-Restart-Indication and PWS-Failure-Indication from MMEs
- CAP Alert Ingestion: Accepts Common Alerting Protocol (CAP) v1.2 XML from external alerting authorities via HTTP POST or Atom feed polling, resolves polygon warning areas to TACs/LACs, and triggers cell broadcasts with optional operator approval
Control Interfaces
- REST API: HTTPS on port 8443 with endpoints for location requests, cell management, and system status
- LiveView Control Panel: HTTPS on port 443 with real-time dashboard, location testing, cell database management, Diameter peer monitoring, and CBC broadcast composition
Documentation Structure
| Document | Description |
|---|---|
| Configuration Reference | All configuration parameters with tables and examples |
| Cell Broadcast Operations | CBSP (2G), SABP (3G), and SBC-AP (4G) operations, message formatting, troubleshooting |
| CAP Alert Operations | CAP v1.2 ingestion, polygon resolution, approval workflow, feed polling |
| Location Services | E-SMLC positioning methods, LCS-AP interface, cell database, OTDOA |
| Subscriber Tracking & Drive Test | Periodic tracking, virtual drive test campaigns, RSRP/RSRQ measurements, KML/CSV export |
| GMLC & Le Interface | External LCS client access, periodic and geo-fence location, InfluxDB logging |
| REST API Reference | All API endpoints with request/response examples |
| Web Interface Guide | LiveView control panel pages and features |
Interfaces Summary
| Interface | Protocol | Transport | Port | Direction | 3GPP Reference |
|---|---|---|---|---|---|
| SLs (E-SMLC ↔ MME) | LCS-AP | SCTP | 9082 | OmniLCS connects to MMEs | TS 29.171 |
| SLg/Le (GMLC ↔ LCS Clients/DRA) | Diameter | SCTP | 3868 | Inbound from LCS clients, outbound to DRA | TS 29.172 |
| CBSP | CBSP | TCP | 48049 | BSCs connect to OmniLCS | TS 48.049 |
| SABP (Iu-BC) | SABP | TCP | 3452 | Outbound to RNCs / Inbound from RNCs | TS 25.414 §7.1.3.3 |
| SBC-AP | SBC-AP | SCTP | 29168 | OmniLCS connects to MMEs | TS 29.168 |
| REST API | HTTPS | TCP | 8443 | Clients connect to OmniLCS | -- |
| Control Panel | HTTPS | TCP | 443 | Browsers connect to OmniLCS | -- |
| Cell Sync | HTTP | TCP | 8086 | OmniLCS queries InfluxDB | -- |
Supervision Tree
OmniLCS starts the following processes under a one-for-one supervisor:
- OmniLcs.Persistence -- Mnesia initialization and disc-backed persistence for cell database and CAP alerts
- OmniLcs.Context -- ETS table initialization (cell_database, location_session, pending_transactions); loads persisted cells from Mnesia on startup
- OmniLcs.InfluxDb -- InfluxDB connection pool
- OmniLcs.Esmlc.LocationLogger -- Location fix logging to CSV and ETS
- Task.Supervisor -- Async task execution
- OmniLcs.Sls.SctpTransport -- SLs LCS-AP SCTP client connections to MMEs
- DiameterEx.Supervisor -- Diameter service and peer management (SLg and other Diameter interfaces)
- OmniLcs.Esmlc.CellSync -- Periodic InfluxDB cell synchronization
- OmniLcs.Cbc.CbspConnectionSupervisor -- DynamicSupervisor for 2G CBSP TCP connections
- OmniLcs.Cbc.CbspTransport -- CBSP TCP listener (port 48049)
- OmniLcs.Cbc.SabpConnectionSupervisor -- DynamicSupervisor for 3G SABP TCP connections
- OmniLcs.Cbc.SabpTransport -- SABP TCP listener (port 3452)
- OmniLcs.Cbc.Engine -- CBC broadcast state management (2G, 3G, and 4G)
- OmniLcs.Cbc.SctpTransport -- SBC-AP SCTP client connections to MMEs
- OmniLcs.Cap.AlertManager -- CAP alert lifecycle management (parse, resolve, approve, broadcast); persisted to Mnesia
- OmniLcs.Cap.FeedPoller -- Periodic CAP Atom feed polling
- OmniLcs.Gmlc.ClientRegistry -- Authorized external LCS client management
- OmniLcs.Gmlc.SessionSupervisor -- DynamicSupervisor for periodic and triggered location sessions
- OmniLcs.Tracking.SessionSupervisor -- DynamicSupervisor for subscriber tracking watch sessions
- OmniLcs.DriveTest.CampaignSupervisor -- DynamicSupervisor for virtual drive test campaigns