1xBTS 1xBTS

SMS

SMS message flow diagram

Mobile-Originated (MO)

StepWhat Happens
1Mobile sends Data Burst Message on traffic channel (or access for short messages)
2BTS carries the access or traffic frame to BSC over Abis
3BSC encapsulates the data burst in an A1 ADDS message and forwards to MSC
4MSC parses the SMS payload and submits it to SMSC
5SMSC stores in PostgreSQL with delivery state tracking
6If destination mobile is registered, delivery starts immediately

Mobile-Terminated (MT)

StepWhat Happens
1Operator/API submission or MSC welcome-SMS policy queues a message in SMSC
2SMSC hands the pending delivery to MSC
3MSC sends an A1 ADDS message to BSC carrying the SMS payload
4BSC pages the mobile through BTS over Abis if idle, or sends a Data Burst over the existing traffic channel
5SMSC updates delivery status on acknowledgment

MT delivery acknowledgments are keyed by the path used for delivery: idle-page delivery tracks the F-PCH correlation ID, while traffic-channel delivery tracks the Layer 2 MSG_SEQ. This lets retries and late acknowledgments resolve consistently across paging and traffic paths.

SMSC Database

TableContents
MessagesSMS content, sender, recipient, timestamps
Delivery statePending, delivered, failed, expired
Mobiles seenESN/IMSI sightings and last-seen timestamps used for welcome SMS decisions

Schema created automatically on first start. Atomic state transitions via PostgreSQL transactions.

Welcome SMS

msc.json owns the configurable welcome SMS policy for mobiles that are new to the network or have been inactive longer than the configured threshold. Registration handling records each mobile in the HLR mobiles_seen ledger, resolves subscriber state, and injects the welcome message through the normal SMSC delivery path.

{
  "welcome_sms": {
    "enabled": true,
    "text": "Welcome to 1xBTS!",
    "originating_number": "0000",
    "inactive_days_threshold": 30
  }
}

Sending via API

# MSC management endpoint owns SMS submission:
grpcurl -plaintext -d '{
  "destination_mdn": "5551234567",
  "message": "Hello from 1xBTS!"
}' localhost:17017 msc_management.v1.MscManagementService/SendSms

bsc.v1.BscService/SendSms on :17016 remains as a compatibility entry point for existing tooling; it forwards to MSC under the hood.