srsENB — Конфігурація¶
Детальне налаштування srsENB (eNodeB).
Огляд enb.conf¶
Структура файлу¶
[enb] # Загальні параметри eNB
[enb_files] # Шляхи до додаткових конфігів
[rf] # RF/SDR параметри
[pcap] # Захоплення пакетів
[log] # Логування
[gui] # GUI (опціонально)
[scheduler] # Планувальник
[expert] # Експертні налаштування
Секція [enb]¶
Базові параметри¶
[enb]
# ID базової станції
enb_id = 0x19B
# MCC + MNC (має співпадати з SIM та EPC!)
mcc = 001
mnc = 01
# Ім'я для ідентифікації
mme_addr = 127.0.1.100 # IP адреса MME (Open5GS або srsEPC)
gtp_bind_addr = 127.0.1.1 # IP для GTP трафіку
s1c_bind_addr = 127.0.1.1 # IP для S1-MME
s1c_bind_port = 0 # Авто-вибір порту
# Кількість PRB (визначає bandwidth)
n_prb = 25 # 25 PRB = 5 MHz
Bandwidth та PRB¶
| PRB | Bandwidth | Застосування |
|---|---|---|
| 6 | 1.4 MHz | IoT, тести |
| 15 | 3 MHz | Мала ємність |
| 25 | 5 MHz | Стабільно для LimeSDR Mini |
| 50 | 10 MHz | Середня ємність |
| 75 | 15 MHz | Висока ємність |
| 100 | 20 MHz | Максимальна |
Секція [rf]¶
Налаштування для LimeSDR Mini¶
[rf]
# Драйвер SDR
device_name = soapy
device_args = driver=lime,rxant=LNAW,txant=BAND2
# Частота (EARFCN або прямо в Hz)
dl_earfcn = 3350 # Band 7: 2680 MHz DL
# або
# dl_freq = 2680e6
# ul_freq = 2560e6
# Підсилення
tx_gain = 60 # 0-70 для LimeSDR
rx_gain = 40 # 0-70 для LimeSDR
# Часова синхронізація
time_adv_nsamples = auto
Налаштування для LimeSDR USB¶
[rf]
device_name = soapy
device_args = driver=lime,rxant=LNAW,txant=BAND2
# Для MIMO (2x2)
# device_args = driver=lime,rxant=LNAW,txant=BAND2,channels=0,1
dl_earfcn = 3350
tx_gain = 60
rx_gain = 40
# Для 10 MHz bandwidth
# Потребує кращого охолодження
Налаштування для USRP¶
[rf]
device_name = uhd
device_args = type=b200,num_recv_frames=64,num_send_frames=64
dl_earfcn = 3350
tx_gain = 70 # 0-89 для B200
rx_gain = 50 # 0-76 для B200
ZeroMQ (без SDR)¶
[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
EARFCN та частоти¶
Популярні Band¶
| Band | DL (MHz) | UL (MHz) | EARFCN | Примітка |
|---|---|---|---|---|
| 3 | 1805-1880 | 1710-1785 | 1200-1949 | FDD |
| 7 | 2620-2690 | 2500-2570 | 2750-3449 | FDD, наш вибір |
| 20 | 791-821 | 832-862 | 6150-6449 | FDD |
| 38 | 2570-2620 | 2570-2620 | 37750-38249 | TDD |
Розрахунок частоти з EARFCN¶
Band 7:
DL = 2620 + 0.1 * (EARFCN - 2750)
EARFCN 3350:
DL = 2620 + 0.1 * (3350 - 2750) = 2680 MHz
UL = DL - 120 = 2560 MHz
Секція [enb_files]¶
[enb_files]
sib_config = sib.conf # System Information Blocks
rr_config = rr.conf # Radio Resource config
rb_config = rb.conf # Radio Bearer config
Важливі параметри в rr.conf¶
[rr]
# MAC конфігурація
mac_config = {
ul_max_harq_tx = 4;
dl_max_harq_tx = 4;
};
# PHY конфігурація
phy_config = {
pdsch_cnfg = {
p_b = 1;
rs_power = 0;
};
pusch_cnfg_ded = {
beta_offset_ack_idx = 6;
beta_offset_ri_idx = 6;
beta_offset_cqi_idx = 6;
};
};
Секція [pcap]¶
[pcap]
enable = false
filename = /tmp/enb.pcap
# MAC layer
mac_enable = false
mac_filename = /tmp/enb_mac.pcap
# NAS layer
nas_enable = false
nas_filename = /tmp/enb_nas.pcap
Секція [log]¶
[log]
# Рівні: none, error, warning, info, debug
all_level = info
# Окремі компоненти
phy_level = warning
mac_level = info
rlc_level = info
pdcp_level = info
rrc_level = info
gtpu_level = info
s1ap_level = info
stack_level = info
# Hex dump (для debug)
all_hex_limit = 32
# Файл логу
filename = /tmp/enb.log
file_max_size = -1 # Без обмеження
Секція [scheduler]¶
[scheduler]
# Максимум UE
max_nof_users = 16
# Політика планування
policy = time_rr # time_rr, time_pf
# Guard period для TDD
# nof_ctrl_symbols = 3
Секція [expert]¶
[expert]
# PRACH конфігурація
prach_freq_offset = 4
# UE-specific
# Збільшити якщо проблеми з синхронізацією
pregenerate_signals = false
# Для LimeSDR Mini важливо!
tx_amplitude = 0.6 # Зменшити якщо перевантаження
# Metrics
metrics_period_secs = 1
metrics_csv_enable = false
metrics_csv_filename = /tmp/enb_metrics.csv
Повний приклад для LimeSDR Mini¶
#####################################################################
# srsENB configuration for LimeSDR Mini
#####################################################################
[enb]
enb_id = 0x19B
mcc = 001
mnc = 01
mme_addr = 127.0.1.100
gtp_bind_addr = 127.0.1.1
s1c_bind_addr = 127.0.1.1
s1c_bind_port = 0
n_prb = 25
[enb_files]
sib_config = sib.conf
rr_config = rr.conf
rb_config = rb.conf
[rf]
device_name = soapy
device_args = driver=lime,rxant=LNAW,txant=BAND2
tx_gain = 60
rx_gain = 40
dl_earfcn = 3350
time_adv_nsamples = auto
[pcap]
enable = false
[log]
all_level = warning
phy_level = warning
mac_level = info
rlc_level = warning
pdcp_level = warning
rrc_level = info
gtpu_level = warning
s1ap_level = info
filename = /tmp/enb.log
[scheduler]
policy = time_rr
max_nof_users = 10
[expert]
tx_amplitude = 0.6
metrics_period_secs = 1
pregenerate_signals = false
Запуск¶
Базовий¶
sudo srsenb ~/.config/srsran/enb.conf
З підвищеним пріоритетом¶
sudo chrt -r 99 srsenb ~/.config/srsran/enb.conf
З GUI¶
sudo srsenb --gui.enable
Підключення до Open5GS¶
[enb]
# IP адреса де працює Open5GS MME
mme_addr = 192.168.1.10
# Локальні адреси eNB
gtp_bind_addr = 192.168.1.20
s1c_bind_addr = 192.168.1.20
# PLMN має співпадати з Open5GS!
mcc = 001
mnc = 01
Типові помилки¶
"Error binding S1-MME"¶
Перевірити:
1. MME запущений
2. mme_addr правильна
3. Firewall не блокує порт 36412
"Error opening RF device"¶
Перевірити:
1. SDR підключений (LimeUtil --find)
2. device_name та device_args правильні
3. Права доступу до USB
"Late packet"¶
Рішення:
1. Зменшити tx_gain
2. Зменшити n_prb (5 MHz = 25 PRB)
3. Зменшити tx_amplitude
4. Перевірити CPU навантаження
Шлях: ran/srs-enb.md