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
Léo-Paul Géneau
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