Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Joanne Hugé
slapos
Commits
a3da4718
Commit
a3da4718
authored
Oct 19, 2022
by
Joanne Hugé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ors-amarisoft: add RRH option to support Sunwave M2RU
parent
4141b811
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
161 additions
and
40 deletions
+161
-40
software/ors-amarisoft/buildout.hash.cfg
software/ors-amarisoft/buildout.hash.cfg
+7
-7
software/ors-amarisoft/config/gnb.jinja2.cfg
software/ors-amarisoft/config/gnb.jinja2.cfg
+39
-8
software/ors-amarisoft/instance-enb.jinja2.cfg
software/ors-amarisoft/instance-enb.jinja2.cfg
+1
-0
software/ors-amarisoft/instance-gnb-input-schema.json.jinja2
software/ors-amarisoft/instance-gnb-input-schema.json.jinja2
+10
-0
software/ors-amarisoft/instance-gnb.jinja2.cfg
software/ors-amarisoft/instance-gnb.jinja2.cfg
+1
-0
software/ors-amarisoft/instance-tdd1900-gnb-epc-input-schema.json
.../ors-amarisoft/instance-tdd1900-gnb-epc-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd1900-gnb-input-schema.json
...ware/ors-amarisoft/instance-tdd1900-gnb-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd2600-gnb-epc-input-schema.json
.../ors-amarisoft/instance-tdd2600-gnb-epc-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd2600-gnb-input-schema.json
...ware/ors-amarisoft/instance-tdd2600-gnb-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd3500-gnb-epc-input-schema.json
.../ors-amarisoft/instance-tdd3500-gnb-epc-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd3500-gnb-input-schema.json
...ware/ors-amarisoft/instance-tdd3500-gnb-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd3700-gnb-epc-input-schema.json
.../ors-amarisoft/instance-tdd3700-gnb-epc-input-schema.json
+10
-0
software/ors-amarisoft/instance-tdd3700-gnb-input-schema.json
...ware/ors-amarisoft/instance-tdd3700-gnb-input-schema.json
+10
-0
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
+3
-9
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
+3
-9
software/ors-amarisoft/instance.cfg
software/ors-amarisoft/instance.cfg
+5
-0
software/ors-amarisoft/promise/check_sdr_busy.py
software/ors-amarisoft/promise/check_sdr_busy.py
+12
-7
No files found.
software/ors-amarisoft/buildout.hash.cfg
View file @
a3da4718
...
...
@@ -16,7 +16,7 @@
[template]
filename = instance.cfg
md5sum =
fe055b993754ca665b8249cbfb9bbc8b
md5sum =
6e5c63c35b13f8920ea13e24c27d7b50
[template-lte-enb-epc]
_update_hash_filename_ = instance-enb-epc.jinja2.cfg
...
...
@@ -24,7 +24,7 @@ md5sum = c9994f2ef03edd7d6773307a6385c47c
[template-lte-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg
md5sum =
8f8c7295104757e0cccfab3811a4fb24
md5sum =
04dbc8396cb112e86d5d1564df033b82
[template-lte-gnb-epc]
_update_hash_filename_ = instance-gnb-epc.jinja2.cfg
...
...
@@ -36,7 +36,7 @@ md5sum = b17674f523adce9b0dda942c1493674d
[template-lte-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg
md5sum =
fdc012ad6f0d3d055450a4ff7efd15e4
md5sum =
01f4de736594a0810a66f847753fadf1
[template-lte-mme]
_update_hash_filename_ = instance-mme.jinja2.cfg
...
...
@@ -44,11 +44,11 @@ md5sum = 728f4d3ae248710c23e4b73eea4d628e
[template-lte-ue-lte]
_update_hash_filename_ = instance-ue-lte.jinja2.cfg
md5sum =
0808194507345550abc37118129fb757
md5sum =
4517baee6700afbf78de3b2d7dd4ba22
[template-lte-ue-nr]
_update_hash_filename_ = instance-ue-nr.jinja2.cfg
md5sum =
ed4112748616803ec0eb3c30bde80856
md5sum =
45e7ade19a579d6750d2733a0659dc1a
[ue_db.jinja2.cfg]
filename = config/ue_db.jinja2.cfg
...
...
@@ -64,7 +64,7 @@ md5sum = b377dac7f1fcf94fb9ce9ebed617f36a
[gnb.jinja2.cfg]
filename = config/gnb.jinja2.cfg
md5sum =
0ad683812818a02ef5010d087ec7138b
md5sum =
407c20d11c5417636b985fe4886bf135
[ltelogs.jinja2.sh]
filename = ltelogs.jinja2.sh
...
...
@@ -88,7 +88,7 @@ md5sum = b3078deab008d7e81ddd88ac02b8b698
[sdr-busy-promise]
_update_hash_filename_ = promise/check_sdr_busy.py
md5sum =
a9d7a06c43410e02070b9ddae7b46b38
md5sum =
2e25144d1d952ed5bebb194360b60afb
[interface-up-promise]
_update_hash_filename_ = promise/check_interface_up.py
...
...
software/ors-amarisoft/config/gnb.jinja2.cfg
View file @
a3da4718
#define FR2 0 // Values: 0 (FR1), 1 (FR2)
#define NR_TDD_CONFIG 2 // Values: FR1: 1, 2, 3, 4 (compatible with LTE TDD config 2) FR2: 10
#define N_ANTENNA_DL 2 // Values: 1 (SISO), 2 (MIMO 2x2), 4 (MIMO 4x4)
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
#define N_ANTENNA_UL 1 // Values: 1, 2, 4
{% else %}
#define N_ANTENNA_UL 2 // Values: 1, 2, 4
{% endif %}
#define NR_BANDWIDTH {{ slapparameter_dict.get('nr_bandwidth', slap_configuration['configuration.default_nr_bandwidth']) }} // NR cell bandwidth
#define NR_LONG_PUCCH_FORMAT 2 // Values: 2, 3, 4
...
...
@@ -9,6 +13,20 @@
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,ngap.level=debug,ngap.max_size=1,xnap.level=debug,xnap.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
log_filename: "{{ directory['log'] }}/gnb.log",
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
rf_driver: {
name: "sdr",
args: "dev0=/dev/sdr0@0",
cpri_mapping: "bf1",
cpri_mult: 16,
cpri_rx_delay: 11.0,
cpri_tx_delay: 0,
ifname: "cpri0",
cpri_tx_dbm: 42.0,
},
tx_gain: 0,
rx_gain: 0,
{% else %}
rf_driver: {
name: "sdr",
...
...
@@ -19,6 +37,7 @@
},
tx_gain: {{ slapparameter_dict.get('tx_gain', slap_configuration['configuration.default_nr_tx_gain']) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', slap_configuration['configuration.default_nr_rx_gain']) }},
{% endif %}
amf_list: [
{% if slapparameter_dict.get('amf_list', '') %}
...
...
@@ -232,7 +251,11 @@
#endif
msg1_subcarrier_spacing: 30,
msg1_fdm: 1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
msg1_frequency_start: 0,
{% else %}
msg1_frequency_start: -1,
{% endif %}
zero_correlation_zone_config: 15,
preamble_received_target_power: -110,
preamble_trans_max: 7,
...
...
@@ -245,12 +268,20 @@
},
pdcch: {
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
n_rb_coreset0: 48,
n_symb_coreset0: 1,
{% endif %}
search_space0_index: 0,
dedicated_coreset: {
rb_start: -1,
l_crb: -1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
duration: 1,
{% else %}
duration: 0,
{% endif %}
precoder_granularity: "sameAsREG_bundle",
},
...
...
@@ -272,13 +303,13 @@
dmrs_add_pos: 1,
dmrs_type: 1,
dmrs_max_len: 1,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
k0: 0,
k1: [ 8, 7, 7, 6, 5, 4, 12, 11 ],
{% endif %}
mcs_table: "qam256",
rar_mcs: 2,
si_mcs: 6,
},
csi_rs: {
...
...
@@ -548,14 +579,14 @@
mcs_table: "qam256",
mcs_table_tp: "qam256",
ldpc_max_its: 5,
{% if slapparameter_dict.get('rrh', '') == "M2RU Sunwave" %}
k2: 4,
msg3_k2: 7,
{% endif %}
p0_nominal_with_grant: -76,
msg3_mcs: 4,
msg3_delta_power: 0,
beta_offset_ack_index: 9,
},
...
...
software/ors-amarisoft/instance-enb.jinja2.cfg
View file @
a3da4718
...
...
@@ -137,3 +137,4 @@ eggs = slapos.core
file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
software/ors-amarisoft/instance-gnb-input-schema.json.jinja2
View file @
a3da4718
...
...
@@ -23,6 +23,16 @@
"type": "boolean"
},
{%- endif %}
"rrh": {
"title": "RRH",
"description": "RRH",
"type": "string",
"default": "SDR",
"enum": [
"SDR",
"M2RU Sunwave"
]
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
...
...
software/ors-amarisoft/instance-gnb.jinja2.cfg
View file @
a3da4718
...
...
@@ -137,3 +137,4 @@ eggs = slapos.core
file = {{ sdr_busy_promise }}
output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
software/ors-amarisoft/instance-tdd1900-gnb-epc-input-schema.json
View file @
a3da4718
...
...
@@ -21,6 +21,16 @@
"description"
:
"Activate iperf3 UDP server"
,
"type"
:
"boolean"
},
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd1900-gnb-input-schema.json
View file @
a3da4718
...
...
@@ -3,6 +3,16 @@
"$schema"
:
"http://json-schema.org/draft-04/schema"
,
"title"
:
"Input Parameters"
,
"properties"
:
{
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd2600-gnb-epc-input-schema.json
View file @
a3da4718
...
...
@@ -21,6 +21,16 @@
"description"
:
"Activate iperf3 UDP server"
,
"type"
:
"boolean"
},
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd2600-gnb-input-schema.json
View file @
a3da4718
...
...
@@ -3,6 +3,16 @@
"$schema"
:
"http://json-schema.org/draft-04/schema"
,
"title"
:
"Input Parameters"
,
"properties"
:
{
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd3500-gnb-epc-input-schema.json
View file @
a3da4718
...
...
@@ -21,6 +21,16 @@
"description"
:
"Activate iperf3 UDP server"
,
"type"
:
"boolean"
},
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd3500-gnb-input-schema.json
View file @
a3da4718
...
...
@@ -3,6 +3,16 @@
"$schema"
:
"http://json-schema.org/draft-04/schema"
,
"title"
:
"Input Parameters"
,
"properties"
:
{
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd3700-gnb-epc-input-schema.json
View file @
a3da4718
...
...
@@ -21,6 +21,16 @@
"description"
:
"Activate iperf3 UDP server"
,
"type"
:
"boolean"
},
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-tdd3700-gnb-input-schema.json
View file @
a3da4718
...
...
@@ -3,6 +3,16 @@
"$schema"
:
"http://json-schema.org/draft-04/schema"
,
"title"
:
"Input Parameters"
,
"properties"
:
{
"rrh"
:
{
"title"
:
"RRH"
,
"description"
:
"RRH"
,
"type"
:
"string"
,
"default"
:
"SDR"
,
"enum"
:
[
"SDR"
,
"M2RU Sunwave"
]
},
"tx_gain"
:
{
"title"
:
"Tx gain"
,
"description"
:
"Tx gain (in dB)"
,
...
...
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
View file @
a3da4718
...
...
@@ -120,17 +120,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }}
password = {{ slapparameter_dict['monitor-password'] | string }}
{% endif %}
[sdr-busy-promise-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin
eggs = slapos.core
file =
${sdr-busy-promise-template:output
}
file =
{{ sdr_busy_promise }
}
output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
View file @
a3da4718
...
...
@@ -123,17 +123,11 @@ monitor-title = {{ slapparameter_dict['name'] | string }}
password = {{ slapparameter_dict['monitor-password'] | string }}
{% endif %}
[sdr-busy-promise-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin
eggs = slapos.core
file =
${sdr-busy-promise-template:output
}
file =
{{ sdr_busy_promise }
}
output = ${directory:plugins}/check-sdr-busy.py
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr = {{ sdr }}
software/ors-amarisoft/instance.cfg
View file @
a3da4718
...
...
@@ -36,6 +36,7 @@ init =
path = "/opt/amarisoft/v" + lte_version
options['lte-version'] = lte_version
options['path'] = path
options['sdr'] = path + "/trx_sdr"
options['enb'] = path + "/enb"
options['mme'] = path + "/mme"
options['ims'] = path + "/ims"
...
...
@@ -101,6 +102,7 @@ extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
key enb amarisoft:enb
key sdr amarisoft:sdr
raw enb_template ${enb.jinja2.cfg:target}
raw sib23 ${sib23.asn:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
...
...
@@ -124,6 +126,7 @@ extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
key enb amarisoft:enb
key sdr amarisoft:sdr
raw gnb_template ${gnb.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target}
...
...
@@ -165,6 +168,7 @@ extra-context =
raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_lte_template ${ue-lte.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target}
...
...
@@ -188,6 +192,7 @@ extra-context =
raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_nr_template ${ue-nr.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target}
...
...
software/ors-amarisoft/promise/check_sdr_busy.py
View file @
a3da4718
import
os
import
errno
import
subprocess
from
zope.interface
import
implementer
from
slapos.grid.promise
import
interface
...
...
@@ -28,18 +29,22 @@ class RunPromise(GenericPromise):
In this case, check whether the file exists.
"""
testing
=
self
.
getConfig
(
'testing'
)
==
"True"
sdr
_dev
=
'/dev/sdr0'
sdr
=
self
.
getConfig
(
'sdr'
)
if
testing
:
self
.
logger
.
info
(
"skipping promise"
)
return
try
:
open
(
sdr_dev
,
'w'
).
close
()
self
.
logger
.
error
(
"eNB is not using %s"
,
sdr_dev
)
except
IOError
as
e
:
if
e
.
errno
==
errno
.
EBUSY
:
self
.
logger
.
info
(
"eNB is using %s"
,
sdr_dev
)
out
=
subprocess
.
check_output
([
sdr
+
'/sdr_util'
,
'-c'
,
'0'
,
'version'
],
stderr
=
subprocess
.
STDOUT
)
except
subprocess
.
CalledProcessError
as
e
:
if
e
.
returncode
==
1
and
\
(
"DMA channel is already opened"
in
e
.
output
.
decode
()
or
\
"Device or resource busy"
in
e
.
output
.
decode
()):
self
.
logger
.
info
(
"eNB is using /dev/sdr0"
)
return
self
.
logger
.
error
(
"eNB is not using /dev/sdr0"
)
def
test
(
self
):
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment