Hi everyone,
I few days ago, during some usual R&D process, I noticed the following
messages, appearing in the log output of OsmocomBB/mobile application:
"ACCH message type 0xXX unknown."
The network, a phone was connected to, was may own and based on more
or less recent versions of OsmoNiTB, OsmoBTS, and OsmoTRX. Despite I
used to see such messages before, I didn't pay too much attention.
But this time I've decided to figure out, what's wrong there...
The source of such messages is the gsm48_rr.c / gsm48_rr_rx_acch():
static int gsm48_rr_rx_acch(struct osmocom_ms *ms, struct msgb *msg)
{
// ...
struct gsm48_system_information_type_header *sih = msgb_l3(msg);
// ...
switch (sih->system_information) {
case GSM48_MT_RR_SYSINFO_5:
return gsm48_rr_rx_sysinfo5(ms, msg);
case GSM48_MT_RR_SYSINFO_5bis:
return gsm48_rr_rx_sysinfo5bis(ms, msg);
case GSM48_MT_RR_SYSINFO_5ter:
return gsm48_rr_rx_sysinfo5ter(ms, msg);
case GSM48_MT_RR_SYSINFO_6:
return gsm48_rr_rx_sysinfo6(ms, msg);
default:
LOGP(DRR, LOGL_NOTICE, "ACCH message type 0x%02x unknown.\n",
sih->system_information);
return -EINVAL;
}
}
To get I bit more details, I modified this function to print the
whole L3 payload, and got some interesting results. As it turned
out, the payloads were shifted one byte left - there was no
'l2_plen', which is assumed by:
/* Section 9.1.3x System information Type header */
struct gsm48_system_information_type_header {
uint8_t l2_plen;
uint8_t rr_protocol_discriminator :4,
skip_indicator:4;
uint8_t system_information;
} __attribute__ ((packed));
So, my first idea was that this is a bug of OsmocomBB, that
would be fairly easy to fix, so after a quick look at the
GSM 04.08 specification I wrote (and merged :/) this:
https://gerrit.osmocom.org/#/c/5204/
And everything was great, until I connected a 'patched' mobile to
a commercial mobile network... And all SI messages during a
dedicated connection were false-identified as SI5ter. This seemed
strange to me, so I decided to compare a SI message from commercial
network with a message captured in my own one:
https://habrastorage.org/webt/t8/zs/vv/t8zsvvjjglzfisnjqlnnsy4kgas.png
And this confused me even more, then I've expected. Why there is 0x49?
Wireshark false-identified this message as something related to SMS...
What if this is exactly the 'l2_plen' assumed in OsmocomBB before?
I looked at the specifications again, and found out that initially I
refered an outdated 5.3.0 version, which was the first link in Google:
http://www.etsi.org/deliver/etsi_gts/04/0408/05.03.00_60/gsmts_0408v050300p…
while the latest one is 7.21.0:
http://www.etsi.org/deliver/etsi_ts/100900_100999/100940/07.21.00_60/ts_100…
So, I compared the 9.1.37-40 sections of both versions, and bingo!
In the higher version ACCH System Information messages do have the
'L2 Pseudo Length' (10.5.2.19) field.
Finally, what I've learned:
- OsmocomBB / mobile follows the new version here (with l2_plen);
- OsmoNiTB generates the ACCH SI messages without the l2_plen;
- Recent Wireshark versions fail to decode the ACCH SI messages
with l2_plen, while older ones are able to do that;
- I should not merge the changes so quick.
My questions are:
- Which way of composing the SI messages is correct?
- If both are correct, how to parse them correctly?
- Should we change OsmoNiTB / OsmoBSC to follow the latest specs?
And of course, I have to revert the change I've merged.
With best regards,
Vadim Yanitskiy.
Dear Osmocom community,
it's already end of January and OsmoDevCon 2018 in April is getting closer
and closer.
As indicated before, I would like to group the topics by days and put
together at least a rough framework shcedule, so that people
with specific interests don't have to be present for four full days to make
sure they don't miss anything.
So I'd like to re-invite all attendees to consider adding a topic/porposal
to the wiki page at https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCon2018#section-9
so that we can group different topic areas and put together a rough schedule
outline.
A proposal doesn't mean you have to give a talk. It could be anything, including
* a talk that you would want to listen to, and you're looking for somebody to give it
* a discussion about a certain topic
* a workshop / hands on session
* lightning talks?
Like any community event, OsmoDevCon lives by its contributors. I can't wait to
hear about all the things you've been up to. Thanks!
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)
Hi,
the lua binding code was added to be able to automate OpenBSC tests. In theory we should be able to do this for SMS and UpdateLocation (call handling with MNCC exposing is left as a todo) but in practice we miss a piece of software to coordinate this and run the test. We miss it because it is an interesting problem but also I lost time on switching countries, learning new tricks at a project...
The basic testing structure looks easy as well. We want to define the number of concurrent subscribers (0, 10, 100, 1000, n) and to make it simple a single test (UL, send SMS, t) and execute the same test for each subscriber and call it a success if y% of tests succeed within time T. The way to measure this is easy as well. The lua script would print some data (e.g. the name of the ms) when it starts and completes.
For some degrees of freedom I don't have a good idea.. and feedback is welcome.
I am not sure if I should spawn, configure, add subscribers, a flavor of Osmocom cellular? I look into having some set of templates for the config, the stack to launch and in concept it looks awfully similar to something the GSM tester is doing. Shall we leave virtbts/cellular to the Osmocom tester and just focus on coordinating mobile? My feeling is to leave this to the Osmo GSM tester.
If we have n subscribers I would launch m copies of "mobile" (but run multiple MS in a single binary). So with 4 MS per mobile process and 10k subs we would end with 2.5k processes + many log messages coming from each. Would that scale with python? Should we look into doing this one in Go? Or can some of GSM tester be used (the template part)? I would probably design this concurrently with Go(besides being the first).
any ideas/comments?
holger
Hi Ivan,
as I'm working towards load-based handover and incorporating your patches, I
found that most of it is concerned with libmsc. In contrast, I am currently
working on osmo-bsc, in libbsc, and would like to ask your advice.
Some parts of the patch aren't easy to understand for me, and I'd like to make
sure that I am not dismissing parts of it as non-applicable to libbsc even
though they might be important.
Since your patches were written, the code has changed. Now that we have the
separate osmo-bsc, we will need two layers of handover: intra-BSC and
inter-BSC.
Intra-BSC is a handover between two cells that are serviced by the same BSC,
and the higher layers (MSC) should not even notice that anything has happened
-- MSC has asked the BSC to service a call by BSSAP Assignment, and the BSC is
free to choose and change around the lchans it assigns to that. That is the
layer I'm currently dug into.
Inter-BSC is a handover between cells that are serviced by two different BSCs.
That seems to be the land your patch is improving. The MSC is involved and so
is MNCC.
(Both MSC and BSC levels will need their own DTAP cache, and they are by
definition completely independent -- MSC caches the DTAP coming from MNCC
during Inter-BSC handover, BSC caches DTAP from MSC during Intra-BSC handover.)
Since your patch is applied onto openbsc.git, where all of BSC and MSC are
still one osmo-nitb, I want to make sure that I sort your patch right. Do some
of its semantics apply to osmo-bsc master, even if the code changed?
The smaller patches are either already applied to osmo-bsc master, or I've
submitted them on gerrit just now:
handover_decision: Add more log messages to get more information about HO causes in logs
handover_decision: Fix condition for power budget handover attempt
handover_logic: set correct link to bts for subscriber_connection in case of moving this connection to another bts
Remaining are a small and *the* complex one:
transaction: Add new function trans_find_by_lchan
handover: Implement proper handover procedure handling at any stage of the call
Here is the last one with inline questions, I hope they are not too stupid; or
too long, it ended up being a lot to read. Thanks in advance for taking a look:
> commit f7f4dc5e3b0dd61b8322946597147baef5d0464b
> Author: Ivan Kluchnikov <kluchnikovi(a)gmail.com>
> Date: Wed Aug 23 18:09:50 2017 +0300
>
> handover: Implement proper handover procedure handling at any stage of the call
>
> Enhancements for each stage of handover procedure should be implemented in order to support handover at any stage of the call.
> For these purposes new in_handover state and ho_queue for call control messages was introduced for gsm_subscriber_connection.
>
> Stage 1: HO-Command is sent to MS
> gsm_subscriber_connection state should be changed to in_handover=1.
> In this state all transmission of signalling layer messages (except RR messages needed for handover procedure)
> should be suspended until resuming is indicated.
> All call control messages for connection received from network side should be buffered in ho_queue.
> All call control messages for connection received from MS side should be ignored.
> Channel mode modification procedures should be also suspended.
>
> Stage 2: HO-Detect is received from MS
> Audio path should be switched on network side.
>
> Stage 3-1: HO-Complete is received from MS
> Resumption procedure after successful handover should be performed:
> - gsm_subscriber_connection state should be changed to normal (in_handover=0).
> - all buffered call control messages (ho_queue) should be sent to MS on new lchan.
> - suspended channel mode modification procedures should be performed on new lchan.
>
> Stage 3-2: HO-Fail is received from MS
> Resumption procedure after failed handover should be performed:
> - gsm_subscriber_connection state should be changed to normal (in_handover=0).
> - all buffered call control messages (ho_queue) should be sent to MS on old lchan.
> - suspended channel mode modification procedures should be performed on old lchan.
>
> Stage 3-3: T3103 expired: Handover has failed without HO-Complete or HO-Fail
> Resumption procedure should not be performed in case of T3103 expired:
> - gsm_subscriber_connection state should be changed to normal (in_handover=0).
> - all buffered call control messages (ho_queue) should be cleaned without sending them to MS.
> - suspended channel mode modification procedures should not be performed.
>
> Change-Id: Icb9b5c35ef0c894af2ea762e539f1a9216447fb7
>
> diff --git a/openbsc/include/openbsc/bsc_api.h b/openbsc/include/openbsc/bsc_api.h
> index 3a931199..baacbeda 100644
> --- a/openbsc/include/openbsc/bsc_api.h
> +++ b/openbsc/include/openbsc/bsc_api.h
> @@ -51,5 +51,6 @@ int gsm0808_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
> int gsm0808_page(struct gsm_bts *bts, unsigned int page_group,
> unsigned int mi_len, uint8_t *mi, int chan_type);
> int gsm0808_clear(struct gsm_subscriber_connection *conn);
> +int gsm0808_ho_clear(struct gsm_subscriber_connection *conn);
>
> #endif
> diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
> index ac573c49..542b2611 100644
> --- a/openbsc/include/openbsc/gsm_data.h
> +++ b/openbsc/include/openbsc/gsm_data.h
> @@ -138,6 +138,8 @@ struct gsm_subscriber_connection {
> struct gsm_network *network;
>
> int in_release;
> + int in_handover;
> + struct llist_head ho_queue;
> struct gsm_lchan *lchan; /* BSC */
> struct gsm_lchan *ho_lchan; /* BSC */
> struct gsm_bts *bts; /* BSC */
> diff --git a/openbsc/src/libbsc/bsc_api.c b/openbsc/src/libbsc/bsc_api.c
> index 8a4c85ff..71e82d03 100644
> --- a/openbsc/src/libbsc/bsc_api.c
> +++ b/openbsc/src/libbsc/bsc_api.c
> @@ -253,11 +253,14 @@ struct gsm_subscriber_connection *bsc_subscr_con_allocate(struct gsm_lchan *lcha
> conn->bts = lchan->ts->trx->bts;
> lchan->conn = conn;
> llist_add_tail(&conn->entry, &net->subscr_conns);
> + INIT_LLIST_HEAD(&conn->ho_queue);
> return conn;
> }
>
> void bsc_subscr_con_free(struct gsm_subscriber_connection *conn)
> {
> + struct msgb *msg;
> +
> if (!conn)
> return;
>
> @@ -283,6 +286,11 @@ void bsc_subscr_con_free(struct gsm_subscriber_connection *conn)
> conn->secondary_lchan->conn = NULL;
> }
>
> + while (!llist_empty(&conn->ho_queue)) {
> + msg = msgb_dequeue(&conn->ho_queue);
> + msgb_free(msg);
> + }
> +
> llist_del(&conn->entry);
> talloc_free(conn);
> }
> @@ -747,6 +755,17 @@ int gsm0808_clear(struct gsm_subscriber_connection *conn)
> return 0;
> }
>
> +/*
> + * Release handover RF Channel.
> + */
> +int gsm0808_ho_clear(struct gsm_subscriber_connection *conn)
> +{
> + if (conn->ho_lchan)
> + bsc_clear_handover(conn, 1);
> +
> + return 0;
> +}
> +
> static void send_sapi_reject(struct gsm_subscriber_connection *conn, int link_id)
> {
> struct bsc_api *api;
> diff --git a/openbsc/src/libbsc/handover_logic.c b/openbsc/src/libbsc/handover_logic.c
> index af4e8013..b7085c34 100644
> --- a/openbsc/src/libbsc/handover_logic.c
> +++ b/openbsc/src/libbsc/handover_logic.c
> @@ -186,10 +186,17 @@ static void ho_T3103_cb(void *_ho)
> {
> struct bsc_handover *ho = _ho;
> struct gsm_network *net = ho->new_lchan->ts->trx->bts->network;
> + struct msgb *msg;
>
> DEBUGP(DHO, "HO T3103 expired\n");
> rate_ctr_inc(&net->bsc_ctrs->ctr[BSC_CTR_HANDOVER_TIMEOUT]);
>
> + ho->new_lchan->conn->in_handover = 0;
> + while (!llist_empty(&ho->new_lchan->conn->ho_queue)) {
> + msg = msgb_dequeue(&ho->new_lchan->conn->ho_queue);
> + msgb_free(msg);
> + }
> +
(Your ho_queue seems to live in libbsc, while most of the patch seems to be
concerned with libmsc. But nevermind, from jolly's patches I already have a
similar queue in osmo-bsc, and we'll probably use yours for libmsc.)
> ho->new_lchan->conn->ho_lchan = NULL;
> ho->new_lchan->conn = NULL;
> lchan_release(ho->new_lchan, 0, RSL_REL_LOCAL_END);
> @@ -214,6 +221,8 @@ static int ho_chan_activ_ack(struct gsm_lchan *new_lchan)
>
> gsm48_send_ho_cmd(ho->old_lchan, new_lchan, 0, ho->ho_ref);
>
> + new_lchan->conn->in_handover = 1;
> +
In current osmo-bsc master, we already set conn->ho_lchan before sending out
the chan activation request. I'd actually assume setting the flag only now,
after the activ ack, is a bit too late?
> /* start T3103. We can continue either with T3103 expiration,
> * 04.08 HANDOVER COMPLETE or 04.08 HANDOVER FAIL */
> ho->T3103.cb = ho_T3103_cb;
> @@ -221,7 +230,8 @@ static int ho_chan_activ_ack(struct gsm_lchan *new_lchan)
> osmo_timer_schedule(&ho->T3103, 10, 0);
>
> /* create a RTP connection */
> - if (is_ipaccess_bts(new_lchan->ts->trx->bts))
> + if (is_ipaccess_bts(new_lchan->ts->trx->bts) &&
> + new_lchan->tch_mode != GSM48_CMODE_SIGN)
> rsl_ipacc_crcx(new_lchan);
Please explain ... what case / behavior is this fixing?
Do we ever see CMODE_SIGN handovers?
Would we also need to check for GSM48_CMODE_DATA_*?
> @@ -273,6 +283,11 @@ static int ho_gsm48_ho_compl(struct gsm_lchan *new_lchan)
> if (is_e1_bts(new_lchan->conn->bts))
> switch_trau_mux(ho->old_lchan, new_lchan);
>
> + if (ho->old_lchan->conn->mncc_rtp_connect_pending) {
> + new_lchan->abis_ip.connect_port = ho->old_lchan->abis_ip.connect_port;
> + new_lchan->abis_ip.connect_ip = ho->old_lchan->abis_ip.connect_ip;
> + }
> +
So if an RTP connect to MNCC is pending, we copy the old lchan's RTP port and
IP? Which is this, the MNCC / call router side IP and port?
Why not set this at the initiation of the HO already?
> @@ -295,27 +310,9 @@ static int ho_gsm48_ho_compl(struct gsm_lchan *new_lchan)
> static int ho_gsm48_ho_fail(struct gsm_lchan *old_lchan)
> {
> struct gsm_network *net = old_lchan->ts->trx->bts->network;
> - struct bsc_handover *ho;
> - struct gsm_lchan *new_lchan;
> -
> - ho = bsc_ho_by_old_lchan(old_lchan);
> - if (!ho) {
> - LOGP(DHO, LOGL_ERROR, "unable to find HO record\n");
> - return -ENODEV;
> - }
>
> rate_ctr_inc(&net->bsc_ctrs->ctr[BSC_CTR_HANDOVER_FAILED]);
>
> - new_lchan = ho->new_lchan;
> -
> - /* release the channel and forget about it */
> - ho->new_lchan->conn->ho_lchan = NULL;
> - ho->new_lchan->conn = NULL;
> - handover_free(ho);
> -
> - lchan_release(new_lchan, 0, RSL_REL_LOCAL_END);
> -
> -
I'm puzzled by this removal. No actions during ho_fail? Is this really
intended, or just some rebase artifact?
> return 0;
> }
>
> diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
> index e5402d0a..84338d72 100644
> --- a/openbsc/src/libmsc/gsm_04_08.c
> +++ b/openbsc/src/libmsc/gsm_04_08.c
> @@ -147,6 +147,15 @@ static int gsm48_conn_sendmsg(struct msgb *msg, struct gsm_subscriber_connection
> sign_link->trx->bts->nr,
> sign_link->trx->nr, msg->lchan->ts->nr,
> gh->proto_discr, gh->msg_type);
> +
> + if (conn->in_handover) {
> + msgb_enqueue(&conn->ho_queue, msg);
> + DEBUGP(DCC, "(bts %d trx %d ts %d) Suspend message sending to MS, "
> + "active HO procedure.\n",
> + sign_link->trx->bts->nr,
> + sign_link->trx->nr, msg->lchan->ts->nr);
> + return 0;
> + }
(here DTAP handled in libmsc ends up in the ho_queue that otherwise seems to
live in libbsc ... as I said above this queue will probably move to libmsc
altogether to become part of osmo-msc master.)
> }
>
> return gsm0808_submit_dtap(conn, msg, 0, 0);
> @@ -1749,11 +1758,8 @@ static int switch_for_handover(struct gsm_lchan *old_lchan,
> struct rtp_socket *old_rs, *new_rs, *other_rs;
>
> /* Ask the new socket to send to the already known port. */
> - if (new_lchan->conn->mncc_rtp_bridge) {
> - LOGP(DHO, LOGL_DEBUG, "Forwarding RTP\n");
> - rsl_ipacc_mdcx(new_lchan,
> - old_lchan->abis_ip.connect_ip,
> - old_lchan->abis_ip.connect_port, 0);
> + if (new_lchan->ts->trx->bts->network->mncc_state) {
> + /* Audio path should be switched after receiving ho detect message.*/
> return 0;
> }
I notice that in the current head, the entire switch_for_handover() has been
dropped; it was doing libbsc lchan stuff from within libmsc. Hence we must have
added similar logic in osmo-bsc.git and completely dropped this.
I think the commit re-implementing handover in osmo-bsc is
http://git.osmocom.org/osmo-bsc/commit/?id=39c609b7c924524172ad311bdf89f92b…
It appears that lchan->abis_ip.connect_ip and connect_port aren't used at all
in osmo-bsc master, but are still present in the struct. I'll ask others about
that.
In any case, the code base has changed substantially, and this patch hunk no
longer applies at all.
Am I interpreting this hunk correctly: it moves the ipacc_mdcx to tell the new
lchan about its RTP peer to a later stage?
In current osmo-bsc master, it seems that this ipacc_mdcx happens as soon as
the ipacc_crcx is complete, seen in osmo-bsc/src/osmo-bsc/osmo_bsc_audio.c in
handle_abisip_signal(), always using the IP:port the MSC sent us.
>
> @@ -1821,8 +1827,10 @@ static int handle_abisip_signal(unsigned int subsys, unsigned int signal,
> if (subsys != SS_ABISIP)
> return 0;
>
> + net = lchan->ts->trx->bts->network;
> +
> /* RTP bridge handling */
> - if (lchan->conn && lchan->conn->mncc_rtp_bridge)
> + if (lchan->conn && net->mncc_state)
> return tch_rtp_signal(lchan, signal);
What are the semantics here? It seems odd to move from a check of a
conn-specific state (conn->mncc_rtp_bridge) to a check of a global value
(net->mncc_state).
In any case, this is MNCC related and should not impact Intra-BSC handover,
right?
>
> /* in case we use direct BTS-to-BTS RTP */
> @@ -1851,7 +1859,6 @@ static int handle_abisip_signal(unsigned int subsys, unsigned int signal,
>
> /* check if any transactions on this lchan still have
> * a tch_recv_mncc request pending */
> - net = lchan->ts->trx->bts->network;
> llist_for_each_entry(trans, &net->trans_list, entry) {
> if (trans->conn && trans->conn->lchan == lchan && trans->tch_recv) {
> DEBUGP(DCC, "pending tch_recv_mncc request\n");
> @@ -2017,6 +2024,13 @@ static int tch_recv_mncc(struct gsm_network *net, uint32_t callref, int enable)
> switch (bts->type) {
> case GSM_BTS_TYPE_NANOBTS:
> case GSM_BTS_TYPE_OSMO_SYSMO:
> if (ipacc_rtp_direct) {
> LOGP(DCC, LOGL_ERROR, "Error: RTP proxy is disabled\n");
> return -EINVAL;
> }
> + /* RTP bridge handling */
> + if (lchan->conn && net->mncc_state) {
> + return 0;
> + }
If we have a conn and using external MNCC, don't continue at all? I'm not
following, would be nice if the comment explained why we need to drop out here.
(added some more code context manually)
> /* In case, we don't have a RTP socket to the BTS yet, the BTS
> * will not be connected to our RTP proxy and the socket will
> * not be assigned to the application interface. This method
> * will be called again, once the audio socket is created and
> * connected. */
> if (!lchan->abis_ip.rtp_socket) {
> DEBUGP(DCC, "queue tch_recv_mncc request (%d)\n", enable);
> return 0;
> }
> if (enable) {
> /* connect the TCH's to our RTP proxy */
> rc = rsl_ipacc_mdcx_to_rtpsock(lchan);
> if (rc < 0)
> return rc;
> /* assign socket to application interface */
> rtp_socket_upstream(lchan->abis_ip.rtp_socket,
> net, callref);
> } else
> rtp_socket_upstream(lchan->abis_ip.rtp_socket,
> net, 0);
> break;
>
> @@ -3325,6 +3339,41 @@ static void mncc_recv_rtp_err(struct gsm_network *net, uint32_t callref, int cmd
> return mncc_recv_rtp(net, callref, cmd, 0, 0, 0, 0);
> }
>
> +static void mncc_recv_rtp_modify(struct gsm_lchan *lchan, uint32_t callref)
This is to tell the call router that the payload type has changed, right? I've
asked in the redmine about whether/how we'd convey an RTP payload change to the
MNCC in case of an Intra-BSC handover...
https://osmocom.org/issues/1606#note-45
> +{
> + int msg_type;
> + struct gsm_network *net = lchan->ts->trx->bts->network;
> +
> + LOGP(DMNCC, LOGL_NOTICE, "%s sending pending RTP modify ind.\n",
> + gsm_lchan_name(lchan));
> +
> + switch (lchan->abis_ip.rtp_payload) {
> + case RTP_PT_GSM_FULL:
> + msg_type = GSM_TCHF_FRAME;
> + break;
> + case RTP_PT_GSM_EFR:
> + msg_type = GSM_TCHF_FRAME_EFR;
> + break;
> + case RTP_PT_GSM_HALF:
> + msg_type = GSM_TCHH_FRAME;
> + break;
> + case RTP_PT_AMR:
> + msg_type = GSM_TCH_FRAME_AMR;
> + break;
> + default:
> + LOGP(DMNCC, LOGL_ERROR, "%s unknown payload type %d\n",
> + gsm_lchan_name(lchan), lchan->abis_ip.rtp_payload);
> + msg_type = 0;
> + break;
> + }
> +
> + mncc_recv_rtp(net, callref, MNCC_RTP_MODIFY,
> + lchan->abis_ip.bound_ip,
> + lchan->abis_ip.bound_port,
> + lchan->abis_ip.rtp_payload,
> + msg_type);
> +}
> +
> static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
> {
> struct gsm_bts *bts;
> @@ -3374,6 +3423,9 @@ static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
> LOGP(DMNCC, LOGL_DEBUG, "RTP create: codec=%s, chan_type=%s\n",
> get_value_string(gsm48_chan_mode_names, m),
> get_value_string(gsm_chan_t_names, lchan->type));
> + if (trans->conn->in_handover) {
> + return 0;
> + }
Am I reading right: if we're doing handover, the MSC shouldn't sent another
BSSAP Assignment to the BSC; instead, the BSC level figures out another lchan
and done ... ?
> return gsm0808_assign_req(trans->conn, m,
> lchan->type != GSM_LCHAN_TCH_H);
> }
> @@ -3420,23 +3472,21 @@ static int tch_rtp_connect(struct gsm_network *net, void *arg)
> * same package!
> */
> trans->conn->mncc_rtp_connect_pending = 1;
> + if (trans->conn->in_handover) {
> + lchan->abis_ip.connect_port = rtp->port;
> + lchan->abis_ip.connect_ip = rtp->ip;
> + return 0;
> + }
> return rsl_ipacc_mdcx(lchan, rtp->ip, rtp->port, 0);
We're not telling the BTS about the call router's IP:port anymore?
Please explain...
> }
>
> static int tch_rtp_signal(struct gsm_lchan *lchan, int signal)
> {
> struct gsm_network *net;
> - struct gsm_trans *tmp, *trans = NULL;
> + struct gsm_trans *trans;
>
> net = lchan->ts->trx->bts->network;
> - llist_for_each_entry(tmp, &net->trans_list, entry) {
> - if (!tmp->conn)
> - continue;
> - if (tmp->conn->lchan != lchan && tmp->conn->ho_lchan != lchan)
> - continue;
> - trans = tmp;
> - break;
> - }
> + trans = trans_find_by_lchan(lchan);
>
> if (!trans) {
> LOGP(DMNCC, LOGL_ERROR, "%s IPA abis signal but no transaction.\n",
> @@ -3459,7 +3509,7 @@ static int tch_rtp_signal(struct gsm_lchan *lchan, int signal)
> maybe_switch_for_handover(lchan);
> break;
> case S_ABISIP_MDCX_ACK:
> - if (lchan->conn->mncc_rtp_connect_pending) {
> + if (lchan->conn->mncc_rtp_connect_pending && !lchan->conn->in_handover) {
if we're in handover, we don't need to tell MNCC that RTP got connected,
because that already happened when the call got established initially?
So mncc_rtp_connect_pending has a second meaning during handover?
> lchan->conn->mncc_rtp_connect_pending = 0;
> LOGP(DMNCC, LOGL_NOTICE, "%s sending pending RTP connect ind.\n",
> gsm_lchan_name(lchan));
> mncc_recv_rtp_sock(net, trans, MNCC_RTP_CONNECT);
> }
> break;
> @@ -3471,6 +3521,134 @@ static int tch_rtp_signal(struct gsm_lchan *lchan, int signal)
> return 0;
> }
>
> +static void ho_queue_clean(struct gsm_subscriber_connection *conn)
> +{
> + struct msgb *msg;
> + while (!llist_empty(&conn->ho_queue)) {
> + msg = msgb_dequeue(&conn->ho_queue);
> + msgb_free(msg);
> + }
> +}
> +
> +static void ho_resumption(struct gsm_lchan *lchan, struct gsm_trans *trans)
> +{
> + struct msgb *msg;
> + enum gsm48_chan_mode m;
> +
> + while (!llist_empty(&lchan->conn->ho_queue)) {
> + msg = msgb_dequeue(&lchan->conn->ho_queue);
> + gsm48_conn_sendmsg(msg, lchan->conn, trans);
> + }
> +
> + if (trans->conn->mncc_rtp_create_pending &&
> + lchan->tch_mode == GSM48_CMODE_SIGN) {
> + m = mncc_codec_for_mode(lchan->type);
> + gsm0808_assign_req(lchan->conn, m, lchan->type != GSM_LCHAN_TCH_H);
Wait, now we *do* send a BSSAP Assignment after all?
(excuse if I'm being noob, I'm still finding my way through handover in general)
shouldn't we rather dequeue the cached DTAP after this instead of before?
> + }
> +
> + if (trans->conn->mncc_rtp_connect_pending) {
> + rsl_ipacc_mdcx(lchan, lchan->abis_ip.connect_ip, lchan->abis_ip.connect_port, 0);
> + }
> +}
> +
> +static int ho_complete(struct gsm_lchan *new_lchan)
> +{
> + struct gsm_trans *trans;
> +
> + new_lchan->conn->in_handover = 0;
> + trans = trans_find_by_lchan(new_lchan);
> + if (!trans) {
> + LOGP(DHO, LOGL_ERROR, "%s HO detected, but no transaction for new_lchan.\n",
> + gsm_lchan_name(new_lchan));
> + ho_queue_clean(new_lchan->conn);
> + return 0;
> + }
> +
> + ho_resumption(new_lchan, trans);
> + return 0;
> +}
> +
> +static int ho_fail(struct gsm_lchan *old_lchan)
> +{
> + struct gsm_trans *trans;
> +
> + old_lchan->conn->in_handover = 0;
> + trans = trans_find_by_lchan(old_lchan);
> + if (trans)
> + ho_resumption(old_lchan, trans);
> + else {
> + LOGP(DHO, LOGL_ERROR, "%s HO fail, but no transaction for old_lchan.\n",
> + gsm_lchan_name(old_lchan));
> + ho_queue_clean(old_lchan->conn);
> + }
> +
> + gsm0808_ho_clear(old_lchan->conn);
> + return 0;
> +}
> +
> +static int ho_detect(struct gsm_lchan *new_lchan)
> +{
> + struct gsm_trans *trans;
> + struct gsm_lchan *old_lchan;
> +
> + trans = trans_find_by_lchan(new_lchan);
> +
> + if (!trans) {
> + LOGP(DHO, LOGL_ERROR, "%s HO detected, but no transaction for new_lchan"
> + " with enabled tch_recv.\n",
> + gsm_lchan_name(new_lchan));
> + return 0;
> + }
> +
> + if (!new_lchan->conn->mncc_rtp_bridge) {
> + LOGP(DHO, LOGL_ERROR, "%s HO detected, but connection not in mncc_rtp_bridge mode.\n",
> + gsm_lchan_name(new_lchan));
> + return 0;
> + }
> +
> + old_lchan = bsc_handover_pending(new_lchan);
> + if (!old_lchan) {
> + LOGP(DHO, LOGL_ERROR, "%s HO detected, but no old_lchan for handover.\n",
> + gsm_lchan_name(new_lchan));
> + return 0;
> + }
> +
> + LOGP(DHO, LOGL_DEBUG, "HO detected, forwarding RTP\n");
> + rsl_ipacc_mdcx(new_lchan,
> + old_lchan->abis_ip.connect_ip,
> + old_lchan->abis_ip.connect_port, 0);
> +
> + mncc_recv_rtp_modify(new_lchan, trans->callref);
> +
> + return 0;
> +}
> +
> +/* some other part of the code sends us a signal */
> +static int handle_lchan_signal(unsigned int subsys, unsigned int signal,
> + void *handler_data, void *signal_data)
> +{
> + struct lchan_signal_data *lchan_data;
> + struct gsm_lchan *lchan;
> +
> + lchan_data = signal_data;
> + switch (subsys) {
> + case SS_LCHAN:
> + lchan = lchan_data->lchan;
> + if (!lchan->conn)
> + return 0;
> + switch (signal) {
> + case S_LCHAN_HANDOVER_DETECT:
> + return ho_detect(lchan);
> + case S_LCHAN_HANDOVER_COMPL:
> + return ho_complete(lchan);
> + case S_LCHAN_HANDOVER_FAIL:
> + return ho_fail(lchan);
> + }
> + break;
> + }
> +
> + return 0;
> +}
>
> static struct downstate {
> uint32_t states;
> @@ -3853,6 +4031,11 @@ static int gsm0408_rcv_cc(struct gsm_subscriber_connection *conn, struct msgb *m
> gsm48_cc_msg_name(msg_type), trans?(trans->cc.state):0,
> gsm48_cc_state_name(trans?(trans->cc.state):0));
>
> + if (conn->in_handover) {
> + DEBUGP(DCC, "Message unhandled, handover procedure.\n");
> + return 0;
> + }
> +
If in handover, drop all CC on the floor?
How about a call release, i.e. I hang up while I'm coincidentally being
handovered?
> /* Create transaction */
> if (!trans) {
> DEBUGP(DCC, "Unknown transaction ID %x, "
>
>
>
Thanks again!
~N
Hi,
I know that TTCN-3 is still new to a lot of you, but we are writing tons of
integration testing against the various osmocom programs in it. It is quite
amazing technology, and I would like to ask you to bear with me reading this mail :)
Pau was stating the question earlier today on not finding an example on how to
use decmatch. Indeed, it took me some months to find that gem in the TTCN-3
world.
It solves the problem that you often have during test of layered protocol
stacks: you have separate encoders/decoders for each protocol layer,
and now you want to match on some of the *inner* payload.
So normally, you have some kind of header definition + a binary (octetstring)
payload. This happens in RSL with the L3_INFO IE, and just the same on BSSAP/DTAP
where again the L3 message (for example call control) is encapsulated inside one
information element.
Now you have multiple options of addressing the problem:
a) hand-written calls to the decoder function
b) write na 'emulation' for the entire protocol layer
c) use decmatch.
a) would look like this (pseudo-code):
var octetstring l3oct;
var RSL_Message rsl
RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, ?)) -> value rsl {
var PDU_ML3_MS_NW l3 := dec_PDU_ML3_MS_NW(rsl.payload);
if (match(l3, some_template)) {
... do something
}
...
}
Which uses the built-in pattern-matching on the RSL port to match any
message that matches the tr_RSL_DATA_REQ template, and stores the
resulting RSL message in a variable. It then uses an explicit call to
the decoder function of the L3 message, and then uses regular
conditional expressions for further matching on that inner L3 payload.
This is more or less how you would write in C, python or any other quite imperative
programming languages. It's very verbose, time consuming and un-abstract/elegant.
TTCN-3 has many declarative aspects to it. Code like the above is a waste of your time :)
b) would mean that you implement some test component that handles the RSL
messages on its bottom side test port, and the L3 messages on its top side
test port. That is a possible way, and if you need a lot of state/logic of RSL,
it maeks sense. But what if you really simply want to have a match? Then it would
be a lot of effort and a large detour.
c) decmatch to the rescue!
You can write
RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch tr_RRM_RR_STATUS))
which means:
* do a receive on the RSL test port, and match on an incoming RSL message that
matches the tr_RSL_DATA_REQ template, with channel number specified, link_id
any (?), *and* if the octetstring payload, if decoded, matches the template
tr_RRM_RR_STATUS !
This is *extremely* powerful and expressive. It allows you to condense complex,
parametric template matching over multiple proocol layers. It would in
the end match RSL DATA REQUEST, only if they contained a [valid] encoded
RR STATUS. See https://gerrit.osmocom.org/6229 for the actual test case
I used for the above examples.
Please also note that I never had to even write the function name of the
decoder (dec_PDU_ML3_MS_NW), but TTCN-3 *automatically* figures out
which decoder function it must call in order to decode from the binary
octetstring.
Happy (TTCN-3) hacking + Osmocom bugfixing,
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)
Hi,
sim card by identification
ATR: 3B 9F 95 80 1F C3 80 31 E0 73 FE 21 13 57 86 81 02 86 98 44 18 A8
GREEN CARD, Grcard (Hong Kong ) Co.,Limited, LTE Usim Card
(Telecommunication)
Celcom Postpaid 3G (Telecommunication)
when trying to program using
./pySim-prog.py -n OpenBSC -i 901700000003080 -c 001 -x 001 -y 02 -s
1791198229180000075 -d /dev/ttyUSB0 -a 58001006 -t grcardsim
pySim-prog.py fails with following stacktrace
Programming ...
Traceback (most recent call last):
File "./pySim-prog.py", line 636, in <module>
card.program(cp)
File "/home/username/pysim/pySim/cards.py", line 271, in program
self._scc.verify_chv(5, pin)
File "/home/username/pysim/pySim/commands.py", line 111, in verify_chv
return self._tp.send_apdu_checksw(self.cla_byte + '2000' + ('%02X' %
schv_no) + '08' + fc)
File "/home/username/pysim/pySim/transport/__init__.py", line 85, in
send_apdu_checksw
rv = self.send_apdu(pdu)
File "/home/username/pysim/pySim/transport/__init__.py", line 68, in
send_apdu
data, sw = self.send_apdu_raw(pdu)
File "/home/username/pysim/pySim/transport/serial.py", line 202, in
send_apdu_raw
self._tx_string(pdu[5:])
File "/home/username/pysim/pySim/transport/serial.py", line 168, in
_tx_string
raise ProtocolError("Bad echo value (Expected: %s, got %s)" %
(b2h(s), b2h(r)))
pySim.exceptions.ProtocolError: Bad echo value (Expected:
33353338333033303331333033303336, got 3335333833303330333330333033366e)
- using usb sim card reader which creates standard serial line on
/dev/ttyUSB0
programming also fails when using Gemalto Ezio Shield
./pySim-prog.py -n OpenBSC -i 901700000003080 -c 001 -x 001 -y 02 -s
1791198229180000075 -p 0 -a 58001006 -t grcardsim
fails with following stacktrace
Programming ...
Traceback (most recent call last):
File "./pySim-prog.py", line 636, in <module>
card.program(cp)
File
"/home/smarek/Documents/PROJEKTY/SECURITY/TELCO/SIMCARDS/pysim/pySim/cards.py",
line 271, in program
self._scc.verify_chv(5, pin)
File
"/home/smarek/Documents/PROJEKTY/SECURITY/TELCO/SIMCARDS/pysim/pySim/commands.py",
line 111, in verify_chv
return self._tp.send_apdu_checksw(self.cla_byte + '2000' + ('%02X' %
chv_no) + '08' + fc)
File
"/home/smarek/Documents/PROJEKTY/SECURITY/TELCO/SIMCARDS/pysim/pySim/transport/__init__.py",
line 87, in send_apdu_checksw
raise RuntimeError("SW match failed ! Expected %s and got %s." %
(sw.lower(), rv[1]))
RuntimeError: SW match failed ! Expected 9000 and got 6b00.
Thank you for your help
MS
Hey,
I ordered a generic blank LTE SIM card from ebay. When I try to read it
I get the following message.
"Unable to connect with protocol: T0 or T1. Card is unpowered."
Before you ask, no, the sim is not in the wrong position. Check the
attached images.
Am I doing something wrong or is the card faulty? The reader is
working, I was able to read/write to a SuperSIM (X-sim) and it detected
a bunch of commercial SIMs from local operators (wasn't able to read
any SIM specific value but I think that's normal).
I just want to know if I should open a report agains the seller.
Images: https://imgur.com/a/jrtPL
Here's the technical data:
READER
Model: Gemalto PC USB-TR (now, IDBridge CT30)
Specifications:
https://www.gemalto.com/products/pc_link_readers/index.html
SIM
(acording to ebay listing)
Name: LTE Blank USIM Card
SIM Card Size: Standard SIM Card,Micro SIM Card and Nano SIM Card, 3 in
1
Compatible: 4G FDD LTE WCDMA GSM
Feature: Can be written ICCID, IMSI, KI, OPC .
Application: For Telecommunications Operator
Thanks,
Filipe Laíns <https://github.com/FFY00>
Sent via Migadu.com, world's easiest email hosting
Hi all,
I'm starting to get used to the new stack with split components, and all
seems to be working fine, SMS and USSD are working, but no voice calls yet.
ps ax:
7611 pts/4 S+ 0:00 osmo-mgw -c osmo-mgw-for-bsc.cfg
7653 pts/6 S+ 0:00 osmo-bsc -c osmo-bsc.cfg
7705 pts/3 S+ 0:00 osmo-msc -c osmo-msc.cfg
7760 pts/8 S+ 0:00 osmo-mgw -c osmo-mgw-for-msc.cfg
7785 pts/0 Sl+ 1:59 osmo-trx
7803 pts/7 S+ 0:08 osmo-bts-trx -c osmo-bts.cfg
17288 pts/1 S+ 0:00 osmo-hlr -l hlr.db -c osmo-hlr.cfg
17299 pts/5 S+ 0:02 osmo-stp -c osmo-stp.cfg
Config files are deeply based in the nitb.tar in the wiki.
I read in an email from December that osmo-bsc_mgcp is still required.
Is that the case?
Thanks,
Rafael Diniz
Hello guys.
Im testing the osmo-bsc osmo-hlr osmo-msc.
I can make call but sometimes cannot, also same with text message.
now the auto create subscriber not working which is Im looking and its very
good and nice improovement.
I ussually using osmo-sip-connector with openbsc and asterisk, but since I
read that osmo-msc handling the features and also for future osmocom GSM
stacks, so Im trying to migrate and test it.
does my setting for the osmocom stacks is right with this? :
osmo-bsc -c ~/osmo/osmo-bsc.cfg
osmo-hlr -l hlr.db -c ~/osmo/osmo-hlr.cfg
osmo-stp -c ~/osmo/osmo-stp.cfg
osmo-mgw -c ~/osmo/osmo-mgw-for-msc.cfg
osmo-mgw -c ~/osmo/osmo-mgw-for-bsc.cfg
osmo-msc -c ~/osmo/osmo-msc.cfg
DId I miss something? Im sure I miss something. :-)
and how to connect osmo-msc with asterisk?
Thanks.
--
Best Regards,
DUO
See <http://jenkins.osmocom.org/jenkins/job/Coverity-Upload/label=linux_amd64_de…>
------------------------------------------
[...truncated 2.16 MB...]
CC osmo-bts-sysmo/sysmo_l1_fwd.o
CXXLD libgprs.la
CXXLD osmo-pcu
CXXLD osmo-pcu-remote
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
Making all in examples
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
Making all in tests
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
CXX pcu_emu.o
CXX test_replay_gprs_attach.o
CC openbsc_clone.o
CXX test_pdp_activation.o
CXXLD emu/pcu_emu
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
+ make install
Making install in include
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/include'
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/include/osmocom/pcu'
/usr/bin/install -c -m 644 osmocom/pcu/pcuif_proto.h '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/include/osmocom/pcu'
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
Making install in src
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/bin'
/bin/sh ../libtool --mode=install /usr/bin/install -c osmo-pcu '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/bin'
libtool: install: /usr/bin/install -c osmo-pcu /home/osmocom-build/osmo-ci/coverity/install-Osmocom/bin/osmo-pcu
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
Making install in examples
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/etc/osmocom'
/usr/bin/install -c -m 644 osmo-pcu.cfg '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/etc/osmocom'
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/examples'
Making install in tests
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/tests'
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/lib/pkgconfig'
/usr/bin/install -c -m 644 osmo-pcu.pc '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/lib/pkgconfig'
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu'
+ popd
~/osmo-ci/coverity/source-Osmocom
+ build_osmobts
+ pushd osmo-bts
~/osmo-ci/coverity/source-Osmocom/osmo-bts ~/osmo-ci/coverity/source-Osmocom
+ do_build --enable-sysmocom-bts --enable-trx
+ autoreconf --install --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:21: installing './compile'
configure.ac:23: installing './config.guess'
configure.ac:23: installing './config.sub'
configure.ac:9: installing './install-sh'
configure.ac:9: installing './missing'
src/common/Makefile.am: installing './depcomp'
src/osmo-bts-sysmo/Makefile.am:25: warning: bin_PROGRAMS was already defined in condition TRUE, which includes condition ENABLE_SYSMOBTS_CALIB ...
src/osmo-bts-sysmo/Makefile.am:10: ... 'bin_PROGRAMS' previously defined here
src/osmo-bts-sysmo/Makefile.am:12: warning: source file 'misc/sysmobts_par.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:12: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled. For now, the corresponding output
automake: object file(s) will be placed in the top-level directory. However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
src/osmo-bts-sysmo/Makefile.am:27: warning: source file 'misc/sysmobts-calib.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:27: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:27: warning: source file 'misc/sysmobts-layer1.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:27: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_misc.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_par.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_nl.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr_2050.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr_vty.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr_nl.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr_temp.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:31: warning: source file 'misc/sysmobts_mgr_calib.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:31: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:42: warning: source file 'misc/sysmobts_util.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:42: but option 'subdir-objects' is disabled
src/osmo-bts-sysmo/Makefile.am:42: warning: source file 'misc/sysmobts_par.c' is in a subdirectory,
src/osmo-bts-sysmo/Makefile.am:42: but option 'subdir-objects' is disabled
tests/agch/Makefile.am:7: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/agch/Makefile.am:7: but option 'subdir-objects' is disabled
tests/cipher/Makefile.am:7: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/cipher/Makefile.am:7: but option 'subdir-objects' is disabled
tests/misc/Makefile.am:9: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/misc/Makefile.am:9: but option 'subdir-objects' is disabled
tests/paging/Makefile.am:7: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/paging/Makefile.am:7: but option 'subdir-objects' is disabled
tests/power/Makefile.am:8: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/power/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/utils.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/l1_if.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/oml.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/l1_transp_hw.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/tch.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/calib_file.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/calib_fixup.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/misc/sysmobts_par.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/sysmobts/Makefile.am:8: warning: source file '$(top_srcdir)/src/osmo-bts-sysmo/eeprom.c' is in a subdirectory,
tests/sysmobts/Makefile.am:8: but option 'subdir-objects' is disabled
tests/tx_power/Makefile.am:7: warning: source file '$(srcdir)/../stubs.c' is in a subdirectory,
tests/tx_power/Makefile.am:7: but option 'subdir-objects' is disabled
+ ./configure --prefix=/home/osmocom-build/osmo-ci/coverity/install-Osmocom --enable-sysmocom-bts --enable-trx
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for pkg-config... /usr/bin/pkg-config
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.20... yes
checking for ANSI C header files... (cached) yes
checking for LIBOSMOCORE... yes
checking for LIBOSMOVTY... yes
checking for LIBOSMOTRAU... yes
checking for LIBOSMOGSM... yes
checking for LIBOSMOCTRL... yes
checking for LIBOSMOABIS... yes
checking for LIBOSMOCODEC... yes
checking for LIBOSMOCODING... yes
checking for ORTP... yes
checking whether to enable support for sysmobts calibration tool... no
checking whether to enable support for sysmoBTS L1/PHY support... yes
checking for sysmocom/femtobts/superfemto.h... no
configure: error: sysmocom/femtobts/superfemto.h can not be found in .
[WARNING] Build command ./build_Osmocom.sh exited with code 1. Please verify that the build completed successfully.
Emitted 1913 C/C++ compilation units (100%) successfully
1913 C/C++ compilation units (100%) are ready for analysis
For more details, please look at:
/home/osmocom-build/osmo-ci/coverity/source-Osmocom/cov-int/build-log.txt
Build step 'Execute shell' marked build as failure
Hi!
I played with osmo-trx today and tried to run it with a USRP1 that I
have laying around, though to no avail.
osmo-trx supports two kinds of devices, USRP1 via libusrp and UHD.
libusrp was last included in gnuradio 3.4.2[1] from Dec 2013, it
unsurprisingly does not build on a recent Linux distribution, due to API
incompatibilities with boost.
The USRP1 would theoretically be supported by UHD, though the device
initialization code in osmo-trx explicitly treats it differently, see
[2,3].
I found an old ML post[4] from 2015 that pretty much asks the same
question but did not get an answer.
Supposedly there is a simple reason why USRP1 is not driven via UHD in
osmo-trx, but I don't know.
Can somebody please enlighten me? Tom, maybe you?
I would like to understand whether it is feasible to use an USRP1 with
UHD for osmo-trx or one would have to go down the rabbit hole to build
libusrp on a modern system.
Kind regards,
-Alex
[1] https://gnuradio.org/releases/gnuradio/
[2] https://git.osmocom.org/osmo-trx/tree/Transceiver52M/UHDDevice.cpp#n512
[3] https://git.osmocom.org/osmo-trx/tree/Transceiver52M/USRPDevice.cpp
[4] https://lists.osmocom.org/pipermail/openbsc/2015-January/000058.html
Hi,
I was trying to find if the doxygen documentation is uploaded and
publicly available somewhere in some web server.
Google pointed me to this libosmocore wiki page:
ftp://ftp.osmocom.org/api/latest/libosmonetif/
In there, there are several links to stuff like
http://www.osmocom.org/doc/libosmocore/latest/html/, but I get access
forbidden when trying to use that one.
On the other hand, I found somewhere else a link to
http://ftp.osmocom.org/api/latest/libosmonetif/html/ which seems to be
working.
Now the question is: which is the expected way to access the
documentation? should "www.osmocom.org" work instead of having to use
"ftp.osmocom.org"?
--
- Pau Espin Pedrol <pespin(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
* Geschaeftsfuehrer / Managing Director: Harald Welte
Hi,
We have manged to decode the BSIC in dedicated mode which were not
implemented before. Now we are working on the synchronize and
non-synchronize Handover. Once we send the fake measurement report to the
BTS we get a handover command from the network. That could be synchronized
or non-synchronized.
In case of synchronized hand over, without making any changes in the TPU
clock offset and the frame number and frequency correction, we are able to
complete the handover process most of the time.
In case of non-synchronized handover, a physical info is required from the
network when mobile station would send Handover access burst to the network
before the timer expires but we never get physical info during this period.
Here we are stuck.
Changes: for non-synchronized handover we need to change the TPU offset and
frequency correction offset and frame number parameters which we stored
during the BSIC decoding. We set these values before we send handover
access burst to the network but no success.
Anybody who is working on the handover currently or in the past can discuss
these things with me so we can figure out why we are not getting the
physical info during the non-sync handover.
I have also attached the main changed files with this email. I hope someone
would give advice how to debug the issue.
Regards
M. Awais
Hi all,
Anyone experiencing this error in Latest packages (Debian 9):
"The following packages have unmet dependencies:
osmo-mgw : Depends: libosmo-mgcp0 but it is not installable"
Nightly works great thou.
Cheers,
Rafael Diniz
In osmo-bts, we just have the configure flag --enable-sysmocom-bts, and
don't pass a header include location. i.e. we expect the header files to
exist locally.
I'm a bit stumped on why introducing stow would cause this to break. IIUC
stow should only affect the installed dependencies, while the sysmocom
headers are just placed in a local dir?
If we can't fix the osmo-bts build quickly, we'll have to revert the stow
patch until that works.
https://jenkins.osmocom.org/jenkins/view/master/job/master-osmo-bts/36/BTS_…
The build scripts are (obviously) in osmo-bts/contrib/ and
osmo-ci/scripts.
Any help is appreciated.
~N
Dear Harald,
In this mail I would like to express my thoughts and ideas
regarding to the 'external interface for USSD'. To provide
some background for other mailing list members, who are not
aware of this topic, I'll explain it in a few sentences.
We already have an external interface for SMS - SMPP. But
unfortunately, the same cannot be said about USSD. There is
no built-in support of any interface, which could be used to
handle USSD requests in a separate application. So, at the
moment we only handle *#100# (own number request), which is
implemented as a part of both OsmoMSC and legacy OsmoNiTB.
And if one would like to implement additional USSD commands,
it's required to modify and recompile the whole project :/
Fairwaves team already have some draft implementation for legacy
OsmoNiTB, which relays on the libosmocore's GSM 04.80 API. And
having the external interface in the mainline would be great
not only for Fairwaves, but for the whole Osmocom project
and its users.
The problem is that the current libosmocore's GSM 04.80 API
is not complete and requires some critical modifications,
which of course cannot be integrated immediately. Moreover,
this implementation doesn't follow Osmocom coding style,
for example, unlike other functions, where return code
rc = 0 means success, there it means error...
So, first of all, we need to know, how many projects are
using the current API, especially non-Osmocom projects.
After that (taking it into account), it shall be decided:
- Should we keep the old API / ABI and maintain all new
features among with it. This way would force us to
duplicate the existing code and use different symbols.
Then the old API would continuously became deprecated...
- Should we make all the critical changes in the current
API (increasing the libosmocore version?). This way would
break builds of dependent projects and would suppose
fixing compatibility with the new API. But, at the same
time, the implementation would be cleaner and closer to
the specification, without any deprecated duplication...
Personally, I prefer the second way. At the same time, I want
to make the modification as much transparent as possible.
Speaking about Osmocom projects, the only users of the GSM
04.80 API are OsmoMSC and legacy OsmoNiTB. Both projects
utilize it for '*#100#' handling only :/
To be more convincing, let's look at the following code:
#define MAX_LEN_USSD_STRING 31
struct ss_request {
uint8_t opcode;
uint8_t ss_code;
uint8_t ussd_text[MAX_LEN_USSD_STRING + 1];
uint8_t transaction_id;
uint8_t invoke_id;
};
This is what the current API allows you to obtain from a
SS-request (e.g. '*#100#') coming from user. And what's
wrong here?
- The 'ss_request' doesn't indicate a part of the library
it comes from. Would be better to use 'gsm0480_ss_request'.
- The 'ussd_text' length doesn't follow the specification,
where USSD OCTET STRING length is 160 bytes. So, the amount
of characters depends on used coding scheme.
- The information about SS-message type, component type, text
length and used DCS (Data Coding Scheme), etc. is missing.
Despite it could be important for the external application.
So, let's discuss together all the 'pros and cons', and decide
together, how should we facilitate the external USSD interface
development.
With best regards,
Vadim Yanitskiy.
Hi dexter,
reading a commit of yours apparently merged to osmo-bsc in November, I notice
that you "secretly sneaked in" this:
diff --git a/src/Makefile.am b/src/Makefile.am
index d04f025..dd1ad3d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -33,5 +33,4 @@ SUBDIRS += \
utils \
ipaccess \
osmo-bsc \
- osmo-bsc_nat \
$(NULL)
in a patch that was supposed to "mgcp: use osmo-mgw to switch RTP streams".
http://git.osmocom.org/osmo-bsc/commit/?id=39c609b7c924524172ad311bdf89f92b…
So since we merged that patch, osmo-bsc_nat is no longer part of the osmo-bsc
build. That's certainly not intended, is it?
Confirm and please fix that. thx!
~N
Hi everybody,
as some of you may have noticed due to the generated noise in gerrit ml
during last days, I have been adding some autotest setup to osmo-trx in
order to have several tests being run during gerrit review. Since
osmo-trx has some specific code built with NEON instructions, I also
added some infrastructure to jenkin.sh to generate and use a prebuilt
debian armhf rootfs so we can easily build and run tests using qemu-arm
from our local workstations or from jenkins slaves, which will check
that support for those architectures doesn't become broken.
In order to set up the make check tests, I re-used existing tests and
moved them to the tests/ directory. I also moved
utils/convolvtest/main.c into "tests/Transceiver52M/convolve_test" [1]
to become a test that checks "convolve_{real,complex}" APIs.
I noticed, however, that this test prints slightly (or not that
slightly) different outputs on different machine architectures, which of
course make tests fail as it matches the exact values.
So far the output is different in my x86_64 workstation, my i686 netbook
(or i586 OBS host) and in my qemu-arm (armhf).
As each machine uses different instructions sets, I indeed can
understand that there appear small differences due to floating
operations and rounding, but sometimes I can see relatively big
difference between one implementation and the other one (eg 7.032490 vs
6.655972).
I'm thinking about modifying the test to, instead of matching the output
exactly, check that for each value in the vector it is similar to a
value with a maximum epsilon distance from a reference vector. However,
as I don't have any knowledge regarding the maths and theory behind the
convolution codes, I must admit I am not sure which epsilon should I be
using, or which should be the expected output for the test. It may
perhaps make sense to have separate reference output for different
architectures, I don't know. Can somebody shed some light on this topic?
Any advise or hint is welcome.
It would also be nice to have some tests for the "convert" API, which
uses optimized instructions sets too. If somebody wants to provide those
or any hint on how to implement them that's going to be handy.
All the test infrastructure is merged now, only the patch adding the
qemu part is not merged but already working in [2], I'll merge it
tomorrow if nobody is angry with it. You can find related output for the
test I was speaking of for different machine arch (x86_64, i686, arm) in
[3] and [4].
[1]https://git.osmocom.org/osmo-trx/tree/tests/Transceiver52M/convolve_test.c
[2] https://gerrit.osmocom.org/#/c/5763
[3] https://osmocom.org/issues/2826
[4] https://osmocom.org/issues/2828
--
- Pau Espin Pedrol <pespin(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
* Geschaeftsfuehrer / Managing Director: Harald Welte
Ahh ok. Im so stupid not really mean with a simple english.
Thanks Neels.
DUO
On Jan 15, 2018 6:57 PM, "Neels Hofmeyr" <nhofmeyr(a)sysmocom.de> wrote:
> here is the config https://pastebin.com/BKcPUbzb
Prepend a 'no' to disable it:
nitb
no subscriber-create-on-demand
~N
Hello,Is the osmonitb3G have capabilities to roam with the existing operator in the world!?
And, is it possible to launch call and sms to some existing operator !?
Chears,
See <http://jenkins.osmocom.org/jenkins/job/Coverity-Upload/label=linux_amd64_de…>
------------------------------------------
[...truncated 2.14 MB...]
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh/doc'
make[3]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh/doc'
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh/doc'
make[2]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh'
make[3]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh'
make[3]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/lib/pkgconfig'
/usr/bin/install -c -m 644 libosmo-ranap.pc '/home/osmocom-build/osmo-ci/coverity/install-Osmocom/lib/pkgconfig'
make[3]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh'
make[2]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh'
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-iuh'
+ popd
~/osmo-ci/coverity/source-Osmocom
+ build_osmopcu
+ pushd osmo-pcu
~/osmo-ci/coverity/source-Osmocom/osmo-pcu ~/osmo-ci/coverity/source-Osmocom
+ do_build --enable-sysmocom-bts=yes --enable-sysmocom-dsp=yes
+ autoreconf --install --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:21: installing './compile'
configure.ac:24: installing './config.guess'
configure.ac:24: installing './config.sub'
configure.ac:9: installing './install-sh'
configure.ac:9: installing './missing'
src/Makefile.am: installing './depcomp'
tests/Makefile.am:13: warning: source file 'alloc/AllocTest.cpp' is in a subdirectory,
tests/Makefile.am:13: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled. For now, the corresponding output
automake: object file(s) will be placed in the top-level directory. However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
tests/Makefile.am:29: warning: source file 'bitcomp/BitcompTest.cpp' is in a subdirectory,
tests/Makefile.am:29: but option 'subdir-objects' is disabled
tests/Makefile.am:29: warning: source file '../src/egprs_rlc_compression.cpp' is in a subdirectory,
tests/Makefile.am:29: but option 'subdir-objects' is disabled
tests/Makefile.am:88: warning: source file 'codel/codel_test.c' is in a subdirectory,
tests/Makefile.am:88: but option 'subdir-objects' is disabled
tests/Makefile.am:35: warning: source file 'edge/EdgeTest.cpp' is in a subdirectory,
tests/Makefile.am:35: but option 'subdir-objects' is disabled
tests/Makefile.am:43: warning: source file 'emu/pcu_emu.cpp' is in a subdirectory,
tests/Makefile.am:43: but option 'subdir-objects' is disabled
tests/Makefile.am:43: warning: source file 'emu/test_replay_gprs_attach.cpp' is in a subdirectory,
tests/Makefile.am:43: but option 'subdir-objects' is disabled
tests/Makefile.am:43: warning: source file 'emu/openbsc_clone.c' is in a subdirectory,
tests/Makefile.am:43: but option 'subdir-objects' is disabled
tests/Makefile.am:43: warning: source file 'emu/test_pdp_activation.cpp' is in a subdirectory,
tests/Makefile.am:43: but option 'subdir-objects' is disabled
tests/Makefile.am:94: warning: source file 'fn/FnTest.cpp' is in a subdirectory,
tests/Makefile.am:94: but option 'subdir-objects' is disabled
tests/Makefile.am:72: warning: source file 'llc/LlcTest.cpp' is in a subdirectory,
tests/Makefile.am:72: but option 'subdir-objects' is disabled
tests/Makefile.am:83: warning: source file 'llist/LListTest.cpp' is in a subdirectory,
tests/Makefile.am:83: but option 'subdir-objects' is disabled
tests/Makefile.am:61: warning: source file 'ms/MsTest.cpp' is in a subdirectory,
tests/Makefile.am:61: but option 'subdir-objects' is disabled
tests/Makefile.am:7: warning: source file 'rlcmac/RLCMACTest.cpp' is in a subdirectory,
tests/Makefile.am:7: but option 'subdir-objects' is disabled
tests/Makefile.am:21: warning: source file 'tbf/TbfTest.cpp' is in a subdirectory,
tests/Makefile.am:21: but option 'subdir-objects' is disabled
tests/Makefile.am:53: warning: source file 'types/TypesTest.cpp' is in a subdirectory,
tests/Makefile.am:53: but option 'subdir-objects' is disabled
+ ./configure --prefix=/home/osmocom-build/osmo-ci/coverity/install-Osmocom --enable-sysmocom-bts=yes --enable-sysmocom-dsp=yes
configure: WARNING: unrecognized options: --enable-sysmocom-bts
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.20... yes
checking for ANSI C header files... (cached) yes
checking for LIBOSMOCORE... yes
checking for LIBOSMOVTY... yes
checking for LIBOSMOGSM... yes
checking for LIBOSMOGB... yes
checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes
checking whether to enable direct PHY access for PDCH of NuRAN Wireless Litecell 1.5 BTS... no
checking whether to enable VTY tests... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating osmo-pcu.pc
config.status: creating include/Makefile
config.status: creating src/Makefile
config.status: creating examples/Makefile
config.status: creating tests/Makefile
config.status: creating Makefile
config.status: executing tests/atconfig commands
config.status: executing depfiles commands
config.status: executing libtool commands
configure: WARNING: unrecognized options: --enable-sysmocom-bts
+ make -j 3
Making all in include
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/include'
Making all in src
make[1]: Entering directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
CXX gprs_debug.lo
CXX csn1.lo
CXX gsm_rlcmac.lo
CXX gprs_bssgp_pcu.lo
gprs_bssgp_pcu.cpp:967:2: warning: #warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless" [-Wcpp]
#warning "This causes ASAN to complain. It is not critical for normal operation but should be fixed nevertheless"
^
gprs_bssgp_pcu.cpp:76:12: warning: 'int parse_ra_cap(tlv_parsed*, MS_Radio_Access_capability_t*)' defined but not used [-Wunused-function]
static int parse_ra_cap(struct tlv_parsed *tp, MS_Radio_Access_capability_t *rac)
^
CXX gprs_rlcmac.lo
CXX gprs_rlcmac_sched.lo
CXX gprs_rlcmac_meas.lo
CXX gprs_rlcmac_ts_alloc.lo
CXX gprs_ms.lo
CXX gprs_ms_storage.lo
CXX gsm_timer.lo
CXX pcu_l1_if.lo
CC pcu_vty.lo
CXX pcu_vty_functions.lo
CC mslot_class.lo
CXX tbf.lo
In file included from bts.h:37:0,
from pcu_vty_functions.cpp:26:
tbf.h: In function 'void tbf_print_vty_info(vty*, gprs_rlcmac_tbf*)':
tbf.h:623:21: error: 'gprs_rlc_ul_window gprs_rlcmac_ul_tbf::m_window' is protected
gprs_rlc_ul_window m_window;
^
pcu_vty_functions.cpp:70:38: error: within this context
gprs_rlc_ul_window *win = &ul_tbf->m_window;
^
In file included from bts.h:37:0,
from pcu_vty_functions.cpp:26:
tbf.h:562:21: error: 'gprs_rlc_dl_window gprs_rlcmac_dl_tbf::m_window' is protected
gprs_rlc_dl_window m_window;
^
pcu_vty_functions.cpp:82:38: error: within this context
gprs_rlc_dl_window *win = &dl_tbf->m_window;
^
Makefile:763: recipe for target 'pcu_vty_functions.lo' failed
make[1]: *** [pcu_vty_functions.lo] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/osmocom-build/osmo-ci/coverity/source-Osmocom/osmo-pcu/src'
Makefile:448: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
[WARNING] Build command ./build_Osmocom.sh exited with code 2. Please verify that the build completed successfully.
Emitted 1876 C/C++ compilation units (100%) successfully
1876 C/C++ compilation units (100%) are ready for analysis
For more details, please look at:
/home/osmocom-build/osmo-ci/coverity/source-Osmocom/cov-int/build-log.txt
Build step 'Execute shell' marked build as failure
Hi Neels,
I've seen some discusion (unfortunately on the sysmocom internal jaberr room,
not on a public osmocom channel) related to the docker based jenkins verification
jobs as follows:
ADD http://download.opensuse.org/repositories/network:/osmocom:/nightly/Debian_… /tmp/Release
RUN apt-get update && apt-get install -y --no-install-recommends libosmocore-dev
The "ADD" line will check if the "Release" file of the repository has changed.
If yes, the cache will be invalidated, and the following line[s] will be re-run.
If no, then the cache will remain.
It's sub-optimal in that any change to the repository (even those that are
unrelated to the packages used, [libosmocore-dev in this example]) will trigger
an image re-build. But at least it will guarantee that any update to the
libosmocore-dev package will trigger an image rebuild.
See http://git.osmocom.org/docker-playground/tree/osmo-stp-master/Dockerfile for
a real-world example
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)
Hello,I have some question, it just for curiosity! It's possible that a phone tell to the bts he did support only A5/0 encryption or it just only the BTS to command the ciphering !? and it is possible to do that for the osmocomBB !?
Chears,
Hi.
We have several kind of logs in libosmocore: 'log stderr', 'log file ...', 'log
gsmtap' etc.
Some of them are naturally singleton: you can't have 2 stderrs at the same time. Some
are naturally parallel - it make sense to log different things into different files.
What about "log gsmtap"?
On the one hand sending to different hosts might make sense, on the other hand, the
receiver can do filtering by itself.
The current implementation does not allow multiple "log gsmtap" entries but the code
is kinda unclear - I don't understand if that's intentional.
So, is it a "bug" or "feature"?
Shall we opt for greater flexibility and fix the code to enable multiple gsmtap log
destinations?
Shall we opt for simplicity and fix the code to make it clear that log gsmtap is
singleton?
Do you have any use-case in mind where multiple "log gsmtap" would come in handy?
Do you foresee any problems arising from multiple "log gsmtap"working in parallel?
N. B: this has nothing to do with recording bursts into .pcap, this is about sending
log output using the same facility we use for recording frames sent/received over the
air. The frame recording is used in OsmoBTS/PCU, the logging is used in all Osmo*
projects.
Just in case, the patch enabling multiple 'log gsmtap ...' is available in
https://gerrit.osmocom.org/#/c/5747/ so you can give it a try.
--
Max Suraev <msuraev(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
* Geschaeftsfuehrer / Managing Director: Harald Welte
sorry to bother you, I have a question to ask you:
i install openbsc and osmocombb in a pc.
i want to transfer authentication information (rand) from osmocombb to openbsc,
and transfer sres information from openbsc to osmocombb.
What should I do?
zhanghao
Hi,
In the context of a project GSM-GPRS (not 3G), I recovered the sources of the branch Master (github.com/osmocom).
- osmo-pcu
- openbsc (osmo-nitb, osmo-bsc, osmo-bsc-nat, osmo-bsc-mgcp)
- libosmocore
- libosmo-abis
- libosmo-netif
- liosmo-sccp
- libsmpp34
- libosmo-ggsn
- libosmo-sgsn (it seems not include in the openbsc's directory).
Does the Library osmo-sgsn still need to be generated? because during the compilation only the module "osmo-gbproxy" is compiled.
When I look at the Makefile (osmo-sgsn/src/gprs), the following lines are commented:
#am__append_1 = \
# $(LIBASN1C_CFLAGS) \
# $(LIBOSMOSIGTRAN_CFLAGS) \
# $(LIBOSMORANAP_CFLAGS) \
# $(NULL)
bin_PROGRAMS = osmo-gbproxy$(EXEEXT) $(am__EXEEXT_1)
#am__append_2 = \
# osmo-sgsn \
# osmo-gtphub \
# $(NULL)
#am__append_3 = \
# $(LIBOSMOSIGTRAN_LIBS) \
# $(LIBOSMORANAP_LIBS) \
# $(LIBASN1C_LIBS) \
# $(NULL)
Let me know I you think there are mistakes.
Thanks
Pierre
Let's keep the public conversation,
there are no secrets, right? ;)
> Here is the pcap attached and here is the osmo-nitb
> log https://pastebin.com/NJa0YU08
>
> here is the osmo-bts log https://pastebin.com/RZ0au5yA
>
> hope you know what is wrong. Thanks
Have a look at the following log lines:
> trx_if.c:217 Enqueuing TRX control command 'CMD NOHANDOVER 0 0'
> ...
> trx_if.c:371 Response message: 'RSP NOHANDOVER -1'
> trx_if.c:403 transceiver (phy0.0) rejected TRX command
> with response: 'RSP NOHANDOVER -1'
> bts.c:208 Shutting down BTS 0, Reason TRX-CTRL-MSG: CRITICAL
For some reason, the OsmocomBB transceiver rejects the command.
Despite it's implemented and should work as expected.
Let's look at the source code (trx.c:400 _trx_ctrl_cmd_(no)handover):
> int n, tn, ss = 0;
>
> n = sscanf(args, "%d %d", &tn, &ss);
>
> if ((n < 1) || (tn < 0) || (tn > 7) || (ss < 0) || ((ss > 8)))
> return _trx_ctrl_send_resp(trx, cmd, "%d %d %d", -1, tn, ss);
>
> // ...
Try to debug this condition on your side.
I cannot reproduce your problem...
With best regards,
Vadim Yanitskiy.
Hi Sandi,
> I can see the network but cannot registering my phone.
Try to add the following settings at the end of the OsmoNiTB configuration:
> nitb
> subscriber-create-on-demand
> assign-tmsi
And please let me know if this would help. I'll correct the wiki page.
With best regards,
Vadim Yanitskiy.
I am trying to fix issue OS#2754 "Paging on LAI not working".
There are two tests related to this issue:
1) osmo-bsc/tests/bssap/bssap_test
2) TC_paging_imsi_nochan_lai in osmo-ttcn3-hacks/bss
The first test is successful with my patch below.
But the second test fails. It looks as if the MSC expects a response
which is not delivered. I am unsure if the test has wrong expectations
or if osmo-bsc is not sending a required response?
The test's verdict is:
Test case TC_paging_imsi_nochan_lai finished. Verdict: fail reason:
Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6),
transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { {
iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18)
}, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei :=
?, body := { ms_identity := { len := ?, payload := ? } } }, * } }
Note that the existing ttcn3 test for the LAC case, which is already
supported, and also covered by the bssap_test, fails in the same way:
Test case TC_paging_imsi_nochan_lac finished. Verdict: fail reason:
Timeout expecting { msg_disc := { msg_group := RSL_MDISC_CCHAN (6),
transparent := false }, msg_type := RSL_MT_PAGING_CMD (21), ies := { {
iei := ?, body := { chan_nr := { u := { ch0 := RSL_CHAN_NR_PCH_AGCH (18)
}, tn := ? } } }, { iei := ?, body := { paging_group := ? } }, { iei :=
?, body := { ms_identity := { len := ?, payload := ? } } }, * } }
Any hints how to proceed?
Thanks,
Stefan
>From 01200d452971cd20c8a0304e180c2d11ff399d3f Mon Sep 17 00:00:00 2001
From: Stefan Sperling <ssperling(a)sysmocom.de>
Date: Fri, 5 Jan 2018 17:22:11 +0100
Subject: [PATCH] Implement support for paging by LAI.
This is very similar to the paging by LAC case. We can simply extract
the LAC at a different offset.
Change-Id: Ic3c62ff0fccea586794ea4b3c275a0685cc9326e
Related: OS#2751
---
src/osmo-bsc/osmo_bsc_bssap.c | 9 +++++++++
tests/bssap/bssap_test.c | 2 +-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 45861ccc..9bc59623 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -288,6 +288,15 @@ static int bssmap_handle_paging(struct bsc_msc_data *msc,
lac = GSM_LAC_RESERVED_ALL_BTS;
switch (cell_ident) {
+ case CELL_IDENT_LAI_AND_LAC:
+ if (data_length != 6) {
+ LOGP(DMSC, LOGL_ERROR, "Paging IMSI %s: Cell Identifier List for BSS (0x%x)"
+ " has invalid length: %u, paging entire BSS anyway (%s)\n",
+ mi_string, CELL_IDENT_BSS, data_length, osmo_hexdump(data, data_length));
+ }
+ lac = osmo_load16be(&data[4]);
+ break;
+
case CELL_IDENT_LAC:
if (data_length != 3) {
LOGP(DMSC, LOGL_ERROR, "Paging IMSI %s: Cell Identifier List for LAC (0x%x)"
diff --git a/tests/bssap/bssap_test.c b/tests/bssap/bssap_test.c
index 579cae23..2fa2b1fe 100644
--- a/tests/bssap/bssap_test.c
+++ b/tests/bssap/bssap_test.c
@@ -71,7 +71,7 @@ struct {
{
"001952080859512069000743940904010844601a060415f5490065",
/* ^^^^^^^^^^^^ Cell Identifier List: LAI */
- GSM_LAC_RESERVED_ALL_BTS, 0
+ 0x65, 0
},
};
--
2.14.1
Hi Max,
in osmo-python-tests master, I did
python2 setup.py install
rm -rf build/ dist/ osmopython.egg-info
python3 setup.py install
which results in osmotestvty.py installed as py3, causing an encoding problem
which I mentioned; py3 is a lot more than print() with braces, see the error
log below.
So in principle I still don't understand why the py2 scripts need to be made
py3 compatible, and why I need to add 'from future' imports to py3 scripts now.
There has to be a better way.
About the need to rm the installation artifacts, there is no mention of it in
the README. And even when I remove those, I still get py2 scripts installed as
py3.
So anyone is bound to get this error:
"
osmotestvty.py -p /n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc -w /n/s/osmo-dev/make/osmo-msc -v
confpath /n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc, workdir /n/s/osmo-dev/make/osmo-msc
Running tests for specific VTY commands
test_history (__main__.TestVTY) ... Launch: ./src/osmo-msc/osmo-msc -c /n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg from /n/s/osmo-dev/make/osmo-msc
Opening /dev/null
Launching: PWD=/n/s/osmo-dev/make/osmo-msc './src/osmo-msc/osmo-msc' '-c' '/n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg'
Terminating took 2.679s
ERROR
test_terminal_length (__main__.TestVTY) ... Launch: ./src/osmo-msc/osmo-msc -c /n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg from /n/s/osmo-dev/make/osmo-msc
Launching: PWD=/n/s/osmo-dev/make/osmo-msc './src/osmo-msc/osmo-msc' '-c' '/n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg'
Terminating took 2.679s
ERROR
test_unknown_command (__main__.TestVTY) ... Launch: ./src/osmo-msc/osmo-msc -c /n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg from /n/s/osmo-dev/make/osmo-msc
Launching: PWD=/n/s/osmo-dev/make/osmo-msc './src/osmo-msc/osmo-msc' '-c' '/n/s/osmo-dev/make/osmo-msc/../../src/osmo-msc/doc/examples/osmo-msc/osmo-msc.cfg'
Terminating took 2.679s
ERROR
======================================================================
ERROR: test_history (__main__.TestVTY)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/osmopython-0.0.6-py3.6.egg/EGG-INFO/scripts/osmotestvty.py", line 56, in test_history
File "/usr/local/lib/python3.6/dist-packages/osmopython-0.0.6-py3.6.egg/osmopy/obscvty.py", line 223, in command
return self._common_command(request, close)
File "/usr/local/lib/python3.6/dist-packages/osmopython-0.0.6-py3.6.egg/osmopy/obscvty.py", line 179, in _common_command
self.socket.send("%s\r" % request)
TypeError: a bytes-like object is required, not 'str'
"
With your recent set of changes, you have not only hung all the build slaves'
osmo-python-tests updates for 3 weeks, but also dismantled the installation. I
wonder how it was possible for this to get past your testing.
I will try to get the scripts working for me now.
~N
On Sun, Jan 07, 2018 at 05:58:40PM +0100, Max wrote:
> Hi.
>
> Seems like jobs which update osmo-ci and osmo-python-tests on build slaves are
> failing for 20+ days. This only happens for some of the slaves but not the others.
>
> I'd like to understand why this is happening and, ideally, fix it. However, there're
> few obstacles:
It's because of
"ImportError: No module named setuptools"
since your commit, where you obviously never checked whether setuptools is
available on the build slaves:
Author: Max <msuraev(a)sysmocom.de>
AuthorDate: Fri Dec 15 12:12:01 2017 +0100
Commit: Max <msuraev(a)sysmocom.de>
CommitDate: Fri Dec 15 20:40:41 2017 +0100
Use setuptools for packaging
According to https://docs.python.org/3/library/distutils.html the
setuptools are used in place of distutils anyway. Using it directly
allows us to make packaging more flexible: specify dependencies,
automatically find package name etc.
Change-Id: I39ee53f352001e47c6df055cbec52d638480253d
I see console logs fine.
https://jenkins.osmocom.org/jenkins/job/update-osmo-ci-on-slaves/63/label=O…https://jenkins.osmocom.org/jenkins/job/update-osmo-ci-on-slaves/63/label=b…
So do we really need this setuptools thing or can we just revert the change?
~N
A recent patch to libosmocore refuses to allocate a rate counter group with an
index that already exists. Per se that's a good thing, but it needs fixes in a
whole range of callers.
Numerous callers wrongly just pass 0 as rate counter group, so as soon as a
second <thing> shows up, the application may deny service; that's unacceptable.
For example, OsmoSGSN now crashes with the second subscriber showing up!
causing patch: https://gerrit.osmocom.org/5418
my proposed change: https://gerrit.osmocom.org/5516
I'd like to request everyone to refrain from submitting patches that are
insufficiently tested, in general of course, but in particular until after
congress, please ;)
~N
Hi.
Seems like jobs which update osmo-ci and osmo-python-tests on build slaves are
failing for 20+ days. This only happens for some of the slaves but not the others.
I'd like to understand why this is happening and, ideally, fix it. However, there're
few obstacles:
- there seems to be no "console output" or logs available for those jobs - am I
looking at the wrong place?
- we don't seems to have any docs on the wiki about the build slaves
On a related note, do we have a ticket tracking progress on automated build slave
creation?
--
Max Suraev <msuraev(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 * Geschaeftsfuehrer / Managing
Director: Harald Welte
Hello, all,
I wonder if anyone has thought about introducing a handover log (to a
file or a DB) to OsmoBSC/OsmoNITB?
For small deployments <6 BTS you can just add every BTS to neighbor
lists of each other and don't worry, but once you get above that, you
face a handover optimization issue. I.e. which BTS should be neighbors
of which other ones. Initial assigning of the neighbors can be done by
simply looking at coverage maps of each BTS. But once the network is
actually used there is a lot of useful information about the network
performance which can be extracted from the handover history - which
cells have issues handing over to each other, etc.
--
Regards,
Alexander Chemeris.
CTO/Founder, Fairwaves, Inc.
https://fairwaves.co
Hello,
I have built osmo-bsc, osmo-msc, osmo-hlr, osmo-stp, osmo-mgcp and
connected them successfuly in the same computer. When I try to make calls
it gives the folowing error in MGCP
osmo-mgw -c newmgw.cfg
<0001> telnet_interface.c:104 telnet at 127.0.0.1 4243
<0011> mgw_main.c:336 Configured for MGCP.
<0011> mgcp_protocol.c:827 DLCX: endpoint:0x1 deleting connection ...
<0011> mgcp_protocol.c:832 DLCX: endpoint:0x1 endpoint is not holding a
connection.
<0011> mgcp_protocol.c:827 DLCX: endpoint:0x2 deleting connection ...
<0011> mgcp_protocol.c:832 DLCX: endpoint:0x2 endpoint is not holding a
connection.
<0011> mgcp_protocol.c:453 CRCX: creating new connection ...
<0011> mgcp_protocol.c:79 endpoint:1 RTP-setup: Endpoint is in loopback
mode, stopping here!
<0000> mgcp_network.c:188 endpoint:0x1 Failed to send dummy RTP packet.
<0011> mgcp_protocol.c:650 CRCX: endpoint:0x1 connection successfully
created
<0011> mgcp_protocol.c:827 DLCX: endpoint:0x1 deleting connection ...
<0011> mgcp_protocol.c:895 DLCX: endpoint:0x1 missing ci
(connectionIdentifier), will remove all connections at once
<0011> mgcp_protocol.c:453 CRCX: creating new connection ...
<0011> mgcp_protocol.c:79 endpoint:1 RTP-setup: Endpoint is in loopback
mode, stopping here!
<0000> mgcp_network.c:188 endpoint:0x1 Failed to send dummy RTP packet.
PFA configuration files for all the blocks that I have been using to run
the system and also the pcap trace. Please tell me what am I doing wrong
due to which I am unable to make calls.
Thanks
Anindya
calltrace.pcap
<https://drive.google.com/a/toshniwalcontrols.com/file/d/1vmDuNJuePVDB9XCHtw…>
Hi All,
Happy New Year.
I’m not sure if it is appropriate to asked this in this forum or to the SDR vendor but here goes.
Is there a way to monitor if the GPS Timing is still sync or not while all the OSMO elements are running?
We are using an Ettus B210 with a GPSDO, osmo-trx, osmo-bts-trx, and osmo-nitb running in UBUNTU 16.04
TIA.
Best Regard,
Ron Menez
ron.menez(a)entropysolution.com<mailto:ron.menez@entropysolution.com>
Dear all,
I've written up a "short" review of what I perceive as the most important
events in the Osmocom Cellular Infrastructure projects in 2017.
See http://osmocom.org/news/84 for all details, or below for a raw copy+paste:
h1. Osmocom Review 2017
This is a review of the most significant changes and events in the Osmocom Cellular Infrastructure projects in 2017
h2. January 2017
* announce of first ever public [[OsmoCon:]] conference in April
* osmo-bts
** Add Abis OML failure event reporting
** fix memory leaks in osmo-bts-{sysmo,lc15} at every channel activation
* openbsc/osmo-bsc
** support multiple UARFCNs in SI2quater
* osmo-hlr
** add test suite for 2G and 3G authentication
** fix UMTS AKA re-sync
h2. February 2017
* weekly manual testing with related weekly test reports to mailing list
* "heads-up about the (lack of a )future of osmo-nitb":http://lists.osmocom.org/pipermail/openbsc/2017-February/010300.html
* "heads-up about libosmo-sccp SIGTRAN work":http://lists.osmocom.org/pipermail/openbsc/2017-February/010274.html
* "sysmo-usim-tool":http://lists.osmocom.org/pipermail/openbsc/2017-February/010317.html
* libosmo-abis
** unix domain socket support (for Ericsson L2TP)
* osmo-bts
** fix AMR HR DTX FSM logic
** fix SACCH sending fo system information with enum value > 7
** osmo-bts-trx: fix RXGAIN and POWER parameters on second TRX
** fix TCH/H interleaving table bit position
** sysmoBTS 1020/1100: slow power ramp-up on TRX enable
* osmo-sgsn
** fix PDP context activation memory allocation bug
** integrate support for UMTS AKA
* openggsn
** fix kernel-gtp tunnel creation/removal for GTPv1
** release 0.93
h3. March 2017
* "cgit improvements":http://lists.osmocom.org/pipermail/openbsc/2017-March/010448.html (about page, change-ID hyperlinks, issue hyperlinks)
* Add README.md files to all our repositories
* libosmocore
** migrate gsm 05.03 coding from OsmoBTS to libosmocore
** fix SQN / SEQ handling in UMTS AKA
** 3GPP AoIP message encoding/decoding
* libosmo-abis
** fix ever-increasing jitter buffer
* libosmo-netif
** handle SCTP in in stream server
** doxygen documentation on stream an datagram modules
* osmo-bts
** octphy: CBCH support
** include MS timing offset in RSL measurements
* osmo-sgsn
** handle IMSIs with leading zeroes
* osmo-bsc
** fix T3186 encoding in SI13
** Improved Ericsson OM2000/RBS2000 support
** new ctrl2soap proxy in python
* osmo-hlr
** add CTRL interface
** fix SQN/SEQ handling in UMTS AKA
h3. April 2017
* "update of coding style for longer line lengths":http://lists.osmocom.org/pipermail/openbsc/2017-April/010502.html
* [[osmo-dev-con:OsmoCon2017]] and [[osmo-dev-con:OsmoDevCon2017]]
* libosmocore
** "control interface for osmo_fsm":http://lists.osmocom.org/pipermail/openbsc/2017-April/010542.html
* libosmo-netif
** fix file descriptor leak in error paths
** work around linux kenrel SCTP bug with sender_dry_events
** RTP marker bit support
* libosmo-sccp
** Add new [[libosmo-sigtran:]] library with SS7 AS/ASP Link/Linkset handling, M3UA support, new FSM based SCCP implementation
** Add [[osmo-stp:]] program
* osmo-bts
** inform BSC of PCU disconnect
** fix measurement reporting period
** exclude idle channels from uplink measurement processing
** octphy: measurement reports
h3. May 2017
* libosmocore
** fix embedded builds
** import and generalise 'sercomm' from osmocom-bb into libosmocore
** SSE optimized convolutional coder
** fix wrong GSM FR codec SID frame generation
** doxygen docs for libosmocoding
* osmo-bsc
** TS 04.14 mobile station side loop control
* osmo-bts
** consistently check all RSL and OML TLVs for minimum length value
** fix bit-order in every HR codec parameter (spec compliance)
** OML get/set attribute handling
** SI2quater support
** bypass radio link timeout for lab testing
* osmo-bsc
** PCU socket support for BSC-colocated PCU for Ericsson RBS2000
** reelase 1.0.1
* "M3UA and SUA testing as part of jenkins":http://lists.osmocom.org/pipermail/openbsc/2017-May/010698.html
* "osmo-gsm-tester produces successful runs with NITB as well as new AoIP":http://lists.osmocom.org/pipermail/openbsc/2017-May/010760.html
h3. June 2017
* libosmocore
** doxygen autobrief
** doxygen documentation for libosmogb
* osmo-bts
** use CLOCK_MONOTONIC timer for GSM frame timer
** PDTCH loopback support
h3. July 2017
* "Plan for openbsc.git split and code review":http://lists.osmocom.org/pipermail/openbsc/2017-July/010914.html
* libosmocore
** PDP charging characteristics in GSUP
** PRBS sequence generators
** multicast IP related helper functions
** 'make release' target
* libosmo-sccp
** SCCP address book
* osmo-bts
** new virtual BTS @osmo-bts-virtual@ for testing without radio hardware
** don't send dummy UI frames on unused BCCH slots on TC=5
** GSMTAP: don't log/send fill frames consisting of only padding
* osmo-hlr
** change to default GSUP port 4222
h3. August 2017
* "Support for SMPP Delivery Receipt / GSM03.40 Status Report":http://lists.osmocom.org/pipermail/openbsc/2017-August/011023.html
* "Jenkins now executing M3UA, SUA and GGSN testsuite":http://lists.osmocom.org/pipermail/openbsc/2017-August/011043.html
* libosmocore
** fix crash in lapd_est_req()
* libosmo-abis
** release 0.4.0
* osmo-bts
** osmo-bts-trx: fix MS power control loop
** release 0.6.0
** support sending/removing SI13 to/from PCU
* osmo-bsc
** indicate R99+ MSC in SI3 to enable UMTS AKA over GERAN
* osmo-sgsn
** properly report GERAN/UTRAN mode in PDP CTX ACT REQ to GGSN
* osmo-msc
** implement IuCS support
** split openbsc.git into osmo-bsc.git, osmo-msc.git and osmo-sgsn.git
* openggsn
** Add IPv6 address pool and IPV6 user (inner) plane support
** release 0.94
h3. September 2017
* libosmocore.git
** "'show talloc-context' VTY introspection":http://lists.osmocom.org/pipermail/openbsc/2017-June/010771.html
** CTRL parsing unit tests
** unification of vty exit/end commands
* osmo-hlr
** CTRL interface tests
--
- 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)