Hi.
Attached is a small patch which replaces direct call to comp128 from libosmocore to
auth api call. This will help to remove comp128 from libosmocore public api and to
use other auth functions in openbsc in future.
--
best regards,
Max, http://fairwaves.ru
Hi all,
We're moving this discussion to the mailing list, as it seems it is
more generic and complex than we've thought initially.
The issue arose when I started doing load testing of the OsmoTRX
transceiver and disabled all gating in it. As a result, all incoming
noise was processed as valid Normal Bursts and Access Bursts and sent
up to OsmoBTS. This leads to a situation, similar to a RACH flood,
when there are more RACH requests coming, than a BTS could reasonably
process. And this leads to an unbounded increase of the AGCH queue in
the BTS - it consumes a few Mb per minute.
I think that this is the root cause of the issue we've seen at a
Netherlands festival installation, when 20K phones suddenly started
connecting to our station after official networks went down. When the
amount of RACH requests exceeded available CCCH capacity (took <5
seconds), mobile phones stopped answering out IMM.ASS messages.
Hypothesis is that the AGCH queue became so long, requests were sent
too late for a phone to receive it. And thus no phones answered to our
IMM.ASS messages. Unfortunately, I wasn't able to collect enough data
to check this hypothesis during that time and we don't have another
big festival on hands atm.
An attached is a quick fix for the unbounded queue growth. It uses a
hardcoded value for the maximum queue length, which is fine for our
load testing, but not flexible enough for the real life usage. We
should make the AGCH queue long enough to keep high performance. At
the same time, it must not exceed MS timeout or _all_ IMM.ASS messages
will miss their target MS's.
We could make this parameter user-configurable on a BTS side, but it
seems more reasonable to automatically calculate it, depending on the
channel combination and timeout values. But this should be done on the
BSC side. So the questions are:
1) what is a good way to calculate it?
2) should we configure this queue length over OML, or move the queue
from BTS to BSC?
--
Regards,
Alexander Chemeris.
CEO, Fairwaves LLC / ООО УмРадио
http://fairwaves.ru
Hi Jason,
On Fri, Nov 08, 2013 at 01:21:46PM +0000, Jason DSouza wrote:
> But I'm waiting at Opstart for Obj Class - RADIO_CARRIER to trigger
> trx-init() which is never received from BSC. That is where I'm struck
> now. All this so far is similar to sysmobts interface, something
> similar to bts_model_opstart() function in osmo-bts-sysmo.
Please see the following code from bts_ipaccess_nanobts.c:
==============
/* Callback function to be called whenever we get a GSM 12.21 state change event */
static int nm_statechg_event(int evt, struct nm_statechg_signal_data *nsd)
{
[...]
case NM_OC_RADIO_CARRIER:
trx = obj;
if (new_state->operational == NM_OPSTATE_DISABLED &&
new_state->availability == NM_AVSTATE_OK)
abis_nm_opstart(trx->bts, obj_class, trx->bts->bts_nr,
trx->nr, 0xff);
break;
==============
So the opstrart for the RADIO_CARRIER is sent in response to an incoming
NM_MT_STATECHG_EVENT_REP withe the operational state set to DISABLED and
the availability set to OK.
My guess is that you are not sending such a state event from the BTS to
the BSC. I can also not see that in the pcap file you have sent. All
OML messages in there relate to the Site MAnager or the BTS object
class, but there are no messages related to any other MOs.
As indicated, it is best to start from a known-working setup with a
supported BTS model, or at least from a protocol trace of an existing
supported configuration.
Please also make sure to set your 'bts model' to nanobts, I _think_ the
'bts model sysmobts' is still broken.
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Currently the NET_DST information element (see GSM 24.008) is not
included in generated MM info messages even when the DST field in the
timezone info has been set via the VTY or the control interface.
This patch modifies gsm48_tx_mm_info() to append this information
element if (and only if) a non-zero DST has been configured. The
DST IE is not part of GSM 4.8. Therefore it will only be sent, if the
DST offset is configured to a value != 0.
Sponsored-by: On-Waves ehf
---
openbsc/src/libmsc/gsm_04_08.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 3cfc455..0d1ba7b 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -656,6 +656,7 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
struct tm* gmt_time;
struct tm* local_time;
int tzunits;
+ int dst = 0;
msg->lchan = conn->lchan;
@@ -749,6 +750,9 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
tzunits = tzunits + (bts->tz.mn/15);
ptr8[7] = bcdify(tzunits);
}
+ /* Convert DST value */
+ if (bts->tz.dst >= 0 && bts->tz.dst <= 2)
+ dst = bts->tz.dst;
}
else {
/* Need to get GSM offset and convert into 15 min units */
@@ -768,8 +772,19 @@ int gsm48_tx_mm_info(struct gsm_subscriber_connection *conn)
}
else
ptr8[7] = bcdify(tzunits);
+
+ /* Does not support DST +2 */
+ if (local_time->tm_isdst)
+ dst = 1;
}
+#ifdef GSM48_IE_NET_DST
+ ptr8 = msgb_put(msg, 3);
+ ptr8[0] = GSM48_IE_NET_DST;
+ ptr8[1] = 1;
+ ptr8[2] = dst;
+#endif
+
DEBUGP(DMM, "-> MM INFO\n");
return gsm48_conn_sendmsg(msg, conn, NULL);
--
1.7.9.5
Hi all,
time is moving fast, and I want to start some initial discussion and
planning for OsmoDevCon 2014.
There are basically four questions which I'm raising below. Please
provide your feedback to the osmocom-event-orga mailing list only, to
avoid cross-posting over all the project lists.
= Who? =
My intention is to keep it an 'active developer/contributer only' event,
like we had it before. I would also want to keep the group relatively
small, to keep the 'Osmocom family' atmosphere.
If desired, we could have one half or full day of public prsentations in
a larger auditorium, but the developer meeting should be a close group,
as known so far.
= Where? =
If we keep the number of attendees within the same range as this year,
then I'm sure we could again hold it at the same venue. I know it is
not perfect, but it is a place that we have access to, 24 hours per day,
and free of cost for community projects like osmocom.org.
If the community wants a larger event, then this is something that would
require more funds and much more time organizing. And that is something
that I personally could not offer to take care of, sorry. I'm happy to
attend and support any larger events, but I'm unable to take care of
fundraising and venue research.
= When? =
Q1/2014. In January, I'm not aware of any 'blocker' events. February,
there is Fosdem (Feb 1 + Feb 2), and MWC from Feb 24 through Feb 27. In
March there is CeBIT (March 10-14) and Easter holidays (with EasterHegg
March 17-21). Did I miss any other FOSS / mobile event that might clash
in Q1?
So my preference woudl be to do it either late January (23-26) or in
February (6-9 or 13-16). Any preferences regarding preferred schedule?
Once we have some concencus here on the list [and we want to do it in
the same size / venue], I'll talk to IN-Berlin.
= What? =
I think that question is easy to answer, if we have the above three
figured out... There's no shortage of topics, I suppose.
You can start adding your suggestions to
http://openbsc.osmocom.org/trac/wiki/OsmoDevCon2014
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
The implementation of for_each_line is based on strtok() and skips
any sequence of CR and LF. Thus empty lines are never detected. There
exists code which tests for an empty line to detect the beginning of
the SDP part which is dead code currently (the parser works
nevertheless due to other reasons). So the semantics of this macro
have been misunderstood at least once.
This patch renames the macro to reflect the semantics more precisely.
Sponsored-by: On-Waves ehf
---
openbsc/src/libmgcp/mgcp_protocol.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c
index 7096495..c040ab1 100644
--- a/openbsc/src/libmgcp/mgcp_protocol.c
+++ b/openbsc/src/libmgcp/mgcp_protocol.c
@@ -36,7 +36,7 @@
#include <openbsc/mgcp.h>
#include <openbsc/mgcp_internal.h>
-#define for_each_line(line, save) \
+#define for_each_non_empty_line(line, save) \
for (line = strtok_r(NULL, "\r\n", &save); line;\
line = strtok_r(NULL, "\r\n", &save))
@@ -527,7 +527,7 @@ static struct msgb *handle_create_con(struct mgcp_parse_data *p)
return create_err_response(NULL, 510, "CRCX", p->trans);
/* parse CallID C: and LocalParameters L: */
- for_each_line(line, p->save) {
+ for_each_non_empty_line(line, p->save) {
switch (line[0]) {
case 'L':
local_options = (const char *) line + 3;
@@ -652,7 +652,7 @@ static struct msgb *handle_modify_con(struct mgcp_parse_data *p)
return create_err_response(endp, 400, "MDCX", p->trans);
}
- for_each_line(line, p->save) {
+ for_each_non_empty_line(line, p->save) {
switch (line[0]) {
case 'C': {
if (verify_call_id(endp, line + 3) != 0)
@@ -771,7 +771,7 @@ static struct msgb *handle_delete_con(struct mgcp_parse_data *p)
return create_err_response(endp, 400, "DLCX", p->trans);
}
- for_each_line(line, p->save) {
+ for_each_non_empty_line(line, p->save) {
switch (line[0]) {
case 'C':
if (verify_call_id(endp, line + 3) != 0)
@@ -873,7 +873,7 @@ static struct msgb *handle_noti_req(struct mgcp_parse_data *p)
if (p->found != 0)
return create_err_response(NULL, 400, "RQNT", p->trans);
- for_each_line(line, p->save) {
+ for_each_non_empty_line(line, p->save) {
switch (line[0]) {
case 'S':
tone = extract_tone(line);
@@ -1218,7 +1218,7 @@ int mgcp_parse_stats(struct msgb *msg, uint32_t *ps, uint32_t *os,
return -1;
/* this can only parse the message that is created above... */
- for_each_line(line, save) {
+ for_each_non_empty_line(line, save) {
switch (line[0]) {
case 'P':
rc = sscanf(line, "P: PS=%u, OS=%u, PR=%u, OR=%u, PL=%d, JI=%u",
--
1.7.9.5
Hello,
I'm working on producing a graphic which shows Osmocom projects that
can be used in a production GSM network, along with related projects
that are used together with these. I'd also like to show these in the
context of legacy networks, e.g. with existing BSC and MSC etc.
First, I need to be sure I have the complete list:
— Osmocom
* BSC (or much more): OpenBSC (osmo-bsc or NITB)
* BTS: OsmoBTS + sysmoBTS or osmo-trx/UmTRX in Fairwaves solution
* PCU: osmo-pcu
* SGSN: OsmoSGSN
* GGSN: OpenGGSN
* ??: cellmgr_ng (what would be the best use cases to show? E.g. as in
bsc_nat diagram)
* ??: bsc_nat (show as in diagram on wiki? Perhaps with fewer elements...)
* ??: osmo-gbproxy
Not sure about the status of osmocom-lcs?
— Ecosystem (supporting projects)
* Linux Call Router
* FreeSWITCH
* Telscale SS7 card (for interfacing with legacy networks)
— Legacy
* nanoBTS and others
* BSC
* MSC
* ... ?
The idea would be to try and show as many use cases as is reasonably
possible and without making the graphic a mess.
I'd appreciate any comments and suggestions folks may have.
Cheers,
Andrew
--
Andrew Back
http://carrierdetect.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hey there,
I have come across a nanoBTS 165AU but since is used and not tested from the previous owner, I guess it has set a static IP.
After turned on is booting (RED light) and then remains (ORANGE not flashing) even if the eth is connected to the router.
At the moment I am trying with ipaccess-find and BtsInstaller to find in on my LAN .
Unfortunately it is not answering and is not even getting an IP from the router by the DHCP daemon.
Two possibilities, I have thought:
- - an hw/sw issue;
- - a Static IP is set.
Supposing that is the 2nd possibility, I was thinking:
- - to change private class of my LAN, to see if it changes something;
- - to make an hard reset of the bts.
Do you know if it possible to reset in someway?
Ever happened this issue to you guys?
Suggestions or insults are welcome.
Thanks in advance.
Cheers,
Luca
P.S.: I don't recall exactly, but one time I heard that is possible to reset by short-circuiting some pins of the LAN/48VDC eth connector. Is it right?!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAEBAgAGBQJSE682AAoJEPLE1Qsi6ZiTuKkQAJaYGFTgMF5XlWuZuCI1eSvU
lVCvpdB+fDRY7o6iut3y0fGlS1ZOIS8X93c7/T0XKUvSJaZ2ARIGjqi81A4XlkAK
pdFvBNPKixYATYZYhP3nIggC1QGK9fuWQSUKVEGgnswsXt0VaJKdEwgn0CX7ttku
uoh6FM3vtp30drB4t9oe0bW9M9qzGz6yyw+8asaqQBs8bafOHm4+S4kJsN6lYmPU
wY/s8ctzqZerNI0MwBVASZCFldsyWe0NuduquYZlwg4god996srFNkVQL+o9nrmF
vmPb896DTsCdivwqs+UyaZOgp1mKxjtfco275pVATG4qSAgz/JYQBxWK6fWQr+Zv
PIzQvFLME1kh/29nUihxw93mzju5Rz1naTosx5+Fs7jPjCFocqD5Var3hkU4iu78
kNALJNx6UGOdfbqcInO30ltSm21HH1QBJnIoZf6MblELvHcvHbBNyPB8zM13suoS
y3/oD/wcXefQaMaSa5HFc30ydJHBWS+adNlVp3fdYYArZaVkFxaVjJx8fW1juPVx
54aco5j7/tZD5tfg9FCOTHqmAiOVDqjs7nZrOpsRdkdPJHq2uHbGmHGqyhZlVWNv
B+9/eiOdQyKZ5R+3vvRrmhBe9g2a28xtRI7N8KxwCov0wbA6R0h8l2UtGza6NTcn
EUdW3ptIWP216tSFdVTs
=9Ctc
-----END PGP SIGNATURE-----
Hi,
I am working on my Diploma thesis , which topic is GPRS Emulation software. This project is based on your OsmoBTS project . The idea is to delete/replace the hw-related primitives and features and redirect the whole traffic to the osmocomBB with modifications – this is the work of my colleague .
1st point: My intention is to implement gprs part only. I have analyzed the BTS codes(especially Master, Jolly/l1sap_parts and Jolly/Trx ), i dont know which one will be most suitable to use, but I think the jolly/trx or jolly/l1sap_parts common part will be probably best choise . It implements more common functions in l1sap interface compared to the Master code . Am I right ?
2nd point: I have analyzed the common code, and it is look like the main logic of the PCU(from the BTS side) is implemented in pcu_sock.c and l1sap.c , where the l1sap implements the message parsing and sending to the l1_if of the BTS , and also initializes gsmtap messages . So what I want to do is to create another socket application to connect with osmocomBB(with additional gprs implementation) , which will send/receive the BTS messages from l1sap through our custom "l1 interface" to the osmocomBB phone("how simple") . The PCU part looks, that would not need any intervention. What do you think ?
The hardest part will be to achieve , the application will be able to run witout HW (in the case of TRX branch , the bts will be able to connect to "transmiter" ). Since i am now standing on the crossroad, i need advice to make the right discision . Any suggestions and comments are highly appreciated.
Best Regards,
Dominik Tamaskovic
Hi list
I'm hacking a protocol that runs inside Huawei SCP, in between USAU
(signaling gateway within IN) and SCP node itself.
There is a small file at my disposal (few megs), to study. Unfortunately
there is no way to run a trace at the other side of USAU in parallel, so
need to guess about fields.
Here is the typical IDP found with my guestimations
000000a7 - packet length
0000feab - packet ID
00a1 - length of remained portion
1000 - (***) protocol type, 0x1000 is similar to CAMEL, other protocols are
{0100,0200,0300,0400,0500,0600,1000,1200,1300,1400,1500,1700}
01d6f100 - transaction ID
01d6f100
01ff - msg type and direction, 01FF - IDP, where FF means that it goes from
gsmSCP to gsmSCP, response is 0100
0000010000000000 - something unknown, some messages may have non-zero
values here
8c - length
30 81 - tag+len, something like IDP args
89 8001 01
82 08 84 90 xxxxxxxxxxxx - A pty, MSISDN
83 08 84 13 xxxxxxxxxxxx - B pty, MSISDN
85 01 0a
88 04 00000000
8a 04 84 13 xxxx - E.164 country code
bb 05 80038090a3
9c 01 0c
9f32 08 xxxxxxxxxxxxxxxx - IMSI (A)
bf33 02 8000
bf34 - a tag that assumes no length/value
22 02 0159
80 08 1000000000000000
81 08 91 xxxxxxxxxxxxxxx - GT of MSC(ssf)
a3 09 8007 xxxxxxxxxxxxxx location number ?
bf35 03 830111
9f36 05 207a77c430
9f37 08 91 xxxxxxxxxxxxxx - GT of MSC(ssf)
9f39 08 xxxxxxxxxxxxxxxx - some number in unknown format (neither
E.164 nor E.212)
a-pty MSISDN may be alternatively coded with 9F38 tag
The most tricky thing is to decode another protocol types (marked with ***
above) that are not so obvious
My final goal is to decode both CAP portion and amount of credit available
Is there anybody who faced similar task or who can provide additional
traces.. or can even make some traces?
An ideal case is to perform SS7 and USAU trace in parallel.
Or even has some papers on this topic
Regards,
Dmitri Soloviev
Hi all,
Fairwaves team is in Cape Town at AfricaCom from today to Thursday.
Drop me an SMS to +7(915)330-7626 and we would be happy to arrange a meeting.
Fairwaves is a complete solution provider and "just a BTS" vendor. We
provide turn-key GSM networks with VoIP backhaul, as well as BTS/BSC
for existing GSM networks extension. Our partnerships with the leading
VoIP providers allows us to provide your subscribers with the lowest
calling rates. Voice and SMS programming platform we offer, allows you
to implement complex value added services simpler, than with Twilio.
PS Read about the exciting project we're doing in Mexico with the
Rhizomatica.org team:
https://fairwaves.ru/wp/telecom-revolution-starts-in-yaviche-mexico/
--
Regards,
Alexander Chemeris.
CEO, Fairwaves LLC / ООО УмРадио
http://fairwaves.ru
I met with Alexander today at AfricaCom, and as an interested user of
OsmoCOM and the proud owner of a SysmoBTS I can say that the email was
certainly of interest to me.
It is a very small community, and whilst commercial spamming shouldn't be
allowed, I do feel that for the very small special interest group we all
participate in, some relaxed attitude may be warranted.
The list is currently unobtrusive and if it ever gets as busy as LKML, I'm
sure we can do some benevolent dicatatoring.
If it were Huawei spamming the list about the conference, then I'd agree,
but the Fairwaves guys have generously opened up their hardware designs as
well. I don't think it gets more open than that...
Regards,
Roelf.
Has anyone experienced problems with signalling using LCR/Asterisk?
In my infrastructure everything goes ok calling from MT to external phones using Asterisk, but when the external one (SIP or extension ended with Hangup() ) the call remains activated at the MT (OpenBSC side).
I will make a SIP capture tomorrow, and send it.
--
--
Leonardo Nve <lnve(a)s21sec.com>
Project Manager ACSS
Grupo S21sec Gestión, S.A.
Telefono 628275870
--
La información contenida en este mail, así como los archivos adjuntos,es
CONFIDENCIAL. Grupo S21sec Gestión, S.A. garantiza la adopción de las
medidas necesarias para asegurar el tratamiento confidencial de los datos
de carácter personal. En el caso de que el destinatario del correo
no sea usted, le rogamos envíe una notificación al remitente y lo destruya
de forma inmediata. La lectura y/o manipulación de esta información en la
situación señalada anteriormente será considerada ilegal, permitiendo a la
empresa remitente realizar acciones legales de diferente envergadura.
Currently the field nsvci_is_valid is set to 0 in the NSVC object
returned by gprs_nsvc_create(). This was a semantic change probably
introduced by commit 5e6d679d. As a result, NSVC created via the VTY
have this flag set to 0 causing RESET_ACK messages to be rejected.
This patch changes the default behaviour of gprs_nsvc_create() to
always set this flag. So it must be set to 0 explicitely if needed
which is more intuitive and thus less error prone.
It fixes breaking connections from the Gbproxy to the SGSN.
Ticket: OW#874
Sponsored-by: On-Waves ehf
---
src/gb/gprs_ns.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 55535ad..b500d9a 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -200,6 +200,7 @@ struct gprs_nsvc *gprs_nsvc_create(struct gprs_ns_inst *nsi, uint16_t nsvci)
nsvc = talloc_zero(nsi, struct gprs_nsvc);
nsvc->nsvci = nsvci;
+ nsvc->nsvci_is_valid = 1;
/* before RESET procedure: BLOCKED and DEAD */
nsvc->state = NSE_S_BLOCKED;
nsvc->nsi = nsi;
@@ -794,7 +795,6 @@ static int gprs_ns_rx_reset(struct gprs_nsvc **nsvc, struct msgb *msg)
gprs_ns_ll_str(*nsvc));
orig_nsvc = *nsvc;
*nsvc = gprs_nsvc_create((*nsvc)->nsi, nsvci);
- (*nsvc)->nsvci_is_valid = 1;
(*nsvc)->nsei = nsei;
}
}
@@ -1193,6 +1193,7 @@ int gprs_ns_vc_create(struct gprs_ns_inst *nsi, struct msgb *msg,
existing_nsvc = gprs_nsvc_by_nsvci(nsi, nsvci);
if (!existing_nsvc) {
*new_nsvc = gprs_nsvc_create(nsi, 0xffff);
+ (*new_nsvc)->nsvci_is_valid = 0;
log_set_context(GPRS_CTX_NSVC, *new_nsvc);
gprs_ns_ll_copy(*new_nsvc, fallback_nsvc);
LOGP(DNS, LOGL_INFO, "Creating NS-VC for BSS at %s\n",
@@ -1327,6 +1328,7 @@ struct gprs_ns_inst *gprs_ns_instantiate(gprs_ns_cb_t *cb, void *ctx)
/* Create the dummy NSVC that we use for sending
* messages to non-existant/unknown NS-VC's */
nsi->unknown_nsvc = gprs_nsvc_create(nsi, 0xfffe);
+ nsi->unknown_nsvc->nsvci_is_valid = 0;
llist_del(&nsi->unknown_nsvc->list);
return nsi;
@@ -1527,8 +1529,6 @@ struct gprs_nsvc *gprs_ns_nsip_connect(struct gprs_ns_inst *nsi,
nsvc = gprs_nsvc_create(nsi, nsvci);
nsvc->ip.bts_addr = *dest;
nsvc->nsei = nsei;
- nsvc->nsvci = nsvci;
- nsvc->nsvci_is_valid = 1;
nsvc->remote_end_is_sgsn = 1;
gprs_nsvc_reset(nsvc, NS_CAUSE_OM_INTERVENTION);
--
1.7.9.5
Hi,
I have installed an infrastructure IPACCESS - OpenBSC - LCR (without misdn) - Asterisk
LCR si connected via SIP to Asterisk.
The problem is that i can call MT <-> softphone, soft and MT <-> MT BUT i don't hear anything in any side ( softphone <-> softphone works well). I think is a codec problem:
Configured TCH/F FR for MT and we tried different codecs (alaw,gsm,ulaw, etc etc).
Also I tried bridging GSM and SIP interfaces on LCR config and putting rtp-bridge.
On LCR debug I see this error:
000000 DEBUG (in port.cpp/new_state() line 267): PORT(SIP-0-out) new state PORT_STATE_OUT_ALERTING --> PORT_STATE_CONNECT
nua: nua_application_event: entering
000000 DEBUG (in sip.cpp/sip_callback() line 1775): Event 7 from stack received (handle=0x94906d8)
000000 DEBUG (in sip.cpp/sip_callback() line 1825): state change received
nua: nua_application_event: entering
000000 DEBUG (in sip.cpp/sip_callback() line 1775): Event 7 from stack received (handle=0x94906d8)
000000 DEBUG (in sip.cpp/sip_callback() line 1825): state change received
nua: nua_application_event: entering
000000 DEBUG (in sip.cpp/sip_callback() line 1775): Event 5 from stack received (handle=0x94906d8)
000000 DEBUG (in sip.cpp/sip_callback() line 1837): active received
000000 TRACE 06.11.13 20:10:06.434 EP(2): CONNECT from CH(2) connect id number= present='not available'
000000 TRACE 06.11.13 20:10:06.435 EP(1): CONNECT to CH(1) connect id number= present='not available'
000000 TRACE 06.11.13 20:10:06.435 EP(1): TONE to CH(1) off
000000 TRACE 06.11.13 20:10:06.436 CH(1): MNCC_SETUP_RSP LCR<->BSC connected type=0 plan=1 present=0 screen=3 number=
000000 DEBUG (in port.cpp/new_state() line 267): PORT(GSM-0-in) new state PORT_STATE_IN_ALERTING --> PORT_STATE_CONNECT_WAITING
000000 DEBUG (in port.cpp/message_epoint() line 617): PORT(GSM-0-in) setting tone '' dir ''
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 TRACE 06.11.13 20:10:06.563 CH(1): MNCC_SETUP_COMPL_IND LCR<->BSC
000000 DEBUG (in port.cpp/new_state() line 267): PORT(GSM-0-in) new state PORT_STATE_CONNECT_WAITING --> PORT_STATE_CONNECT
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
000000 DEBUG (in gsm.cpp/audio_send() line 487): no valid CMR yet.
<--...-->
<-- THIS ERROR REPEATED CONTINUOUSLY DURING THE CALL -->
<--...-->
Configurations:
OpenBSC trx 0 config:
trx 0
rf_locked 0
arfcn 636
nominal power 23
max_power_red 0
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config SDCCH8
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
mncc-int
default-codec tch-f fr
LCR config:
interfaces.conf
[GSM]
gsm-bs
tones yes
earlyb no
[SIP]
extern
sip localhost:5059 localhost:5060
tones yes
earlyb yes
Asterisk User conf:
user.conf (one user)
[6001]
fullname = SIPPhone2
registersip = no
host = dynamic
callgroup = 1
mailbox = 6001
call-limit = 100
type = peer
username = 6001
secret = nomypasshere
transfer = yes
nat = yes
context = openBSC_Integration
dtmfmode = rfc2833
cid_number = 6001
disallow = all
allow = alaw,gsm ; I Tried different codecs
callcounter = no
hasvoicemail = no
vmsecret =
email =
threewaycalling = no
hasdirectory = no
callwaiting = no
hasmanager = no
hasagent = no
hassip = yes
hasiax = no
canreinvite = no
insecure = no
pickupgroup = 1
autoprov = yes
label = 6001
linenumber = 1
LINEKEYS = 1
Other configs seem irrelevant...
--
--
Leonardo Nve <lnve(a)s21sec.com>
Project Manager ACSS
Grupo S21sec Gestión, S.A.
Telefono 628275870
--
La información contenida en este mail, así como los archivos adjuntos,es
CONFIDENCIAL. Grupo S21sec Gestión, S.A. garantiza la adopción de las
medidas necesarias para asegurar el tratamiento confidencial de los datos
de carácter personal. En el caso de que el destinatario del correo
no sea usted, le rogamos envíe una notificación al remitente y lo destruya
de forma inmediata. La lectura y/o manipulación de esta información en la
situación señalada anteriormente será considerada ilegal, permitiendo a la
empresa remitente realizar acciones legales de diferente envergadura.
Hello Harald and everyone out there!
I have been going through your Osmocom projects especially Openbsc (osmo-nitb) and Osmobts projects and I must say it's a real great work!
I'm a lead engineer at Octasic and after looking at your work on OpenBSC and OsmoBTS, we decided to use your OpenBSC stack for internal testing of our Octasic PHY.
I know currently openbsc supports few BTS models like ip.access, sysmocom etc. I have gone through the wiki and some of the openbsc archives. I could find an archive regarding Octasic SDR, but I guess it has not gone any further.
http://lists.osmocom.org/pipermail/openbsc/2010-November/002196.html
I will be interested in osmo-nitb which I can use for network part of GSM and use osmo-bts for BTS L2/L3 stuff, which already has abis-over-ip interface to openBSC(osmo-nitb). I have Octasic SDR hardware that has the layer1 (DSP image), so all I need to implement is the interfaces between Octasic Layer1 and osmobts L2/L3 to communicate between them, which I'm working on.
I have already installed openbsc (osmo-nitb) and also osmobts on my Debian 7.1.0. I'm currently in a process of writing interfaces between Octasic L1 and osmobts.
I'm using the default config file openbsc.cfg for osmo-nitb & using ip.access config file for osmobts (with changes in the OML ip & band GSM900)
At present I'm trying to get TRX config request from osmo-nitb. However though I'm receiving few OML messages like NM_MT_SET_BTS_ATTR (pcap attached), I guess they are specific to ip.access BTS, I'm not able to see any TRX config request coming from osmo-nitb (Or by any chance is that what I'm receiving is the TRX config one?)
I'm simply sending ack for those OML messages and eventually expecting a TRX config request from osmo-nitb. I'm not sure if osmo-nitb expects something to se sent from BTS side, looks like it is simply waiting for something(see below).
I have tried to run osmo-nitb program and it look like:
./osmo-nitb -c openbsc.cfg
<0019> input/ipaccess.c:934 enabling ipaccess BSC mode
DB: Database initialized.
DB: Database prepared.
<001d> sms_queue.c:220 Attempting to send 20 SMS
<0019> input/ipa.c:323 accept()ed new link from 127.0.0.1 to port 3002
(I do not see RSL link becoming up here)
I tried turn on debug:
./osmo-nitb -c openbsc.cfg -C --debug=DRLL:DCC:DMM:DRR:DRSL:DNM
DB: Database initialized.
DB: Database prepared.
<0005> abis_nm.c:315 OC=SITE-MANAGER(00) INST=(ff,ff,ff) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=BTS(01) INST=(00,ff,ff) STATE CHG: OP_STATE=NULL AVAIL=Dependency(05)
<0005> abis_nm.c:1442 Set BTS Attr (bts=0) <0005> abis_nm.c:1763 OC=BTS(01) INST=(00,ff,ff) Sending OPSTART
<0005> abis_nm.c:315 OC=GPRS-NSE(f0) INST=(00,ff,ff) STATE CHG: OP_STATE=NULL AVAIL=Dependency(05)
<0005> abis_nm.c:315 OC=GPRS-CELL(f1) INST=(00,ff,ff) STATE CHG: OP_STATE=NULL AVAIL=Dependency(05)
<0005> abis_nm.c:315 OC=GPRS-NSVC(f2) INST=(00,00,ff) STATE CHG: OP_STATE=NULL AVAIL=Dependency(05)
<0005> abis_nm.c:315 OC=GPRS-NSVC(f2) INST=(00,01,ff) STATE CHG: OP_STATE=NULL AVAIL=Dependency(05)
<0005> abis_nm.c:315 OC=RADIO-CARRIER(02) INST=(00,00,ff) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,00) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,01) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,02) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,03) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,04) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,05) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,06) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=CHANNEL(03) INST=(00,00,07) STATE CHG: OP_STATE=NULL AVAIL=Power off(02)
<0005> abis_nm.c:315 OC=BTS(01) INST=(00,ff,ff) STATE CHG: OP_STATE=Enabled AVAIL=Dependency(05)
<0005> abis_nm.c:1442 Set BTS Attr (bts=0) <0005> abis_nm.c:1763 OC=BTS(01) INST=(00,ff,ff) Sending OPSTART
And then BSC keeps waiting here though at osmobts - osmo-nitb interface IPACCESS ping-pong goes on for keep-alive of the abis OML link and after some time,
Osmobts reports link down(see attached osmo-bts debug).
At present, I have just created socket interface from osmo-bts to octasic L1 and I'm in the process of writing interfaces for the messages.
I'm expecting 1st message, TRX config request from osmo-nitb and do not see it. I was thinking, once the abis interface is up (OML link), osmo-nitb will trigger TRX configuration and then based on the response from BTS, other configurations. Does osmo-nitb require some kind of handshake from the BTS side to send the TRX configuration?
I shall be really grateful to hear advices from the experts out there. I can give you more information if required.
Thanks,
Jason D'Souza
I just wanted to ask before I spend a lot of time with it. Does the
new HO algorithm also works with non-IP based BTSes like Nokia metro
or insite? Or at least in theory it should work?
Because the handover is not working with the current algo for Nokia, I
want to give the new one a try.
Csaba
Currently only mute_state[0] (refers to ts[0]) is inspected to
determine, whether the Radio Carrier's state is set to LOCK.
This patch changes this by looking at all channels and using LOCK
if (and only if) all channels have been muted successfully.
Sponsored-by: On-Waves ehf
---
src/osmo-bts-sysmo/oml.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index c87acb6..4c63fd5 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -342,9 +342,15 @@ int oml_mo_rf_lock_chg(struct gsm_abis_mo *mo, uint8_t mute_state[8],
int success)
{
if (success) {
- /* assume mute_state[i] == mute_state[k] */
+ int i;
+ int is_locked = 1;
+
+ for (i = 0; i < ARRAY_SIZE(mute_state); ++i)
+ if (!mute_state[i])
+ is_locked = 0;
+
mo->nm_state.administrative =
- mute_state[0] ? NM_STATE_LOCKED : NM_STATE_UNLOCKED;
+ is_locked ? NM_STATE_LOCKED : NM_STATE_UNLOCKED;
mo->procedure_pending = 0;
return oml_mo_statechg_ack(mo);
} else {
--
1.7.9.5
Hi,
I am setting up openbsc with LCR and Asterisk to provide external
connectivity for the GSM clients, and I encountered and interesting
problem.
If the GSM phone initiates a voice call towards a SIP phone it works
perfectly, the voice goes both ways, the quality is OK, everything is
fine.
But when the SIP phones initiates a voice call towards the GSM phone,
only the SIP phone can hear the voice of the GSM phone, and not the
other way around (half sided call). The connection setup works both
ways just fine.
The GSM and the SIP phone can also call the asterisk test numbers, and even can do
echo test just fine. The two GSM phones can call each other too
without any problem.
Does somebody has any idea what could go wrong?
Config:
E1 based Nokia BTS with DAHDI card and TCH/F FR codec.
The SIP phone uses Alaw, LCR also set to use Alaw.
The LCR is bridged to Asterisk, interface.conf:
[GSM]
gsm-bs
tones yes
earlyb no
bridge ast
[ast]
remote asterisk
context from-lcr
earlyb no
tones yes
bridge GSM
routing.conf is completely empty.
Astrisk SIP.conf:
[general]
context=incoming
disallow=all
allow=alaw
allow=ulaw
allow=gsm
transport=udp
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
tlsenable=no
tlsbindaddr=0.0.0.0
[5010]
type=friend
username=5010
secret=123456
dtmfmode=rfc2833
callerid="5010" <5010>
host=dynamic
canreinvite=no
context=myphones
Asterisk extensions.conf
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
; Global variables goes here
[incoming]
; Nothing should land here yet, but every context should end in
; a Hangup(), so we do that.
exten => s,1,Hangup()
[myphones]
; When we dial something from the phones we just added in
; sip.conf, Asterisk will look for a matching extension here,
; in this context.
; SIP phone
exten => 5010,1,Dial(SIP/5010)
exten => 5010,n,Hangup()
; Another SIp phone
;exten => 1001,1,Dial(SIP/1001)
;exten => 1001,n,Hangup()
; GSM phone 1
exten => 12346,1,Dial(LCR/ast/${EXTEN:0},60)
exten => 12346,n,Hangup()
; GSM phone 2
exten => 12345,1,Dial(LCR/ast/${EXTEN:0},60)
exten => 12345,n,Hangup()
; Testing extension
exten => 201,1,Answer()
exten => 201,n,Playback(levan_polka.mp3)
exten => 201,n,Hangup()
; Echo-test, it is good to test if we have sound in both directions.
; The call is answered
exten => 202,1,Answer()
; Welcome message is played
exten => 202,n,Playback(dir-welcome)
; Play information about the echo test
exten => 202,n,Playback(demo-echotest)
; Do the echo test, end with the # key
exten => 202,n,Echo()
; Plays information that the echo test is done
exten => 202,n,Playback(demo-echodone)
; Goodbye message is played
exten => 202,n,Playback(vm-goodbye)
; Hangup() ends the call, hangs up the line
exten => 202,n,Hangup()
[from-lcr]
include => myphones
exten => _X.,1,Dial(LCR/ast/${EXTEN:0},60)
exten => 5010,1,Dial(SIP/5010)
exten => 5010,n,Hangup()
BR,
Csaba
here a small patch for a bug which prevent phones to register.
more info is available in the patch
note: the same mistake may exist at other places. I only looked at how the users are read
kevin
Currently uninitialized elements of the femtobts_sysprim_type array
are mistaken as L1P_T_REQ (which is accidently the first element and
thus 0).
This patch adds a new element to the enum that has the value 0 to
detect uninitialized elements of the femtobts_sysprim_type array.
Those will then show up in the log as 'SYS Prim XXX is not a
Request!'.
This patch also adds missing definitions of the CalibTbl messages
in the femtobts_sysprim_type mapping so that the requests can still
be identified as such.
Sponsored-by: On-Waves ehf
---
src/osmo-bts-sysmo/femtobts.c | 10 ++++++++++
src/osmo-bts-sysmo/femtobts.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/src/osmo-bts-sysmo/femtobts.c b/src/osmo-bts-sysmo/femtobts.c
index 6bd9ce4..1e513bf 100644
--- a/src/osmo-bts-sysmo/femtobts.c
+++ b/src/osmo-bts-sysmo/femtobts.c
@@ -106,6 +106,16 @@ const enum l1prim_type femtobts_sysprim_type[SuperFemto_PrimId_NUM] = {
[SuperFemto_PrimId_RfClockSetupCnf] = L1P_T_CONF,
[SuperFemto_PrimId_Layer1ResetReq] = L1P_T_REQ,
[SuperFemto_PrimId_Layer1ResetCnf] = L1P_T_CONF,
+#if SUPERFEMTO_API_VERSION >= SUPERFEMTO_API(2,1,0)
+ [SuperFemto_PrimId_GetTxCalibTblReq] = L1P_T_REQ,
+ [SuperFemto_PrimId_GetTxCalibTblCnf] = L1P_T_CONF,
+ [SuperFemto_PrimId_SetTxCalibTblReq] = L1P_T_REQ,
+ [SuperFemto_PrimId_SetTxCalibTblCnf] = L1P_T_CONF,
+ [SuperFemto_PrimId_GetRxCalibTblReq] = L1P_T_REQ,
+ [SuperFemto_PrimId_GetRxCalibTblCnf] = L1P_T_CONF,
+ [SuperFemto_PrimId_SetRxCalibTblReq] = L1P_T_REQ,
+ [SuperFemto_PrimId_SetRxCalibTblCnf] = L1P_T_CONF,
+#endif
};
const struct value_string femtobts_sysprim_names[SuperFemto_PrimId_NUM+1] = {
diff --git a/src/osmo-bts-sysmo/femtobts.h b/src/osmo-bts-sysmo/femtobts.h
index 7239757..a2b8dea 100644
--- a/src/osmo-bts-sysmo/femtobts.h
+++ b/src/osmo-bts-sysmo/femtobts.h
@@ -44,6 +44,7 @@
(OSMO_MAX(sizeof(SuperFemto_Prim_t), sizeof(GsmL1_Prim_t)) + 128)
enum l1prim_type {
+ L1P_T_INVALID, /* this must be 0 to detect uninitialized elements */
L1P_T_REQ,
L1P_T_CONF,
L1P_T_IND,
--
1.7.9.5