Bug #3238

ipacc style dyn TS become unusable after first voice call

Added by neels 17 days ago. Updated 16 days ago.

In Progress
Target version:
Start date:
Due date:
% Done:


Spec Reference:


TCH/F_PDCH timeslots work fine for data, and then work fine for the first voice call.
But after that, neither data nor another voice call will go through.

Reproduce: one sysmoBTS and a TS config of

   timeslot 0
    phys_chan_config CCCH+SDCCH4
   timeslot 1
    phys_chan_config SDCCH8
   timeslot 2
    phys_chan_config TCH/F_PDCH
   timeslot 3
    phys_chan_config TCH/F_PDCH
   timeslot 4
    phys_chan_config SDCCH8
   timeslot 5
    phys_chan_config SDCCH8
   timeslot 6
    phys_chan_config SDCCH8
   timeslot 7
    phys_chan_config SDCCH8

At first, both TS are used as PDCH. When placing a voice call, this switches both to TCH/F and works fine.
After the call, the RSL signalling and PCU log look as though switching back to PDCH was perfectly fine as well.

But no data will go through anymore. Switching GPRS off and on on a phone will also then cease to show a GPRS icon.
Also placing another voice call looks like switching the TS back to TCH/F works fine, but the call will abort early.

In contrast, Osmocom style dynamic timeslots (TCH/F_TCH/H_PDCH) switch back and forth fine any number of times.
That doesn't really make sense, since the only difference is the RSL messaging used to switch to/from PDCH.

(Osmocom style tested with a TS config like above, but only a single TCH/F_TCH/H_PDCH yielding two TCH/H, instead of the two TCH/F_PDCH ts;
so I guess another difference is that two timeslots are switched in close succession, which I believe not to be the cause.)

In attached pcap, two phones attach, one phone browses, then the first voice call is started at packet 10548.
After the voice call, one phone detaches and re-attaches and fails to re-establish GPRS, from packet 14798.
The second voice call is initiated from packet 16660, which fails to be established; followed by another failing call attempt.

tch_f_pdch_break_after_first_voice_call.pcapng (5.44 MB) neels, 05/04/2018 11:46 PM

verbose_log.pcapng - TCH/F_PDCH (1.22 MB) neels, 05/05/2018 12:24 AM

verbose_log_fine_with_tch_f_tch_h_pdch.pcapng - identical action to verbose_log.pcap, working well because with TCH/F_TCH/H_PDCH, as comparison (2.67 MB) neels, 05/05/2018 12:32 AM


#1 Updated by neels 17 days ago

I should mention that testing was done with patches not yet merged to master,
osmo-bts Ic06c8f0fe82ae8a06afa5defd93a685010687965 I654b963815b32fcbce050c2e15f3190c97bc259f
osmo-bsc Icf6e25ff068e8a2600562d52726ead65e864ec02 Iedb4fb63bf1959d5f1d2c6edb6a7f5097ff16bd7 Id7d9dd06451722eb328db77bb586826c954bd85c and various others

see on branches neels/dyn_ts_fix

#2 Updated by neels 17 days ago

another pcap with more gsmtap_log from BTS and PCU, this time starting from just before one voice call is made, and after the call showing the "START Immedate Assignment Uplink (AGCH)" which seem to fail with T3169 timing out. Haven't yet spotted the difference to operation with TCH/F_TCH/H_PDCH.

#3 Updated by neels 17 days ago

to have a chance to spot the difference, here another pcap with the working TCH/F_TCH/H_PDCH config.

#4 Updated by neels 16 days ago

  • % Done changed from 0 to 60

The reason why the PDTCH lchan did not receive any more UL data was

5169    20.010225965    May  5, 2018 02:21:55.681068746 CEST            GSMTAP    OsmoBTS    oml.c    1424    (bts=0,trx=0,ts=3,ss=0) SET_CIPHERING (ALG=1 RxUL)

I routinely use ciphering in my CS network, something I haven't always done.
When switching to TCH/F, the BSC sets the lchan's ciphering parameters.
When switching back to PDCH with the ip.access style PDCH act, these remain set, and the BTS would enable ciphering.

With Osmocom style dynamic timeslots, we use a proper Chan Activ, which overwrites various stale state, including ciphering.
Hence after activating PDCH, the ciphering setting is cleared for Osmocom style dyn TS.

I will submit a patch to properly clear lchan attributes upon PDCH Act / Deact.
Probably, TCH/F_PDCH have always shown this behavior from the start, just no-one tested it with ciphering enabled :/

#5 Updated by neels 16 days ago

  • Status changed from New to In Progress
  • Assignee set to neels

#6 Updated by neels 16 days ago

  • % Done changed from 60 to 90

Also available in: Atom PDF