I have some questions:
1) When I start bsc_hack bsc_init.c first establishes OML link and
initializes the bts then it establishes RSL link and bts starts
broadcasting. However, it takes so much time to start the bts. Instead of
this I want to do the following: it establishes OML link at the beginning
and only once, then when i want to start broadcasting it establishes just
the RSL link and bts will start faster since i don't have to wait for OML
link. What should be done for this?
2) If i send one or two word messages from telnet interface it is okay. But
if i send a longer message the phone could't receive the end of the message
correctly(last words may be incomplete). Did any one encounter with this
problem? What is wrong with me?
3) Could I send SMS in which extension of the sender is text not integer.
For example, i want to send an information SMS that this is a test network.
For this purpose i want to send an SMS from 'OpenBSC'. I set the extension
of the first subscriber in database as text and tried to send the SMS but
SMS wasn't delivered. What should i do?
4) Can i add SMS externally to SMS table of database?
Thanks.
Jason
From: Pablo Neira Ayuso <pablo(a)gnumonks.org>
With multiple BTS attached to a single line, we have to call
->line_update() multiple times. I broke this myself while avoiding
that A-bis over IP drivers bind to the socket several times.
To fix this situation, Harald prefers that this case is internally
handled by the ipaccess and hsl drivers by means of the driver_data
field in the e1inp_line structure.
Reported-by: Gus Bourg <gus(a)bourg.net>
---
src/e1_input.c | 4 ----
src/input/hsl.c | 20 ++++++++++++++++++++
src/input/ipaccess.c | 20 ++++++++++++++++++++
3 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/src/e1_input.c b/src/e1_input.c
index a549ba4..ad0778a 100644
--- a/src/e1_input.c
+++ b/src/e1_input.c
@@ -676,10 +676,6 @@ int e1inp_line_update(struct e1inp_line *line)
e1inp_line_get(line);
- /* This line has been already initialized, skip this. */
- if (line->refcnt > 2)
- return 0;
-
if (line->driver && line->ops && line->driver->line_update) {
rc = line->driver->line_update(line);
} else
diff --git a/src/input/hsl.c b/src/input/hsl.c
index dc7532b..60eea17 100644
--- a/src/input/hsl.c
+++ b/src/input/hsl.c
@@ -456,9 +456,29 @@ static int hsl_bts_connect(struct ipa_client_link *link)
return 0;
}
+struct hsl_line {
+ int line_already_initialized;
+};
+
static int hsl_line_update(struct e1inp_line *line)
{
int ret = -ENOENT;
+ struct hsl_line *hl;
+
+ if (!line->driver_data)
+ line->driver_data = talloc_zero(line, struct hsl_line);
+
+ if (!line->driver_data) {
+ LOGP(DLINP, LOGL_NOTICE, "hsl: OOM in line update\n");
+ return -ENOMEM;
+ }
+ hl = line->driver_data;
+
+ /* We only initialize this line once. */
+ if (hl->line_already_initialized)
+ return 0;
+
+ hl->line_already_initialized = 1;
switch(line->ops->cfg.ipa.role) {
case E1INP_LINE_R_BSC:
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index b7391b3..ea04e8d 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -813,9 +813,29 @@ static int ipaccess_bts_cb(struct ipa_client_link *link, struct msgb *msg)
return 0;
}
+struct ipaccess_line {
+ int line_already_initialized;
+};
+
static int ipaccess_line_update(struct e1inp_line *line)
{
int ret = -ENOENT;
+ struct ipaccess_line *il;
+
+ if (!line->driver_data)
+ line->driver_data = talloc_zero(line, struct ipaccess_line);
+
+ if (!line->driver_data) {
+ LOGP(DLINP, LOGL_ERROR, "ipaccess: OOM in line update\n");
+ return -ENOMEM;
+ }
+ il = line->driver_data;
+
+ /* We only initialize this line once. */
+ if (il->line_already_initialized)
+ return 0;
+
+ il->line_already_initialized = 1;
switch(line->ops->cfg.ipa.role) {
case E1INP_LINE_R_BSC: {
--
1.7.2.5
Hi
I just tried to use the newest versions of libosmocore, openbsc and lcr.
But i can't configure openbsc (the master branch). It complains about
missing libosmoabis. Where can i find this library? This happens even if
i use the pablo/libosmo-abis branch from libosmocore.
Best regards
Dennis
I've pulled everything fresh from trunk in my quest to get multiple BTS's
working on one E1 card. :) However, I'm seeing a core dump when I start
osmo-nitb in the box now.
A BT is available here:
http://pastebin.com/KAaxt5d3
This is in a configuration where I only have one BTS configured. Though I
get the same issue if I have more than one configured too.
Thanks,
Gus
Hello all,
I'm attempting to connect multiple BTS's to one E1 card. Each BTS is a
single TRX and I'm using a dahdi card plugged into a DCS. The DCS maps the
channels as follows:
Name Src Dest Speed
Type
--------------------------------------------------------------------------------
bscnok1 01.T1E1-A.02.01 01.T1E1-A.03.01 0256k D
FDX
bscnok2 01.T1E1-A.02.05 01.T1E1-A.04.01 0256k D
FDX
bscnok3 01.T1E1-A.01.09 01.T1E1-B.01.01 0256k D
FDX
So essentially:
TS 1,2,3,4 from OpenBSC (T1E1-A-02) are mapped to nok1 1,2,3,4 (T1E1-A-03)
TS 5,6,7,8 from OpenBSC (T1E1-A-02) are mapped to nok2 1,2,3,4 (T1E1-A-04)
TS 9,10,11,12 from OpenBSC (T1E1-A-02) are mapped to nok3 1,2,3,4
(T1E1-B-01)
This all works fine. The BTS operates on TS1,2,3,4 on any of the ports I
have configured. I just swap timeslots in openbsc.cfg from 1,2,3,4 to
5,6,7,8 or 9,10,11,12 and everything is happy.
Where I run into a problem is when I try to actually run multiple BTS's at
once. So I take everything defined in "bts 0" and duplicate it as "bts 1".
I change the time slots for oml, rsl, and traffic channels to match the
appropriate channels for bts 1/2. But when I go to start osmo-nitb I get an
error that it can't open /dev/dahdi/1 because it's already in use. It
appears for some reason that it's attempting to open /dev/dahdi/1 for both
BTS's even though only bts 0 uses /dev/dahdi/1 for OML - bts 1 should use
/dev/dahdi/5 and bts 2 should use /dev/dahdi/9.
My /etc/dahdi/system.conf is defined as:
span=1,1,0,ccs,hdb3,crc4
bchan=2-4,6-8,10-12
dchan=1,5,9
I'm at a loss. Has anyone tried to run multiple BTS's with dahdi on a
single E1 or T1 span? Is there something special I need to specify so that
OpenBSC doesn't grab the first dchan for each BTS?
Thanks,
Gus
_please_ use the mailing list!
On Wed, Aug 24, 2011 at 11:39:53AM -0700, Gus Bourg wrote:
> It looks like e1inp_ts needs to have a member lapd:
>
> input/dahdi.c:471:14: error: ‘struct e1inp_ts’ has no member named ‘lapd’
you are probably using a non-current version of openbsc.git and
libosmo-abis.git
> Problem is that we go into a bootstrap loop:
Well, that should be relatively easy to workaround with a small hack
like a static variable that checks whether the BTS has been
bootstrapped before. That's of course not a proper solution... I
currently don't have time to debug this further, and I am far away from
any of my E1 equipment for testing.
--
- 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)
Dear Group
>
>
>
> I have been for the past few months Following your project very
> closely and have to say how amazed I am at this project. I would love
> to do something like this here in the uk but finding hardware to do it
> is just impossible I would like to get my hands on a Simens BS-11 but
> cant source any. I will continue to watch this project but felt I
> should email you to ask if you know of anywhere that I can purchase
> hardware that able to work with your open bts software if there is any
advice you can give that would be great.
>
Regards Andre
In case we have multiple BTS attached to the same E1 line, the
e1inp_driver::line_update() function will be called multiple times,
and we need to make sure this is handled gracefully.
---
src/input/dahdi.c | 27 ++++++++++++++++++++++++---
1 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index a4dbd03..66bf53f 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -393,6 +393,10 @@ static int dahdi_e1_setup(struct e1inp_line *line)
struct osmo_fd *bfd = &e1i_ts->driver.dahdi.fd;
int dev_nr;
+ /* unregister FD if it was already registered */
+ if (bfd->list.next && bfd->list.next != LLIST_POISON1)
+ osmo_fd_unregister(bfd);
+
/* DAHDI device names/numbers just keep incrementing
* even over multiple boards. So TS1 of the second
* board will be 32 */
@@ -405,10 +409,20 @@ static int dahdi_e1_setup(struct e1inp_line *line)
switch (e1i_ts->type) {
case E1INP_TS_TYPE_NONE:
+ /* close/release LAPD instance, if any */
+ if (e1i_ts->lapd) {
+ lapd_instance_free(e1i_ts->lapd);
+ e1i_ts->lapd = NULL;
+ }
+ if (bfd->fd) {
+ close(bfd->fd);
+ bfd->fd = 0;
+ }
continue;
break;
case E1INP_TS_TYPE_SIGN:
- bfd->fd = open(openstr, O_RDWR | O_NONBLOCK);
+ if (!bfd->fd)
+ bfd->fd = open(openstr, O_RDWR | O_NONBLOCK);
if (bfd->fd == -1) {
fprintf(stderr, "%s could not open %s %s\n",
__func__, openstr, strerror(errno));
@@ -416,10 +430,17 @@ static int dahdi_e1_setup(struct e1inp_line *line)
}
bfd->when = BSC_FD_READ | BSC_FD_EXCEPT;
dahdi_set_bufinfo(bfd->fd, 1);
- e1i_ts->lapd = lapd_instance_alloc(1, dahdi_write_msg, bfd);
+ if (!e1i_ts->lapd)
+ e1i_ts->lapd = lapd_instance_alloc(1, dahdi_write_msg, bfd);
break;
case E1INP_TS_TYPE_TRAU:
- bfd->fd = open(openstr, O_RDWR | O_NONBLOCK);
+ /* close/release LAPD instance, if any */
+ if (e1i_ts->lapd) {
+ lapd_instance_free(e1i_ts->lapd);
+ e1i_ts->lapd = NULL;
+ }
+ if (!bfd->fd)
+ bfd->fd = open(openstr, O_RDWR | O_NONBLOCK);
if (bfd->fd == -1) {
fprintf(stderr, "%s could not open %s %s\n",
__func__, openstr, strerror(errno));
--
1.7.5.4
--oJ71EGRlYNjSvfq7--
Hi
We are planing to combine OpenBSC with our wifi mesh implementation in a
static setup as a demo / testbed.
We would like to implement a roaming like behavior and have actually two
approaches
1. Configuring a call forward on the phone so that it the "real"
provider forwards the call to a number that we can route into the
openBSC based network if the phone is not connected to its network. This
would allow people to call "me" eager if i connected to the "real"
network or the OpenBSC network.
Disadvantage would be that if I call somebody from the OpenBSC network
the called party would not see the number from the "real" network.
2. Use a service like sipgate one. It would also allow a unified number
for both "real" and OpenBSC network but if you call from the "real"
network it has a different number.
Besides the unlikely way of real roaming with an carrier another option
would be to fake the outgoing number. Does anybody know a service that
could be used for that (i would need to fake a german GSM number).
Does anybody know how this is handled on oil rigs or ships? Do they
have a roaming agreement ?
thanks
mfg Peter
Hi all,
I would like to test sending MMS messages to mobile devices. Out of
the box I know OpenBSC supports SMS, which I have been able to use,
however, I feel that MMS will be more tricky. My initial thoughts are
to set up OpenBSC with GPRS using this: -
http://openbsc.osmocom.org/trac/wiki/OpenBSC_GPRS
And then try to bolt some kind of MMS support on top. Before I get
started though, I was wondering if anyone had done this before and/or
had any ideas as to how I might go about implementing this.
I really would appreciate any guidance anyone could offer me.
Thanks in advance,
Simon
guys is it possible to clone comp128v2,v3 sim?
also how can we read ki of compv2,v3 sim. and if i have ki from comp126v2,v3
sim then can i make comp128v1 sim??
--
Akib Sayyed
Matrix-Shell
akibsayyed(a)gmail.com
akibsayyed(a)matrixshell.com
Mob:- +91-966-514-2243
hello guys i was wondering if we can increase range of nanoBTS for GSM. as
it is having external antenna support using power amplifier.
is it possible??
--
Akib Sayyed
Matrix-Shell
akibsayyed(a)gmail.com
akibsayyed(a)matrixshell.com
Mob:- +91-966-514-2243
Hello,
We are trying to use OpenBSC to build a few prototype services for a GSM
network.
As such, I need to know where in the code I can intercept the voice data
that is received from an MS in the BTS.
Ideally, I would like to have intercept points in the outgoing (to MS) and
incoming (from MS) at the BTS in software.
Note: I have just started to read the source code of OpenBSC, and as it is
quite extensive, a few pointers will be useful.
Feel free to correct me if I'm way off base here.
-Earlence
From: Pablo Neira Ayuso <pablo(a)gnumonks.org>
Hi Harald,
These are a couple of fixes that we have applied to openBSC
in the CCC camp. Daniel's fixes a crash, mine fixes one
malformed TCH frame issue which was the cause of quite often
unexpected closures of MNCC <-> LCR connections.
You can find them in the fixes branch.
Please, merge them.
Daniel Willmann (1):
libbsc: Don't free secondary lchan if it is NULL.
Pablo Neira Ayuso (1):
trau: fix wrong message size for GSM_TCHF_FRAME passed to MNCC
openbsc/src/libbsc/bsc_api.c | 6 +++++-
openbsc/src/libtrau/trau_mux.c | 1 +
2 files changed, 6 insertions(+), 1 deletions(-)
--
1.7.2.5
From: Pablo Neira Ayuso <pablo(a)gnumonks.org>
Hi Harald,
This patchset contains two updates for the Nokia support
in the following scenario: the BSC stops after having
configured the BTS, then the BTS is launched again but
LAPD reports unknown TEI. To fix this, we report to the
E1 driver about unknown TEI so it can resend the SABM
message.
... and one patch from Daniel who thinks that we have
to promote some logs messages from debugging to error.
You can find them in the nokia-pablo branch.
We are using them in the camp.
Please, merge them.
Daniel Willmann (1):
mncc: promote log level from debug to errors
Pablo Neira Ayuso (2):
LAPD: Propagate lapd_receive() errors to the E1 driver
NOKIA: Resend SABM on unknown TEI from LAPD
openbsc/include/openbsc/signal.h | 1 +
openbsc/src/libabis/e1_input.c | 1 +
openbsc/src/libabis/input/dahdi.c | 20 ++++++++++++++++----
openbsc/src/libabis/input/lapd.c | 14 ++++++++++++--
openbsc/src/libabis/input/lapd.h | 16 ++++++++++++++--
openbsc/src/libbsc/bts_nokia_site.c | 9 ++++++++-
openbsc/src/libmsc/gsm_04_08.c | 10 +++++-----
7 files changed, 57 insertions(+), 14 deletions(-)
Hello,
I have been testing the data setup and I found another issue. I couldn't really find out exactly what causes this. This happens rarely but it does happen time to time. I am attaching the log file of the issue. I looked through the log but I could not find anything else interesting in the log.
http://pastebin.com/tQ0mcyeu
This is the log file of the issue. I'll be glad to hear any thoughts about this.
Envoyé de mon iPhone
OpenBSC support RRLP protocol
but in RRLP we have 2 modes
E-OTD
A-GPS
what modes are supported??
if E-OTD is supported can we use OpenBSC to triangulate normal Cellphones
like Motorola C123
??
--
Akib Sayyed
Matrix-Shell
akibsayyed(a)gmail.com
akibsayyed(a)matrixshell.com
Mob:- +91-966-514-2243
Hello,I got everything up and running. Including EDGE data.
The throughput of the data from the osmo-sgsn is pretty good. But recently I
have spotted a problem with the SGSN.
The sgsn loses the phones SNDCP entity after idling or making a phone call.
Please see the log from the sgsn
http://pastebin.com/2W9dZdvW
Hello all,
I'm attempting to make my OpenBSC setup work with LCR and Asterisk. I'm not
sure if the problem that I'm running into is specific to the nature of my
setup (running a Nokia BTS) or is a misconfiguration issue with LCR. When I
run without LCR and Asterisk I can call between phones, SMS etc. With LCR I
have no such luck. I can place a call into the mobile from Asterisk, and
the mobile rings, but when I answer the call hangs up.
A pastebin of the LCR log can be found here:
http://pastebin.com/DbM3TfFp
Any insight into the cause would be much appreciated. :)
Thanks,
Gus
It seems that 24.008 Section 10.5.7.1 specifies the IE to be encoded in
little endian...
---
openbsc/src/gprs/gprs_gmm.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index 098e4c2..f83219f 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -870,6 +870,7 @@ static void process_ms_ctx_status(struct sgsn_mm_ctx *mmctx,
uint16_t pdp_status)
{
struct sgsn_pdp_ctx *pdp, *pdp2;
+ uint16_t pdp_status_reordered;
/* 24.008 4.7.5.1.3: If the PDP context status information element is
* included in ROUTING AREA UPDATE REQUEST message, then the network
* shall deactivate all those PDP contexts locally (without peer to
@@ -877,8 +878,13 @@ static void process_ms_ctx_status(struct sgsn_mm_ctx *mmctx,
* state PDP-INACTIVE on network side but are indicated by the MS as
* being in state PDP-INACTIVE. */
+ /* 24.008 10.5.7.1 indicates that the byte ordering is in fact
+ * little endian, i.e. the first octet contains NSAPI0..7 and
+ * the second payload octet NSAPI8..15 */
+ pdp_status_reordered = (pdp_status & 0xff << 8) || (pdp_status >> 8);
+
llist_for_each_entry_safe(pdp, pdp2, &mmctx->pdp_list, list) {
- if (!(pdp_status & (1 << pdp->nsapi))) {
+ if (!(pdp_status_reordered & (1 << pdp->nsapi))) {
LOGP(DMM, LOGL_NOTICE, "Dropping PDP context for NSAPI=%u "
"due to PDP CTX STATUS IE= 0x%04x\n",
pdp->nsapi, pdp_status);
@@ -977,6 +983,10 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
if (TLVP_PRESENT(&tp, GSM48_IE_GMM_PDP_CTX_STATUS)) {
uint16_t pdp_status = ntohs(*(uint16_t *)
TLVP_VAL(&tp, GSM48_IE_GMM_PDP_CTX_STATUS));
+ /* pdp_status is now in big endian, which is the wrong
+ * order. the wire encoding is little endian! We cannot
+ * simply drop the ntohs() above, as we migh be running
+ * on a big endian machine. */
process_ms_ctx_status(mmctx, pdp_status);
}
--
1.7.5.4
--iq/fWD14IMVFWBCD--
Hi openbsc@,
for the record I have just packaged libosmocore 0.1.30 and OpenBSC
0.9.13 in pkgsrc-wip, as released by Harald about 5 months ago, see:
http://openbsc.osmocom.org/trac/wiki/Tarballs
and
http://cvsweb.netbsd.se/cgi-bin/bsdweb.cgi/wip/libosmocore/http://cvsweb.netbsd.se/cgi-bin/bsdweb.cgi/wip/openbsc/
I had to apply a few changes, patches are found in the two links above
(not all of them good enough to be pushed though).
Unfortunately OpenBSC is probably not useful on NetBSD at the moment,
except with the isdn4bsd patches maybe (which I don't think are
maintained anymore). pkgsrc can be useful on Linux distributions though.
HTH anyway,
--
khorben
Hi Peter and others,
it seems like the situation regarding the GSM network at the Camp is
starting to become clearer every day.
I am still arguing that two relatively large BTS with circular antennas
are a good idea. Therefore, I have now applied for a test license with
the regulatory authority with the following parameters:
* six GSM 1800 ARFCN
* two antennas, circular, 18 meters above ground
* 5W output power on each ARFCN. I know one of my customers in Germany
has once managed to get a license for 5W, so I thought it is a good
bet we should get the same. It should be more than sufficient to
cover the camp.
* from August 2nd through August 15th, i.e. we have time for build-up
and can also run it one more day during shutdown of the camp
I should be receiving "Motorola Horizon Macro" BTSs with 3 to 6 TRX each
soon. They are able to drive something like >= 20W output power, way
more than we need. The only problem with those BTS is: We will need to
add the Motorola A-bis dialect to OpenBSC before the Camp, which could
be a tough task depending on how far they are off the standard A-bis
as specified in 08.58 and 12.21.
If we cannot make those BTS work, our options are somewhat limited.
1) nanoBTS based
The nanoBTS are 200mW only, so we would need a booster. Those cost
about 1000 EUR for 6W downlink power + 18dB uplink LNA. Who is going
to fund that? Also, we would need a combiner/splitter to run
something like a 3-TRX setup.
2) Ericsson RBS
I should have two RBS 2308 (4TRX each) soon, but both of them are GSM
1900. It is unlikely that we ge a license, and a lot of phones probably
don't support it. So unless they can somehow be converted to 1800
MHz units, they are not a good fit either :/
3) Siemens BS-11
All of them are GSM 900. No way to get a license in Germany, sorry.
So we basically _have to_ make the Motorola Horizon work...
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)