DTXu half-blocks » History » Version 2
falconia, 08/14/2024 09:22 PM
1 | 1 | falconia | h1. BTS receiving DTXu half-blocks |
---|---|---|---|
2 | |||
3 | Most GSM MS implement DTXu in a straightforward manner: the 05.03 channel encoder runs continuously, channel-encoding a new SID frame from the speech encoder in every traffic frame position with block diagonal interleaving, mapping onto bursts happens normally as if there were no DTX, and only at the very last step the physical transmission of certain radio bursts is suppressed. What does the resulting radio UL look like to the BTS receiver? At the end of a talkspurt, just before radio Tx is cut off, there will be a SID frame, transmitted in full over 8 bursts, following block diagonal interleaving. This SID frame will be the last full block of 456 bits (GSM 05.03 terminology) transmitted by the MS. However, as an artifact of block diagonal interleaving, the last 4 bursts will carry in their even-numbered bits a parasitic "half-block": half of the bits of the next SID frame emitted by the speech encoder. |
||
4 | |||
5 | 2 | falconia | During prolonged speech pauses in DTXu, when the mandatory SID position occurs, the MS will transmit a total of 8 bursts. The intended SID frame for the mandatory SID position will be transmitted with block diagonal interleaving as required, but there will also be two parasitic half-blocks: the first 4 bursts will carry half of the preceding (not intended to be transmitted) SID frame in their odd-numbered bits, and the last 4 bursts will carry half of the following SID frame (also not intended for transmission) in their even-numbered bits. Thus the BTS receiver will see one proper diagonal-interleaved block of 456 bits, plus two half-blocks in the preceding and following traffic frame positions. A half-block also occurs in the traffic frame position directly preceding the first speech frame of a new talkspurt, and if FACCH UL transmission occurs in the middle of a DTXu pause, it will likewise be surrounded by half-blocks. |
6 | 1 | falconia | |
7 | 2 | falconia | h2. Observed behavior on Nokia InSite BTS |
8 | 1 | falconia | |
9 | 2 | falconia | In those 20 ms frame positions where half-blocks are received in TCH UL as described above, the [[InSite_UL_captures|observed Abis output]] from Nokia InSite exhibits these properties: |
10 | 1 | falconia | |
11 | 2 | falconia | * Payload bit content: class 1 bits contain the SID codeword and comfort noise parameters from the "intended to be suppressed, but escaped in half-form" SID frame, reconstructed by the convolutional decoder given half of its usual input bits. The half of class 2 bits corresponding to the transmitted half-block are also decoded correctly; the other half of class 2 bits are (or at least look like) garbage. Because the SID codeword contained in class 1 is decoded sans errors from the half-block, the resulting full frame bit pattern meets the criteria for classification as valid SID! |
12 | * TRAU-UL SID classification bits are set to C13=1 C14=0, denoting SID=2 classification in agreement with the decoded bit pattern. |
||
13 | * C12 is set to 1, denoting BFI. |
||
14 | |||
15 | The last point, the fact that the BTS emits BFI=1 for these half-blocks, is very critical! If the BFI output from the BTS going to the remote transcoder were set to 0 on these frames, the TRAU (or other TC) would have no choice but to interpret these frames as valid SID - but that outcome would be bad! Having the remote transcoder treat half-block-Rx frames as valid SID would be bad for the following reasons: |
||
16 | |||
17 | * Of the bits of comfort noise parameters that fall into class 2 (the least significant ones, but still), half of them can only be garbage (or perhaps constant 0-fill or 1-fill) as they mapped to bursts that weren't transmitted; |
||
18 | * Class 1 bits (most bits of CN parameters) were decoded weakly, as the convolutional decoder only got half of its usual input; |
||
19 | * The logic of CN parameter interpolation (prescribed bit-exact by ETSI for EFR and HRv1, recommended informally for FRv1) would get messed up if it got 2 SID frames instead of 1 after a talkspurt, and 3 SID frames instead of 1 at every 480 ms TAF position. |
||
20 | |||
21 | But the setting of BFI=1 by the BTS comes to the rescue: per the specs, when BFI is set to 1 (bad frame), valid SID turns into invalid SID, i.e., the combination of BFI=1 SID=2 is to be interpreted just like SID=1 (with either value of BFI flag). The classification of "invalid SID" tells the RX DTX handler that: |
||
22 | |||
23 | * The MS is still there, i.e., no radio channel breakdown is to be inferred; |
||
24 | * The MS is in a DTXu pause; |
||
25 | * There are no new comfort noise parameters - keep the previous ones. |
||
26 | |||
27 | The case of receiving half-blocks meets all 3 of the just-listed criteria, hence the classification of "invalid SID" is fully proper in this case. |
||
28 | |||
29 | h2. Observed behavior on Calypso GSM MS |
||
30 | |||
31 | The definition of TCH in the GSM specs is very symmetric between UL and DL, including the DTX aspect. However, DTXd (DTX in the downlink) is not allowed on the BCCH carrier (C0), and I (@falconia) live in a geopolitical region where the only remaining commercial GSM operators have only ultra-low-capacity single-carrier cells, no additional carriers beyond C0. Interestingly though, both T-Mobile USA and Telcel Mexico operate their TCH DL with what I can only describe as a form of "fake DTXd", and to a Calypso DSP receiver it looks like real DTXd. (I surmise that they may be transmitting dummy bursts where true DTXd would cut radio Tx, but I have no proof.) |
||
32 | |||
33 | As a result of this oddity, we can observe how TI Calypso DSP behaves on TCH/FS and TCH/EFS DL in the presence of DTXd, and we can see how it handles the case of receiving half-blocks. And the answer is: it handles half-blocks on TCH DL Rx in exactly the same way how InSite BTS handles them on TCH UL Rx! The DSP status word in @a_dd_0[0]@ contains BFI and SID status flags just like TRAU-UL frames, and the observed behavior on receiving half-blocks is just like I described above for InSite BTS: bit pattern that looks like valid SID except for some garbage in class 2 bits, SID=2 classification, but also BFI=1. |
||
34 | |||
35 | h2. The problem with sysmoBTS PHY |
||
36 | |||
37 | 1 | falconia | Unlike E1 BTS, the PHY in sysmoBTS has no BFI flag in its TCH UL output: it emits either an implicitly-deemed-good FR/EFR codec frame, or a zero-length payload to indicate BFI with no bits delivered. |
38 | |||
39 | The behavior observed on sysmoBTS is that when DTXu is enabled and the MS goes into speech pauses, the PHY returns implicitly-deemed-good traffic frames not only in the intended SID position, but also in half-block Rx positions - and the latter masquerade as valid SID frames! It appears that the channel decoder in the DSP reconstructs all class 1 bits from the available half of coded bits (228 instead of 456), CRC-3 (plus CRC-8 with EFR) passes as a result, the SID codeword is likewise contained in class 1, but of course those class 2 bits that fall in the missing half will be garbage. |
||
40 | |||
41 | 2 | falconia | This TCH Rx behavior in sysmoBTS seems very wrong to me: frames from not-intended-for-Tx positions are presented as valid SID to the Rx DTX handler, even though some of the bits carrying comfort noise parameters (those that fall in class 2, missing half of the block) are garbage. I (@falconia) will soon be looking for potential workarounds that could be implemented in osmo-bts-sysmo. |