FreeCalypso > hg > gsm-net-reveng
comparison tmo/CSD-tests @ 71:ed314cc25b8d
tmo/CSD-tests: additional experiments and historical notes
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 26 Nov 2024 20:56:33 +0000 |
parents | 47947e25f922 |
children | afebef67e8d4 |
comparison
equal
deleted
inserted
replaced
70:47947e25f922 | 71:ed314cc25b8d |
---|---|
1 A series of experiments seeking to test CSD on the extant network of T-Mobile | 1 A series of experiments seeking to test CSD on the extant network of T-Mobile |
2 USA, to be performed while this network is still alive. The main objective is | 2 USA, to be performed while this network is still alive. The main objective is |
3 to test CSD calls between a single MS and analog (or PCMU-speaking) PSTN, rather | 3 to test CSD calls between a single MS and analog (or PCMU-speaking) PSTN, rather |
4 than mobile to mobile. | 4 than mobile to mobile. |
5 | |
6 All experiments detailed in the following sections were performed in 2024-11 | |
7 at the Mother's home base. | |
5 | 8 |
6 Test setup | 9 Test setup |
7 ========== | 10 ========== |
8 | 11 |
9 The test MS is an FCDEV3B with a legacy T-Mobile SIM. The AT command session | 12 The test MS is an FCDEV3B with a legacy T-Mobile SIM. The AT command session |
56 * NT mode was only tested with AT+CBST=7,0,1 default, i.e., 9600 baud and asking | 59 * NT mode was only tested with AT+CBST=7,0,1 default, i.e., 9600 baud and asking |
57 the IWF for V.32 modem. As revealed by L1 and CC traces, the network does | 60 the IWF for V.32 modem. As revealed by L1 and CC traces, the network does |
58 everything it should - but the MS returns NO CARRIER. However, further | 61 everything it should - but the MS returns NO CARRIER. However, further |
59 analysis of CC traces reveals that the DISCONNECT at CC level is initiated by | 62 analysis of CC traces reveals that the DISCONNECT at CC level is initiated by |
60 the MS and not by the network! My current working hypothesis is that the MS | 63 the MS and not by the network! My current working hypothesis is that the MS |
61 is unhappy about something it sees at RLP level. | 64 is unhappy about something it sees at RLP level. [See further updates in |
65 Experiment 6.] | |
62 | 66 |
63 Additional observations: | 67 Additional observations: |
64 | 68 |
65 * The MS issues a single SETUP message with BC indicating ITC of 3.1 kHz and the | 69 * The MS issues a single SETUP message with BC indicating ITC of 3.1 kHz and the |
66 selected CSD mode. The network responds with CALL PROCEEDING, ALERTING and | 70 selected CSD mode. The network responds with CALL PROCEEDING, ALERTING and |
169 and data calls dialed from the other TMO subscriber line. It appears that all | 173 and data calls dialed from the other TMO subscriber line. It appears that all |
170 MO CSD calls were treated by the network in "convert to modem emulation" mode | 174 MO CSD calls were treated by the network in "convert to modem emulation" mode |
171 despite the dialed number being another T-Mobile line; the MT leg always | 175 despite the dialed number being another T-Mobile line; the MT leg always |
172 received incoming voice calls. | 176 received incoming voice calls. |
173 | 177 |
174 It thus appears that a change has happened in TMO's network in this regard. | 178 Experiment 5 |
175 Many years ago, before I learned about T vs NT distinction and other critical | 179 ============ |
176 CSD parameters set with AT+CBST, when I would blindly dial ATDnumber, I was | 180 |
177 sometimes able to make a data call from a proper FreeCalypso test MS to a | 181 In this experiment I sought to capture TCH DL bits from the DSP in CSD modes in |
178 Pirelli phone running its official fw: the destination phone would ring and | 182 the same way how we do it in non-AMR speech modes. I added what seemed like |
179 display an incoming call screen, but it said "data call". For this feat to | 183 the necessary support in FC Tourmaline fw (Hg commit 304:58c7961bd0b0) and in |
180 have happened, there must have been a BC IE in the MT SETUP message when the | 184 fc-shell TCH handling code (freecalypso-tools Hg commit 1014:961efadd530a), and |
181 MO leg made a data call - hence the change between past and present bahaviour. | 185 made captures of CSD call sessions with +CBST set to (7,0,0), (6,0,0) and |
186 (2,0,0). However, as soon as I looked at the captured recordings, I was | |
187 immediately disappointed: while the beginning of each capture shows what look | |
188 like DL bits constituting idle frames (mostly all 1s, except where disturbed by | |
189 FACCH stealing), as soon as the IDS block kicks in, we read nothing but all 0s. | |
190 Is the IDS part of DSP ROM code overwriting the buffer with zeros after it groks | |
191 those bits? | |
192 | |
193 Also in this experiment session I tried setting AT+CBST=14,0,0 to see if TMO | |
194 supports TCH/F14.4. The network responded to SETUP with CALL PROCEEDING, but | |
195 whereas in other modes channel assignment happens almost immediately afterward, | |
196 here it stayed on SDCCH for several seconds, and then the network sent CC | |
197 DISCONNECT message with cause 34. This cause value means "No circuit/channel | |
198 available" - so it looks like TMO's unloved GSM network does not support | |
199 TCH/F14.4. | |
200 | |
201 Experiment 6 | |
202 ============ | |
203 | |
204 As I was writing up notes regarding what seemed like non-working state of NT | |
205 mode while all Transparent modes up to 9600 bps work great, I decided to test | |
206 with an older version of FC firmware, namely Magnetite l1reconst. In the | |
207 earlier years of FreeCalypso, I would frequently make CSD calls just for fun, | |
208 calling NIST ACTS, and it would always work - and being ignorant of T vs NT | |
209 and other mode settings, I never set AT+CBST and just dialed ATDnumber. Since | |
210 we now know that TI's firmware default is AT+CBST=7,0,1 and has always been | |
211 this way, we know that I was unknowingly exercising NT mode in those happy | |
212 years - hence I decided to try an older fw version from those years just to see | |
213 if it would have working NT mode. Tested - it worked! | |
214 | |
215 But then things got more interesting. I tested with Magnetite hybrid instead | |
216 of l1reconst - using the new source-enabled version of G23M PS. Result: it | |
217 seemed a little flaky, but it worked. Then I went back to current Tourmaline | |
218 fw, the same with which I started in Experiment 1. Did a call with | |
219 AT+CBST=7,0,0 serving as a control - it worked. Tried AT+CBST=7,0,1 - got a | |
220 NO CARRIER response; subsequent log analysis shows that the MS initiated CC | |
221 DISCONNECT just like in Experiment 1. Then I made another attempt, still with | |
222 AT+CBST=7,0,1 - and this time it worked beautifully: I got CONNECT followed by | |
223 the full 40 s of ACTS output. | |
224 | |
225 Thus we now know that NT mode working or not is not a question of firmware | |
226 version, but some kind of law of chance: time of day, space weather, phase of | |
227 the moon... | |
228 | |
229 NT mode: need for further debugging | |
230 =================================== | |
231 | |
232 The flaky nature of NT mode calls for further debugging: since we see | |
233 MS-initiated DISCONNECT on those tries when it fails, we really need to know | |
234 exactly what is making the MS unhappy. But this debugging is made difficult by | |
235 the misfeature of TI's DSP: in Experiment 5 I tried capturing TCH DL bits, but | |
236 all we get is zero fill once the IDS block is active. As next steps, we will | |
237 need to study the code that interfaces with this IDS block, and see what we can | |
238 observe at that interface level. | |
239 | |
240 T vs NT mode: utility vs complexity | |
241 =================================== | |
242 | |
243 Consider the IWF provided by the network, speaking CSD frame formats toward GSM | |
244 RAN and emulating analog modem signals toward 64 kbit/s PSTN, and consider the | |
245 work it has to do in T vs NT modes. It should be evident that NT mode is much | |
246 more complex: all of the work implementing V-series modulations is still needed | |
247 for both T and NT, but whereas T mode provides a direct path between the | |
248 emulated-modem "bit pump" and CSD V.110 frame bits, in NT mode the IWF has to | |
249 implement RLP on the GSM side, V.42 on the analog modem side, and make a high- | |
250 level data connection between these two engines of reliable transmission based | |
251 on acks, retries etc. Hence the "bug surface", the number of things that can | |
252 go wrong, is much greater for IWF in NT mode. | |
253 | |
254 OTOH, utility considerations traditionally called for NT mode. There are | |
255 *some* applications for which non-buffering, fixed-delay Transparent mode is | |
256 the right choice: precision time distribution as in NIST ACTS, train engine | |
257 communication in GSM-R etc - but such applications are more on the boutique | |
258 side. Instead consider the more typical application of a business user dialing | |
259 into his/her mainframe or UNIX minicomputer etc account while on the go: here | |
260 you have a user with a text terminal, and a server/service somewhere that prints | |
261 text for the user to read and expects text commands. In this case the user | |
262 would certainly appreciate if his/her session is *not* disturbed by dropouts or | |
263 garbage insertions from radio errors, from handover events or from line noise | |
264 on the PSTN leg - such users would certainly benefit from NT mode. Outside of | |
265 railways or other special environments, considering ordinary public GSM networks | |
266 intended for consumers and business users, in the days when CSD was a feature | |
267 of real user significance, NT mode was likely the more desired one for reasons | |
268 just explained. Yet it is the one which is much more onerous to implement... | |
269 | |
270 Lack of data-call indication from one T-Mobile MS to another | |
271 ============================================================ | |
272 | |
273 Looking at the specs for GSM CSD, the intent of the original Creators seems | |
274 clear: they intended CSD to run between an MS and services on the fixed network, | |
275 perhaps going through an IWF. In contrast, the case of mobile-to-mobile CSD | |
276 calls was NOT the canonical configuration - it was probably considered, but only | |
277 as a rather contrived and unlikely use case. But if someone does make a CSD | |
278 call addressed to another mobile, how should it work? | |
279 | |
280 In order for a CSD call to be directly through-connected from Alice to Bob, | |
281 Osmocom-style, without complex conversions and translations in the middle, two | |
282 conditions would have to be met: | |
283 | |
284 1) The connection element setting would have to be Transparent; | |
285 2) ISDN/UDI mode would need to be selected, rather than 3.1 kHz modem emulation. | |
286 | |
287 In this case the MO call will be turned into V.110 by the TRAU, no further IWF | |
288 would be applied at the MSC, the ISDN call would connect from Alice to Bob, the | |
289 destination MSC serving Bob would see that it's a data call, and it would | |
290 indicate so to Bob's MS. So far, so good. But the moment you add NT mode or | |
291 analog modem emulation, the above pass-through model breaks down: | |
292 | |
293 1) If the bearer cap IE on the MO call indicates ITC of 3.1 kHz audio instead | |
294 of UDI, Alice's MSC is supposed to pass the call through an IWF that does | |
295 modem emulation. Once that modem emulation is applied, the call going out | |
296 on ISDN is in 3.1 kHz audio mode, not digital data! | |
297 | |
298 2) NT mode does not seem to have ever been intended to carry from mobile user | |
299 Alice to mobile user Bob - instead it appears to have been intended to run | |
300 between a single MS and a network IWF only. The IWF then converts to V.42 | |
301 in the case of 3.1 kHz modem emulation, or to V.1xx/X.75/etc protocols in | |
302 the case of ISDN UDI, with or without V.42-like reliability through acks and | |
303 retransmissions. | |
304 | |
305 However, the above considerations stem from the architectural model _assumed_ | |
306 in ETSI GSM specs - whereas the question of what real-world GSM networks have | |
307 actually implemented needs to be asked separately. In the case of T-Mobile USA, | |
308 the behavior of the network upon own-subscriber Alice making a CSD call to own- | |
309 subscriber Bob appears to have changed over the years: | |
310 | |
311 * In my earlier years of FreeCalypso work, when I made CSD calls from FC GSM MS | |
312 just for fun while being ignorant of T vs NT modes and other +CBST settings, | |
313 I would call NIST ACTS to get a truly successful session. But I also | |
314 experimented a little with mobile-to-mobile CSD. Unfortunately, I never put | |
315 together a proper setup with two FC GSM MS boards powered up and connected to | |
316 my laptop at the same time, fitted with two active T-Mobile SIMs, one calling | |
317 the other - but I did dial CSD a few times from a single "proper" GSM MS | |
318 (probably FCDEV3B, although I don't remember exactly) to my main personal-use | |
319 T-Mobile line whose SIM sat in a Pirelli DP-L10 running its official fw. | |
320 I don't remember if I got this degree of success reliably every time or if it | |
321 was intermittent - but I did get an incoming call indication on the Pirelli | |
322 that said "incoming data" or something to that effect. I don't remember | |
323 exactly what happened afterward, but my vague recollection (subject to the | |
324 caveats about wetware memory after many years of attention being shifted in | |
325 very different directions) is that the phone would ring with this "incoming | |
326 data" indication on the screen, but once I pressed the Answer button, the | |
327 call attempt would drop - and curiously enough, turn into a "missed call" | |
328 indication. I don't have good memory of what the call-originating FC GSM MS | |
329 would show: I seem to recall it going directly to NO CARRIER upon me pressing | |
330 Answer on the Pirelli, but I also seem to recall at least once getting a | |
331 CONNECT response, presumably followed by NO CARRIER shortly afterward. | |
332 | |
333 * In terms of memory reliability, the only part I do remember for certain is | |
334 that the call-receiving Pirelli phone (running its official fw) _did_ display | |
335 a "ringing" screen that said something along the lines of "incoming data" - | |
336 IOW, it very clearly indicated the presence of an incoming call that was data | |
337 rather than voice, even though of course this phone has no official Terminal | |
338 Adaptor Function and no ability to meaningfully accept such calls. This | |
339 indication implies that the MT SETUP message from the network must have | |
340 included a bearer cap IE that indicated non-speech - although unfortunately | |
341 I have no logs (back then I wasn't looking at CC or any other air interface | |
342 messages), thus we don't know if it was a pass-through of BC from the MO leg | |
343 or altered in some way. The remaining memories of everything else that | |
344 happened after this logically-deduced MT SETUP should be treated as | |
345 unreliable. | |
346 | |
347 * When I tried replicating in the present time (2024-11) the just-described | |
348 result from many years ago, I had no success: see description of Experiment 4 | |
349 above. Now when I dial a CSD call from one of my legacy T-Mobile SIMs to | |
350 another, the receiving MS gets an MT SETUP message that contains no BC IE at | |
351 all, same as with calls coming from outside PSTN, the call rings as voice, | |
352 and gets assigned TCH/AHS like other speech calls. And because the modem- | |
353 emulating CSD IWF in the MO direction initially emits silence while waiting | |
354 for the answering modem, silence is what the receiving phone hears in this | |
355 errant setup. |