Hi all,
Just wanted to share an issue and a quick workaround I found for it in case
anyone else has the same problem. I believe a cmd2 update is causing
pySim-shell to fail. After installing it on a fresh install of Ubuntu
Server 20.04 and getting the following error when I run "python3
pySim-shell -p0":
>Using PC/SC reader interface
>Autodetected card type: sysmoUSIM-SJS1
>AIDs on card:
> USIM: a0000000871002ffffffff8907090000
>Traceback (most recent call last):
> File "pySim-shell.py", line 512, in <module>
> app = PysimApp(card, rs, opts.script)
> File "pySim-shell.py", line 59, in __init__
> super().__init__(persistent_history_file='~/.pysim_shell_history',
allow_cli_args=False, use_ipython=True, auto_load_commands=False,
command_sets=basic_commands, >startup_script=script)
>TypeError: __init__() got an unexpected keyword argument 'use_ipython'
If you run into this you can fix it by uninstalling cmd2 and reinstalling
cmd2 with "pip3 install cmd2==1.5".
Best,
Bryan
> I don't understand. This callback will be called with data you need to
write
> to the network. In case of MTP Level3 you will need to wrap that around
the
> msgb you got.
I means: is the interaction with mtp3 layer implemented (is sending sccp
data by mtp3 implemented by the library?)?
Also, what about the reception of data from mtp3 layer. is that implemented
in the sccp lib.
I am asking these questions because I see the code of mtp3 in the lib but no
significant call is present in the sccp part of the lib.
Thank you for your help.
On Tue, Jun 28, 2016 at 10:05:28AM +0200, Harald Welte wrote:
> [translated from german]
> is it certain that we switch a channel to PDCH only when
> gprs mode != none?
A TS can be GSM_PCHAN_TCH_F_PDCH; those are the only ones for which we
send a PDCH ACT message.
We send a PDCH ACT message
- during init (CHANNEL OML's state changed to enabled -> send PDCH ACT),
- and upon channel release ack when pchan == GSM_PCHAN_TCH_F_PDCH.
So the question is, when we receive a channel release ack, could that be
the PDCH release and we switch PDCH right back on by accident? No, because
we only receive a chan rel ack when the *TCH/F* is being released.
That is because the PDCH release is initiated "internally" from the PDCH
DEACT, and thus this condition in common/rsl.c rsl_tx_rf_rel_ack() catches
on, which existed before dyn PDCH:
if (lchan->rel_act_kind != LCHAN_REL_ACT_RSL) {
LOGP(DRSL, LOGL_NOTICE, "%s not sending REL ACK\n",
gsm_lchan_name(lchan));
return 0;
}
In rsl_rx_rf_chan_rel() the rel_act_kind is set to LCHAN_REL_ACT_RSL, but
not in the rsl_rx_dyn_pdch().
This is analogous to the ip.access way -- the ip.access nanobts replies to
a PDCH DEACT with a PDCH DEACT ACK and doesn't send a separate channel
release ack.
Maybe we could set rel_act_kind to some new LCHAN_REL_ACT_IPAC_DYN_PDCH
for clarity? (But we shouldn't actually send a release ack, to stay
compatible.)
Even though it works as-is, we should indeed add another flag check:
- We do check the flags that no ACT/DEACT is already pending;
- And we do send a PDCH DEACT only if ts->flags & TS_F_PDCH_ACTIVE;
- But we would send a PDCH ACT despite ts->flags & TS_F_PDCH_ACTIVE.
This should never happen, but it would make sense to ensure that.
~Neels
Hi,
I had a problem placing MO GSM calls from a Siemens S11E: The calls
were dropped immediately; Osmo-MSC reports "Cannot compose Channel
Type from bearer capabilities"
After investigating the SETUP request from the S11E, the phone does
not use octet 3a (no extension bit set in IE 3). Wireshark decodes the
radio channel requirement as "Full rate support only MS/fullrate
speech version 1 supported", so I added a condition to the gsm48_ie.c
function of libosmocore to include at least GSM FR in the list of
available speech_ver in case octet 3 has no extension.
Attached to this message are the Abis-IP PCAP traces of MO calls, and
the patch for gsm48_ie.c.
Regards,
Lennart
Hi,
My name is Brackley Cassinga Form DRC, we run a community network called
pamoja net where we offer gsm services using osmocom open source software
and OC Base station.
Recently I have tried to install another base station as the same installed
but I could not find any resource guiding through all the steps to take to
run NIB on a base station.
I'm currently running Ubuntu and I will appreciate if you could guide me on
the installation of BSC,hlr,MSC , in order to run a basic gsm network.
Thank you. Regards
--
*Ir Brackley heshima Casinga **Pacifique*
*CEO and Founder of kwanzatechnologie*
KwanzaTechnologies ,GlobalElectronics
+243977265291 | +243977265291 | Pcassinga(a)gmail.com/
brackley(a)ensemblepourladifference.org
www.kwantechnologies.jimdosite.com <http://www.kwantechnologies.com/> |
Skype: Brackley cassinga <https://webapp.wisestamp.com/#>
Av Semliki N 43
Hello,
I was going through libosmo-abis codebase to understand how it handles “Rtp to Trau” and vice-versa GSM-EFR conversions.
I was able to find “RTP to Trau” and “Trau to Rtp” conversion code of EFR speech frames, but could not find anything related to EFR SID (silence) frames.
can you please guide me if above is already present in the library or how can we implement it?
Thanks,
Sadanand
Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows
Hi, I have developed a UMTS core network using a home nodeB (HNB) which the
mobile phones (or UEs) can register on my network and get the required
services such as call service. I have implemented all the required
procedures for call service and I can establish a successful call for my
connected UEs.
In one of the most important procedures, i.e **Call Proceeding**, I have
identified the coding of speech transferred between UEs and core. Here is
my coding options (in wireshark):
GSM A-I/F DTAP - Call Proceeding
Protocol Discriminator: Call Control; call related SS messages (3)
.... 0011 = Protocol discriminator: Call Control; call related
SS messages (0x3)
1... .... = TI flag: allocated by receiver
.000 .... = TIO: 0
00.. .... = Sequence number: 0
..00 0010 = DTAP Call Control Message Type: Call Proceeding (0x02)
Bearer Capability 1 - (Spare)
Element ID: 0x04
Length: 6
Octet 3
0... .... = Extension: Extended
.11. .... = Radio channel requirement: Spare
...0 .... = Coding standard: GSM standardized coding
.... 0... = Transfer mode: circuit
.... .000 = Information transfer capability: Speech (0x0)
Octets 3a - Speech Versions
0... .... = Extension: Extended
.0.. .... = Coding: octet used for extension of information
transfer capability
..00 .... = Spare bit(s): 0
.... 0010 = Speech version indication: GSM full rate speech
version 2(GSM EFR) (0x2)
0... .... = Extension: Extended
.0.. .... = Coding: octet used for extension of information
transfer capability
..00 .... = Spare bit(s): 0
.... 1000 = Speech version indication: GSM full rate speech
version 5(FR AMR-WB) (0x8)
0... .... = Extension: Extended
.0.. .... = Coding: octet used for extension of information
transfer capability
..00 .... = Spare bit(s): 0
.... 0100 = Speech version indication: GSM full rate speech
version 3(FR AMR) (0x4)
0... .... = Extension: Extended
.0.. .... = Coding: octet used for extension of information
transfer capability
..00 .... = Spare bit(s): 0
.... 0101 = Speech version indication: GSM half rate speech
version 3(HR AMR) (0x5)
1... .... = Extension: No Extension
.0.. .... = Coding: octet used for extension of information
transfer capability
..00 .... = Spare bit(s): 0
.... 0001 = Speech version indication: GSM half rate speech
version 1(GSM HR) (0x1)
So I can see the RTP packets transferred between UE and core. An instance
is mentioned here (in wireshark):
Real-Time Transport Protocol
[Stream setup by RANAP (frame 2950)]
10.. .... = Version: RFC 1889 Version (2)
..0. .... = Padding: False
...0 .... = Extension: False
.... 0000 = Contributing source identifiers count: 0
0... .... = Marker: False
Payload type: DynamicRTP-Type-96 (96)
Sequence number: 56611
[Extended sequence number: 56611]
Timestamp: 424448575
Synchronization Source identifier: 0x5c260101 (1545994497)
RFC 2198: Redundant Audio Data
Header 1: PT=ITU-T G.728
0... .... = Follow: Not set
.000 1111 = Payload type: ITU-T G.728 (15)
Payload: 0028ba44776b3eee7a050039cdaa521cc20ac08d2bcf1818…
I have aggregated all RTP packets payload. How can I convert the aggregated
bytes to a hearable audio?
--
*When there is much light, The shadow is deep...*
Hello there,
I was wondering if there is any snippet or sample code for extracting TCAP
and then CAP parts from SCCP messages.
So, What I've done so far was to connect to SG system as a client and
called to 'osmo_sccp_user_bind' function to catch SCCP message:
osmo_sccp_user_bind(sccp, 0, handle_sccp_msg, NULL);
.
.
.
int handle_sccp_message(struct osmo_prim_hdr *oph, void *ctx) {
struct osmo_scu_prim *scu_prim = (struct osmo_scu_prim *)oph;
struct osmo_sccp_user *scu = ctx;
struct gsm_subscriber_connection *conn;
int rc = 0;
switch (OSMO_PRIM_HDR(&scu_prim->oph)) {
case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
// TCAP parsing ?!
break;
default:
break;
}
return rc;
}
Thanks
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