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
Dear Sir
Is it possible to get the Network Measurement Reports (NMRs) (This report
comprises of Serving and neighboring cell-id , received signal strengths,
timing advance, time of arrival values etc) of a particular Number/IMSI
using OpenBSC. I am aware that we get these fields from the normal BSC.
Regards.
Ravi
Hi, I am using OsmoSGSN in topology with OpenGGSN and proprietary simulator
of BSS. There was a problem with an implementation of Network service,
cause Network Service implementation in the simulator of BSS is based on
different release of 3GPP standard (3GPP TS 48. 016 v7. 4. 0
(2008-04)/Network service (Release 7))...and the problem is that in
IP-subnetwork, which I am using there is no use for RESET or UNBLOCK
procedure, so I had to do a PATCH in gprs_ns.c, which was needed to
complete succesful connection between sim-bss and OsmoSGSN:
switch (nsh->pdu_type) {
case NS_PDUT_ALIVE:
+++ LOGP(DNS, LOGL_INFO, "Rx NS ALIVE\n");
+++ /*mark NS-VC as alive*/
+++ (*nsvc)->state = NSE_S_ALIVE;
+++ (*nsvc)->remote_state = NSE_S_ALIVE;
+++ /*initiate TEST procedure: Send ALIVE_ACK and start timer*/
+++ rc = gprs_ns_tx_simple((*nsvc), NS_PDUT_ALIVE_ACK);
+++ nsvc_start_timer((*nsvc), NSVC_TIMER_TNS_TEST);
+++ break;
.
.
.
}
another PATCH I needed to do was to change a little bit procedure for
allocation of P-TMSI in procedure uint32_t sgsn_alloc_ptmsi(void) in
gprs_sgsn.c
uint32_t sgsn_alloc_ptmsi(void)
{
struct sgsn_mm_ctx *mm;
uint32_t ptmsi;
restart:
+++ ptmsi = rand() | 0xc0000000; /*because of GPRS IMSI
ATTACH*/
llist_for_each_entry(mm, &sgsn_mm_ctxts, list) {
if (mm->p_tmsi == ptmsi)
goto restart;
}
return ptmsi;
}
because in GPRS IMSI ATTACH in message ATTACH COMPLETE (3GPP 24.008,
23.003, 48.018) there is new TLLI==new allocated P-TMSI and I need local
TLLI, so I had to do it this way
regards Michal
Hi,
When having a look at
http://discourse.criticalengineering.org/t/howto-gsm-base-station-with-the-b
eaglebone-black-debian-gnu-linux-and-a-usrp/56
I wonder if there is a way to use the osmo-trx with rangenetworks RAD1/SDR1
radio. I do not yet own an Ettus B210, so it would be fun using the
BeagleBone with the RAD1/SDR1, what is some shrinked and at the same time
extended USRP1 radio.
Ralph.
--
Ralph A. Schmid
Mondstr. 10
90762 Fürth
+49-171-3631223
ralph(a)schmid.xxx
http://www.bclog.de/
Hi!
we have the need to generate and parse LLDP frames and would like to
use the TLV infrastructure of libosmocore for it. In LLDP the tag is
only 7bit and the length is 9bit long. To make this work with the tlv
parsing routines we need to shift the tag. But this means that when
somebody is a tlv_definition with the T7L9 type and others we might
match the wrong thing. I would like to include the feature as it is
right now. The alternative would be to create a separate tlv_parse
and tlv_parse_one routine for the other type.
comments?
holger
Norbert,
On Thu, Jul 10, 2014 at 11:01 AM, Norbert Englberger
<Norbert.Englberger(a)unibw.de> wrote:
> Alexander Chemeris wrote:
>>Just for the sake of full understanding, what you're asking for is called "Late Assignment". Check the specs for the exact details or Wikipedia for a brief explanation:
>>http://en.m.wikipedia.org/wiki/Um_interface#Mobile-Originating_Call_.28MOC.…
>>I don't have the code near me at the moment, but this might be implemented in the "jolly" branch.
>
> i was already using the jolly/testing branch.
>
> Now that you hinted me to the "Late Assignment" I googled that and found that there is a "jolly/new_handover" branch using it.
> Is this still the branch I should use, because when I tried to compile it, make failed. (I am right now trying to google if there are
> other dependencies I have to change the branch and to recompile)
I have never worked with this branch, so can't comment unfortunately.
AFAIK, this branch is not being used in real environments, so it's
most likely bit-rotten. My suggestion is to take the implementation
there as an inspiration and re-implement it for master. That would
make a good work for one of your students probably.
Please don't move the conversation into private and keep the mailing list CC'ed.
--
Regards,
Alexander Chemeris.
CEO, Fairwaves, Inc.
https://fairwaves.co
Hello everybody,
after starting on my new Job at an University I have been tasked to build up
an BTS for our students.
Being a complete noob to both Linux and GSM it took me some time, but I
finally got OpenBSC and Osmo-BTS up and running on Ubuntu Linux 12.04 with
our ETTUS N210.
After doing some experiments with this setup, our students now ask me to do
some changes which I couldn't figure out yet, how to do.
1. The students told me, that OpenBSC doesn't behave like all the BTS from
commercial Providers they analysed:
The say that on commercial nets at the beginning of a phone call there will
be send an "Immediate assignment" sending the MS always to a SDCCH on TS 1
or TS2 where the encryption will be startet. After establishing the
encryption another "Immediate assignment" will occour and send the MS to a
Traffic Channel (which also contains the FACCH / SACCH) for the actual
Communication.
OpenBSC also sends the "Immediate assignment" on TS0 but sends the MS
directly to Timeslot with a Traffic Channel where all the signalling, like
encryption, will be done in the SACCH.
Is there any way to configure OsmoBSC to behave like the commercial BTS the
students described?
2. I have been asked if I could enable "Frequency Hopping"
Right now I already fail to bring up a second TRX with OpenBSC.
I start 2 instances of "osmo-trx" with 2 differents IP-Addresses but the
same port, after that I start "osmobts-trx" with the "-t 2" parameter.
OpenBSC seems to see both USRPs but the LED'S an the USRPs indicate that
only one is completely powered up and transmitting (a quick check with an
Motorola with RSSI also shows only one ARFC).
So how do I have to start "osmo-trx" to enable transmitting on both URSPs
as TRX0 and TRX1 in one BTS?
After that, is it possible to configure "Frequency hopping" with this setup?
(Because when I changed the value "hopping enabled" of the timeslots in
open-bts.cfg to "1" I get a message that this type of BTS does not support
hopping)
I hope that anyone can clarify those two points to me.
Thanks in advance
Norbie
Hi Norbert,
08 июля 2014 г. 16:34 пользователь "Norbert Englberger" <
Norbert.Englberger(a)unibw.de> написал:
>
>
> Hello again,
>
> Holger Hans Peter Freyther wrote:
>
> > it is not a question of BTS but the BSC. The role of the BSC is to
manage
> the
> > channels. Inside src/libbsc/gsm_04_08_utils.c you will see a table that
> > determines how the BSC/NITB will respond to "channel request" inside the
> > RACH request by the phone.
> >
> > E.g. if you change get_ctype_by_chreq to always return LCHAN_SDCCH you
> > should be close to the behavior you have described.
> >
>
> First off all: Thank you for your fast response.
>
> I was hoping that it would be enough to change the settings in the
> open-bsc.cfg and I wouldn't have to temper the source code, as I said, I'm
> new to all the GSM stuff and Linux.
Just for the sake of full understanding, what you're asking for is called
"Late Assignment". Check the specs for the exact details or Wikipedia for a
brief explanation:
http://en.m.wikipedia.org/wiki/Um_interface#Mobile-Originating_Call_.28MOC.…
I don't have the code near me at the moment, but this might be implemented
in the "jolly" branch.
Please excuse typos. Written with a touchscreen keyboard.
--
Regards,
Alexander Chemeris
CEO Fairwaves, Inc.
https://fairwaves.co
Hello again,
Holger Hans Peter Freyther wrote:
> it is not a question of BTS but the BSC. The role of the BSC is to manage
the
> channels. Inside src/libbsc/gsm_04_08_utils.c you will see a table that
> determines how the BSC/NITB will respond to "channel request" inside the
> RACH request by the phone.
>
> E.g. if you change get_ctype_by_chreq to always return LCHAN_SDCCH you
> should be close to the behavior you have described.
>
First off all: Thank you for your fast response.
I was hoping that it would be enough to change the settings in the
open-bsc.cfg and I wouldn't have to temper the source code, as I said, I'm
new to all the GSM stuff and Linux.
I had a quick look at the code and just tried to comment out everything in
"get_ctype_by_chreq" and always return LCHAN_SDCCH as you suggested.
While testing this setup I saw, that The "Immediate assignment" now sends
the calling MS to TS 1 (which is configured as SDCCH/8) subslot 0 and
starts encryption and sends SI5 and SI6 messages on this timeslot/subslot.
Also the called MS gets "Immediate assignment" and is sent to TS 1 subslot
1, encryption starts and so on.
Now the called MS sends "Call Confirmed", but shortly after this the
channels are released. (The called MS wasn't ringing at all)
Am I right, that this is because both MS are yet sticking on the SDCCH and
are not going to a Transport channel? (would make sense, because I always
return SDCCH when the BSC wants to change channel)
I think I have to change the Table " ctype_by_chreq" or to find a way to
insert another "Immediate Assignmend" between "encryption" and "call
confirmed"
So I think I'll have to study the source code for a while,
Again thanks for the hint where to start.
[Norbert Englberger]