Hello GSM community,
I am pleased to announce the first release of Themyscira GSM codec
libraries and utilities package:
ftp://ftp.freecalypso.org/pub/GSM/codecs/gsm-codec-lib-r1.tar.bz2
The two principal libraries contained in this package, libgsmefr and
libgsmfrp, continue the tradition that was started back in 1990s with
the first release of libgsm, a Unix-oriented, C-library-embodied, Free
Software implementation of GSM 06.10 speech transcoder. The original
libgsm was written and released long before anyone in the hacker
community even dreamed of running their own GSM network or building
their own GSM MS, but it is now used somewhere deep under the hood
(under lots of higher layers) by every GSM network-side implementation
that includes an RTP transcoding gateway to other voice networks,
activated whenever a GSM voice call is connected using good old FR
codec rather than AMR, and is likewise used for the same purpose by
anyone seeking to achieve working voice in an SDR-based GSM MS
implementation.
The present gsm-codec-lib release - a public works project of the
Women's Republic of Themyscira - continues in the spirit of libgsm by
offering two more similar libraries:
1) libgsmefr is a librified (turned into a library) version of the EFR
reference code from ETSI, with all state variables converted from
global vars into proper state structures, and with additional code
clean-up to make it function as a speech encoder and decoder library
on the same principle as libgsm, but for EFR codec instead of FR1.
All beyond-speech functions of the original EFR reference code (VAD,
DTX, comfort noise, error concealment) are included in libgsmefr,
allowing this library to be used to implement a *proper* speech
transcoder for GSM-EFR voice service.
I have previously noted that the general trend in the FOSS GSM
community is to use the popular AMR library libopencore-amrnb not only
for AMR, but also for EFR. However, this approach is incorrect: the
SID and comfort noise mechanism of EFR is different from AMR, and if
you feed the uplink of a GSM-EFR call, containing SIDs and BFI skipped
frames, to libopencore-amrnb decoder, there will be strange noises in
the output in places where the GSM MS sent SID. Decoding EFR from a
GSM call uplink requires a proper EFR library, not AMR, and I wasn't
able to find any workable pre-existing implementation prior to
producing Themyscira libgsmefr.
2) libgsmfrp is a preprocessor intended to be called prior to
gsm_decode() from libgsm, implementing Rx DTX handler functions of GSM
06.11, 06.12 and 06.31. This preprocessor is required for anyone
seeking to implement GSM FR service in the traditional way depicted in
Figure 1 in 3GPP TS 46.001, as opposed to the "cut corners" way that
seems to be favored in the land of Osmocom.
When used as part of GSM network deployment, as opposed to lab
experimentation on the mobile side of GSM, the two just-released
Themyscira libraries work best together with this patch to osmo-bts:
https://www.freecalypso.org/hg/themwi-system-sw/file/tip/osmo-patches/osmo-…
implementing this extension to RTP transport format:
https://www.freecalypso.org/hg/themwi-system-sw/file/tip/doc/RTP-BFI-extens…
The "go along to get along" community appears to operate on a consensus
that the RTP stream should be paused when the uplink is in DTX, or
when a traffic frame was stolen for FACCH or lost to radio errors -
but I disagree with that approach, and instead operate my GSM network
on the principle of sending an RTP packet in *every* 20 ms slot, be it
rain or shine. In the "consensus" approach the speech decoding path
in the transcoding MGW never executes at all during frame stream pauses
(when no RTP packets are sent), but in my "traditionalist" approach
(mimicking the ways of TDM) that decoding function does get called
every 20 ms, and it must produce *some* output toward PSTN in every
20 ms window, whether the MS was transmitting or not, and whether this
MS output was received or lost. The Rx DTX handler becomes essential
in such operation: when there is no speech traffic from the MS,
libgsmfrp fills in comfort noise or previous speech frame substitution
and muting as appropriate per the rules of GSM 06.31. In the case of
EFR this functionality is integral to the original reference code from
ETSI and thus appears in libgsmefr, but in the case of FR1 codec this
functionality takes the form of a preprocessor, implemented in
libgsmfrp.
In any case, the two newly released libraries are intended to sit on
the same "rank" in the software integration hierarchy as classic libgsm
from 1990s, and higher-level projects by various parties should feel
free to use them in the same manner how they currently use libgsm and
libopencore-amrnb. I encourage gapk and various people's transcoding
MGW implementations to take advantages of these newly available
production quality GSM codec libraries.
With devotion to GSM Forever,
(Hasta la Victoria, Siempre,)
Mother Mychaela
I'm trying to clean up the connection management in osmo-hnbgw.
For that purpose I'd like to be notified of the SCCP RLC message:
I'd like to free a HNB-to-CN / RUA-to-SCCP context mapping when the SCCP local
reference becomes invalid.
I kind of thought I would receive a OSMO_SCU_PRIM_N_DISCONNECT PRIM_OP_CONFIRM
up the user_sap, but that's not happening.
I see the SCCP RLC logged like this:
20230216042453894 DLSS7 DEBUG 0: asp-asp-clnt-OsmoHNBGW: xua_cli_read_cb(): sctp_recvmsg() returned 40 (flags=0x80) (osmo_ss7.c:1906)
20230216042453894 DLM3UA DEBUG 0: asp-asp-clnt-OsmoHNBGW: Received M3UA Message (XFER:DATA) (m3ua.c:714)
20230216042453894 DLM3UA DEBUG 0: asp-asp-clnt-OsmoHNBGW: m3ua_rx_xfer (m3ua.c:543)
20230216042453894 DLM3UA DEBUG 0: asp-asp-clnt-OsmoHNBGW: m3ua_rx_xfer(): M3UA data header: opc=188=0.23.4 dpc=189=0.23.5 (m3ua.c:566)
20230216042453894 DLSS7 DEBUG m3ua_hmdc_rx_from_l2(): found dpc=189=0.23.5 as local (osmo_ss7_hmrt.c:276)
20230216042453894 DLSS7 DEBUG scrc_rx_mtp_xfer_ind_xua: HDR=(CO:RELCO,V=0,LEN=0), PART(T=Destination Reference,L=4,D=000003f0), PART(T=Source Reference,L=4,D=0073dcf0) (sccp_scrc.c:472)
20230216042453894 DLSCCP DEBUG Received CO:RELCO for local reference 1008 (sccp_scoc.c:1799)
20230216042453894 DLSCCP DEBUG SCCP-SCOC(1008)[0x612000008da0]{DISCONN_PEND}: Received Event RCOC-RELEASE_COMPLETE.ind (sccp_scoc.c:1833)
20230216042453894 DLSCCP DEBUG SCCP-SCOC(1008)[0x612000008da0]{DISCONN_PEND}: state_chg to IDLE (sccp_scoc.c:1309)
20230216042453894 DLSCCP DEBUG SCCP-SCOC(1008)[0x612000008da0]{IDLE}: Terminating (cause = OSMO_FSM_TERM_REQUEST) (sccp_scoc.c:539)
20230216042453894 DLSCCP DEBUG SCCP-SCOC(1008)[0x612000008da0]{IDLE}: Freeing instance (sccp_scoc.c:539)
20230216042453894 DLSCCP DEBUG SCCP-SCOC(1008)[0x612000008da0]{IDLE}: Deallocated (fsm.c:568)
but nothing arrives at sccp_sap_up() in hnbgw_cn.c
Is my idea flawed somehow, or is the prim dispatch missing in libosmo-sigtran?
Thanks!
~N
Dear Osmocom community,
we're happy to announce the next incarnation of OsmoDevCall.
when:
February 15, 2023 at 20:00 CET
where:
https://osmocom.org/OsmoDevCall
This time, @rafael2kwill be presenting on
Long range communications in the HF band
This meeting will have the following schedule:
20:00 meet + greet
20:10 presentation as outlined above
21:00 unstructured supplementary social event [*]
Attendance is free of charge and open to anyone with an interest
in Osmocom or open source cellular technologies.
More information about OsmoDevCall, including the schedule
for further upcoming events can be found at
https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall
Looking forward to meeting you soon!
Best regards,
Harald
[*] this is how we started to call the "unstructured" part of osmocom
developer conferences in the past, basically where anyone can talk about
anything, no formal schedule or structure.
--
- Harald Welte <laforge(a)osmocom.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi all
I am new bee into pysim and python too. I have successfully installed all dependenceis and my code start running. I was too delighted and connected my card reader and ran the following command
$python4 pySim-read.py -p 0
and the responce is like below.
qt5ct: using qt5ct plugin
Using PC/SC reader interface
Card reader initialization failed with exception:
Exception was not showing any reason for failure but an empty string.
Can someone please help me
Hi all,
I am happy to announce that a new version 202302 of the Osmocom CNI
(Cellular Network Infrastructure) software has been released this week.
For further information, please visit: https://osmocom.org/news/207
Regards,
Pau
--
- 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
Welcome to Quanking Electronics Limited, the industry leader in selling obsolete Avago Technology parts as an Avago technologies distributor. You can count on Quanking, a well-known Avago distributor, to give you the best prices and products available.
https://quanking.com/product/avago-technologies/
I'm currently stumped here, thanks for any hints what to try next:
All of a sudden, all attempst to run the MSC_Tests.ttcn locally, from
osmo-ttcn3-hacks/msc, are failing with the same error. This happens regardless
of the selection of tests to run, i.e. even if not related to SMPP at all.
Our jenkins doesn't seem to encounter that error.
It seems that titan is sending an invalid SMPP packet, then something happens
that SMPP_Emulation does not expect to happen, and the entire run of tests is
aborted.
I've already tried to 'make clean' in the osmo-ttcn3-hacks root dir, 'make
deps', and re-ran the gen_links and regen_makefile scripts in msc/.
I'm still getting the same error:
none -> fail reason: "Unexpected SMPP from peer"
[...]
terminate called after throwing an instance of 'TC_Error'
./MSC_Tests: Abort was called
/usr/lib/titan/libttcn3-parallel-dynamic.so(_Z14signal_handleri+0xa3)[0x7f1e319950a3]
/lib/x86_64-linux-gnu/libc.so.6(+0x3bf90)[0x7f1e3085af90]
[...]
/usr/lib/titan/libttcn3-parallel-dynamic.so(+0x24c077)[0x7f1e3164c077]
Error: Receiving of data failed from the MTC at 127.0.0.1 [127.0.0.1]: Connection reset by peer
MC@x43: The control connection to MTC is lost. Destroying all PTC connections.
MC@x43: MTC terminated.
ttcn3_start: error: the MTC terminated unexpectedly
exit
MC@x43: Shutting down session.
MC@x43: Shutdown complete.
Comparing expected results './expected-results.xml' against results in 'junit-xml-1051482.log'
--------------------
pass MSC_Tests.TC_cr_before_reset
Summary:
pass: 1
skip: 202
So when encountering the SMPP failure, titan exits and stops running the remaining tests.
osmo-msc logs:
20230201010116947 DSMPP DEBUG [] smpp_pdu_rx(00 00 00 2e 00 00 00 09 00 00 00 00 00 00 00 01 6d 73 63 5f 74 65 73 74 65 72 00 6f 73 6d 6f 63 6f 6d 31 00 4d 53 43 5f 54 65 73 74 73 00 ) (smpp_smsc.c:718)
20230201010116947 DSMPP ERROR [] Error ([command_length:0000002E(OK)][command_id:00000009(OK)][command_status:00000000(OK)][sequence_number:00000001(OK)][system_id:msc_tester(OK)][password:osmocom1(OK)][system_type:MSC_Tests(OK)][interface_version:00(Value length exceed buffer length)]) in smpp34_unpack() (smpp_smsc.c:513)
20230201010116948 DSMPP ERROR [] length invalid 872415232 (smpp_smsc.c:805)
Attached is a pcap showing an SMPP from titan that seems to cause the trouble.
Could a debian dist-upgrade have caused this error?
TTCN-3 and ASN.1 Compiler for the TTCN-3 Test Executor
Version: 8.2.0
Build date: Sep 10 2022 11:52:51
Compiled with: GCC 12.2.0
Using OpenSSL 3.0.7 1 Nov 2022
FYI, I have this in my apt/sources.list.d:
deb https://downloads.osmocom.org/packages/osmocom:/nightly/Debian_Unstable/ ./
~N
Hi,
I am a new bee into pysim and python too. I successfully installed all dependencies and was able to run my pysim-read. Then connected my sim reader and gave the following command
$python3 pySim-read.py -p 0
The response is like
qt5ct: using qt5ct plugin
Using PC/SC reader interface
Card reader initialization failed with exception:
The response is a exception with empty string. any hint ?
if i run pcsc_scan, the output is like
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau(a)free.fr>
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader...
and dosenot come out of the waiting.
Hi all!
I'm currently adding unit tests for the various pySim encoder/decoder classes
for the variouus SIM/UICC/USIM/ISIM files. [1]
In order to increase the test coverage, I would appreciate any help in obtaining test
data, particularly for the more "exotic" (or recently introduced) files, related to DF.5GS,
ADF.ISIM or even DF.WLAN or the like.
So if you have any SIM cards with related files populated, I would appreciate some test
data. You can simply send me a copy+paste of the respective 'read_binary' / 'read_records'
command, or a partial 'export'. In the latter case, please make sure to redact/remove your
IMSI/ICCID/MSISDN/Kc data to prevent leaking privacy related information.
Thanks in advance.
Regards,
Harald
[1] https://gerrit.osmocom.org/c/pysim/+/24012
--
- Harald Welte <laforge(a)gnumonks.org> https://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hello GSM community,
I have a question for those who operate their own GSM networks (be it
for fun or for research or for any other purpose) in places that DO
have regular commercial cell service, i.e., NOT ship-at-sea, middle of
desert or Rhizomatica-type environments: how do you deal with, and
ideally prevent, the highly undesirable situation of other people's
phones, not related to your operation, "jumping ship" from being
registered to their regular commercial network to trying to register
to your test network instead?
I live and operate in an area where ONE commercial operator still
provides GSM/2G service (although only to "grandfathered" customers,
closed to new subscribers), plus there are super-strong 4G and 5G
signals from all 3 USA-wide carriers. I also operate my own "pirate"
GSM network on a test/experimental basis, meaning not always on, but
only turned on for brief intervals when I am playing with it.
When I do turn on my test GSM network, I squat on an ARFCN in the
middle of a 5 MHz wide "dead" spot (SA shows noise floor over the
whole 5 MHz block in question), and most of the time I set my power
output to the lowest possible setting: I set max_power_red to the
maximum of 20, which should result in 3 dBm output from the sysmoBTS
box. I also recently changed my MCC-MNC from 310-222 (an unallocated
MNC within MCC 310) to 001-325 (MCC meaning test network, MNC is a
feeble attempt to indicate that it's me - I got 00440325 as my test
IMEI range in my "other" capacity as ME manuf), but the problematic
behaviour of at least some phones erratically "jumping ship" from
T-Mobile GSM to the test network still occurs.
Here is a concrete example of inexplicable erratic behaviour I am
seeing:
* Last night I powered up my test network at around 19:41 local time.
My wife was with me the whole evening; her primary personal phone is
Nokia C3-00 (circa 2011, late in GSM terms, but still 2G-only in terms
of RAN support) with service on T-Mobile.
* About 3.5 hours later, at around 23:14 local time, my wife noticed
that her phone "went into the black hole" (our term for times when
phones show "no service" even though T-Mobile GSM signal is there just
fine), and she alerted me. I looked at OsmoCNI logs in syslog, and I
saw that just a little earlier, at around 22:38 local time, there was
an attempt from my wife's phone (her T-Mobile IMSI) to register to our
test network. Of course that registration attempt failed - I don't
have a roaming agreement with T-Mobile, there is no MAP roaming support
in OsmoCNI, I don't have any T-Mobile or other operators' IMSIs in my
OsmoHLR, and I am NOT running with "create sub on demand" feature.
* At around 23:14 local time, when my wife noticed that her phone went
into the black hole, she immediately proceeded to reboot it - such
reflexive reboots are now an "autopilot" action for her - and on its
next boot cycle, it immediately proceeded to make another attempt to
register to our test network instead of T-Mobile, as evidenced by
OsmoCNI logs!
* At that point I turned off the test network GSM signal, as there did
not appear to be any other way to convince my wife's Nokia phone to go
back to its rightful network of T-Mobile.
Now let me add some noteworthy details:
* The ARFCN on which I squat for my test network is NOT listed in the
neighbor cell list advertised by the sole and single commercial GSM/2G
operator we have around here.
* When I mentioned this issue previously in an OsmoDevCall USSE, I was
asked if perhaps the ARFCN I squat on might be listed as a 2G neighbor
in the neighbor list of some newer-G cell. I don't have any direct
way to disprove this idea, but my wife's phone, the one that exhibits
this inexplicable behaviour, is a 2G-only model, NOT supporting LTE or
even UMTS. And the last 3G/UMTS service in our area was shut down
last summer, leaving only LTE+5G for the masses and GSM for the tiny
sliver of "grandfathered" users who won't give it up until we die.
* In last night's episode, my wife's phone sat quite happily within
our dwelling, mere meters from the sysmoBTS antenna putting out its
3 dBm, for almost 3 hours before it made its first attempt to jump
ship. During the entirely of this almost-3-hours interval, the signal
from our test network as received by the phone was overwhelmingly
stronger than the commercial signal (being meters away from the BTS),
yet the phone behaved like it should (listened to its serving cell and
advertised neighbor cells, no searching around) for almost 3 h.
* The location update interval set by T-Mobile's network is 1 hour -
thus periodic LU could not have been the trigger that told Nokia's
bugger to abandon its serving cell and go into open-ended search of
all possible ARFCNs. So what in the world could have been the trigger
then, that caused the bugger to misbehave after almost 3 hours of
behaving properly and correctly?
* Aside from whatever the trigger might be, once that Nokia bugger
attempts to register to the test GSM network and fails, why in the
bloody hell is it not going back to the weaker (in terms of RSSI) but
working T-Mobile network, why does it "park" itself in no-service
state instead?
I have heard of other people operating test GSM cells/networks in
areas where commercial services do exist: I have heard that Neels, of
Sysmocom team, operates a test cell under a test license, and when
Keith gave an OsmoDevCall presentation on Rhizomatica back in 2021,
that presentation was done from an office in some "big" city in Oaxaca,
a place where test signals had to coexist peacefully with commercial
operators' signals. So how do you guys do it? What additional magic
are you doing, which I must be missing, to prevent the situation of
phones jumping ship from commercial networks to the test network when
the signal from the test network is much stronger due to proximity?
Perplexed,
Mother Mychaela
Hi All,
I was working a few months back on some LCLS implementation with
bts-loop and I got it working, including that the pbx can use SIP
Re-INVITES to get in and out of the audio loop during calls.
However, I only ever tested it with one call, that is with two phones.
When I tested it on alive site, immediately there where problems so I
reverted and left it. Looking at it again now, there's a very obvious
problem which is that osmo-msc generates the same GCR for (almost) every
call. I had noticed this before but for some reason I thought I had seen
it generating different GCR for a second simultaneous call, but no.
Anyway, the above is extraneous info to the question:
Could somebody take a look at this:
https://gitea.osmocom.org/cellular-infrastructure/osmo-msc/src/branch/maste…
where we have:
osmo_store32be(trans->callref, lcls->gcr.cr);
osmo_store16be(use_lac ? trans->msc_a->via_cell.lai.lac :
trans->msc_a->via_cell.cell_identity, lcls->gcr.cr + 3);
Now, If I change the order, such that would seem logical:
osmo_store16be(use_lac ? trans->msc_a->via_cell.lai.lac :
trans->msc_a->via_cell.cell_identity, lcls->gcr.cr + 3);
osmo_store32be(trans->callref, lcls->gcr.cr);
Then I get a different GCR, reflecting the trans->callref for each call.
But am I then maybe overwriting the LAC/CI ?
Would seem to make sense, but I'm just not sure if that is all there is
to it, as I don't really grok osmo_store_xxxx
for(i = 0; i < n; q[i] = (x >> ((n - 1 - i) * 8)) & 0xFF, i++);
Is it just a simple order error, and is everything OK with lcls->gcr.cr
+ 3 as the pointer *p passed to osmo_store32be_ext() ?
given that:
struct osmo_lcls *lcls;
where:
struct osmo_lcls {
struct osmo_gcr_parsed gcr;
};
struct osmo_gcr_parsed {
uint8_t cr[5];
};
I guess I'm still not really 100% on the char/uint8_t thing and
advancing pointers.
Thanks!
k.
Dear Osmocom community,
we're happy to announce the next incarnation of OsmoDevCall.
when:
January 18, 2023 at 20:00 CET
where:
https://osmocom.org/OsmoDevCall
This time, @tnt will be presenting on
ice40-usbtrace OSHW USB protocol tracer
In case you never heard about ice40-usbtrace before: It's a low-cost
full-speed USB protocol tracer built around the iCE40 FPGA.
This meeting will have the following schedule:
20:00 meet + greet
20:10 presentation as outlined above
21:00 unstructured supplementary social event [*]
Attendance is free of charge and open to anyone with an interest
in Osmocom or open source cellular technologies.
More information about OsmoDevCall, including the schedule
for further upcoming events can be found at
https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall
Looking forward to meeting you soon!
Best regards,
Harald
[*] this is how we started to call the "unstructured" part of osmocom
developer conferences in the past, basically where anyone can talk about
anything, no formal schedule or structure.
--
- Harald Welte <laforge(a)osmocom.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi all,
I was thinking about how to deal with the so called "evil twins" in the
distributed hlr, and also how to have a subscriber-create-on-demand
situation at the same time as a having an mslookup client.
The problem being that if we have mslookup client + fallback to
create-on-demand if no HLR responds for an IMSI, we will eventually
create a duplicate because the HLR that owns the IMSI is not contactable
at the time of an IMSI ATTACH attempt.
Anyway, just in terms of investigating the situation on my HLRs, I added
features [1] - so far, an ability to do a gsup.hlr lookup and not exit
on the first age:0 - so that I can see all HLRs that respond as having
the imsi in local HLR, and also to ask via mDNS for HLRs that have an
IMSI, but only if it's active on that HLR, that is, it has nam_cs/nam_ps
So this is really asking about what people feel about expanding the
D-GSM features in osmo-hlr, as I think it may be the case that
rhizomatica/TIC are the only people that use it?
[1] https://gitlab.tic-ac.org/rhizomatica/osmo-hlr
Hi, is it possible to use soapyMultiSdr for osmo-trx? I have a hackrf one, which isn't full duplex, so my idea is to use the hackrf for tx, and something else for Rx. With soapymultisdr it is possible to use multiple devices as a single soapysdr device.
Dear Harald,
Sorry to spam the openbsc list with this, but if you (or someone) can
confirm if the Sgsn-emu part of Osmo-GGSN utilizing the kernel GTP
module or not, that would be lovely.
FYI, I was not able to pass more than 280Mbit and the sgsn-emu process
was maxing out a single core. Based on this I suspect that it does not
use the kernel GTP module. I have seen some commits that indicates
preparation work for this feature, but it is unclear at least to me,
if this was finished or not. In the Osmo-GGSN.cfg example config I can
see the config option for kernel GTP, but not in the sgsn-emu.cfg
example.
Regards,
Csaba
Hi Pau and Harald,
> So sgsnemu is passing use_kernel=false, which makes the lib skip gtp-kernel functions
That is nice, I can play with that part quite nicely and take a look
how the GGSN handles the switch between kernel and non-kernel GTP.
Thanks for that!
@Harald:
In gtpnl.h there is
int gtp_dev_create()
and
int gtp_dev_create_sgsn()
So it seems there is a different dev create for the SGSN mode. And in
the later one the role is set to "GTP_ROLE_SGSN"
int gtp_dev_create(int dest_ns, const char *gtp_ifname, int fd0, int fd1)
{
return _gtp_dev_create(dest_ns, gtp_ifname, fd0, fd1, GTP_ROLE_GGSN);
}
EXPORT_SYMBOL(gtp_dev_create);
int gtp_dev_create_sgsn(int dest_ns, const char *gtp_ifname, int fd0, int fd1)
{
return _gtp_dev_create(dest_ns, gtp_ifname, fd0, fd1, GTP_ROLE_SGSN);
}
EXPORT_SYMBOL(gtp_dev_create_sgsn);
I just need to find the relevant part is sgsn-emu to see where these
parts are invoked so I can make the modifications.
Regards,
Csaba
<openbsc-request(a)lists.osmocom.org> ezt írta (időpont: 2022. dec. 24.,
Szo, 13:00):
>
> Send OpenBSC mailing list submissions to
> openbsc(a)lists.osmocom.org
>
> To subscribe or unsubscribe via email, send a message with subject or
> body 'help' to
> openbsc-request(a)lists.osmocom.org
>
> You can reach the person managing the list at
> openbsc-owner(a)lists.osmocom.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of OpenBSC digest..."
>
> Today's Topics:
>
> 1. Re: SGSNemu performance (Pau Espin Pedrol)
> 2. Re: SGSNemu performance (Harald Welte)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 23 Dec 2022 18:38:55 +0100
> From: Pau Espin Pedrol <pespin(a)sysmocom.de>
> Subject: Re: SGSNemu performance
> To: Sipos Csaba <dchardware(a)gmail.com>,
> "openbsc-request(a)lists.osmocom.org" <openbsc(a)lists.osmocom.org>,
> laforge(a)osmocom.org
> Message-ID: <782d5c68-0393-e63a-ddbd-a78ca04256e0(a)sysmocom.de>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
> Hi Csaba,
>
>
>
> On 12/22/22 15:00, Sipos Csaba wrote:
> > Dear Harald,
> >
> > Sorry to spam the openbsc list with this, but if you (or someone) can
> > confirm if the Sgsn-emu part of Osmo-GGSN utilizing the kernel GTP
> > module or not, that would be lovely.
>
> sgsnemu is not using the kernel module, only osmo-ggsn has support for
> it so far.
>
> See osmo-ggsn.git/./sgsnemu/sgsnemu.c line 1905 calling:
> """
> if (tun_new((struct tun_t **)&tun, options.tun_dev_name, false, -1, -1))
> """
>
> See tun_new() function used by both osmo-ggsn and sgsnemu:
> """
> int tun_new(struct tun_t **tun, const char *dev_name, bool use_kernel,
> int fd0, int fd1u) {
> """
>
> So sgsnemu is passing use_kernel=false, which makes the lib skip
> gtp-kernel functions like gtp_kernel_create().
>
> >
> > FYI, I was not able to pass more than 280Mbit and the sgsn-emu process
> > was maxing out a single core. Based on this I suspect that it does not
> > use the kernel GTP module. I have seen some commits that indicates
> > preparation work for this feature, but it is unclear at least to me,
> > if this was finished or not. In the Osmo-GGSN.cfg example config I can
> > see the config option for kernel GTP, but not in the sgsn-emu.cfg
> > example.
> >
>
> You could try passing use_kernel=true to tun_new(), and see how far you
> can get. Patches welcome.
>
> Regards,
> Pau
>
>
> --
> - 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
>
> ------------------------------
>
> Message: 2
> Date: Fri, 23 Dec 2022 18:47:57 +0100
> From: Harald Welte <laforge(a)gnumonks.org>
> Subject: Re: SGSNemu performance
> To: Pau Espin Pedrol <pespin(a)sysmocom.de>
> Cc: Sipos Csaba <dchardware(a)gmail.com>,
> "openbsc-request(a)lists.osmocom.org" <openbsc(a)lists.osmocom.org>
> Message-ID: <Y6XpzZoYYdVxYKdb@nataraja>
> Content-Type: text/plain; charset=us-ascii
>
> Hi Csaba and Pau,
>
> On Fri, Dec 23, 2022 at 06:38:55PM +0100, Pau Espin Pedrol wrote:
> > You could try passing use_kernel=true to tun_new(), and see how far you can
> > get. Patches welcome.
>
> The GTP kernel module needs to be told if it operates in SGSN or GGSN mode.
>
> grep for GTP_ROLE_SGSN in libgtpnl. I don't know all of the related functions
> off my head, but on the SGSN side you need to make sure to initialize the kernel
> GTP with GTP_ROLE_SGSN instead of GTP_ROLE_GGSN.
>
> --
> - Harald Welte <laforge(a)gnumonks.org> https://laforge.gnumonks.org/
> ============================================================================
> "Privacy in residential applications is a desirable marketing option."
> (ETSI EN 300 175-7 Ch. A6)
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> OpenBSC mailing list -- openbsc(a)lists.osmocom.org
> To unsubscribe send an email to openbsc-leave(a)lists.osmocom.org
>
>
> ------------------------------
>
> End of OpenBSC Digest, Vol 98, Issue 9
> **************************************
Hi all!
Recently in the IRC I brought up a topic of testing voice calls in
OsmoCNI, which then turned into a discussion. The problem is I wanted
to highlight is that there is currently no *easy* way to test voice
calls, especially when running a virtual OsmoRAN setup (fake_trx.py +
trxcon or virtphy).
== A bit of history ==
Back in the openbsc/osmo-nitb days I used to run jolly's LCR (Linux Call
Router) [1], which was configured to play some hold melody when calling
995, and echo voice frames back when calling 999.
Nowadays openbsc/osmo-nitb is obsolete and completely suppressed by the
new and shiny OsmoRAN/OsmoCNI stack. The LCR is not actively maintained
anymore and does not support the MNCCv8, so it cannot talk to osmo-msc.
BTW, I forked it, fixed some compilation errors, created a package, and
tried to implement MNCCv8 support (no luck, calls still don't work):
https://gitea.osmocom.org/vyanitskiy/lcr/commits/branch/fixeria/fixeshttps://gitea.osmocom.org/vyanitskiy/lcr/commits/branch/fixeria/mncchttps://aur.archlinux.org/packages/lcr-git
Looks like it does not support late TCH assignment?
[1] http://www.linux-call-router.de/
== Current situation ==
Currently with the new post-NITB stack I see the following options:
a) run a virtual BTS, attach two mobiles, and setup a call between them;
b) run a real BTS, attach two phones, and setup a call between them;
c) run some PBX, talking to osmo-msc via osmo-sip-connector.
Personally I find neither of these options convenient because:
a) requires running two instances of the mobile app (from
osmocom-bb.git). I know one can run two and even more MS instances in
one mobile process, but this is still not handy.
b) requires running a real BTS and interacting with real phones. This
is what I usually do, but it takes more time than running everything
virtually.
c) requires setting up a PBX (e.g. Freeswitch, Asterisk), which in its
turn requires digging into the new world of configuration files. I do
have a repository with a know-to-work Freeswitch configuration [2], but
installing it (even from packages) is not trivial.
[2] https://people.osmocom.org/fixeria/freeswitch.cfg.zip
== What do I want ==
It would be great to have an easy-to-use echo service, be it attached to
osmo-msc via the MNCC socket, or be it built-in part of osmo-msc itself.
This would be usable for both real and virtual setups.
== Conclusion ==
I would like to know how do you guys test voice, and what do/would you
consider an easy approach. I actually found out that it's possible to
use osmo-msc's silent-call feature and play the Uplink RTP stream with
osmo-gapk. I'll share more details in a follow up mail.
In the IRC @whytek proposed to use sipp [3] and later came up with a
wiki page [4] describing how to achieve this with SEMS (SIP Express
Media Server). This is definitely easier than setting up Freeswitch or
Asterisk, but still feels like an overkill (sorry).
[3] https://sipp.sourceforge.net/doc/reference.html#RTP+echo
[4]
https://osmocom.org/projects/cellular-infrastructure/wiki/Simple_Echo_Server
Best regards,
Vadim.
--
- Vadim Yanitskiy <vyanitskiy at 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
I'm also just trying to figure out how it works with global platform.
The problem you have with Global Platform is that you have not specified an
installation parameter. I tried it for example with "-default -params
80120100140600000000000000000000810600040200000400820600040200000400" and
the applet was installed and also made selectable.
You can find a discussion about that parameters here:
https://github.com/martinpaljak/GlobalPlatformPro/issues/293
I'm looking now why I can't open the menu e.g. from the iPhone. Probably
any access rules / directories access still need to be updated here?
Hello GSM community,
As I keep working on my project seeking to build a new GSM network that
will be no worse in every aspect than the one which T-Mobile USA are
itching to shut down, I need a way to ferry the uplink voice stream
from the BTS to my "soft TRAU" in RTP transport, but do it in a way
that is semantically no-worse than what happens in the traditional
T1/E1-based architecture. As part of this no-worse-than-TDM desire or
requirement, I need explicit BFI markers - in other words, any time
there is a 20 ms window in which there is no good traffic frame to be
sent because the uplink is in DTX, because that frame was lost to bad
radio conditions or because that frame was stolen for FACCH, I want my
BTS to send an explicit BFI frame instead of gapping/pausing the RTP
stream.
But this "simple and innocent" desire which I just expressed then turns
into a perplexing question: just how would one represent an explicit
BFI marker in an RTP stream? In the case of AMR codec there is a
straightforward solution already provided for in the specs: simply
send a NO_DATA frame. But what about FR and EFR codecs?
For my own Themyscira Wireless deployment, I currently run with my own
non-standard extension to RTP transport format for FR & EFR, documented
here:
https://www.freecalypso.org/hg/themwi-system-sw/file/tip/doc/RTP-BFI-extens…
My solution works great for my purposes, and I am very happy with it.
However, in the spirit of seeking at least some unity and at least
some chance of patches being merged, I am making a due-diligence
attempt to understand how others have addressed similar problems, and
what competing solutions may already exist out in the wild.
Here is my specific question to the community, mostly the narrower
Osmocom community but perhaps also the wider GSM community: where did
the idea of an all-zeros frame representing BFI come from? In the
current osmo-bts-trx implementation (although not in any other osmo-bts
variants that I can see from the code) there is code that sends an FR
codec frame of 260 zero bits or an EFR codec frame of 244 zero bits,
both intended to signal BFI, under the following conditions:
1) The BFI condition exists for some reason other than the uplink
being in DTX, i.e., because the frame was stolen for FACCH or was
lost to radio errors, but the last frame was not a SID;
and
2) There is no ECU on the channel, or the ECU failed to provide a
substitute frame.
Irrespective of specific conditions though, the key point is that
someone, somewhere, at some point in time had the idea that an FR or
EFR codec frame of all zeros (260 or 244 zero bits, respectively)
should mean BFI. There is also a patch to gapk by Vadim, adding an FR
codec EFU function, that detects a frame of all-zeros and treats it as
BFI - but I am not able to tell if the very idea of such BFI
representation comes from Vadim, or if Vadim simply added the code to
gapk to work with what osmo-bts-trx puts out under certain conditions.
To put the question differently: does there exist any spec from ETSI or
from 3GPP or from any other non-Osmocom standards body that defines an
FR codec frame of 260 all-zero bits and/or an EFR frame of 244 all-zero
bits to mean BFI, or is this idea a pure Osmocom invention?
The only official specs I could find for coded speech transport within
RAN, between a BTS and a separate transcoder, deal with the traditional
T1/E1 environment, as in GSM 08.60 and friends. In those specs BFI is
signaled out of band: in GSM 08.60 TRAU frames there is a control bit
carrying BFI, and another control bit carrying TAF (important for
traditional Rx DTX handlers for FR & EFR), both outside of 260 data
bits, and there is NO special bit pattern (all zeros or otherwise)
within data frame bits themselves that would also signal BFI.
Therefore, based on what I see in GSM 08.60 and other specs for T1/E1
world, I get the idea that BFI is meant to be an out-of-band signal,
not in-band, and that an in-band bit pattern that signals BFI seems to
go against the spirit of ETSI and 3GPP.
But maybe the problem is that I was only looking at older specs, maybe
there is some newer spec from 3GPP or some other standards body written
for the newer world of IP transport that officially repurposes in-band
all-zeros FR and EFR codec frames to mean BFI - is there any such spec?
Moving from the realm of rhetorical questions to the realm of tangible
code, here is my latest creation in the realm of GSM codecs:
https://www.freecalypso.org/hg/gsm-codec-lib/
I will make another announcement when this code reaches the level of
completeness I am after, but as a short summary, I am making a
librified (turned into a library) version of the official EFR codec
implementation from ETSI (libgsmefr), and I have also written another
library of my own (libgsmfrp) that implements Rx DTX handler functions
for GSM FR, to be run as a pre-processor before passing frames to a
GSM 06.10 decoder, which is typically gsm_decode() from libgsm.
libgsmfrp is already integrated into my "soft TRAU" implementation in
themwi-mgw, and libgsmefr will likewise be integrated when it is
complete. (Right now only the decoder works in libgsmefr, the encoder
remains to be finished.)
Both libgsmefr and libgsmfrp have BFI handling functions which the
"soft TRAU" application needs to call when it receives a BFI marker
instead of a good traffic frame, but the question of how these BFI
markers should be represented in an RTP stream is outside the scope of
the library - instead my themwi-mgw application currently implements
ThemWi RTP-BFI-extension and calls the respective library functions.
I may be open to the possibility that I should not be inventing my own
RTP-BFI-extension and should instead use in-band frames of all-zeros
to represent BFI in FR & EFR, *if* there is some official spec from
3GPP etc saying so - but if that idea is an Osmocom invention rather
than 3GPP, then I am going to argue for my invented alternative RTP
representation instead. So which is it?
With devotion to GSM Forever,
(Hasta la Victoria, Siempre,)
Mother Mychaela
I have a complete eNodeB (LTE base station) to offer, with following components:
- 1x Ericsson DUL 20 01 (the base station)
- 1x Ericsson RUS 01 B4 (80W RF fronted for LTE band B4)
- 1x Mean Well RS-150-48 (48V 3.3A power supply for both above)
- 2x power input cable (for DUL and RSU, based on RPM 777 193/00315 R1B cable connector)
- 1x spare power 20A cable (RPM 77 193/00315 R1B)
- 1x mini SPF cable (to interconnect DUL and RSU, RPM 777 211/00900)
- 2x coaxial cable to inter-connect RSU to its cavity block (RPM 777 701/00050, 1x on RSU, 1x spare)
- 3x coaxial to SMA cable (RPM 777 227/00080, for RSU RXA I/O, RXA OUT, RXB I/O ports)
- 1x USB to RS232 adapter, for DUL terminal port
- 1x RS-232 to RJ45 adapter, for DUL terminal port
- 2x 26mm RF connector to N connector adapters (for RUS RF A and B port)
- 2x N to SMA adapters
- 1x N termination (10W)
- 1x SMA termination (<1W)
- 1x alternative OS (on compact flash card, with different configuration/licenses)
- 1x N-connector antenna (antenna size is 35 cm, 698-960 + 1700-2700 MHz)
- 1x SMA cable antenna (antenna size is 30 cm, 688-960 + 1700-2700 MHz)
- 1x N-connector cable antenna (antenna size is 10 cm, flat PCB antenna, 700-2600 MHz)
you can have all of that for free, as long as you take care of the shipping (12 kg, from Germany).
if you are interested, just let me know.
Hi all,
I am having an automake / libtool problem and don't know how to solve it.
In libosmo-pfcp, there is the pfcp_test binary, which obviously requires
linking libosmo-pfcp.so -- more precisely, it should NOT link the system
installed libosmo-pfcp.so, but the locally built one, libosmo-pfcp.a.
I try to accomplish this by:
pfcp_test_LDADD = \
$(LIBOSMOCORE_LIBS) \
$(top_builddir)/src/libosmo-pfcp/libosmo-pfcp.la \
$(top_builddir)/src/libosmo-gtlv/libosmo-gtlv.la \
$(NULL)
https://cgit.osmocom.org/libosmo-pfcp/tree/tests/libosmo-pfcp/Makefile.am
I am now adding a new optional IE to libosmo-pfcp, and I found that this does
not work as expected! The pfcp_test binary is linked to the previously
installed libosmo-pfcp.so in /usr/local/lib, instead of the proper, new version
from the build tree. I found out by getting an obscure ABI corruption error,
verified it by:
~/osmo-dev/make/libosmo-pfcp/tests/libosmo-pfcp
$ ldd .libs/pfcp_test
[...]
libosmo-pfcp.so.0 => /usr/local/lib/libosmo-pfcp.so.0 (0x00007f1b6bc00000)
libosmo-gtlv.so.0 => /usr/local/lib/libosmo-gtlv.so.0 (0x00007f1b6cc0a000)
[...]
As soon as I 'make uninstall' in libosmo-pfcp.git's root dir, this changes to:
▶ ldd .libs/pfcp_test
[...]
libosmo-pfcp.so.0 => not found
libosmo-gtlv.so.0 => not found
[...]
and then the test succeeds (because './pfcp_test' is actually a shell script
generated by libtool with linker magic referencing the libs built within the
libosmo-pfcp.git tree).
Now I am at a loss:
How do I tell automake (libtool) to keep out the system installed .so and
prioritize the libs in the build tree?
I can work around this for me by doing 'make uninstall' every time the
libosmo-pfcp ABI changes, but I would much rather fix this, so that users
rebuilding a newer version pulled from git don't run into this obscure problem.
I suspect that we may have a similar pitfall in many other osmo source trees,
because the Makefile.am *looks* like it takes care of this problem, but
actually doesn't.
Any ideas?
I am using:
automake (GNU automake) 1.16.5
autoconf (GNU Autoconf) 2.71
libtoolize (GNU libtool) 2.4.7
(Debian Unstable)
Thanks!
~N
Hello Folks.
I am trying to get my head around on how java applet loading works for
sysmo-isim-sja2.
At first I used the following, updated example to compile a
HelloSTK2.cap: https://github.com/mrlnc/HelloSTK2.git
This works fine and it also loads fine on sysmo-usim-sjs2 using shadysim.py
Now I want to load the exact same file to a sysmo-isim-sja2.
I tried with shadysim_isim.py from
https://github.com/herlesupreeth/sim-tools:
---------------8<---------------
$ python shadysim_isim.py --pcsc 2 -l
/home/owner/work/simcard_applet_loading/HelloSTK2.cap -i
/home/owner/work/simcard_applet_loading/HelloSTK2.cap
--enable-sim-toolkit --module-aid d07002ca44900101 --instance-aid
d07002CA44900101 --nonvolatile-memory-required 0100
--volatile-memory-for-install 0100 --max-menu-entry-text 15
--max-menu-entries 05 --kic 56B6B26346DEF2A74BC8DFAF3BEA71D6 --kid
8EFE5A4B60C751FD18F33A24886967E7
Traceback (most recent call last):
File "shadysim_isim.py", line 494, in <module>
ac.load_app(args.load_app)
File "shadysim_isim.py", line 369, in load_app
self.load_aid_raw(aid, data, len(data) / 2)
File "shadysim_isim.py", line 271, in load_aid_raw
self.send_wrapped_apdu_checksw('80e60200' + ('%02x' % (len(data) /
2)) + data + '00c0000000')
File "shadysim_isim.py", line 246, in send_wrapped_apdu_checksw
raise RuntimeError("SW match failed! Expected %s and got %s." %
(sw.lower(), response[1]))
RuntimeError: SW match failed! Expected 9000 and got 6985.
---------------8<---------------
And I also tried with gp.jar from https://github.com/mrlnc/HelloSTK2.git
---------------8<---------------
$ java -jar ./gp.jar --key-enc 56B6B26346DEF2A74BC8DFAF3BEA71D6
--key-mac 8EFE5A4B60C751FD18F33A24886967E7 --key-dek
3BA47E883FE2462B5D43B85C4CCDF0AC --install
/home/owner/work/simcard_applet_loading/HelloSTK2.cap
[main] WARN pro.javacard.gp.PlaintextKeys - Don't know how to calculate
KCV, defaulting to SCP02
[main] WARN pro.javacard.gp.PlaintextKeys - Don't know how to calculate
KCV, defaulting to SCP02
[main] WARN pro.javacard.gp.PlaintextKeys - Don't know how to calculate
KCV, defaulting to SCP02
[main] INFO pro.javacard.gp.GPSession - Using card master keys:
ENC=56B6B26346DEF2A74BC8DFAF3BEA71D6 (KCV: 1ADB2F)
MAC=8EFE5A4B60C751FD18F33A24886967E7 (KCV: 174546)
DEK=3BA47E883FE2462B5D43B85C4CCDF0AC (KCV: D7011A) for null
[main] INFO pro.javacard.gp.GPSession - Diversified card keys:
ENC=56B6B26346DEF2A74BC8DFAF3BEA71D6 (KCV: 1ADB2F)
MAC=8EFE5A4B60C751FD18F33A24886967E7 (KCV: 174546)
DEK=3BA47E883FE2462B5D43B85C4CCDF0AC (KCV: D7011A) for SCP02
[main] INFO pro.javacard.gp.GPSession - Session keys:
ENC=76900ED8B816F1822A29D7DC81F1B843
MAC=02D74CFFA5F85F1F999F23F60C22AF02
RMAC=87AFE7F26DDE69307EA35AE567AC8F26, card
keys=ENC=56B6B26346DEF2A74BC8DFAF3BEA71D6 (KCV: 1ADB2F)
MAC=8EFE5A4B60C751FD18F33A24886967E7 (KCV: 174546)
DEK=3BA47E883FE2462B5D43B85C4CCDF0AC (KCV: D7011A) for SCP02
CAP loaded
Error: INSTALL [for install and make selectable] failed: 0x6A80 (Wrong
data/incorrect values in data)
---------------8<---------------
As it seems gp.jar seems to work better than shadysim_isim.py.
Unfortunately I have no experience in java card programming yet, so its
difficult for me to tell where the error could be.
(When I run gp.jar once more it tells me "Error: STRICT WARNING: Package
with AID D07002CA44 is already present on card", I can also delete the
applet again, so apparently its kind of loaded...)
Is there anyone here who managed to load an applet to a sysmo-isim-sja2
and how?
best regards.
Philipp
--
Philipp Maier <pmaier(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
I have a plethora of femtocells (small base stations) I want to get rid of.
If you want it, it's yours, for free. You just need to cover the shipping costs.
Else it will become the property of Trash Inc.
Here the list of 3G femtocells:
- Cisco residential signal box USC3331, model 74-12584-01, PID USC3331-EE-K9. The flash (TSSOP) is desoldered but in the box (just is case you need to dump it). Just resolder it and it should work fine.
- 2x Vodafone (Greece) Access Gateway UAP2105. One is open, but nothing is missing. 5 pair of board to board connectors are included. This is the one first model that has been hacked.
- Vodafone Sure Signal AP 2820V. A cute plug style 3G femtocell. modded for serial output and external power supply (so the serial is not mains referenced). I have doc on how to root and flash it. Sadly it misses little effort for interfacing it with osmocom, but is the best candidate for such a project.
- Vodafone Sure Signal AP 2820V. not modded.
- Ubiquisys ZP-000-05EU, aka SerComm. Flash is desoldered and in the packages. Serial output is available.
- SFR Home 3G G2, Ubiquisys ZP-004-01FR. serial is available. This is the one I hacked and reflashed for a MitM attack back in 2011
- yet another Vodafone (Greece) Access Gateway UAP2105. already open. should work, but else perfect donor board.
- SFR Home 3G G3, FEM-SER-r0. flash is desoldered and in package.
Here the list of 4G femtocells:
- Samsung Verizon 4G LTE Network Extender, model SLS-BU103
- 3x T-Mobile (USA) Personal 4G LTE CellSpot, 9961 Home Cell V1. one is open and has plenty of test points soldered.
just let me know if you are interested.
Hi all,
I have an ip.access NanoBTS 139U (Part No 139U V 139U V351800). I
believe it is operating on the 1800 MHz although admittedly that's a
guess from the part number. I've not found a definitive way of
confirming the supported band via Telnet or otherwise.
I can see the BTS attempting to connect to the BSC, but after the "Set
Radio Carrier Attributes" request from the BSC, the BTS sends a NACK
and the OML link is dropped.
<0004> abis_nm.c:984 OC=RADIO-CARRIER(02) INST=(00,00,ff): SET
RADIO ATTRIBUTE NACK CAUSE=Message cannot be performed
<0004> osmo_bsc_main.c:226 Got SET RADIO ATTRIBUTE NACK going to
drop the OML links.
I've grabbed some debug info, note that in the PCAP the packets are
wrapped in TZSP as I used a Mikrotik to stream them to Wireshark.
Log from BSC -
https://s3.eu-west-2.amazonaws.com/cdn.marrold.co.uk/files/osmocom/osmobsc_…
PCAP -
https://s3.eu-west-2.amazonaws.com/cdn.marrold.co.uk/files/osmocom/NanoBTS.…
It's worth noting that ipaccess-config tool also has an issue parsing
the frequency which may well be related:
ipaccess-config -G 10.0.130.101
ipaccess-config (C) 2009-2010 by Harald Welte and others
This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY
Trying to connect to ip.access BTS 10.0.130.101...
OML link established using TRX 0
getting Attributes (3): 88 91 86
rc"" 0 <0004> abis_nm.c:652
OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff): Get Attributes Response:
Primary OML IP is 10.0.130.111:0
<0004> abis_nm.c:658 OC=BASEBAND-TRANSCEIVER(04) INST=(00,00,ff):
Get Attributes Response: Unit ID is 1800/0/0
<0004> bts.c:497 (bts=0) Unsupported frequency band.
<0007> abis_nm.c:725 (bts=0) BTS config invalid, dropping BTS!
<0007> bts_ipaccess_nanobts.c:624 (bts=0) Deferring Drop of OML link.
<0007> input/ipaccess.c:431 Bad signalling message, sign_link
returned error: Invalid argument.
<0007> bts_ipaccess_nanobts.c:557 (bts=0) Dropping OML link:
Deferred link drop
Thanks in advance
Matthew / marrold
Hello,
In the next couple of days I plan on getting started on configuring a
simple Osmocom based GSM stack with all the key components, to use
with a single 1800 MHz Nano BTS.
Before I get too stuck in, I wanted to check if running in Docker
(Straight Docker, no kubernetes etc) was feasible, and if the various
packages behave when NAT etc is involved?
Thanks
Matthew / marrold
Dear Osmocom community,
we're happy to announce the next incarnation of OsmoDevCall]].
when:
November 16, 2022 at 20:00 CET
where:
https://meeting5.franken.de/b/har-xbc-bsx-wvs
This time, @fixeria will be presenting on
MS/BS power control support in OsmoBSC/OsmoBTS
For those not entirely 3gpp-acronym-savyy: That's how the uplink (phone
-> network) and downlink (network -> phone) transmit RF power level is
adjusted during an active call in GSM.
This meeting will have the following schedule:
20:00 meet + greet
20:10 presentation as outlined above
21:00 unstructured supplementary social event [*]
Attendance is free of charge and open to anyone with an interest
in Osmocom or open source cellular technologies.
More information about OsmoDevCall, including the schedule
for further upcoming events can be found at
https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall
Looking forward to meeting you soon!
Best regards,
Harald
[*] this is how we started to call the "unstructured" part of osmocom
developer conferences in the past, basically where anyone can talk about
anything, no formal schedule or structure.
--
- Harald Welte <laforge(a)osmocom.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hello Osmocom community,
Vadim (fixeria) invited me to give a presentation on some of my topics
of expertise on OsmoDevCall; I have given some thought to which topics
I could present on, and I have two proposals:
Presentation 1: Themyscira Wireless: GSM network in sunny California.
In this presentation I will describe the community GSM network I am
building in my corner of the world, using Osmocom CNI software and
whatever BTS hardware fits the bill, currently just one sysmoBTS.
Whereas most well-known community GSM networks such as Rhizomatica
have been built in areas with no commercial cellular coverage of any
kind, my use case is very different: I live in an area where every
square mm is blasted with super-strong 4G and 5G signals from 3 major
carriers, but a community GSM network is needed in order to provide
service specifically to *vintage* mobile phones, which require 2G.
I will cover this unusual telos and the different design choices that
stem from it, I will cover my own software that interfaces to OsmoMSC
via MNCC, and I will cover my interface to USA PSTN via SIP with G.711
voice, including my own implementation of transcoding MGW.
Presentation 2: Calypso chipset history and development boards, from
TI to FreeCalypso. In this presentation I will cover the history of
TI Calypso chipset itself (silicon and DSP revisions, ABB and RF
chips), the history of TI's original support for these chips
(reference fw and development boards), how various commercial Calypso
device vendors changed things (very small changes in the case of
Openmoko, huge changes in the case of Compal), how I entered the scene
with my FreeCalypso brand, and the impact of two most recently
discovered modem modules: Huawei GTM900 and iWOW TR-800. I will cover
my motivations and upcoming new hardware plans, and at the end I would
like to engage in a discussion on how to make FreeCalypso-suitable hw
(meaning hw suitable for running full FC solution) more readily and
less expensively available to interested players.
I have added both of the above talk proposals to the wiki page:
https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall
but of course nothing is scheduled yet. Given that the schedule is
booked many months in advance these days, it is now up to the community
to decide what y'all are interested in, and if there is interest in
both topics, which should be scheduled first.
Sincerely,
Lady Mychaela N. Falconia,
Mother of FreeCalypso,
Dame of the Order of 2G,
Champion of Published Source Code
Hi Osmocom Community,
May I ask your help on this. We have a test setup with UmTrx 2.3.2 SDR. We
are trying to set the tx-attenuation and measure the power output but it
seems it doesn't reflect based on the defined configurations. We tried to
set 0, 5, 10 as values and below are the results.
[image:
0-02-03-588e9973ceef2e018e29c0b2eb576f5b7d26972bbb779b44f79c97408d360299_1c6daee34bf8ee.jpg]
[image:
0-02-06-99d6d7ce8551b10be62ea130c638b19c5475b5b4140bf2843b92a5b55d36c67c_1c6daee34bfeec.jpg]
Please see attached files for osmo configurations and logs. Thanks!
Regards,
Justin
Hello various Osmocom mailing lists,
as previously announced (https://osmocom.org/news/191):
* The binary packages are being built on Osmocom's own OBS server now.
* We will stop pushing packages to the openSUSE OBS server at the end of
October (in one week).
If you are using Osmocom binary packages, please make sure that you have
configured the new repository URLs.
See the wiki for details:
https://osmocom.org/projects/cellular-infrastructure/wiki/Binary_Packages
Best,
Oliver
--
- Oliver Smith <osmith(a)sysmocom.de> https://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,
in the changes to `src/gb/gprs_ns2_vc_fsm.c` (see subject line), I found
a few lines that puzzle me (as a newbie to the Osmocom codebase(s), they
look like an error to me):
```
case GPRS_NS2_EV_REQ_OM_UNBLOCK:
/* vty cmd: unblock*/
if (!priv->om_blocked)
return;
priv->om_blocked = false;
if (fi->state == GPRS_NS2_ST_BLOCKED)
osmo_fsm_inst_state_chg(fi,
GPRS_NS2_ST_BLOCKED, nsi->timeout[NS_TOUT_TNS_BLOCK], 0);
break;
```
To me it seems like the 'new_state' argument should be
`GPRS_NS2_ST_UNBLOCKED`, since we are trying to unblock (that's what the
`event` case says here from my understanding).
What am I misunderstanding here?
Cheers,
Alex
Hey,
i am trying to build a 2G network with an ip.access BTS (Model 165G
DCS1800).
So far I can see the network on the RF spectrum and SMS delivery is
working fine.
Unfortunately I cant send calls to other phones.
The open-bsc sends a lot of error messages to the log when the BTS is
booting, I am not sure if my configuration is ok.
As attachments there are my configs and the logs of open-bsc and osmo-msc.
Thanks for your Help!
regards
crx
Dear Osmocom community,
after a rather extended 2022 summer break, we're happy to announce the
next incarnation of OsmoDevCall. Based on the recent polls, the timing
has shifted to *every 3rd wednesday of the month*!
when:
October 19, 2022 at 20:00 CEST
where:
https://meeting5.franken.de/b/har-xbc-bsx-wvs
In this edition, I will be presenting a SIMtrace2 tutorial, showing SIM
card protocol tracing, decoding with the new pySim-trace as well as the
card emulation firmware.
This meeting will have the following schedule:
20:00 meet + greet
20:10 presentation as outlined above
21:00 unstructured supplementary social event [*]
Attendance is free of charge and open to anyone with an interest
in Osmocom or open source cellular technologies.
More information about OsmoDevCall, including the schedule
for further upcoming events can be found at
https://osmocom.org/projects/osmo-dev-con/wiki/OsmoDevCall
Looking forward to meeting you soon!
Best regards,
Harald
[*] this is how we started to call the "unstructured" part of osmocom
developer conferences in the past, basically where anyone can talk about
anything, no formal schedule or structure.
--
- Harald Welte <laforge(a)osmocom.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Dear Osmocom community,
your input is required in order to tune the re-launch of the OsmoDevCall
talk series. One of the complaints before the suspension in Summer this year
was that the "Friday night 8pm CEST" timeslot was not exactly ideal for several
people.
Finding a common denominator might be difficult, given that Osmocom is a dayjob
for some, a hobby for most, and we're of course not all in the same time zone
or even continent.
So let's try to run a couple of polls to figure out:
* What is the best day of the week for OsmoDevCall?
https://bitpoll.de/poll/CEQnaQKEvO/
* What is the best time of day for OsmoDevCall?
https://bitpoll.de/poll/59dgmzOocT/
* What is the best frequency of OsmoDevCall
https://bitpoll.de/poll/8jyuRJB6Hb/
The polls are open until October 21st, 2021. I would appreciate a high turn-out
so we have a good representation across our community to make an educated decision
about the schedule of futur events.
Can't wait to re-start OsmoDevCall!
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)
We would like to ask how to use counters in Osmocom to compute KPI's such
as 1) CSSR (Call Setup Success Rate).
2) CDR (Call Drop Rate).
3) HSR (Handover Success Rate).
4) TCH (Traffic Channel) Congestion Rate
Please assist us how to get the counters in Osmocom if there are such
counters
Thanks and regards,
Neil John Reponcion
Systems Engineer
Entropy Solutions
Hello Osmocom CNI community,
I am writing my own software that talks MNCC to OsmoMSC instead of
using osmo-sip-connector, and I am seeing perplexing behaviour with
call waiting. Normally when I send an MT call toward GSM with
MNCC_SETUP_REQ, the response from OsmoMSC consists of
MNCC_CALL_CONF_IND (when the called phone confirms the call),
followed by MNCC_RTP_CREATE (when OsmoMSC assigns the call), and
finally followed by MNCC_ALERT_IND when the called phone starts
alerting. Likewise on MO calls I get an MNCC_RTP_CREATE message on
the MNCC interface when the call is assigned, typically in response to
MNCC_CALL_PROC_REQ.
But now consider a call waiting scenario: call 1 is already in progress
(fully connected, parties talking), and there is a second incoming
call. I send a new MNCC_SETUP_REQ to OpenMSC for call 2, with a new
callref, the phone receives it and starts making call-waiting beeps.
The response on the MNCC socket for call 2 is that I get
MNCC_CALL_CONF_IND followed by MNCC_ALERT_IND (and then MNCC_SETUP_CNF
if the target phone puts call 1 on hold and answers call 2) - but there
is no MNCC_RTP_CREATE!
I can see how MNCC_RTP_CREATE is sent by OsmoMSC when the call has been
assigned and there is a TCH cross-connected through OsmoMGW, and I can
see how the call assignment step will naturally be omitted in the call
waiting scenario when TCH is already there for call 1. But the call
gateway (be it osmo-sip-connector or an independent reimplementation)
feeding MT call 2 to MNCC has to have some way of obtaining RTP
connection information for this call without having to know how to
associate it with another previous call, and if it doesn't get
MNCC_RTP_CREATE, how would it get this vital info?
This is one of those "how does it work for everyone else?" moments -
while I am certainly unique in writing my own MNCC software instead of
running osmo-sip-connector, surely o-s-c also needs to receive
MNCC_RTP_CREATE with RTP info from OsmoMSC in order to successfully
connect call 2... And given that someone implemented call hold and
retrieve operations in o-s-c, I reason that someone must be using the
call waiting feature and it must be working for them - but how?
One thing which o-s-c does differently from my sw is that o-s-c sends
an empty MNCC_RTP_CREATE (the "command" version of this packet) to
OsmoMSC in response to MNCC_CALL_CONF_IND, which my sw doesn't do at
the moment. But I looked in the OsmoMSC code, and I don't see any
difference: the function that handles MNCC_RTP_CREATE command
(tch_rtp_create()) simply calls msc_a_try_call_assignment(trans), and
the exact same call is made in the gsm48_cc_rx_call_conf() function
that sends MNCC_CALL_CONF_IND. So I don't see any code path that can
result in call 2 receiving MNCC_RTP_CREATE from OsmoMSC in the call
waiting scenario when TCH is already there from call 1.
So, how does the call waiting feature work for others in the community,
and what am I missing? I am running the tagged release from 2021-11.
M~
Hi all,
We're trying to setup osmo-gsm-tester on bare metal and are currently experiencing issues with the Jenkins job 'osmo-gsm-tester-runner'. All of our test machines are running Ubuntu Server 20.04 and have been setup following the latest available manual from https://downloads.osmocom.org/docs/latest/osmo-gsm-tester-manual.pdf.
We've trying to use the '4g_srsLTE' example from https://github.com/osmocom/osmo-gsm-tester/tree/master/doc/examples/4g_srsL… but when trying to run the 'ping' test the following error is returned in the Jenkins console output:
" 14:07:52.867022 run mk-remote-dir(pid=2480): ERR: Terminated: ERROR {rc=1} [trial-21↪4g:srsenb-rftype@soapy↪ping.py:9↪ping.py↪srsepc_10.100.100.113↪host-jenkins@10.100.100.113↪mk-remote-dir(pid=2480)]
14:07:53.015620 run mk-remote-dir(pid=2480): stdout:
| (launched: 2022-09-23_14:07:51.598612)
| mkdir: cannot create directory ‘/osmo-gsm-tester-srsepc’: Permission denied "
It appears that osmo-gsm-tester is trying to create the directory 'osmo-gsm-tester-srsepc' under root, which is not permitted as the Jenkins user the script runs has does not have permissions. Additionally, it looks like this path is hard-coded in the Python module https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/… and also the same applies for srsENB https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/…
Is this the intended behaviour? Or have we missed out steps during our bare-metal setup process? I've double-checked that the main unit can SSH into the slave unit without a password so that's not the issue causing "permission denied".
Best regards,
Callum.
Hi all,
We're trying to setup osmo-gsm-tester on bare metal and are currently experiencing issues with the Jenkins job 'osmo-gsm-tester-runner'. All of our test machines are running Ubuntu Server 20.04 and have been setup following the latest available manual from https://downloads.osmocom.org/docs/latest/osmo-gsm-tester-manual.pdf.
We've trying to use the '4g_srsLTE' example from https://github.com/osmocom/osmo-gsm-tester/tree/master/doc/examples/4g_srsL… but when trying to run the 'ping' test the following error is returned in the Jenkins console output:
" 14:07:52.867022 run mk-remote-dir(pid=2480): ERR: Terminated: ERROR {rc=1} [trial-21↪4g:srsenb-rftype@soapy↪ping.py:9↪ping.py↪srsepc_10.100.100.113↪host-jenkins@10.100.100.113↪mk-remote-dir(pid=2480)]
14:07:53.015620 run mk-remote-dir(pid=2480): stdout:
| (launched: 2022-09-23_14:07:51.598612)
| mkdir: cannot create directory ‘/osmo-gsm-tester-srsepc’: Permission denied "
It appears that osmo-gsm-tester is trying to create the directory 'osmo-gsm-tester-srsepc' under root, which is not permitted as the Jenkins user the script runs has does not have permissions. Additionally, it looks like this path is hard-coded in the Python module https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/… and also the same applies for srsENB https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/…
Is this the intended behaviour? Or have we missed out steps during our bare-metal setup process? I've double-checked that the main unit can SSH into the slave unit without a password so that's not the issue causing "permission denied".
Best regards,
Callum.
Hi all,
We're trying to setup osmo-gsm-tester on bare metal and are currently experiencing issues with the Jenkins job 'osmo-gsm-tester-runner'. All of our test machines are running Ubuntu Server 20.04 and have been setup following the latest available manual from https://downloads.osmocom.org/docs/latest/osmo-gsm-tester-manual.pdf.
We've trying to use the '4g_srsLTE' example from https://github.com/osmocom/osmo-gsm-tester/tree/master/doc/examples/4g_srsL… but when trying to run the 'ping' test the following error is returned in the Jenkins console output:
" 14:07:52.867022 run mk-remote-dir(pid=2480): ERR: Terminated: ERROR {rc=1} [trial-21↪4g:srsenb-rftype@soapy↪ping.py:9↪ping.py↪srsepc_10.100.100.113↪host-jenkins@10.100.100.113↪mk-remote-dir(pid=2480)]
14:07:53.015620 run mk-remote-dir(pid=2480): stdout:
| (launched: 2022-09-23_14:07:51.598612)
| mkdir: cannot create directory ‘/osmo-gsm-tester-srsepc’: Permission denied "
It appears that osmo-gsm-tester is trying to create the directory 'osmo-gsm-tester-srsepc' under root, which is not permitted as the Jenkins user the script runs has does not have permissions. Additionally, it looks like this path is hard-coded in the Python module https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/… and also the same applies for srsENB https://github.com/osmocom/osmo-gsm-tester/blob/master/src/osmo_gsm_tester/…
Is this the intended behaviour? Or have we missed out steps during our bare-metal setup process? I've double-checked that the main unit can SSH into the slave unit without a password so that's not the issue causing "permission denied".
Best regards,
Callum.
hi there,
i ran into an error with ./transceiver in osmocom-bb
if i write
osmocom/osmocom-bb/src/host/layer23/src/transceiver # sudo ./transceiver
-a 47 -2 -r 99
the cli returns with
47
41
1
Aborted
what am i doing wrong? i hope you can help me out.
have a nice day
msfu
Dear Osmocom community,
during the past years, we've been applying for (and often receiving) grants
for the development of certain parts of the Osmocom project.
There are two organizations (NLnet foundation and the German prototype fund) where the
next call for proposals ends in 10 days from now.
So if any of you has some ideas about Osmocom related work that you would want
to see implemented and for which you can argue that it fits the scope of the
related funds, please feel free to bring them up here.
For NLnet, the scope should fit either
* https://nlnet.nl/entrust/
* https://nlnet.nl/useroperated/
For prototype fund, the scope should fit
https://prototypefund.de/jetzt-bewerben-fuer-runde-13/ - specifically I think
it is likely that we could fit a number of "our" topics in
https://prototypefund.de/softwareinfrastruktur/ which explicitly lists
implementation of communication protocols.
Given that I have plenty of experience with both funds, I'd be willing
to work on a concrete proposal and submit it before the deadline on Sept
30 / Oct 1.
In terms of "who would do the actual work": With NLnet projects we can
involve freelancers across Europe, with prototype fund probably only
in Germany. In the worst case, if you propose some idea but have no
time to work on such a project yourself, or you are not eligible due
to the restriction to EU/DE, sysmocom could carry out the
implementation.
Let me know if anyone of you has some ideas as to what kind of osmocom
related topics might be suitable candidates.
Thanks,
Harald
--
- Harald Welte <laforge(a)osmocom.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
RFC about mscgen
mscgen is our tool of choice to generate ladder diagrams from the "msc" text
input format. We use it in user manuals and on our redmine wiki, and there are
also various .msc files in doc/ subdirs, as assistance for development.
I've written a lot of ladder diagrams, for documentation as well as figuring
out how to implement things. I've developed a love/hate relationship, and
recently I found a bug in mscgen.
Things have come up that I'd like your opinion on:
* ladder_to_msc.py
Writing .msc files by hand quickly started to annoy me:
- Having to write '[label="..."]' all the time.
- Multiline labels (e.g. '(note)' block) require "foo\nbar\nbaz"
- input symbols for arrows are weird / non-intuitive
- cannot use 'msc' as entity, weirdly conflicts with the outer 'msc { ... }',
which is annoying for GSM diagrams featuring an MSC.
So quite some while ago I wrote a python script that reads my personal favorite
format in which i enjoy writing ladder diagrams, and outputs plain .msc file
format. I put it in libosmocore/contrib/ on a branch, have been using it ever
since, but i never submitted it for merging, because it seemed like a personal
preference thing, not worth complicating the doc tool chain for.
So far I was, if at all, committing only the resulting .msc to git. But that
creates a situation where only I have the *original* source in .ladder format,
so (hypothetically) collaborating on ladder diagrams becomes convoluted.
Here is an example of my favorite ".ladder" format:
------
{hscale=1}
upf = User Plane function
cpf = Control Plane function
upf <- cpf PFCP Association Setup Request
CP function Node Id, features
upf -> cpf PFCP Association Setup Response
UP function Node Id, features
upf <> cpf associated
upf () cpf start Heartbeat checking
...
------
The equivalent .msc produced by ladder_to_msc.py:
------
msc {
hscale="1";
upf[label="User Plane function"],cpf[label="Control Plane function"];
upf <= cpf [label="PFCP Association Setup Request\nCP function Node Id, features"];
upf => cpf [label="PFCP Association Setup Response\nUP function Node Id, features"];
upf abox cpf [label="associated"];
upf rbox cpf [label="start Heartbeat checking"];
...;
------
I'd like to hear some opinions, if you have any, on whether anyone else likes
my new ladder format, and how to deal with .ladder source files.
Would it make sense to merge ladder_to_msc.py to libosmocore, install it via
'make install', and add the original .ladder files as well as Makefile rules to
convert .ladder to .msc to .png where ever i wrote .ladder diagrams?
* mscgen bitrot is likely
Recently I've found a segfault in mscgen. I found a fix and tried to submit it.
That's when I discovered that:
- the original project on code.google.com is dead and gone
- the mail addresses of the original author result in bounces
- random people put mscgen's trunk on github, exported from google code, no
activity is apparent
I did reach the Debian maintainer of mscgen by mail. He doesn't have any way to
contact the original author, either. It seems there could be a patch in the
Debian package, at best.
I wonder if it would make sense to officially create an mscgen "fork" on
Osmocom, in an effort to save the tool from bitrot and extinction, and offer
our mscgen as the new upstream for debian's mscgen packaging.
I do have a number of things i'd like mscgen to be able to do, like left-adjust
text in "note" blocks or improve the resolution of produced PNG images;
I might also implement support for my .ladder format directly in mscgen.
I am vague on what my opinion is between the advantages and disadvantages, and
it's all only semi important. I just know that I always end up writing .ladder
instead of .msc, and that we will always need ladder diagrams.
Do you have any opinions on these things?
Thanks!
pointers:
ladder_to_msc.py: libosmocore branch neels/ladder
https://cgit.osmocom.org/libosmocore/commit/?h=neels/ladder&id=073ad74435ec…
My most recent ladder chart:
https://cgit.osmocom.org/osmo-bsc/commit/?h=neels/codec&id=01f370c1b365305f…
--
- Neels Hofmeyr <nhofmeyr(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
* Geschäftsführer / Managing Directors: Harald Welte
Dear OpenBSC team,
I am Ahnaf Tahmid Chowdhury, currently building Osmocom graphical user
interface. I have created a subscriber page where one can add/remove/update
subscriber. The repo is available at:
https://github.com/ahnaf-tahmid-chowdhury/osmo-gui
Please let me know your thoughts about the application.
Thank you
I'm confused by what is happening in the pcap linked below:
According to wireshark, the SCCP message seems to come from *both* PC=4 and PC=185.
A column configured as sccp.calling.pc shows Point-Code 4.
A column configured as "Source Address" shows Point-Code 185.
Is it even possible that the in-band Calling Address differs from whatever
wireshark detects as the SCCP Source Addres? Can anyone explain where the 185
is coming from? apparently not from sccp.calling.pc.
The pcap and a screenshot showing the two point-codes and the column config are
here: http://people.osmocom.org/neels/Eew7we0I/
Context:
The original RESET message (not part of the pcap) was sent to called.pc=4, but
I have SCCP routing set up to forward PC=4 to the MSC that sees itself as
PC=185.
I am expecting to see a RESET-ACK sent from PC=185.
IIUC The 4 should have evaporated when the MSC parsed the RESET message. But
apparently when answering, it takes the "called.pc" and puts it in the response
as "calling.pc" (4 is nowhere in the MSC's confguration, it MUST have taken the
"4" from the received SCCP message).
So what I am seeing in wireshark is eerily correct: it is the MSC that has
"185" in its cfg as local address sending the ACK, and it is responding to a
request that was originally sent to "4", and which osmo-stp routed to "185".
The response shows calling.pc=4. But how can wireshark know that it was really
"185" sending, when no such information is in the SCCP layer of that message?
What am I missing?
if anyone knows, thanks in advance...
~N
Hi all,
as some of you may know, I am working on the MS side implementation of
GPRS protocol stack. The end goal is to have something similar to srsUE
(part of srsRAN, former srsLTE), but for GPRS.
In order to reduce code duplication it was decided to move some stuff
from both osmo-pcu.git and osmo-sgsn.git into shared libraries, so that
we could re-use existing code in the upcoming MS side implementation.
== What is already done
* Redmine: https://osmocom.org/projects/libosmo-gprs
* Gerrit: https://gerrit.osmocom.org/q/libosmo-gprs
* Gitea: https://gitea.osmocom.org/osmocom/libosmo-gprs
* osmo-ci.git: https://gerrit.osmocom.org/c/osmo-ci/+/29019
== What is missing
* GitHub: https://github.com/osmocom/libosmo-gprs
* cgit: https://cgit.osmocom.org/libosmo-gprs/
** Coverity pulls from this mirror
** Jenkins build verification uses this mirror
I will need some help with both GitHub and cgit, as I don't have admin
permissions. Please also let me know if I missed something.
Best regards,
Vadim.
--
- Vadim Yanitskiy <vyanitskiy at 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
I tried to use shadysim (https://gitea.osmocom.org/sim-card/sim-tools)
to install a STK / CAT applet on the sysmoISIM. It was not working for
me, also it does not support UICC parameters and it seems that still
Python 2.7 is needed.
As an alternative I have added support for gpshell
(https://kaoh.github.io/globalplatform/) to use SCP02 and pass the
SIM/UICC parameters.
See the new parameters "uiccSystemSpecParam" and "simSpecParam" for the
"install" command
https://github.com/kaoh/globalplatform/blob/master/gpshell/src/gpshell.1.md
and inspect the
https://github.com/kaoh/globalplatform/blob/master/gpshell/helloInstallSTK.…
example file. If "brew" ins installed then "brew install
kaoh/globalplatform/globalplatform" is sufficient for the installation.
I also faced the issue that the sysmoISIM cards are only accepting SIM
parameters and no UICC parameters, which is strange or even a bug since
these cards are newer and are supporting the newer UICC ETSI specifications.
Dear Sir/Madam,
I'm a graduate student from a martime college , my major is not computer or communication , I'm trying to do a project about vessel's AIS tx . The equipment which I use is USRP b210 and the software is Gnuradio . After I cloned the code from http://github.com/osmocom/ais-tx/tree/master/gr-aistx and install into gnuradio , it occurs a few mistakes . I tryed to install it in Ubnutu system and dragonOS system ,both failed . Could take a look and help me to solve the problem , there is some pictures attached in this e-mail about the problem . Really thanks a lot , wish you have a nice day .
Yours Sincerelly
Xiangjun Zhang
Hey y'all,
This is somewhat related to another post of mine titled "MSC, SIP connector, and Asterisk". I've been working on a project to simulate cell phone usage through construction of a completely virtual GSM network. To that end, I've been planning to use the mobile application packaged with OsmocomBB to simulate the actual MSs. To make this easier, I've been using a single instance of mobile configured with several MSs in the configuration file (alongside separate instances of virtphy). This had been working for a while, where I was able to place calls between the MSs that were configured. However, I've recently run into an issue where the calls are rejecting each other.
After digging through the source of mobile a little, it's looking increasingly like multiple MSs are not meant to be used in parallel with each other on the same instance of mobile. The main file I've been looking at is mnccms.c (https://osmocom.org/projects/baseband/repository/osmocombb/revisions/master…). It seems that there's no differentiation made between MSs when checking for any calls with/without hold status, which means that only one active call can be used by a mobile instance at any one time. In fact, based on what I've been reading, I can't figure out how I had this working in the first place.
Therefore, I wanted to see if I could get a definitive answer before I invest time into redesigning certain aspects of my framework. Is it possible to use multiple MSs within a single instance of mobile, such that they can all be involved in separate calls simultaneously?
Thanks for any help, it's greatly appreciated!
- James
Hey all,
I've got a bit of an interesting use case. I've been working to setup the OpenBSC components in order to simulate stress testing a GSM network. I've been able to get communications across the GSM working properly, with MSs able to place calls. However, part of what I'm trying to do involves routing to a simulated PSTN. I turned to sip-connector and asterisk, but my network immediately stopped working once I told the MSC to use an external MNCC.
The setup involves two separate computers. The first is the BSS, which has a BSC, MGW, virtual BTS, and two MSs running on mobile and virtphy. The second is the NSS, with the MSC/VLR, HLR, MGW, and STP. The GSM is split between the two devices because of the eventual goal to increase the number of BSSs to better simulate a real-world GSM.
This was all working fine, until I modified osmo-msc.cfg to include "mncc external /tmp/msc_mncc". In parallel, I setup osmo-sip-connector and ran it on the NSS through the same "/tmp/msc_mncc" socket, pointing it at Asterisk (also on the NSS). This was all done according to the instructions listed here: https://osmocom.org/projects/osmo-sip-conector/wiki/Howto.
Now whenever I place my calls (which I do through mobile's "call" VTY command on the BSS), the call doesn't connect and simply gets released after 30 seconds. After doing some debugging, I've determined that Asterisk is not receiving anything from the sip-connector. Meanwhile, the sip-connector is being told to delete any connection basically as soon as it's created:
<0001> mncc.c:1005 MNCC rcvd message type: MNCC_SETUP_IND
<0001> mncc.c:566 Created call(5004) with MNCC leg(2147483652) IMSI(001010000000001)
<0001> mncc.c:68 Starting Timer for MNCC_RTP_CREATE
<0001> mncc.c:164 MNCC sent message type: MNCC_RTP_CREATE
<0001> mncc.c:1005 MNCC rcvd message type: MNCC_REL_IND
<0001> mncc.c:636 Rcvd MNCC_REL_IND, Cause: RESOURCE_UNAVAIL
<0001> mncc.c:648 leg(2147483652) was released.
<0002> call.c:90 call(5004) released.
The MSC has the following as part of its output when a call is placed:
...
<0020> osmo_ss7.c:1933 0: asp-OsmoMSC-asp: xua_cli_read_cb(): sctp_recvmsg() returned 48 (flags=0x80)
<0023> m3ua.c:714 0: asp-OsmoMSC-asp: Received M3UA Message (XFER:DATA)
<0023> m3ua.c:543 0: asp-OsmoMSC-asp: m3ua_rx_xfer
<0023> m3ua.c:566 0: asp-OsmoMSC-asp: m3ua_rx_xfer(): M3UA data header: opc=2233=1.23.1 dpc=185=0.23.1
<0020> osmo_ss7_hmrt.c:276 m3ua_hmdc_rx_from_l2(): found dpc=185=0.23.1 as local
<0020> sccp_scrc.c:472 scrc_rx_mtp_xfer_ind_xua: HDR=(CO:CODT,V=0,LEN=0), PART(T=Destination Reference,L=4,D=00000007), PART(T=Segmentation,L=4,D=00000000), PART(T=Data,L=6,D=000422040120)
<0021> sccp_scoc.c:1664 Received CO:CODT for local reference 7
<0021> sccp_scoc.c:1698 SCCP-SCOC(7)[0x555adb5ddf40]{ACTIVE}: Received Event RCOC-DT1.ind
<0021> sccp_user.c:175 Delivering N-DATA.indication to SCCP User 'OsmoMSC-A'
<0011> sccp_ran.c:108 (GERAN-A-7) sccp_ran_sap_up(N-DATA.indication)
<0003> ran_peer.c:591 ran_peer(GERAN-A:RI-SSN_PC:PC-1-23-1:SSN-BSSAP)[0x555adb5b1010]{READY}: Received Event RAN_PEER_EV_MSG_UP_CO
<0007> ran_peer.c:407 msc_i(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5d97e0]{READY}: Received Event MSC_EV_FROM_RAN_UP_L2
<0011> ran_msg_a.c:790 msc_i(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5d97e0]{READY}: RAN decode: BSSMAP: CLEAR REQUEST
<0007> msc_i.c:85 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST
<000b> msc_a.c:196 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: + msc_a_ran_dec: now used by 2 (cc,msc_a_ran_dec)
<0011> ran_msg_a.c:790 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: RAN decode: BSSMAP: CLEAR REQUEST
<0011> msc_a.c:1612 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: RAN decode: BSSMAP Clear Request
<0007> msc_a.c:1433 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_MO_CLOSE
<0007> msc_a.c:733 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_COMMUNICATING}: State change to MSC_A_ST_RELEASING (X2, 30s)
<0011> msc_a.c:769 msc_a(IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ)[0x555adb5daa50]{MSC_A_ST_RELEASING}: Releasing: msc_a use is 2 (cc,msc_a_ran_dec)
<000b> msc_a.c:773 VLR subscr IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,CC,msc_a_fsm_releasing_onenter)
<000b> vlr.c:309 VLR subscr IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,CC,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
<000b> vlr.c:314 VLR subscr IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,CC,msc_a_fsm_releasing_onenter)
<0001> transaction.c:230 trans(CC:INITIATED IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ callref-0x80000003 tid-8) Freeing transaction
<0005> gsm_04_08_cc.c:237 trans(CC:INITIATED IMSI-001010000000001:MSISDN-1234567891:TMSI-0x9B96EF97:GERAN-A-7:CM_SERVICE_REQ callref-0x80000003 tid-8) tx MNCC_REL_IND
...
Any thoughts as to why this one change to my GSM is suddenly stopping it from functioning properly? Thanks, any help is greatly appreciated!
- James
P.S. I didn't want to include my config files for fear of making this message absurdly long, but let me know if you want to see any and I'll gladly post them.
Hello Osmocom community,
I have previously alluded in other threads here that I am seeking to
interface my Osmocom-based GSM network to USA PSTN. In this post I
shall provide details as to exactly what I am doing and how I go about
it.
I am currently experimenting with using bulkvs.com as my USA PSTN
connectivity provider, chosen on the basis of cost economy: it is
incredibly, mind-boggling cheap - the monthly "keepalive" cost is only
6 cents (yes, *cents*) per rented phone number! With phone numbers
this cheap, I don't have to do any kind of "number economy" options:
no need for "phone number NAT" (a single external phone number where a
PBX answers, requiring callers to then dial an internal extension
number), and no need for a mixed scheme where only one or two test
SIMs get real outside numbers while all others get only fake internal
numbers - instead I can give a real valid NANP phone number to every
test SIM on my test/R&D GSM network. For context, my test GSM network
is envisioned as serving two purposes: one is for development and
testing of GSM handsets - real phone numbers are less important here -
and the other purpose is demonstration to gathered audiences (American
patriots and in-person freedom lovers who aren't afraid of some silly
virus) for "oooh and ahhh" - and for this second purpose, having real
phone numbers for every test phone will be a big boost.
The interface to USA PSTN provided by bulkvs.com and other similar
low-cost services is a SIP trunk, hence what I need to implement is a
form of GSM to SIP gateway. But here is the part where I deviate from
what appears to be the established canon in Osmocom-based community
cellular networks: I don't want to run a heavyweight PBX like Asterisk
or FreeSwitch, instead I want to run only a fairly thin, lightweight
layer of extra sw between my OsmoMSC instance (MNCC interface) and the
public-Internet SIP interface provided by bulkvs, with the needed thin
sw layer put together by me, combining newly written code specific to
my use case with bits of code borrowed from elsewhere.
Here is the code I have written / put together so far:
https://www.freecalypso.org/hg/themwi-system-sw/
The README file at the top level of the code repository explains what
is there and how it works, in basic terms.
One of the major pieces I will need to implement is an RTP bridge MGW
that will transcode between GSM codecs (FR1, EFR, AMR) on the GSM side
and G.711 (PCMU or PCMA) on the PSTN-via-SIP side. PSTN-via-SIP
connectivity providers such as bulkvs don't support any GSM codecs
(not one of them), instead they only support G.711 and G.729. I won't
be doing G.729 in ThemWi (transcoding from one lossy vocoder to another
seems like a terrible idea), hence I will run with G.711 on my
PSTN-over-Internet interface and I will need to implement a transcoder
between GSM codec family and G.711. I reason that what I need to
implement is probably quite similar to the transcoding function in
classic GSM E1 TRAUs, except that in the RTP bridge environment I also
have to deal with the added complexities of packet loss, reordering
and silence suppression, unpleasantries of the packet world that
didn't exist in the olden days of TDM luxury.
I don't know whether or not a transcoding RTP bridge MGW is already
implemented somewhere in the bowels of either Asterisk or FreeSwitch -
the size and complexity of both "major sw" choices is quite intimidating
and off-putting. If someone who happens to know the answer gives me a
pointer, it will certainly be very appreciated, but if not, then some
time later I will undertake the big effort to dig in both projects and
look for this transcoder. If the needed transcoder implementation
already exists somewhere, then I will need to lift it out of whichever
project and integrate it into themwi-system-sw - and if there is no
existing published-source implementation, then I will be the first to
produce one.
M~