Dear List,
I am in the process of creating the Wiki page for Ettus B200/B210 with OpenBSC, GPRS and Asterisk.
I am quite close, both data and calls are working, but the voice calls are half sided. The downlink direction works, but the uplink does not.
I tried without Asterisk and LCR (between two phones) and still the calls are half sided.
In the mean time I got these messages in the Osmo-BTS log:
<0006> scheduler.c:276 PH-DATA.req: chan_nr=0x0a link_id=0x00 fn=1284768 ts=2 tr x=0
<0006> scheduler.c:1036 TCH/F has not been served !! No prim for trx=0 ts=1 at f n=1284764 to transmit.
<0006> scheduler.c:1036 TCH/F has not been served !! No prim for trx=0 ts=2 at f n=1284764 to transmit.
<0006> scheduler.c:379 TCH RTS.ind: chan=TCH/F chan_nr=0x09 fn=1284772 ts=1 trx= 0
<0006> scheduler.c:276 PH-DATA.req: chan_nr=0x09 link_id=0x00 fn=1284772 ts=1 tr x=0
<0006> scheduler.c:379 TCH RTS.ind: chan=TCH/F chan_nr=0x0a fn=1284772 ts=2 trx= 0
<0006> scheduler.c:276 PH-DATA.req: chan_nr=0x0a link_id=0x00 fn=1284772 ts=2 tr x=0
<0006> scheduler.c:1036 TCH/F has not been served !! No prim for trx=0 ts=1 at f n=1284768 to transmit.
<0006> scheduler.c:1036 TCH/F has not been served !! No prim for trx=0 ts=2 at f n=1284768 to transmit.
SMS and GPRS seems to be fine.
If someone have any idea, I would love to hear it. :-)
Thanks!
Csaba
Hi all,
This patch set adds to libosmocore an optimized Viterbi decodeer for
architecture specific (Intel SSE) and non-specific cases. The
implementation covers codes with constraint lengths of K=5 and K=7 and
rates 1/4 to 3/4, which make up the majority of GSM use cases. Speedup
from the current implementation is in the range of 5 to 20 depending on
the processor and code type. API is unchanged.
Tested on Haswell (i7-4770K) and Atom (D2550). Additional test codes
from osmo-bts are included. Further tests for AWGN bit-error-rate
and benchmarks can be found in the following repository.
https://github.com/ttsou/osmo-conv-test
Here are some examples.
Bit error test for GPRS CS2 with SNR of 5 dB and 100000 bursts.
$ ./conv_test -c 2 -e -r 5 -i 100000
=================================================
[+] Testing: GPRS CS2
[.] Specs: (N=2, K=5, non-recursive, flushed, not punctured)
[.] Input length : ret = 290 exp = 290 -> OK
[.] Output length : ret = 588 exp = 588 -> OK
[.] BER tests:
[..] Testing base:
[..] Input BER.......................... 0.042443
[..] Output BER......................... 0.000006
[..] Output FER......................... 0.001350 (135)
[..] Testing SIMD:
[..] Input BER.......................... 0.042460
[..] Output BER......................... 0.000005
[..] Output FER......................... 0.001240 (124)
Timed AFS benchmark with 8 threads and 100000 bursts per thread.
$ ./conv_test -b -c 10 -j 8 -i 100000
=================================================
[+] Testing: GSM TCH/AFS 6.7
[.] Specs: (N=4, K=5, recursive, flushed, punctured)
[.] Input length : ret = 140 exp = 140 -> OK
[.] Output length : ret = 448 exp = 448 -> OK
[.] Performance benchmark:
[..] Encoding / Decoding 800000 bursts on 8 thread(s):
[..] Testing base:
[..] Elapsed time....................... 4.320001 secs
[..] Rate............................... 25.925920 Mbps
[..] Testing SIMD:
[..] Elapsed time....................... 0.458272 secs
[..] Rate............................... 244.396341 Mbps
[..] Speedup............................ 9.426718
-TT
This commit adds this predicate function which can be used to
avoid the execution of code if a certain log level is not enabled.
The function will only return 0 (false), if it is sure that a logging
call for the same facility and level will not produce any output.
This safety criterion shall ensure, that no logging output is lost
due to the use of this predicate as a guard. On the other hand, even
if the predicate returns != 0 (true), no logging output might get
generated by a similar logging command.
Note that the current implementation is not focussed on performance,
which could be improved by using a lookup table instead of iterating
through every target.
Sponsored-by: On-Waves ehf
---
include/osmocom/core/logging.h | 1 +
src/logging.c | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h
index 1c159d0..290b33d 100644
--- a/include/osmocom/core/logging.h
+++ b/include/osmocom/core/logging.h
@@ -198,6 +198,7 @@ void logp2(int subsys, unsigned int level, const char *file,
int line, int cont, const char *format, ...)
__attribute__ ((format (printf, 6, 7)));
int log_init(const struct log_info *inf, void *talloc_ctx);
+int log_check_level(int subsys, unsigned int level);
/* context management */
void log_reset_context(void);
diff --git a/src/logging.c b/src/logging.c
index 876964a..c7b1999 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -865,4 +865,43 @@ int log_init(const struct log_info *inf, void *ctx)
return 0;
}
+/*! \brief Check whether a log entry will be generated.
+ * \returns != 0 if a log entry might get generated by at least one target */
+int log_check_level(int subsys, unsigned int level)
+{
+ struct log_target *tar;
+
+ if (subsys < 0)
+ subsys = subsys_lib2index(subsys);
+
+ if (subsys > osmo_log_info->num_cat)
+ subsys = DLGLOBAL;
+
+ /* TODO: The following could/should be cached (update on config) */
+
+ llist_for_each_entry(tar, &osmo_log_target_list, entry) {
+ struct log_category *category;
+
+ category = &tar->categories[subsys];
+ /* subsystem is not supposed to be logged */
+ if (!category->enabled)
+ continue;
+
+ /* Check the global log level */
+ if (tar->loglevel != 0 && level < tar->loglevel)
+ continue;
+
+ /* Check the category log level */
+ if (tar->loglevel == 0 && category->loglevel != 0 &&
+ level < category->loglevel)
+ continue;
+
+ /* This might get logged (ignoring filters) */
+ return 1;
+ }
+
+ /* We are sure, that this will not be logged. */
+ return 0;
+}
+
/*! @} */
--
1.9.1
Hi,
here are some patches that I produced while compiling some osmocom
projects and its dependencies on a new box.
Most of them are trivialities that prevent compiler warnings.
The patch for openbsc though fixes a bug that prevents the build when
libgtp from openggsn is not present on the system.
Kind regards,
-Alex
Hi,
I like code-review around mailinglists (mostly everybody can read and learn from
comments or code), it shows that people collaborate and that we move forward.
What I don't like about the current workflow is that we need to manually close things
in patchwork after applying/rejecting/ignoring a patch and that to see if it compiles and
works are done after the review and by the person that applies the changes.
In other projects I have used Gerrit and besides it being a Java monster found it
quite okay to use. One strength is that one can directly push the changes for a branch
for review, the other is that Jenkins and Gerrit can collaborate. This means that after
a commit is pushed make, make check, make distcheck can be executed. Comments
will always be attached to a line and not be lost due me quoting and removing parts
of the mail.
What I am not sure about:
* How do the email notifications look like? E.g. do we just get a "Somebody has
commented" mail or do we get diff + comment sent here? In OpenOCD I see there
is an email with the diff[1] but no mail with the comments.
* Shall we support direct pushes? I think specially in the beginning we should but
the branch name for that would change.
* A change that impacts libopenbsc+OpenBSC is difficult to represent. It would break
"the" build but I don't see any other way.
Is there enough consensus to give it a try?
holger
[1] http://sourceforge.net/p/openocd/mailman/message/34646766/
These functions originate from openbsc/src/gprs but are generic
msgb helper functions.
msgb_copy: This function allocates a new msgb, copies the data
buffer of msg, and adjusts the pointers (incl. l1h-l4h)
accordingly.
msgb_resize_area:
This resizes a sub area of the msgb data and adjusts the
pointers (incl. l1h-l4h) accordingly.
Sponsored-by: On-Waves ehf
---
include/osmocom/core/msgb.h | 3 ++
src/msgb.c | 88 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 91 insertions(+)
diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h
index 644a639..21e363a 100644
--- a/include/osmocom/core/msgb.h
+++ b/include/osmocom/core/msgb.h
@@ -74,6 +74,9 @@ extern struct msgb *msgb_dequeue(struct llist_head *queue);
extern void msgb_reset(struct msgb *m);
uint16_t msgb_length(const struct msgb *msg);
extern const char *msgb_hexdump(const struct msgb *msg);
+extern int msgb_resize_area(struct msgb *msg, uint8_t *area,
+ size_t old_size, size_t new_size);
+extern struct msgb *msgb_copy(const struct msgb *msg, const char *name);
#ifdef MSGB_DEBUG
#include <osmocom/core/panic.h>
diff --git a/src/msgb.c b/src/msgb.c
index b2fe1d2..a257479 100644
--- a/src/msgb.c
+++ b/src/msgb.c
@@ -153,6 +153,94 @@ void msgb_set_talloc_ctx(void *ctx)
tall_msgb_ctx = ctx;
}
+/*! \brief Copy an msgb.
+ *
+ * This function allocates a new msgb, copies the data buffer of msg,
+ * and adjusts the pointers (incl l1h-l4h) accordingly. The cb part
+ * is not copied.
+ * \param[in] msg The old msgb object
+ * \param[in] name Human-readable name to be associated with msgb
+ */
+struct msgb *msgb_copy(const struct msgb *msg, const char *name)
+{
+ struct msgb *new_msg;
+
+ new_msg = msgb_alloc(msg->data_len, name);
+ if (!new_msg)
+ return NULL;
+
+ /* copy data */
+ memcpy(new_msg->_data, msg->_data, new_msg->data_len);
+
+ /* copy header */
+ new_msg->len = msg->len;
+ new_msg->data += msg->data - msg->_data;
+ new_msg->head += msg->head - msg->_data;
+ new_msg->tail += msg->tail - msg->_data;
+
+ if (msg->l1h)
+ new_msg->l1h = new_msg->_data + (msg->l1h - msg->_data);
+ if (msg->l2h)
+ new_msg->l2h = new_msg->_data + (msg->l2h - msg->_data);
+ if (msg->l3h)
+ new_msg->l3h = new_msg->_data + (msg->l3h - msg->_data);
+ if (msg->l4h)
+ new_msg->l4h = new_msg->_data + (msg->l4h - msg->_data);
+
+ return new_msg;
+}
+
+/*! \brief Resize an area within an msgb
+ *
+ * This resizes a sub area of the msgb data and adjusts the pointers (incl
+ * l1h-l4h) accordingly. The cb part is not updated. If the area is extended,
+ * the contents of the extension is undefined. The complete sub area must be a
+ * part of [data,tail].
+ *
+ * \param[inout] msg The msgb object
+ * \param[in] area A pointer to the sub-area
+ * \param[in] old_size The old size of the sub-area
+ * \param[in] new_size The new size of the sub-area
+ * \returns 0 on success, -1 if there is not enough space to extend the area
+ */
+int msgb_resize_area(struct msgb *msg, uint8_t *area,
+ size_t old_size, size_t new_size)
+{
+ int rc;
+ uint8_t *rest = area + old_size;
+ int rest_len = msg->len - old_size - (area - msg->data);
+ int delta_size = (int)new_size - (int)old_size;
+
+ if (area < msg->data || rest > msg->tail)
+ MSGB_ABORT(msg, "Sub area is not fully contained in the msg data\n");
+
+ if (delta_size == 0)
+ return 0;
+
+ if (delta_size > 0) {
+ rc = msgb_trim(msg, msg->len + delta_size);
+ if (rc < 0)
+ return rc;
+ }
+
+ memmove(area + new_size, area + old_size, rest_len);
+
+ if (msg->l1h >= rest)
+ msg->l1h += delta_size;
+ if (msg->l2h >= rest)
+ msg->l2h += delta_size;
+ if (msg->l3h >= rest)
+ msg->l3h += delta_size;
+ if (msg->l4h >= rest)
+ msg->l4h += delta_size;
+
+ if (delta_size < 0)
+ msgb_trim(msg, msg->len + delta_size);
+
+ return 0;
+}
+
+
/*! \brief Return a (static) buffer containing a hexdump of the msg
* \param[in] msg message buffer
* \returns a pointer to a static char array
--
1.9.1
This series imports Pablo Neira Ayuso original gtp-kernel support patch
unmodified to master and applies some fixes ontop of it.
The last patch in the series then add network namespace support to it.
This state is in sync with gtp-kernel patch I posted a few minutes ago.
Andreas
--
Andreas Schultz (3):
ggsn: update gpt-kernel logging to libosmocore
ggsn: fix autotool pkg-config invokation
ggsn: add network namespace support
Pablo Neira Ayuso (1):
ggsn: add support for GTP kernel data encapsulation
configure.ac | 15 ++++
ggsn/Makefile.am | 11 ++-
ggsn/cmdline.c | 48 +++++++++-
ggsn/cmdline.ggo | 4 +
ggsn/cmdline.h | 8 ++
ggsn/ggsn.c | 52 ++++++++++-
ggsn/gtp-kernel.c | 258 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
ggsn/gtp-kernel.h | 53 +++++++++++
lib/Makefile.am | 4 +-
lib/netns.c | 135 ++++++++++++++++++++++++++++
lib/netns.h | 26 ++++++
11 files changed, 607 insertions(+), 7 deletions(-)
create mode 100644 ggsn/gtp-kernel.c
create mode 100644 ggsn/gtp-kernel.h
create mode 100644 lib/netns.c
create mode 100644 lib/netns.h
--
2.5.0
By the example of osmo-sgsn, package osmo-gtphub for debian.
Sponsored-by: On-Waves ehi
---
debian/control | 14 +++
debian/osmocom-gtphub.default | 2 +
debian/osmocom-gtphub.examples | 1 +
debian/osmocom-gtphub.init | 150 +++++++++++++++++++++++
debian/osmocom-gtphub.install | 1 +
debian/rules | 1 +
openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg | 23 ++++
7 files changed, 192 insertions(+)
create mode 100644 debian/osmocom-gtphub.default
create mode 100644 debian/osmocom-gtphub.examples
create mode 100755 debian/osmocom-gtphub.init
create mode 100644 debian/osmocom-gtphub.install
create mode 100644 openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
diff --git a/debian/control b/debian/control
index 2447d29..53b6908 100644
--- a/debian/control
+++ b/debian/control
@@ -50,6 +50,12 @@ Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Osmocom Base Station Controller Network Address Translation
Network address translation for BSC.
+Package: osmocom-gtphub
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Osmocom GTP hub
+ Proxy for comms between SGSN and GGSN.
+
Package: osmocom-bsc-dbg
Architecture: any
Section: debug
@@ -105,3 +111,11 @@ Priority: extra
Depends: osmocom-bsc-nat (= ${binary:Version}), ${misc:Depends}
Description: Debug symbols for the OpenBSC Network Address Translation
Make debugging possible
+
+Package: osmocom-gtphub-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: osmocom-gtphub (= ${binary:Version}), ${misc:Depends}
+Description: Debug symbols for Osmocom GTP hub
+ Make debugging possible
diff --git a/debian/osmocom-gtphub.default b/debian/osmocom-gtphub.default
new file mode 100644
index 0000000..6af82da
--- /dev/null
+++ b/debian/osmocom-gtphub.default
@@ -0,0 +1,2 @@
+CONFIG_FILE="/etc/osmocom/osmo-gtphub.cfg"
+
diff --git a/debian/osmocom-gtphub.examples b/debian/osmocom-gtphub.examples
new file mode 100644
index 0000000..48c2dc0
--- /dev/null
+++ b/debian/osmocom-gtphub.examples
@@ -0,0 +1 @@
+openbsc/doc/examples/osmo-gtphub
diff --git a/debian/osmocom-gtphub.init b/debian/osmocom-gtphub.init
new file mode 100755
index 0000000..4dc67b3
--- /dev/null
+++ b/debian/osmocom-gtphub.init
@@ -0,0 +1,150 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: osmo-gtphub
+# Required-Start: $network $local_fs
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Osmocom GTP hub
+# Description: Osmocom GTP hub
+### END INIT INFO
+
+# Author: Neels Hofmeyr <nhofmeyr(a)sysmocom.de>
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+NAME=osmo-gtphub # Introduce the short server's name here
+DESC="Osmocom GTP hub" # Introduce a short description here
+DAEMON=/usr/bin/osmo-gtphub # Introduce the server's location here
+SCRIPTNAME=/etc/init.d/osmocom-gtphub
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/osmocom-gtphub ] && . /etc/default/osmocom-gtphub
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+DAEMON_ARGS="$DAEMON_ARGS -D -c $CONFIG_FILE"
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon --start --quiet --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+ # Add code here, if necessary, that waits for the process to be ready
+ # to handle requests from services started subsequently which depend
+ # on this one. As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ #
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ #
+ start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ #reload|force-reload)
+ #
+ # If do_reload() is not implemented then leave this commented out
+ # and leave 'force-reload' as an alias for 'restart'.
+ #
+ #log_daemon_msg "Reloading $DESC" "$NAME"
+ #do_reload
+ #log_end_msg $?
+ #;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/debian/osmocom-gtphub.install b/debian/osmocom-gtphub.install
new file mode 100644
index 0000000..908c1a5
--- /dev/null
+++ b/debian/osmocom-gtphub.install
@@ -0,0 +1 @@
+/usr/bin/osmo-gtphub
diff --git a/debian/rules b/debian/rules
index 8047b79..62518d9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -34,6 +34,7 @@ override_dh_strip:
dh_strip -posmocom-sgsn --dbg-package=osmocom-sgsn-dbg
dh_strip -posmocom-gbproxy --dbg-package=osmocom-gbproxy-dbg
dh_strip -posmocom-bsc-nat --dbg-package=osmocom-bsc-nat-dbg
+ dh_strip -posmocom-gtphub --dbg-package=osmocom-gtphub-dbg
override_dh_auto_configure:
echo $(VERSION) > openbsc/.tarball-version
diff --git a/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
new file mode 100644
index 0000000..c9bb4cf
--- /dev/null
+++ b/openbsc/doc/examples/osmo-gtphub/osmo-gtphub.cfg
@@ -0,0 +1,23 @@
+!
+! Osmocom gtphub configuration
+!
+
+line vty
+ no login
+
+gtphub
+ ! Local addresses to listen on and send from, each on standard ports
+ ! 2123 and 2152. Setting these addresses is mandatory.
+ bind-to-sgsns 127.0.0.1
+ bind-to-ggsns 127.0.0.2
+
+ ! Local nonstandard ports or separate IPs:
+ !bind-to-sgsns ctrl 127.0.0.1 2342 user 127.0.0.1 4223
+
+ ! Proxy: unconditionally direct all traffic to...
+ !ggsn-proxy 127.0.0.3
+ !sgsn-proxy 127.0.0.4
+
+ ! Proxy with nonstandard ports or separate IPs:
+ !ggsn-proxy ctrl 127.0.0.3 2123 user 127.0.0.5 2152
+
--
2.1.4
Dear Neels,
Today just grabbed the latest OpenBSC master, and got this compile error:
Making all in gtphub
make[3]: Entering directory `/root/new_osmocom/openbsc/openbsc/tests/gtphub'
CC gtphub_test.o
CC ../../src/gprs/gtphub.o
../../src/gprs/gtphub.c:2191:1: fatal error: opening dependency file .deps/../../src/gprs/gtphub.Tpo: No such file or directory
}
^
compilation terminated.
make[3]: *** [../../src/gprs/gtphub.o] Error 1
make[3]: Leaving directory `/root/new_osmocom/openbsc/openbsc/tests/gtphub'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/new_osmocom/openbsc/openbsc/tests'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/new_osmocom/openbsc/openbsc'
make: *** [all] Error 2
Do you have any idea why is this happening?
Regards,
Csaba
The del_cb is now also used for ares (GGSN resolution) timeouts, and expiry is
anyway separated from nr_map, so this comment is void.
Sponsored-by: On-Waves ehi
---
openbsc/include/openbsc/gtphub.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/openbsc/include/openbsc/gtphub.h b/openbsc/include/openbsc/gtphub.h
index 49d685c..68cf90e 100644
--- a/openbsc/include/openbsc/gtphub.h
+++ b/openbsc/include/openbsc/gtphub.h
@@ -248,8 +248,6 @@ int expiry_tick(struct expiry *exq, time_t now);
* Mapping allocation and a del_cb are provided by the caller. If del_cb is
* NULL, no deallocation will be done (allowing statically allocated entries).
*/
-/* TODO at some point I thought the allocation & del_cb complexity was
- * needed/helpful, but by now it seems like overkill. Maybe lose that again. */
typedef int nr_t;
--
2.1.4
Hi Alexander,
Just wanted to thank you for the web version of meas_vis utility, and wanted to confirm that it works very well with Nokia Site family (E1 based) and the USRP B200 too :-)
If someone missed it, the web version can be found here:
https://github.com/fairwaves/meas_web
It would make life easier if the meas_json utility would make it to the master branch:
http://cgit.osmocom.org/openbsc/log/?h=achemeris/meas_json
Is there a reason it is not being merged?
Regards,
Csaba
Dear List,
I am in the process of further updating the following Wiki article:
The goal is to have a clean, up to date manual which tells in detail how to set up OpenBSC.
In the light of recent changes I decided to change this already working setup to use the "master" branches of every involved Osmocom project.
It is finally possible to compile and run every project after the proper dependencies are met. But some new problem popped up I haven't seen before.
After everything is started up (OpenBSC, GGSN, SGSN, LCR, TRX, and PCU), when a phone tries to RACH, this is what I get in the BSC log:
Sat Nov 28 14:09:08 2015 <0004> abis_rsl.c:1423 BTS 0 CHAN RQD: no resources for SDCCH 0xf
Sat Nov 28 14:09:19 2015 <0004> abis_rsl.c:1423 BTS 0 CHAN RQD: no resources for SDCCH 0x6
Sat Nov 28 14:09:30 2015 <0004> abis_rsl.c:1423 BTS 0 CHAN RQD: no resources for SDCCH 0x6
On the BTS side, this is what I get:
<0006> scheduler.c:1186 Received Access Burst on RACH fn=9868 toa=5.88
<0006> scheduler.c:1192 Received bad AB frame at fn=9868 (25/51)
<0006> scheduler.c:1186 Received Access Burst on RACH fn=52459 toa=-1.50
<0006> scheduler.c:1192 Received bad AB frame at fn=52459 (31/51)
<0006> scheduler.c:1186 Received Access Burst on RACH fn=67956 toa=-0.06
<0006> scheduler.c:1192 Received bad AB frame at fn=67956 (24/51)
Because I used exactly the same config files I used before when it all worked, I analyzed the logs a littlebit more.
In the BTS log, during the OML setup this is what I found:
<0001> oml.c:802 ADM state already was Unlocked
<0001> oml.c:256 OC=BASEBAND-TRANSCEIVER INST=(00,00,ff) OPER STATE NULL -> Enabled
<0001> oml.c:217 OC=BASEBAND-TRANSCEIVER INST=(00,00,ff) Tx STATE CHG REP
<000b> trx_if.c:366 Response message 'RSP ERR 1' does not match command message 'CMD SETBSIC 62' !!!!!!
<0001> oml.c:1059 Rx IPA RSL CONNECT IP=127.0.0.1 PORT=3003 STREAM=0x00
<0011> input/ipa.c:129 connection done.
<0011> input/ipaccess.c:693 received ID get
<0000> rsl.c:279 Tx RSL RF RESource INDication
Maybe the recent changes in the BSIC/TSC handling part is causing this? Anyway it seems that the BSIC I set in the BSC is the correct one the BTS tries to configure during the timeslot, transceiver and BTS setup.
I attached the corresponding OML trace, and the logs.
If someone has any ideas, please let me know.
Regards,
Csaba
This is the first patch of the series. The first two patches are
improvements of the log output and are independent of the 3rd patch in
terms of code - proposed logging improvements just make it easier to
debug issues with MNCC cause codes.
The code is also a part of the achemeris/mncc_cause_fixes_master branch.
--
Regards,
Alexander Chemeris.
CEO, Fairwaves, Inc.
https://fairwaves.co
Previously we were sending a generic "Resource unavailable" cause code making
it impossible to distinguish real error cases from a regular radio link failure.
This was the reason for many "unknown" call errors we've seen at Rhizomatica
installations. Now they are properly classified as non-erroneous call failures.
The code is also a part of the achemeris/mncc_cause_fixes_master branch.
--
Regards,
Alexander Chemeris.
CEO, Fairwaves, Inc.
https://fairwaves.co
About below commit: Sorry / Thanks! I forgot to move gtphub into the
HAVE_LIBCARES conditional when I added ares...
The gtphub tests wrap the ares functions away, so they build without libc-ares.
But does it make sense to enable the gtphub test when the binary isn't built?
~Neels
> commit 97b6bfa996ed1745d27c5598186c4583f7e90861
> Author: Harald Welte <laforge(a)gnumonks.org>
> Date: Sat Nov 21 13:16:08 2015 +0100
>
> Fix compilation with no libc-ares present on the system
>
> This build failure was introduced with the OAP and gtphub changes.
>
> diff --git a/openbsc/src/gprs/Makefile.am b/openbsc/src/gprs/Makefile.am
> index 5212c67..5e115eb 100644
> --- a/openbsc/src/gprs/Makefile.am
> +++ b/openbsc/src/gprs/Makefile.am
> @@ -11,9 +11,8 @@ noinst_HEADERS = gprs_sndcp.h
> bin_PROGRAMS = osmo-gbproxy
>
> if HAVE_LIBGTP
> -bin_PROGRAMS += osmo-gtphub
> if HAVE_LIBCARES
> -bin_PROGRAMS += osmo-sgsn
> +bin_PROGRAMS += osmo-sgsn osmo-gtphub
> endif
> endif
>
> diff --git a/openbsc/tests/Makefile.am b/openbsc/tests/Makefile.am
> index 995660a..04b8e34 100644
> --- a/openbsc/tests/Makefile.am
> +++ b/openbsc/tests/Makefile.am
> @@ -13,7 +13,10 @@ SUBDIRS += smpp
> endif
>
> if HAVE_LIBGTP
> -SUBDIRS += sgsn oap gtphub
> +SUBDIRS += gtphub
> +if HAVE_LIBCARES
> +SUBDIRS += sgsn oap
> +endif
> endif
>
Hi,
Sorry for smsching this all together, but I couldn't find a
logical point to split the patches. Also the order can't
really be changed as most patches depend on each other.
After this series, the GTP kernel module is functional
for IPv4 payload in IPv4 GTP tunnels (for GTPv0 and v1).
The libgtnl API was changed without increasing the SO version
of the lib. I think this is ok since nothing really uses it
(yet) nor has the library been offcially released.
Andreas Schultz (16):
gtp: remove unused local variable
gtp: remove genl_register_family_with_ops for Linux < 3.13
gtp: convert the global gtp_instance_list to a per netns list
gtp: select netns based on NL attribute
gtp-rtnl: and netns support
gtp: add error handling to gtp_newlink
gtp: fix the order of error cases in gtp_encap_enable
gtp: add socket destroy handler
gtp: replace udp encap setup with setup_udp_tunnel_sock
gtp: switch to iptunnel framework and no longer depend on real_dev
gtp: Split TID handling got GTPv0 and GTPv1
gtp-rtnl: sync GTPA_FLOW nl attribute name from kernel to userspace
gtp-rtnl: real_ifname is not long needed, remove it
gtp-rtnl: Split tid handling for GTPv0 and GTPv1
list Andreas Schultz as author
gtp: add support for replacing PDP contexts
gtp.c | 657 ++++++++++++++++++++++++---------------
gtp_nl.h | 3 +
libgtnl/AUTHORS | 1 +
libgtnl/include/libgtpnl/gtp.h | 6 +
libgtnl/include/libgtpnl/gtpnl.h | 3 +-
libgtnl/include/linux/gtp_nl.h | 5 +-
libgtnl/src/gtp-genl.c | 34 +-
libgtnl/src/gtp-rtnl.c | 10 +-
libgtnl/src/gtp.c | 44 ++-
libgtnl/src/internal.h | 13 +-
libgtnl/src/libgtpnl.map | 6 +
libgtnl/tools/Makefile.am | 4 +-
libgtnl/tools/gtp-link-add.c | 5 +-
libgtnl/tools/gtp-tunnel.c | 132 +++++---
libgtnl/tools/gtpnl.c | 35 ---
15 files changed, 613 insertions(+), 345 deletions(-)
delete mode 100644 libgtnl/tools/gtpnl.c
--
2.5.0
Hi.
While trying to debug issue with osmo-pcu failing to allocate tfi due to pdch
unavailability I've noticed that regular connection attempts are also failing with
imm. ass. reject due to channel unavailability.
I do not see rach flood so it feels like misconfiguration or maybe hw issue.
MY question is - how to troubleshoot this? Where can I look as to which channels are
available, which are occupied and by whom?
thanks,
Max.
Hi all,
I've been looking into upgrading our copy of talloc.[ch] in libosmocore,
but unlike 7 years ago, it is not that easy anymore. The build system
integration is quite heavy, and it might be a good point to simply drop
talloc from libosmocore.
Also contrary to 7 years ago, distributions tend to ship libtalloc these
days. So there's not really any reason to continue shiping it.
Right now I'm making it optional, and have sorted out how to make this
source compatible. But this generates runtime incompabilities, due to
the ABI incompabibilities between our ancient talloc and current talloc :(
While the API of our talloc and current talloc seems compatible, the ABI
is not. For example, they changed talloc_free() into an inline function
resulting in calls to _talloc_free(), while our code links directly
against talloc_free().
So We'd have to move from libosmocore-6.0.0 to 7.0.0 as part of the
transition and cannot really keep both options without causing
additional compatibility issues to our users.
So the question is: Why bother? does anyone have objections to removing
the built-in talloc?
--
- 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)
With phone attached to my configured EGPRS, sometimes it has a data rate around 200kbps (which is near optimal), while frequently it has a intolerablly slow data rate. Is it a common problem, or it's due to incorrect configrations or hardware problems? I run a gsm test system with nanobts, and the libosmocore, openbsc, openggsn codes are based on the version around end of April 2015. The configuration is made accorrding to the instruction from openbsc web. The correction in fc_queue_timer_cfg has also been made according to Jacob Erlbeck.
Hi list,
I'm sometimes confused about which repository a patch set is intended for.
Is there an easy way to include the repository name in a mailed patch set,
besides naming it manually in a cover-letter?
~Neels
This is the part from the larger patch that deals with network namespace
support only.
The debug instrumentation is there to better diagnose cross namespace
device setup.
The netlink attribute IFLA_NET_NS_FD can be used to specifiy the namespace
for the newly create gtp netdevice.
In the libgtnl API the netspace filedescriptor is optional.
Andreas
--
Andreas Schultz (3):
gtp: add some debug instrumentation
gtp: select netns based on NL attribute
gtp-rtnl: and netns support
gtp.c | 41 ++++++++++++++++++++++++++++++++++++----
gtp_nl.h | 1 +
libgtnl/include/libgtpnl/gtp.h | 2 ++
libgtnl/include/libgtpnl/gtpnl.h | 2 +-
libgtnl/include/linux/gtp_nl.h | 1 +
libgtnl/src/gtp-genl.c | 2 ++
libgtnl/src/gtp-rtnl.c | 4 +++-
libgtnl/src/gtp.c | 12 ++++++++++++
libgtnl/src/internal.h | 1 +
libgtnl/src/libgtpnl.map | 2 ++
10 files changed, 62 insertions(+), 6 deletions(-)
--
2.5.0
Hi,Can someone inform us if the VTY configuration commands to change parameters e.g. cell id, location area code, MS power etc. that are run on OpenBSC VTY telnet interface take effect on next restart of the OpenBSC session or during the same session? If former is the case, is there any way to dynamically change Cell ID, LAC, MS TX power etc i.e. without restarting the OpenBSC session?
Regards,
Amber & Sarosh
I can talk all day about atomic commits, but chunks of gtphub have transformed
twice over (that's me figuring out how to map and resolve GTP data elements),
so that half the patches are obsoleted by later ones, in a hard-to-rebase way.
So here is a joint patch of gtphub for review. If anyone requests it, I will
gladly separate it into a handful of patches adding each subsection / family of
API at a time, to better show where each part reaches. Just ask...
Many thanks for any reviews!
~Neels
Neels Hofmeyr (1):
Add GTP hub (code bomb).
openbsc/.gitignore | 2 +
openbsc/configure.ac | 1 +
openbsc/include/openbsc/Makefile.am | 1 +
openbsc/include/openbsc/debug.h | 1 +
openbsc/include/openbsc/gtphub.h | 345 +++++
openbsc/include/openbsc/vty.h | 1 +
openbsc/src/gprs/Makefile.am | 6 +
openbsc/src/gprs/gtphub.c | 1794 +++++++++++++++++++++++
openbsc/src/gprs/gtphub_main.c | 283 ++++
openbsc/src/gprs/gtphub_sep.c | 26 +
openbsc/src/gprs/gtphub_vty.c | 258 ++++
openbsc/tests/Makefile.am | 2 +-
openbsc/tests/gtphub/Makefile.am | 20 +
openbsc/tests/gtphub/gtphub_nc_test.gtphub.conf | 5 +
openbsc/tests/gtphub/gtphub_nc_test.ok | 7 +
openbsc/tests/gtphub/gtphub_nc_test.sh | 85 ++
openbsc/tests/gtphub/gtphub_test.c | 675 +++++++++
openbsc/tests/gtphub/gtphub_test.ok | 3 +
openbsc/tests/gtphub/hex2bin.py | 13 +
openbsc/tests/testsuite.at | 12 +
20 files changed, 3539 insertions(+), 1 deletion(-)
create mode 100644 openbsc/include/openbsc/gtphub.h
create mode 100644 openbsc/src/gprs/gtphub.c
create mode 100644 openbsc/src/gprs/gtphub_main.c
create mode 100644 openbsc/src/gprs/gtphub_sep.c
create mode 100644 openbsc/src/gprs/gtphub_vty.c
create mode 100644 openbsc/tests/gtphub/Makefile.am
create mode 100644 openbsc/tests/gtphub/gtphub_nc_test.gtphub.conf
create mode 100644 openbsc/tests/gtphub/gtphub_nc_test.ok
create mode 100755 openbsc/tests/gtphub/gtphub_nc_test.sh
create mode 100644 openbsc/tests/gtphub/gtphub_test.c
create mode 100644 openbsc/tests/gtphub/gtphub_test.ok
create mode 100755 openbsc/tests/gtphub/hex2bin.py
--
2.1.4
Hi OpenBSC,
I have just merged the gtphub branch to master. The request to do that has
been standing for a while, to let Jenkins run the tests etc., but there
were still quite volatile parts of the code until now.
The last few days, I have successfully tested gtphub in a mock network,
using a web capable phone, a sysmoBTS running an SGSN on-board, and a
gtphub and OpenGGSN on my laptop. It works: I can browse the net!
@Andreas: since our last discussion, I have incorporated all of your
comments. It *does* make sense after all. A peer may request gtphub from
any port, and by sequence number tracking, the response will go back to
that port and IP. Requests with unknown sequence number will be routed
according to the header's TEI, which means that gtphub will send Requests
always to the default port (a proxy with a specific port may be
configured, though). Another thanks for your input!
GGSN resolution by DNS (GRX C ares) is taking a shortcut: hoping that the
peer will try again, after a DNS request has first been fired, gtphub will
simply not respond. Once a GGSN has been resolved and sits in the cache,
Requests are served immediately. In this way, I avoided a mechanism to
queue incoming Requests (until DNS is done, so that other messages are not
blocked in the meantime), which would have been the proper way to do this,
but would add quite a bit of complexity that is really only needed for the
very first resolution of a given GGSN... According to spec, an SGSN will
resend Requests a number of times, so this should actually be sufficient,
I guess.
Some small bits are still outright missing, as you may notice from the
various TODO comments. But all the main parts are implemented and tested.
Probably a number of bugs still need to be found.
Some infrastructural things are also missing. Coming up is the debian
build, and soon to follow: rate control.
Thanks for any reviews!
(I intend to employ proper peer review for gtphub from this point on...)
~Neels
The definition of the APN field format in GTPv1 is hidden in a chain
of documents.
3GPP TS 29.060 (the GTPv1-C specification) Section 7.7.30:
> The Access Point Name contains a logical name (see 3GPP TS 23.060 [4]).
> It is coded as in the value part defined in 3GPP TS 24.008
3GPP TS 24.008 Section 10.5.6.1:
> The value part is defined in 3GPP TS 23.003.
3GPP TS 23.003 Section 9.1:
> The APN consists of one or more labels. Each label is coded as a one
> octet length field followed by that number of octets coded as 8 bit
> ASCII characters
This converts a literal APN (e.g. Label1.Label2.Label3) to a structured
field (e.g. \006Label1\006Label2\006Label3)
Signed-off-by: Andreas Schultz <aschultz(a)tpip.net>
---
sgsnemu/sgsnemu.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index 5b56751..832bd97 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -231,6 +231,7 @@ int process_options(int argc, char **argv)
char *type;
char *mcc;
char *mnc;
+ char *tok, *apn;
char *lac;
int lac_d;
char *rest;
@@ -534,10 +535,19 @@ int process_options(int argc, char **argv)
printf("Invalid APN\n");
return -1;
}
- options.apn.l = strlen(args_info.apn_arg);
- strncpy((char *)options.apn.v, args_info.apn_arg,
- sizeof(options.apn.v));
- options.apn.v[sizeof(options.apn.v) - 1] = 0;
+ options.apn.l = strlen(args_info.apn_arg) + 1;
+
+ apn = (char *)options.apn.v;
+ for (tok = strtok(args_info.apn_arg, ".");
+ tok != NULL;
+ tok = strtok(NULL, ".")) {
+ size_t len = strlen(tok);
+
+ *apn++ = (char)len;
+ strncpy(apn, tok, len);
+ apn += len;
+ }
+
printf("Using APN: %s\n", args_info.apn_arg);
/* selmode */
--
2.5.0
I am trying to insert some code to openBSC, and after studying the GSM
network, I decided to test with SMS payload without changing the headers,
the best place for it is in the MSC before the SMS is stored in the SMSC,
can anyone direct me to the source file for it, I've tried to look in
Libsmocore and Openbsc source files but with no success.
Dear all,
as far as I understand, the TCP socket interface between osmo-bts and
OpenBSC only existed in a particular branch/fork of OpenBTS created by
Fairwaves, and it was created at a point where no public release of
OpenBTS included any GPRS support.
As the world has moved on (OpenBTS including their own GRPS code with
something of a unified PCU, SGSN and GGSN; Fairwaves using OsmoBTS), I'm
wondering how much sense it makes to still keep this code in the
osmo-pcu repository.
Particularly, it doesn't seem to make sense to keep it as the compile
default. A default should be applicable to most users / configurations
of a software, shouldn't it?
Any input on thi is appreciated.
My argument would be to drop that code. If not, then at least make it
the non-default case. Or even compile both an osmo-pcu-osmobts and an
osmo-pcu-openbts binary by the default makefile target and do away with
any compile-time switching between the two.
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,
I am working on getting libosmocom package into Fedora, there is
review request in [1].
During the packaging I found following minor issues:
- Incorrect FSF addresses in source code, e.g. there is written in the
sources:
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
But the correct address is (as taken from the
https://www.gnu.org/licenses/gpl-2.0.html):
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- exit call in the library: /usr/lib64/libosmovty.so.3.0.0 exit(a)GLIBC_2.2.5
libraries shouldn't generally call exit.
thanks & regards
Jaroslav
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1279527
Hi all!
This is the announcement for the re-incarnation of our bi-weekly
Osmocom Berlin Meeting.
Nov 11, 8pm @ CCC Berlin, Marienstr. 11, 10117 Berlin
There is no formal presentation this time, but
* there will be SDR equipment, antenna and a working/tested setup of a
gnuradio based MPT1327 decoder
* there will be SIMtrace equipment in case somebody wants to play with
it there will be a sysmoBTS with OsmoBTS, OsmoPCU, OsmoNITB, OsmoSGSN
and OpenGGSN if somebody wants to play with it
* there will be Huawei Femtocells to play with
* Harald would like to discuss OpenBSC website / documentation improvements
The meeting is open to anyone interested in mobile communications. You
do not have to be involved with the Osmocom projects in order to attend.
Anyone interested in mobile communications protocols is welcome.
If you are interested to show up, feel free to do so. The meeting is
"free as in free beer", despite no actual free beer being around ;)
More information can be found at
http://openbsc.osmocom.org/trac/wiki/OsmocomMeeting/Berlin
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org>
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi,
This is the first series of my gtp kernel updates.
It contains mostly the removal of Linux version ifdefs. After this the
module builds only on 4.3+. The goal here is the preparation for main
line inclusion.
The other small change is a update to the Makefile for simpler out-of-tree
build
Andreas
--
Andreas Schultz (6):
build: update Makefile for simpler out of tree builds
gtp: remove genl_ops compat ifdef for Linux < 3.13
gtp: remove per cpu stats compat ifdef for Linux < 3.13
gtp: update for Linux > 4.1+, __ip_select_ident arguments have changed
gtp: update for Linux > 4.1+, genlmsg_end return should be ignored
gtp: update for Linux > 4.2+, set NO_QUEUE flag on gtp device
Makefile | 17 ++++++++++++-----
gtp.c | 11 +++++------
gtp.h | 4 ----
3 files changed, 17 insertions(+), 15 deletions(-)
--
2.5.0
Hi.
I've enabled extra logging for BTS <-> BSC communication and I can see following
neverending cycle - see attachement. Is th constant flow of "Set Chan Attr" and
channel state alternating between Enabled and Disabled states an expected thing or
it's some sort of misconfiguration on my part?
regards,
Max.
Hi.
If I enable detailed-enough logs of OpenBSC I can get data regarding call and sms
transactions:
new state INITIATED -> MO_CALL_PROC, 1 active transactions
new state MO_CALL_PROC -> CONNECT_IND, 1 active transactions
new state CONNECT_IND -> ACTIVE, 1 active transactions
new state ACTIVE -> DISCONNECT_IND, 1 active transactions
new state DISCONNECT_IND -> RELEASE_REQ, 1 active transactions
new state RELEASE_REQ -> NULL, 0 active transactions
However there's no information regarding which mobile is participating in the
transaction.
Is there some way to get CDR-like data from OpenBSC? Smth like
imsi=123 call_to 35345345 duration 12
imsi=53 sms_from 234234
...
cheers,
Max.
Dear Holger, Alexander, list
In the last couple of weeks we experiencing an issue programmin the SJS1 USIm cards with PySIM.
We can read them, but during programming, a lot of us got the following error:
root@D6420:~/pysim#
root@D6420:~/pysim# ./pySim-read.py -p 0
Reading ...
ICCID: 8988211000000073729
IMSI: 901700000007372
SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ACC: 0004
MSISDN: Not available
Done !
root@D6420:~/pysim# ./pySim-prog.py -p 0 -t sysmoUSIM-SJS1 -i 208920000000001 -s 8988211000000073729 -x 208 -y 92 --op=11111111111111111111111111111111 -k 8BAF473F2F8FD09487CCCBD7097C6862 -a 55127679
Insert card now (or CTRL-C to cancel)
Generated card parameters :
> Name : Magic
> SMSP : e1ffffffffffffffffffffffff0581005155f5ffffffffffff000000
> ICCID : 8988211000000073729
> MCC/MNC : 208/92
> IMSI : 208920000000001
> Ki : 8BAF473F2F8FD09487CCCBD7097C6862
> OPC : 8e27b6af0e692e750f32667a3b14605d
> ACC : None
Programming ...
Traceback (most recent call last):
File "./pySim-prog.py", line 626, in <module>
card.program(cp)
File "/root/pysim/pySim/cards.py", line 438, in program
r = self._scc.select_file(['3f00'])
File "/root/pysim/pySim/commands.py", line 44, in select_file
data, sw = self._tp.send_apdu_checksw(self.cla_byte + "a4000002" + i)
File "/root/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 6a86.
root@D6420:~/pysim#
Please note that in this particular case I was trying to reprogram an SJS1 card with a card reader (and the exact command) that was worked in the past, and yet its not working now.
I don't think this is a PySIM error, but more likely a Pyscard or PCSC-lite problem. I tried several Pyscard versions (1.6.10, 1.6.12, 1.6.16. 1.7.0 and 1.9.0) and the it was all the same.
At this point I don't have any more ideas what to try, if anyone would have any suggestions I would apreciate it.
I am certainly not alone with this issue, several folks from OpenAIR and OpenLTE are also having the very same problem.
Regards,
Csaba
I've just noticed that my code cannot handle the same GSN's Ctrl address
handing out differing User plane addresses to various other GSNs. That's
the point of load balancing, after all.
So far I've paired up a Ctrl and a User peer 1:1, that won't do. That and
the reply-to-same-port will make the structures a bit more complex still:
- Each User address has its one managing Ctrl address, but the same Ctrl
address may be used for several User addresses.
- One address can have several ports, and a sequence number that came from
a given port should get its reply with the same sequence number back to
that port (discussion pending?).
~Neels
Here is the fixed OAP patch set of those changes not merged yet.
For decode_big_endian(), see the new API comment and my mail from thursday
night/friday morning.
Thanks for the review!
~Neels
I have configured osmocom openbsc.Everything runs fine.But the configurations do not change
in real time,everytime the system needs to be restarted as changing lac
or cellid in openbsc.cfg file after running the entire setup halts the
osmo-nitb log.I want to change cellid,lac and some other configuration
parameters in runtime as such in openbts so, can you provide some
assistance in this regard?
Any help will be greatly appreciated.
Hey All,
I have configured osmocom openbsc.Everything runs fine.But the configurations do not change
in real time,everytime the system needs to be restarted as changing lac
or cellid in openbsc.cfg file after running the entire setup halts the
osmo-nitb log.I want to change cellid,lac and some other configuration
parameters in runtime as such in openbts so, can you provide some
assistance in this regard?
Any help will be greatly appreciated.
Here is another set of cosmetic improvements for openggsn
(branch: neels/refactor).
This prints the host address in human readable form and covers two more similar
occurences.
A new error log fix has been added (see 4/4).
A nonstandard curly brace change from the previous patch has been dropped, and
replaced by a blank line to increase readability.
~Neels