Skip to main content

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

DocumentDescription
Configuration ReferenceAll configuration parameters with tables and examples
Cell Broadcast OperationsCBSP (2G), SABP (3G), and SBC-AP (4G) operations, message formatting, troubleshooting
CAP Alert OperationsCAP v1.2 ingestion, polygon resolution, approval workflow, feed polling
Location ServicesE-SMLC positioning methods, LCS-AP interface, cell database, OTDOA
Subscriber Tracking & Drive TestPeriodic tracking, virtual drive test campaigns, RSRP/RSRQ measurements, KML/CSV export
GMLC & Le InterfaceExternal LCS client access, periodic and geo-fence location, InfluxDB logging
REST API ReferenceAll API endpoints with request/response examples
Web Interface GuideLiveView control panel pages and features

Interfaces Summary

InterfaceProtocolTransportPortDirection3GPP Reference
SLs (E-SMLC ↔ MME)LCS-APSCTP9082OmniLCS connects to MMEsTS 29.171
SLg/Le (GMLC ↔ LCS Clients/DRA)DiameterSCTP3868Inbound from LCS clients, outbound to DRATS 29.172
CBSPCBSPTCP48049BSCs connect to OmniLCSTS 48.049
SABP (Iu-BC)SABPTCP3452Outbound to RNCs / Inbound from RNCsTS 25.414 §7.1.3.3
SBC-APSBC-APSCTP29168OmniLCS connects to MMEsTS 29.168
REST APIHTTPSTCP8443Clients connect to OmniLCS--
Control PanelHTTPSTCP443Browsers connect to OmniLCS--
Cell SyncHTTPTCP8086OmniLCS queries InfluxDB--

Supervision Tree

OmniLCS starts the following processes under a one-for-one supervisor:

  1. OmniLcs.Persistence -- Mnesia initialization and disc-backed persistence for cell database and CAP alerts
  2. OmniLcs.Context -- ETS table initialization (cell_database, location_session, pending_transactions); loads persisted cells from Mnesia on startup
  3. OmniLcs.InfluxDb -- InfluxDB connection pool
  4. OmniLcs.Esmlc.LocationLogger -- Location fix logging to CSV and ETS
  5. Task.Supervisor -- Async task execution
  6. OmniLcs.Sls.SctpTransport -- SLs LCS-AP SCTP client connections to MMEs
  7. DiameterEx.Supervisor -- Diameter service and peer management (SLg and other Diameter interfaces)
  8. OmniLcs.Esmlc.CellSync -- Periodic InfluxDB cell synchronization
  9. OmniLcs.Cbc.CbspConnectionSupervisor -- DynamicSupervisor for 2G CBSP TCP connections
  10. OmniLcs.Cbc.CbspTransport -- CBSP TCP listener (port 48049)
  11. OmniLcs.Cbc.SabpConnectionSupervisor -- DynamicSupervisor for 3G SABP TCP connections
  12. OmniLcs.Cbc.SabpTransport -- SABP TCP listener (port 3452)
  13. OmniLcs.Cbc.Engine -- CBC broadcast state management (2G, 3G, and 4G)
  14. OmniLcs.Cbc.SctpTransport -- SBC-AP SCTP client connections to MMEs
  15. OmniLcs.Cap.AlertManager -- CAP alert lifecycle management (parse, resolve, approve, broadcast); persisted to Mnesia
  16. OmniLcs.Cap.FeedPoller -- Periodic CAP Atom feed polling
  17. OmniLcs.Gmlc.ClientRegistry -- Authorized external LCS client management
  18. OmniLcs.Gmlc.SessionSupervisor -- DynamicSupervisor for periodic and triggered location sessions
  19. OmniLcs.Tracking.SessionSupervisor -- DynamicSupervisor for subscriber tracking watch sessions
  20. OmniLcs.DriveTest.CampaignSupervisor -- DynamicSupervisor for virtual drive test campaigns