srsUE — Емулятор UE¶
Використання srsUE для тестування без реального телефону.
Призначення¶
srsUE — програмний емулятор LTE абонентського пристрою:
┌───────────────────────────────────────────────┐
│ srsUE │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ NAS │ │ RRC │ │ PHY │ │
│ │(Attach, │ │(Radio │ │(Signal │──→ SDR│
│ │ Auth) │ │ Control)│ │Processing) │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ↑ │
│ TUN interface (tun_srsue) │
│ IP трафік через LTE мережу │
└───────────────────────────────────────────────┘
Сценарії використання¶
| Сценарій | Опис |
|---|---|
| Тестування eNB | Перевірка без реального телефону |
| End-to-end тест | Повна перевірка мережі |
| Автоматизація | CI/CD тести |
| Розробка | Debug без hardware |
| Демонстрація | Показ роботи мережі |
Конфігурація ue.conf¶
Базовий приклад¶
#####################################################################
# srsUE configuration file
#####################################################################
[rf]
device_name = soapy
device_args = driver=lime,rxant=LNAW,txant=BAND2
# Частота (EARFCN або Hz)
dl_earfcn = 3350 # Має співпадати з eNB!
freq_offset = 0
# Gain
tx_gain = 60
rx_gain = 40
[rat.eutra]
dl_earfcn = 3350
[pcap]
enable = false
filename = /tmp/ue.pcap
nas_enable = false
nas_filename = /tmp/ue_nas.pcap
[log]
all_level = info
phy_level = warning
mac_level = info
rlc_level = info
pdcp_level = info
rrc_level = info
nas_level = info
gw_level = info
usim_level = info
filename = /tmp/ue.log
[usim]
mode = soft # soft = програмна SIM
algo = milenage # xor або milenage
imsi = 001010000000001
k = 465B5CE8B199B49FAA5F0A2EE238A6BC
opc = E8ED289DEBA952E4283B54E88E6183CA
imei = 353490069873319
[gw]
# TUN інтерфейс
netns =
ip_devname = tun_srsue # Ім'я інтерфейсу
ip_netmask = 255.255.255.0
[gui]
enable = false
Параметри USIM¶
[usim]
# Режим
mode = soft # soft (програмна) або pcsc (реальна SIM)
# Алгоритм автентифікації
algo = milenage # milenage або xor
# Ідентифікатори (мають співпадати з EPC!)
imsi = 001010000000001
k = 465B5CE8B199B49FAA5F0A2EE238A6BC
opc = E8ED289DEBA952E4283B54E88E6183CA
# IMEI (унікальний для UE)
imei = 353490069873319
RF параметри¶
[rf]
# Для LimeSDR Mini
device_name = soapy
device_args = driver=lime,rxant=LNAW,txant=BAND2
# Частота та gain
dl_earfcn = 3350
tx_gain = 60
rx_gain = 40
# Корекція частоти (якщо потрібно)
freq_offset = 0
ZeroMQ режим (без SDR)¶
Навіщо¶
Тестування eNB ↔ UE без реального радіо:
┌─────────┐ ZeroMQ ┌─────────┐
│ srsENB │ ←────────────→ │ srsUE │
│ │ localhost │ │
└─────────┘ └─────────┘
Конфігурація eNB¶
# enb.conf
[rf]
device_name = zmq
device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6
Конфігурація UE¶
# ue.conf
[rf]
device_name = zmq
device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6
Запуск¶
# Термінал 1: EPC
sudo srsepc
# Термінал 2: eNB
sudo srsenb --rf.device_name=zmq --rf.device_args="fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6"
# Термінал 3: UE
sudo srsue --rf.device_name=zmq --rf.device_args="tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6"
Запуск srsUE¶
Базовий¶
sudo srsue ~/.config/srsran/ue.conf
Очікуваний вивід¶
Reading configuration file /home/user/.config/srsran/ue.conf...
Built in Release mode using commit 2de0bb6c1 on branch master.
Opening 1 channels in RF device=soapy with args=driver=lime
Waiting PHY to initialize ... done!
Attaching UE...
Random Access Transmission: seq=0, ra-rnti=0x2
Random Access Complete. c-rnti=0x46, ta=0
RRC Connected
Network attach successful. IP: 172.16.0.2
З GUI¶
sudo srsue --gui.enable
Тестові сценарії¶
Ping тест¶
# На машині з srsUE
ping -I tun_srsue 8.8.8.8
# Або через network namespace
sudo ip netns exec ue_ns ping 8.8.8.8
Throughput тест¶
# На сервері (через EPC)
iperf3 -s
# На UE
iperf3 -c <server_ip> -B 172.16.0.2
# Очікувано для 5 MHz:
# DL: ~15-20 Mbps
# UL: ~5-10 Mbps
HTTP тест¶
# Через TUN інтерфейс
curl --interface tun_srsue http://example.com
# Або через namespace
sudo ip netns exec ue_ns curl http://example.com
Кілька UE¶
Різні SDR¶
# UE1 на LimeSDR #1
sudo srsue --rf.device_args="driver=lime,serial=1234"
# UE2 на LimeSDR #2
sudo srsue --rf.device_args="driver=lime,serial=5678" --usim.imsi=001010000000002
ZeroMQ (кілька UE на одній машині)¶
# UE1
sudo srsue --rf.device_args="tx_port=tcp://*:2101,rx_port=tcp://localhost:2100" --usim.imsi=001010000000001 --gw.ip_devname=tun_srsue1
# UE2
sudo srsue --rf.device_args="tx_port=tcp://*:2201,rx_port=tcp://localhost:2200" --usim.imsi=001010000000002 --gw.ip_devname=tun_srsue2
Статус та метрики¶
Інтерактивні команди¶
Під час роботи srsUE:
Команди (ввести в консоль):
t - показати/сховати метрики
q - вихід
Метрики¶
---------Signal-----------|-----------------DL-----------------|-----------UL-----------
cc pci rsrp pl cfo | mcs snr iter brate bler | mcs buff brate bler
0 1 -65 65 1.2k | 15 24.1 1.0 5.2M 0% | 15 0.0k 1.2M 0%
| Метрика | Опис | Норма |
|---|---|---|
| rsrp | Reference Signal Received Power | > -80 dBm |
| snr | Signal-to-Noise Ratio | > 15 dB |
| mcs | Modulation Coding Scheme | Вище = краще |
| brate | Bitrate | Залежить від BW |
| bler | Block Error Rate | < 10% |
Troubleshooting¶
Не знаходить мережу¶
Причини:
1. EARFCN не співпадає з eNB
2. eNB не запущений
3. SDR неправильно налаштований
4. Антена не підключена
Перевірити:
- dl_earfcn в ue.conf = dl_earfcn в enb.conf
- Логи eNB (чи передає?)
- Spectrum analyzer
Authentication reject¶
Причини:
1. IMSI/Ki/OPc не співпадають
2. IMSI не додано в EPC
3. Неправильний algo (mil vs xor)
Перевірити:
- user_db.csv або Open5GS subscribers
- Логи HSS/MME
Низький throughput¶
Причини:
1. Поганий сигнал (RSRP < -90)
2. Високий BLER
3. Низький MCS
4. Перевантаження CPU
Рішення:
- Покращити антену
- Зменшити відстань
- Налаштувати gain
TUN інтерфейс не створюється¶
# Перевірити
ip link show tun_srsue
# Створити вручну
sudo ip tuntap add mode tun tun_srsue
sudo ip addr add 172.16.0.100/24 dev tun_srsue
sudo ip link set tun_srsue up
Автоматизація¶
Скрипт тестування¶
#!/bin/bash
# test_ue.sh
# Запустити UE
sudo srsue ~/.config/srsran/ue.conf &
UE_PID=$!
# Чекати на підключення
sleep 10
# Тест ping
ping -c 10 -I tun_srsue 8.8.8.8
# Тест throughput
iperf3 -c 192.168.1.1 -B 172.16.0.2 -t 30
# Завершити
kill $UE_PID
CI/CD інтеграція¶
# .github/workflows/test.yml
- name: Test LTE connection
run: |
sudo srsue --rf.device_name=zmq &
sleep 15
ping -c 5 -I tun_srsue 172.16.0.1
Шлях: ran/srs-ue.md