Dear Osmocom developers,
In our project we have been using the gsmtap pseudo-header to store UMTS and LTE signalling traces in pcapng format. This is very efficient compared to our previous implementation based on DLT_USER, and thanks to the gsmtap dissector, it allows any *shark app to read our output file.
When looking for the proper type and sub_type for NR signalling traces, I discovered they are not yet part of the standard. I found several threads of discussion about this, from about 2017 onwards, and I understand it is a matter of time and resources if the version 3 of GSMTAP has not been released.
The most interesting feature I have read about is the ability to extend the header with a TLV approach. EARFCN, eNodeB-ID, PCI, are useful metadata we would like to add to our traces.
In an ideal world, I would like things to be put in motion so that a new version of GSMTAP could see the light. More humbly, I ask you what kind of help is needed. Are you waiting for a draft specification? Are all requirements well known?
I suppose that LTE and NR are not the main focus today for liboscmocore development, but there are many projects out there waiting for the GSMTAP format to be updated.
Thanks!
Mauro
Hi all,
Just wanted to share an issue and a quick workaround I found for it in case
anyone else has the same problem. I believe a cmd2 update is causing
pySim-shell to fail. After installing it on a fresh install of Ubuntu
Server 20.04 and getting the following error when I run "python3
pySim-shell -p0":
>Using PC/SC reader interface
>Autodetected card type: sysmoUSIM-SJS1
>AIDs on card:
> USIM: a0000000871002ffffffff8907090000
>Traceback (most recent call last):
> File "pySim-shell.py", line 512, in <module>
> app = PysimApp(card, rs, opts.script)
> File "pySim-shell.py", line 59, in __init__
> super().__init__(persistent_history_file='~/.pysim_shell_history',
allow_cli_args=False, use_ipython=True, auto_load_commands=False,
command_sets=basic_commands, >startup_script=script)
>TypeError: __init__() got an unexpected keyword argument 'use_ipython'
If you run into this you can fix it by uninstalling cmd2 and reinstalling
cmd2 with "pip3 install cmd2==1.5".
Best,
Bryan
Hi all,
I'm currently working on 2G to 3G TrFO voice negotiation. In practice, that
means, to be able to negotiate a set of AMR rates via SDP. And that, in turn,
means that we handle fmtp properly in SDP strings.
SDP is not only used in SIP to the other call leg, but also in the MGCP to the
media gateway.
- So we have a bunch of SDP and fmtp related code in osmo-mgw.git.
- Separately, we have an SDP implementation in osmo-msc.git, because the SDP
code in osmo-mgw.git was too tightly coupled with other code to be able to
reuse it for MNCC->SIP.
For fmtp negotiation, I now want similar things in both mgw and msc.
What I want to do now, is move the SDP implementation from osmo-msc.git to
osmo-mgw.git/libosmo-mgcp-client and make it public API: a common place that
will also enable all other MGCP clients to work with AMR fmtp.
All of this was just the intro =) the question I would like to put out there is
about API design: static or dynamic, and opaque or transparent.
Am I overthinking this? Or would you like to overthink it with me?
== static or dynamic ==
In osmo-msc.git, the SDP structs so far are fully static and self-contained.
The cool thing is that they can be copied around quite easily and there is no
need for passing talloc ctx pointers, no need to worry about ownership,
memleaks and double frees. But it also means that it uses fixed sizes:
- char encoding_name[16],
- char fmtp[256],
- struct sdp_audio_codec codecs[32]
and so on.
Unfortunately, RFC-8866 does not define any limits whatsoever on number of
characters or number of codecs in an SDP message. Quoting:
"although no length limit is given, it is recommended that they be short"
Thanks for nothing! >:(
So for static API design, we need to now pick a good size for every single item
in advance.
When fmtp has max 256 bytes and codec lists have max 32 entries, even an empty
list will use 32 * 256+ bytes: lots of heap allocations.
And the limits are hard: anyone wanting to correctly express more than 32
different codec variants can simply not use this library.
Dynamic seems a much better fit for RFC-8866.
There is practically no limit at all on string length / list length.
Also the caller allocates not one byte more memory than is actually needed.
The argument has been going back and forth in my head for weeks. Static makes
things so much simpler. But what sizes should we dictate. Ok then dynamic. But
these days we have "infinite" memory, the bottleneck is CPU time, so if we can
be static, we are gracious on very cheap real estate (memory) while saving a
lot of the precious stuff (cycles). Ok then static. But with all those AMR
variants that are coming up, I want to at least be able to represent all of
them in one list, so I need at least 64 entries. And let's allow long fmtp
strings, who knows. Then we'll end up with ~20kb of data that every codec list
out there will use up, even if it is empty. Even if it is just a temporary
local variable. Even if it is just dragged along for a rare use case and never
actually needed. Is it really faster to allocate 100 times more memory
statically versus allocating just enough but dynamically?
In the end I decided for dynamic allocation.
When I started adding talloc ctx args, I wanted the API to be simple, so every
single part of the puzzle is now its own dynamic allocation:
struct osmo_sdp_msg {
char *username; // talloc_strdup()
char *session_name; // talloc_strdup()
[...]
struct osmo_sdp_codec_list *codecs; // osmo_sdp_codec_list_alloc()
// llist_head
// -> osmo_sdp_codec_alloc()
// \___ char *encoding_name -> talloc_strdup()
// _ char *fmtp -> talloc_strdup()
// -next-> osmo_sdp_codec_alloc()
// \___ ...
// -next-> osmo_sdp_codec_alloc()
// \___ ...
};
All of this used to be just a single self-contained struct.
You might ask, why is 'codecs', which is just the llist_head, a separate
allocation? Because I want the API to trivially figure out the talloc parent
context to allocate items from:
osmo_codec_list_add(my_list, my_codec);
and not have to worry about the individual code paths' parent context to
allocate new entries from:
osmo_codec_list_add(&my_obj->my_list, my_obj->backpointer.backpointer.ctx, my_codec);
So the only functions with a talloc ctx argument are
osmo_codec_alloc(ctx) and
osmo_codec_list_alloc(ctx)
This style has a tendency to spread:
Now I want to also make osmo-msc's struct codec_filter a dynamic allocation,
because the codec_filter_foo() currently have no ctx argument; they still use
the static SDP structs. When the codec_filter pointer itself is the neat
logical talloc parent of the codec lists it uses, then I don't need to add a
separate ctx arg everywhere now.
Am I taking this too far now?
Am I overthinking it and either way is fine?
== opaque vs transparent ==
I can either have the full struct definition in the .h file = transparent, or I
can hide the struct in the .c file and provide lots of getter and setter
functions = opaque.
Both ways have a major advantage over the other:
- opaque means that we can freely extend the API without any ABI breakage,
ever.
- transparent means that callers can easily define const arrays of data
structures. In my case, I want to keep const lists of const codecs for e.g.
test data in unit tests, for listing known codecs in codec_mapping.c, for
defining default codec configuration.
transparent allows:
const struct osmo_sdp_codec ran_defaults = {
{ .encoding_name = "AMR", .rate = 8000, .fmtp = "octet-align=1;mode-set=0,2,4,7", .payload_type = 112, },
{ .encoding_name = "AMR", .rate = 8000, .fmtp = "octet-align=1;mode-set=0,2,4", .payload_type = 112, },
{ .encoding_name = "AMR", .rate = 8000, .fmtp = "mode-set=0,2,4,7", .payload_type = 112, },
{ .encoding_name = "AMR", .rate = 8000, .fmtp = "mode-set=0,2,4", .payload_type = 112, },
{ .encoding_name = "GSM-EFR", .rate = 8000, .payload_type = 110, },
{ .encoding_name = "GSM", .rate = 8000, .payload_type = 3, },
{ .encoding_name = "GSM-HR-08", .rate = 8000, .payload_type = 111, },
};
int i;
for (i = 0; i < ARRAY_SIZE(ran_defaults); i++)
osmo_sdp_codec_list_add(g_ran_codecs_cfg, &defaults[i])
printf("%s", codec->encoding_name);
if (!strcmp(codec->encoding_name, "AMR"))
printf(":%s", codec->fmtp);
same in opaque:
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "AMR", 8000, "octet-align=1;mode-set=0,2,4,7", 112);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "AMR", 8000, "octet-align=1;mode-set=0,2,4", 112);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "AMR", 8000, "mode-set=0,2,4,7", 112);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "AMR", 8000, "mode-set=0,2,4", 112);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "GSM-EFR", 8000, NULL, 110);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "GSM", 8000, NULL, 3);
osmo_sdp_codec_list_add(g_ran_codecs_cfg, "GSM-HR-08", 8000, NULL, 111);
printf("%s", osmo_sdp_codec_get_encoding_name(codec));
if (!strcmp(osmo_sdp_codec_get_encoding_name(codec), "AMR"))
printf(":%s", osmo_sdp_codec_get_ftmp(codec));
The opaque looks alright in comparison, but
- being able to enlist a struct osmo_sdp_codec in a const array is powerful,
allowing the paradigm to replace code complexity by good data structures.
So used in codec_mapping.c in osmo-msc.
- requiring getters and setters for each end every member creates a long list
of API functions: 'get' and 'set' for each orthogonal member; we might be
tempted to "dupe" many llist_*() functions for osmo_sdp_codec_list.
- having to call functions for each end every member makes the code a lot more
noisy.
- it forces all allocation decisions down onto the caller = only using the API
author's favorite dynamic allocation, hello memleaks etc.
IMHO, opaque APIs are often lots of code with very low density of actually
important stuff.
/* This function gets foo. */
struct foo *get_foo(x)
{
return x->foo;
}
This is so plump and boring!!
Currently I am following the transparent way,
and putting 'bool v2;' extension flags for a distant future in the structs'
ends.
But there has been a discussion here that the truly good APIs are opaque.
talloc, libSDL, libsndfile come to mind.
== both ==
Finally, these two aspects are interdependent:
An opaque API *has* to be dynamic.
So far, I am moving from the transparent+static implementation to
transparent+dynamic.
Should I also go the "next" step to opaque+dynamic? I don't really want to...
I've had these considerations many times in my life, and there never seems to
be the one best way.
Thanks for your thoughts!
If you need more code reference for what I am talking about:
old static:
https://cgit.osmocom.org/osmo-msc/tree/include/osmocom/msc/sdp_msg.h?id=1b1…https://cgit.osmocom.org/osmo-msc/tree/src/libmsc/sdp_msg.c?id=1b1a39bea1c5…
new dynamic+transparent:
https://cgit.osmocom.org/osmo-mgw/tree/include/osmocom/sdp?h=neels/sdp&id=2…https://cgit.osmocom.org/osmo-mgw/tree/src/libosmo-sdp?h=neels/sdp&id=24c09…
~N
--
- Neels Hofmeyr <nhofmeyr(a)sysmocom.de> http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Alt-Moabit 93
* 10559 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschäftsführer / Managing Directors: Harald Welte
Hi,
I hope this is the place to ask this, if not I will delete this post. I am trying to run my own 2G network for researching purposes. I am running the following elements:
- osmo-bts-trx (connecting to osmo-trx-uhd driving a USRP B205mini-i)
- osmo-bsc
- osmo-msc
- osmo-hlr
- osmo-mgw
I built all the programs from source on Ubuntu 22.04. Everything is running locally on one machine.
Everything seems to be running OK. I was able to register two different subscribers by IMSI (without providing K and OPc) and assign MSISDN tothem. They can use the default USSD codes for seeing their IMSI and their MSISDN and I can make voice calls between both subscribers. I am mostly using the default config files provided with the installation, the only changes I made to them was to point IPs to 127.0.0.1 to run everything on the same machine.
But when starting osmo-bsc and osmo-msc I get the same error on both:
jonathan@em680:~/tfg/osmo/config$ osmo-msc -c osmo-msc.cfg
DLGLOBAL NOTICE Available via telnet 127.0.0.1 4254 (telnet_interface.c:88)
DLCTRL NOTICE CTRL at 127.0.0.1 4255 (control_if.c:1014)
DLGSUP NOTICE GSUP connecting to 127.0.0.1:4222 (gsup_client.c:74)
DDB NOTICE Init database connection to 'sms.db' using SQLite3 lib version 3.37.2 (db.c:521)
DLMGCP NOTICE MGW(mgw) MGCP client: using endpoint domain '@mgw' (mgcp_client.c:933)
DMSC NOTICE MGW pool with 1 pool members configured, (ignoring MGW configuration in VTY node 'msc'). (msc_main.c:596)
DLSCCP NOTICE OsmoMSC-A: Creating SS7 instance (sccp_user.c:536)
DLSCCP NOTICE OsmoMSC-A: Using SS7 instance 0, pc:0.23.1 (sccp_user.c:563)
DLSCCP NOTICE OsmoMSC-A: Creating AS instance (sccp_user.c:570)
DLSCCP NOTICE OsmoMSC-A: Using AS instance as-clnt-OsmoMSC-A (sccp_user.c:581)
DLSCCP NOTICE OsmoMSC-A: Creating default route (sccp_user.c:587)
DLSCCP NOTICE OsmoMSC-A: No unassociated ASP for m3ua, creating new ASP asp-clnt-OsmoMSC-A (sccp_user.c:626)
DLGLOBAL ERROR Trying to dispatch event 17 to non-existent FSM instance! (osmo_ss7_as.c:118)
DLGLOBAL ERROR backtrace() returned 11 addresses (backtrace.c:42)
DLGLOBAL ERROR /usr/local/lib/libosmocore.so.21(osmo_log_backtrace+0x24) [0x7fc1ddd9fdcc] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmocore.so.21(_osmo_fsm_inst_dispatch+0x144) [0x7fc1dddaade7] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmo-sigtran.so.9(osmo_ss7_as_add_asp+0x1f9) [0x7fc1ddcfb80c] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmo-sigtran.so.9(osmo_sccp_simple_client_on_ss7_id+0xa48) [0x7fc1ddd1dd5e] (backtrace.c:53)
DLGLOBAL ERROR osmo-msc(+0x26fd8) [0x55fa5388bfd8] (backtrace.c:53)
DLGLOBAL ERROR osmo-msc(+0x27043) [0x55fa5388c043] (backtrace.c:53)
DLGLOBAL ERROR osmo-msc(+0x27bed) [0x55fa5388cbed] (backtrace.c:53)
DLGLOBAL ERROR /lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7fc1dd95fd90] (backtrace.c:53)
DLGLOBAL ERROR /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7fc1dd95fe40] (backtrace.c:53)
DLGLOBAL ERROR osmo-msc(+0x26565) [0x55fa5388b565] (backtrace.c:53)
DLSCCP NOTICE OsmoMSC-A: Using ASP instance asp-clnt-OsmoMSC-A (sccp_user.c:695)
DLSS7 NOTICE 0: Creating SCCP instance (osmo_ss7.c:408)
DSGS NOTICE SGs socket bound to r=NULL<->l=0.0.0.0:29118 (sgs_server.c:186)
DMSC NOTICE A-interface: SCCP user OsmoMSC-A:RI=SSN_PC,PC=(no PC),SSN=BSSAP, cs7-instance 0 ((null)) (msc_main.c:806)
DLINP NOTICE 127.0.0.1:4222 connection done (ipa.c:141)
DLINP NOTICE received ID_GET for unit ID 0/0/0 (ipaccess.c:919)
DLM3UA NOTICE 0: asp-asp-clnt-OsmoMSC-A: Received NOTIFY Type State Change:AS Inactive () (m3ua.c:625)
DLSS7 NOTICE xua_default_lm(asp-clnt-OsmoMSC-A)[0x55fa542bb080]{ACTIVE}: Ignoring primitive M-ASP_ACTIVE.confirm (xua_default_lm_fsm.c:400)
DLM3UA NOTICE 0: asp-asp-clnt-OsmoMSC-A: Received NOTIFY Type State Change:AS Active () (m3ua.c:625)
DLM3UA NOTICE 0: asp-asp-clnt-OsmoMSC-A: Rx DAVA() for 0.23.3/0, (xua_snm.c:403)
...
jonathan@em680:~/tfg/osmo/config$ osmo-bsc -c osmo-bsc.cfg
DLGLOBAL NOTICE Available via telnet 127.0.0.1 4242 (telnet_interface.c:88)
DLINP NOTICE enabling ipaccess BSC mode on 0.0.0.0 with OML 3002 and RSL 3003 TCP ports (ipaccess.c:1055)
DLCTRL NOTICE CTRL at 127.0.0.1 4249 (control_if.c:1014)
DLMGCP NOTICE MGW(mgw) MGCP client: using endpoint domain '@mgw' (mgcp_client.c:933)
DNM NOTICE MGW pool with 1 pool members configured, (ignoring MGW configuration in VTY node 'msc'). (osmo_bsc_main.c:889)
DMSC NOTICE To auto-configure msc 0, creating cs7 instance 0 implicitly (osmo_bsc_sigtran.c:600)
DMSC NOTICE Initializing SCCP connection for A/m3ua on cs7 instance 0 (osmo_bsc_sigtran.c:647)
DLSCCP ERROR SS7 instance 0: no primary point-code set, using default point-code (sccp_user.c:557)
DLSCCP NOTICE A-0-m3ua: Using SS7 instance 0, pc:0.23.3 (sccp_user.c:563)
DLSCCP NOTICE A-0-m3ua: Creating AS instance (sccp_user.c:570)
DLSCCP NOTICE A-0-m3ua: Using AS instance as-clnt-A-0-m3ua (sccp_user.c:581)
DLSCCP NOTICE A-0-m3ua: Creating default route (sccp_user.c:587)
DLSCCP NOTICE A-0-m3ua: No unassociated ASP for m3ua, creating new ASP asp-clnt-A-0-m3ua (sccp_user.c:626)
DLGLOBAL ERROR Trying to dispatch event 17 to non-existent FSM instance! (osmo_ss7_as.c:118)
DLGLOBAL ERROR backtrace() returned 10 addresses (backtrace.c:42)
DLGLOBAL ERROR /usr/local/lib/libosmocore.so.21(osmo_log_backtrace+0x24) [0x7f990ff0ddcc] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmocore.so.21(_osmo_fsm_inst_dispatch+0x144) [0x7f990ff18de7] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmo-sigtran.so.9(osmo_ss7_as_add_asp+0x1f9) [0x7f990fe9380c] (backtrace.c:53)
DLGLOBAL ERROR /usr/local/lib/libosmo-sigtran.so.9(osmo_sccp_simple_client_on_ss7_id+0xa48) [0x7f990feb5d5e] (backtrace.c:53)
DLGLOBAL ERROR osmo-bsc(+0x144035) [0x556b310d7035] (backtrace.c:53)
DLGLOBAL ERROR osmo-bsc(+0x2aef0) [0x556b30fbdef0] (backtrace.c:53)
DLGLOBAL ERROR /lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7f990fc55d90] (backtrace.c:53)
DLGLOBAL ERROR /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7f990fc55e40] (backtrace.c:53)
DLGLOBAL ERROR osmo-bsc(+0x28265) [0x556b30fbb265] (backtrace.c:53)
DLSCCP NOTICE A-0-m3ua: Using ASP instance asp-clnt-A-0-m3ua (sccp_user.c:695)
DLSS7 NOTICE 0: Creating SCCP instance (osmo_ss7.c:408)
DMSC NOTICE A-0-m3ua msc-0: local (BSC) SCCP address: RI=SSN_PC,PC=0.23.3,SSN=BSSAP (osmo_bsc_sigtran.c:703)
DMSC NOTICE A-0-m3ua msc-0: remote (MSC) SCCP address: RI=SSN_PC,PC=0.23.1,SSN=BSSAP (osmo_bsc_sigtran.c:705)
DMSC NOTICE A-0-m3ua msc-0: binding SCCP user (osmo_bsc_sigtran.c:710)
DLSS7 ERROR XUA_AS(as-clnt-A-0-m3ua)[0x556b31b42cc0]{AS_INACTIVE}: Event AS-TRANSFER.req not permitted (m3ua.c:510)
DLM3UA NOTICE 0: asp-asp-clnt-A-0-m3ua: Received NOTIFY Type State Change:AS Inactive () (m3ua.c:625)
DLSS7 NOTICE xua_default_lm(asp-clnt-A-0-m3ua)[0x556b31b445c0]{ACTIVE}: Ignoring primitive M-ASP_ACTIVE.confirm (xua_default_lm_fsm.c:400)
DLM3UA NOTICE 0: asp-asp-clnt-A-0-m3ua: Received NOTIFY Type State Change:AS Active () (m3ua.c:625)
DMSC NOTICE RESET ACK from MSC: RI=SSN_PC,PC=0.23.1,SSN=BSSAP (osmo_bsc_bssap.c:84)
DRESET NOTICE bssmap_reset(msc-0)[0x556b31b45790]{CONNECTED}: link up (bssmap_reset.c:83)
DMSC NOTICE (msc0) BSSMAP association is up (a_reset.c:45)
DLINP NOTICE 0.0.0.0:3002 accept()ed new link from 127.0.0.1:38477 (ipa.c:318)
DLINP NOTICE Keepalive is set: 0 (ipaccess.c:612)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'GPRS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'EGPRS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'HOPPING' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'MULTI_TSC' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'OML_ALERTS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'CBCH' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'SPEECH_F_V1' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'SPEECH_H_V1' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'SPEECH_F_EFR' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'SPEECH_F_AMR' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'SPEECH_H_AMR' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'ETWS_PN' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'PAGING_COORDINATION' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'IPV6_NSVC' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'ACCH_REP' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'CCN' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'VAMOS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'ABIS_OSMO_PCU' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'BCCH_PWR_RED' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'DYN_TS_SDCCH8' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'ACCH_TEMP_OVP' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'VBS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Get Attributes Response: feature 'VGCS' is supported (abis_nm.c:599)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): ARI reported sw[0/2]: osmobts is 1.7.0.54-82a2 (abis_nm.c:652)
DNM NOTICE OC=BTS(01) INST=(00,ff,ff): Reported variant: osmo-bts-trx (abis_nm.c:534)
DNM ERROR OC=RADIO-CARRIER(02) INST=(00,00,ff): Attribute SW Configuration is unreported (abis_nm.c:557)
DNM ERROR OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff): Attribute Manufacturer Dependent State is unreported (abis_nm.c:557)
DNM NOTICE OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff): ARI reported sw[0/1]: TRX_PHY_VERSION is Unknown (abis_nm.c:652)
DLINP NOTICE 0.0.0.0:3003 accept()ed new link from 127.0.0.1:37491 (ipa.c:318)
DLINP NOTICE Keepalive is set: 0 (ipaccess.c:612)
...
Is it something I should worry about?
Thanks
Empower your journey in customer relationship management (CRM) with our comprehensive support services. Our team specializes in providing expert guidance and assistance tailored to your CRM assignment needs. From analyzing customer data to implementing effective strategies, our CRM Assignment Help ensures you're equipped with the knowledge and skills to excel. Trust us to be your partner in success as you navigate the complexities. Let our expertise be at your fingertips, guiding you toward academic achievement and more visit our website Now.https://reportwritinghelp.com/assignment/consumer-behavior-assignment-h…