Virtual layer 1 - Questions

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at

Harald Welte laforge at
Sun Feb 12 23:09:20 UTC 2017

Hi Sebastian,

On Sun, Feb 12, 2017 at 02:29:05PM +0100, Sebastian Stumpf wrote:
> The virtual layer 1 is currently in a state where the l23 app can
> successfully connect to the bts and most of the signaling messages
> will be forwarded and handled. TCH is not yet implemented.

this is excellent news!  Thanks for sticking with this and pushing it

> - Trying to initiate a call via the mobile vty will result in
> VTY:
>  call 1 123
>  OsmocomBB#
>  % (MS 1)
>  % Call has been rejected
>  call 1 123
>  OsmocomBB#
>  % (MS 1)
>  % Call has been released
> And no actual call setup message is transfered over the Um interface.
> What could be reasons for that? I am using the test-sim option the
> mobile app offers.

I'm not sure if this is the root cause, but it seems there is some
timeslot mis-matches in your traces.  The Immediate Assignment contains
TS 2 or TS 7, but I see Uplink frames for FACH on TS0, which is
impossible (TS0 never has a channel combination with FACCH).

Also, The uplink frames don't have the Uplink bit set in the GSMTAP
header.  This is a bit confusing, and I think it would be a good idea to
introduce some consistency/invariant checking on both sides, i.e. the
BTS should drop all non-uplink frames received, and the MS should drop
all uplink frames received.

I'm also surprised to see you're seeing an immediate assignment reject
in downlink.  This should only happen if all channels are allocated and
the BTS is out of resources.

Also, in your traces, there are typically several frames that are on the
same timeslot in the same GSM frame number.  This is not possible
(probably related to the wrong TS above?).  At maximum, there can be one
L2 signalling message for a given TS + FN.  Also, on the real radio
interface a MAC block takes typically four frames on that channel, so
the actual rate is lower.

> - Occasionaly the T3210 timer is fired, which causes a new registering
> within the network.

well, it means that something got lost between MS and MSC for such a
long time (between sending the LU REQ and receving a response) that the
MS gives up.

> LOG:
>  gsm48_mm.c:336 timer T3210 (loc. upd. timeout) has fired
> How can i prevent that?

The underlying problem must be resolved.  On the simulated L1 you
shouldn't loose messages, so this shouldn't happen if all messages
arrive as expected on both sides.

> - I did not implement a tdma or multiframe scheduler in the mobile
> uplink as the logical channel is directly put to the gsmtap-header and
> thus known by the bts. As Harald used a multiframe based scheduling
> for the bts downlink, i wonder if this might be necessary, though. To
> submit msgs with the correct frame number for example.

It is primarily a question of how real the simulation should be.  By
using a multiframe scheduler one can make sure that the actual
bandwidth/speed of GSM is maintained even over a virtual L1.  Also, on
the BTS side it must be present to schedule the BCCH (system
information, ...) without which a MS would never even see the cell.

I think one can do without on the MS side, but then the BTS must
basically queue the incoming frames until the respective frame number
indicated in the frame matches the current frame number.

> - In my wireshark capture files, the gsmtap messages sent over the
> multicast sockets are only recognized as UDP messages. I have to
> "cast" them with the wireshark context menu "Decode as...". Why?

This seems because you're using a non-standard port for the messages:
In the capture I see UDP port 6666 rather than the IANA-registered port
for GSMTAP which is 4729.

> I would be super happy if someone of you could check out my project
> (osmo-bts, branch stumpf/virt-phy + osmocom-bb, branch
> stumpf/virt-phy) try to run it with the config files lying within the
> project folders and tell me the problems they see :).

I'll have a look, but not straight away now, sorry.

> Here you can find a wireshark capture file of 2 mobiles connecting to
> a virt bts. I also tried to init calls from both of them but the call
> setup is not send.

Already the LU is not working stable, so I think the first step is to
stabilize this.  You can see in packet 740 that the MS is sneding a LU
Req, which the BTS forwards in frame 741 as RSL message to the NITB.

The NITB then responds with an IDENTITY REQUEST which can be seen on RSL
but which seems to disappear in the BTS without being ever sent on the
virtual Um interface.   As a result, the MS never sends the identity
response, and the NITB will give up.

I also see that the RACH requesets all are sent with a bogus frame
number: 42.  This will not work.  The RACH request needs to be sent with
the current frame number at the time being.  Also, RACH retransmissions
are happening way too quick.  See Packets 600...644 where there are 7
RACH requests all within soemething like 10ms.  The BTS then allocates
7 channels rather than one, ...

So I think those lower-layer issues should be addressed before moving on
to voice calls.

Keep up the good work!

- Harald Welte <laforge at> 
"Privacy in residential applications is a desirable marketing option."
                                                  (ETSI EN 300 175-7 Ch. A6)

More information about the baseband-devel mailing list