FreeCalypso > hg > freecalypso-docs
comparison TCH-tap-modes @ 106:28c1cb869d91
TCH-tap-modes: updates for TCH/HS
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 22 Jul 2024 22:36:29 +0000 |
| parents | 8a45cd92e3c3 |
| children | dfa5f99631a6 |
comparison
equal
deleted
inserted
replaced
| 105:72a272083f46 | 106:28c1cb869d91 |
|---|---|
| 126 tools, specifically the tch record command in an interactive fc-shell session. | 126 tools, specifically the tch record command in an interactive fc-shell session. |
| 127 The format in which TCH DL tap traffic is passed over RVTMUX (an original | 127 The format in which TCH DL tap traffic is passed over RVTMUX (an original |
| 128 FreeCalypso invention) has changed in a slight but incompatible way between the | 128 FreeCalypso invention) has changed in a slight but incompatible way between the |
| 129 original hackish version from 2016 and the new production version as of 2022, | 129 original hackish version from 2016 and the new production version as of 2022, |
| 130 and capturing TCH DL with new firmware requires the updated version of fc-shell | 130 and capturing TCH DL with new firmware requires the updated version of fc-shell |
| 131 that will be released as part of fc-host-tools-r18. The current (late 2022) | 131 that was released as part of fc-host-tools-r18. The current (developed in late |
| 132 incarnation of FreeCalypso TCH DL sniffing feature supports FR1, HR1 and EFR | 132 2022) incarnation of FreeCalypso TCH DL sniffing feature supports FR1, HR1 and |
| 133 codecs, although only FR1 and EFR have been tested so far. | 133 EFR codecs; initially only FR1 and EFR were tested, but in 2024 HR1 joined the |
| 134 tested and known-working set. | |
| 134 | 135 |
| 135 The function of TCH UL substitution is currently implemented in FC Tourmaline | 136 The function of TCH UL substitution is currently implemented in FC Tourmaline |
| 136 only for FR1 and EFR (no HR1, no AMR), and it likewise requires running an | 137 only for FR1 and EFR (no HR1, no AMR), and it likewise requires running an |
| 137 interactive fc-shell session in which you would invoke the tool's tch play | 138 interactive fc-shell session in which you would invoke the tool's tch play |
| 138 command. In the case of TCH UL play feature there has been NO change in the | 139 command. In the case of TCH UL play feature there has been NO change in the |
| 155 followed by N words of payload, where N depends on TCH mode: 17 for TCH/FS and | 156 followed by N words of payload, where N depends on TCH mode: 17 for TCH/FS and |
| 156 TCH/EFS, 8 for TCH/HS, and not-yet-studied for AMR and CSD. Let's begin our | 157 TCH/EFS, 8 for TCH/HS, and not-yet-studied for AMR and CSD. Let's begin our |
| 157 analysis with the 3 status words that make up the buffer header: | 158 analysis with the 3 status words that make up the buffer header: |
| 158 | 159 |
| 159 Status word 0 (a_dd_0[0] or a_dd_1[0]) is a word of flag bits. We don't know | 160 Status word 0 (a_dd_0[0] or a_dd_1[0]) is a word of flag bits. We don't know |
| 160 the meaning of every bit in this word, but at least for TCH/FS and TCH/EFS (we | 161 the meaning of every bit in this word, but here are the bit meanings we've been |
| 161 haven't exercised TCH/HS at all) we know the following bits: | 162 able to figure out so far, looking at TCH/FS, TCH/EFS and more recently TCH/HS |
| 163 DL captures: | |
| 162 | 164 |
| 163 * Bit 15 (B_BLUD) is a "buffer filled" or "data present" flag. This flag is | 165 * Bit 15 (B_BLUD) is a "buffer filled" or "data present" flag. This flag is |
| 164 observed as 1 in *almost* every 20 ms window in which a traffic frame is | 166 observed as 1 in *almost* every 20 ms window in which a traffic frame is |
| 165 expected (fn_report_mod13_mod4 == 0 in l1s_read_dedic_dl(), case TCHTF), | 167 expected (fn_report_mod13_mod4 == 0 in l1s_read_dedic_dl(), case TCHTF), |
| 166 except for certain instances early in the call setup process which remain to | 168 except for certain instances early in the call setup process which remain to |
| 174 the speech-not-FACCH channel decoder was invoked. In the case of TCH/EFS this | 176 the speech-not-FACCH channel decoder was invoked. In the case of TCH/EFS this |
| 175 bit is set to 1 if the EFR-added CRC-8 was bad, and cleared if this CRC-8 was | 177 bit is set to 1 if the EFR-added CRC-8 was bad, and cleared if this CRC-8 was |
| 176 good; in the case of TCH/FS this bit has always been observed as 1 and should | 178 good; in the case of TCH/FS this bit has always been observed as 1 and should |
| 177 be ignored because there is no CRC-8 in TCH/FS. | 179 be ignored because there is no CRC-8 in TCH/FS. |
| 178 | 180 |
| 181 (Update for TCH/HS: in this channel mode this bit has always been observed | |
| 182 as 0.) | |
| 183 | |
| 179 * Bit 7 has always been observed as 1 wheneven B_BLUD is set but B_AF is | 184 * Bit 7 has always been observed as 1 wheneven B_BLUD is set but B_AF is |
| 180 cleared, i.e., whenever the block was channel-decoded in FACCH rather than | 185 cleared, i.e., whenever the block was channel-decoded in FACCH rather than |
| 181 speech mode. | 186 speech mode. |
| 182 | 187 |
| 183 * Bits 6:5 indicate the result of FIRE decoding in the event that the FACCH | 188 * Bits 6:5 indicate the result of FIRE decoding in the event that the FACCH |
| 184 decoder was invoked. | 189 decoder was invoked. |
| 185 | 190 |
| 186 * Bits 4:3 carry the ternary SID flag encoded as in section 6.1.1 of GSM 06.31 | 191 * Bits 4:3 carry the ternary SID flag encoded as in section 6.1.1 of GSM 06.31 |
| 187 and 06.81, but only when the speech-not-FACCH channel decoder was invoked as | 192 and 06.81, but only when the speech-not-FACCH channel decoder was invoked as |
| 188 indicated by B_AF. | 193 indicated by B_AF. |
| 194 | |
| 195 (Update for TCH/HS: these bits apply to HR codec too, following GSM 06.41 | |
| 196 section 6.1.1 now.) | |
| 189 | 197 |
| 190 * Bit 2 is BFI as defined in section 6.1.1 of GSM 06.31 and 06.81. Whenever | 198 * Bit 2 is BFI as defined in section 6.1.1 of GSM 06.31 and 06.81. Whenever |
| 191 the block was decoded as FACCH (bit 14 clear, bit 7 set), bit 2 has always | 199 the block was decoded as FACCH (bit 14 clear, bit 7 set), bit 2 has always |
| 192 been observed as set, agreeing with the stipulation in GSM 06.31 and 06.81 | 200 been observed as set, agreeing with the stipulation in GSM 06.31 and 06.81 |
| 193 that BFI=1 whenever a FACCH frame has been received. However, in the case of | 201 that BFI=1 whenever a FACCH frame has been received. However, in the case of |
| 194 TCH/EFS it appears that CRC-8 status (reported in bit 9) is NOT factored into | 202 TCH/EFS it appears that CRC-8 status (reported in bit 9) is NOT factored into |
| 195 the logic that sets bit 2 - it appears that the subsequent speech decoding | 203 the logic that sets bit 2 - it appears that the subsequent speech decoding |
| 196 logic is expected to OR bits 2 and 9 together to get the BFI flag for the Rx | 204 logic is expected to OR bits 2 and 9 together to get the BFI flag for the Rx |
| 197 DTX handler of GSM 06.81. | 205 DTX handler of GSM 06.81. |
| 206 | |
| 207 (Update for TCH/HS: bit 2 is BFI in HR codec too.) | |
| 208 | |
| 209 * Bit 1 is seen only in TCH/HS, and appears to be the elusive BCI flag whose | |
| 210 existence has been figured out from ETSI GSM 06.06 reid.c source. See this | |
| 211 article for more information: | |
| 212 | |
| 213 https://osmocom.org/projects/retro-gsm/wiki/HRv1_error_flags | |
| 214 | |
| 215 * Bit 0 is UFI for TCH/HS only. | |
| 198 | 216 |
| 199 In the case of 20 ms blocks (reassembled from 8 half-bursts) that were channel- | 217 In the case of 20 ms blocks (reassembled from 8 half-bursts) that were channel- |
| 200 decoded as speech rather than FACCH, the observed behavior is that bits 15 and | 218 decoded as speech rather than FACCH, the observed behavior is that bits 15 and |
| 201 14 are set, the payload portion of the buffer is filled with the output from the | 219 14 are set, the payload portion of the buffer is filled with the output from the |
| 202 channel decoder, and bits 4:3 are set from this payload by the bit-counting rule | 220 channel decoder, and bits 4:3 are set from this payload by the bit-counting rule |
