Ch01 Tore-GSM Sample Files Analysis Results

6
Introduction All the processing has been done in MatLab (mixed with some manual calculations). I chose to use MatLab instead of trying to write new GnuRadio blocks because: - I have more experience with MatLab and the available time was short - The files are relatively short and to get the maximum amount of information out of them they cannot be processed the same way one would do with data from the air. - Several of the functions needed (channel impulse response calculation, viterbi detection, block (de)coding) where already available in GSMsim, which runs in MatLab. I have submitted all the MatLab files that I have used. It is very easy to single step through a MatLab function to learn how it works. I believe that the files can be used equally well with Octave, but the functions from the signal processing tool box might have to be replaced if you do not have it installed. Numbers in square brackets are references to GSM standards. Example: [04.03: 10.3.4] = 3GPP TS 04.03 sub-clause 10.3.4. File names in italics are MatLab files. Example: (calc_freq_offset.m). Initial processing of the files The following had to be done before any data could be extracted from the files: 1. Low pass filter (load_filter_resample.m) 2. Resample to 4x GSM bit rate (load_filter_resample.m) 3. Find a frequency correction burst (find_fcch.m) 4. Calculate the frequency offset (calc_freq_offset.m) 5. Correct the frequency (xlat_freq.m) How to get control channel messages The main steps involved in extracting a layer 3 data messages is: 1. Calculate burst locations based on synchronization channel information 2. Find the channel impulse response and exact bit timing for the burst (mafi.m) 3. Demodulate using the viterbi algorithm (viterbi_detector.m) 4. De-map the data bits (DeMUX.m) [05.03: 4.1.5] 5. De-interleave 4 burst to get 1 block of data (deinterleave.m) [05.03: 4.1.4] 6. De-convolute the block code (channel_dec_sacch.m) [05.03: 4.1.3] 7. Check block parity (check_parity_sacch.m) [05.03: 4.1.2]

description

GSM analysis in MATLAB

Transcript of Ch01 Tore-GSM Sample Files Analysis Results

Page 1: Ch01 Tore-GSM Sample Files Analysis Results

Introduction All the processing has been done in MatLab (mixed with some manual calculations). I chose to use MatLab instead of trying to write new GnuRadio blocks because:

- I have more experience with MatLab and the available time was short - The files are relatively short and to get the maximum amount of information out of

them they cannot be processed the same way one would do with data from the air. - Several of the functions needed (channel impulse response calculation, viterbi

detection, block (de)coding) where already available in GSMsim, which runs in MatLab.

I have submitted all the MatLab files that I have used. It is very easy to single step through a MatLab function to learn how it works. I believe that the files can be used equally well with Octave, but the functions from the signal processing tool box might have to be replaced if you do not have it installed. Numbers in square brackets are references to GSM standards. Example: [04.03: 10.3.4] = 3GPP TS 04.03 sub-clause 10.3.4. File names in italics are MatLab files. Example: (calc_freq_offset.m).

Initial processing of the files The following had to be done before any data could be extracted from the files:

1. Low pass filter (load_filter_resample.m) 2. Resample to 4x GSM bit rate (load_filter_resample.m) 3. Find a frequency correction burst (find_fcch.m) 4. Calculate the frequency offset (calc_freq_offset.m) 5. Correct the frequency (xlat_freq.m)

How to get control channel messages The main steps involved in extracting a layer 3 data messages is:

1. Calculate burst locations based on synchronization channel information 2. Find the channel impulse response and exact bit timing for the burst (mafi.m) 3. Demodulate using the viterbi algorithm (viterbi_detector.m) 4. De-map the data bits (DeMUX.m) [05.03: 4.1.5] 5. De-interleave 4 burst to get 1 block of data (deinterleave.m) [05.03: 4.1.4] 6. De-convolute the block code (channel_dec_sacch.m) [05.03: 4.1.3] 7. Check block parity (check_parity_sacch.m) [05.03: 4.1.2]

Page 2: Ch01 Tore-GSM Sample Files Analysis Results

GSMSP_20070204_robert_dbsrx_953.6MHz_128.cfile

Physical channel 0

Frequency Correction Channel (FCCH) The file contains 3 frequency correction bursts. They start at sample 51841, 101841 and 151840 (sample numbers are after re-sampling). The MatLab script fcch.m shows their location and calculates the frequency error to be 8097 Hz, 8051 Hz and 8076 Hz. The error is probably the same for all of them, but the calculation method is not that accurate.

Synchronization Channel (SCH) The file contains 3 frequency synchronization bursts. The MatLab script sch.m calculates their exact location (based on approximate locations manually calculated from the frequency correction burst locations). The data in the sync bursts [44.018: 9.1.30a] indicate: Burst starting at 57018 is frame number 857107 Burst starting at 107018 is frame number 857117 Burst starting at 157017 is frame number 857127 Base Station Identity Code (BSIC) = 56 (PLMN colour code = 7, BS colour code = 0)

Broadcast Control Channel (BCCH) Frames 857108 – 857111 [45.002] contain a BCCH message: Message header:

L2 pseudo length = 18 octets L3 protocol discriminator = Radio Resource Management Message type = SYSTEM INFORMATION TYPE 3 [44.018: 9.1.35]

Cell identity = 0x3b2d Location area identifier:

Mobile Country Code = 272 = “Ireland” Mobile Network Code = 02 = “O2 / Digifone mmO2” Location Area Code = 0x3aa8

Control channel description [3GPP TS 44.018: 10.5.2.11]: MSCR = 1 = “MSC is Release ’99 onwards” ATT = 1 = “MSs in the cell shall apply IMSI attach and detach procedure” BS-AG-BLKS-RE = 2 = “2 blocks reserved for access grant” CCCH_CONF = 0 = “1 basic physical channel for CCCH, not combined with SDCCH” BS-PA-MFRMS = 3 = “5 multiframes periods for PAGING REQUEST“ CBQ3 = 0 = “/u mode not supported” T3212 timeout vaule = 60

Cell options (BCCH): Radio link timeout = 4 DTX = 1 = “The MS shall use uplink discontinuous transmission” PWRC = 1 DN-IND = 0 = “Dynamic AFRCN mapping not used”

Cell Selection Parameters [44.018: 10.5.2.4]: MS-TXPWR-MAX-CCH = 5

Page 3: Ch01 Tore-GSM Sample Files Analysis Results

CELL-RESELECT-HYSTERESIS = 3 RXLEV-ACCESS-MIN = 6 NECI = 0 ACS = 0

RACH Control Parameters [10.5.2.29]: RE = 1 = “Call reestablishment not allowed in the cell” CELL BARR ACCESS = 0 = “Cell is not barred” Tx-Integer = 14 = “32 slots used to spread transmission” Max retrans = 2 = “Maximum 4 retransmissions” Access Control Class = 0

The above message contents were manually interpreted from the layer 3 data extracted from the sample file by the MatLab script bcch.m. The location of BCCH bursts were manually calculated based on SCH information.

Paging Channel (PCH) Following the BCCH message there are 2 empty paging requests [04.06: 5.4.2.3]:

Protocol discriminator = 6 = Radio Resource Management [04.07: 11.2.3.1.1] Message type = 0x21 = PAGING REQUEST TYPE 1 [44.018: 10.4][44.018: 9.1.22]

Page mode = 0 = Normal [44.018: 10.5.2.26] Channel needed = 1 = SDCCH [44.018: 10.5.2.8] Mobile identity = 0 = This is a paging channel fill message [24.008: 10.5.1.4] Run MatLab script pch.m to display the message contents.

Physical channels 1-3 These channels are sending dummy bursts [05.02: 5.2.6] only. View them by running phych1.m, phych2.m or phych3.m.

Physical channels 4-6 These channels are sending mostly normal burst but there are also some dummy burst at the end. The data seems to be encoded the same way as the control channels. The file is long enough to extract 4 blocks of data (messages) from each channel, but they all seem to be sending only some fill message. Run MatLab scripts phych4.m phych5.m or phych6.m to have a look at the data blocks.

Physical channel 7 This channel is sending mostly dummy bursts, but there are 2 normal bursts in the file, 26 frames apart. There is not enough information to tell what data is being transferred. Run MatLab script phych7.m to have a look at the bursts.

Page 4: Ch01 Tore-GSM Sample Files Analysis Results

GSMSP_20070204_robert_dbsrx_941.0MHz_128.cfile

Physical channel 0

Frequency Correction Channel (FCCH) The file contains 3 frequency correction bursts. They start at sample 14939, 64937 and 114936 (sample numbers are after re-sampling). The MatLab script fcch.m shows their location and calculates the frequency error to be 7819 Hz, 7806 Hz and 7833 Hz. The error should probably the same for all of them, but the calculation method is not that accurate.

Synchronization Channel (SCH) The file contains 3 frequency synchronization bursts. The MatLab script sch.m calculates their exact location (based on approximate locations manually calculated from the frequency correction burst locations). The data in the sync bursts [44.018: 9.1.30a] indicate: Burst starting at 19946 is frame number 674996 Burst starting at 69944 is frame number 675006 Burst starting at 169943 is frame number 675016 Base Station Identity Code (BSIC) = 128 ( PLMN colour code = 4, BS colour code = 0)

Paging channel (PCH) There are 6 paging channel messages in the file: Message 1: Frames 674997 – 675000 Message 2: Frames 675001 – 675004 Message 3: Frames 675007 – 675010 Message 4: Frames 675012 – 675014 Message 5: Frames 675017 – 675020 Message 6: Frames 675021 - 675024 Message 1-2 and 5-6:

Protocol discriminator = 6 = Radio Resource Management [04.07: 11.2.3.1.1] Message type = 0x21 = PAGING REQUEST TYPE 1 [44.018: 10.4][44.018: 9.1.22]

Page mode = 0 = Normal [44.018: 10.5.2.26] Channel needed = 1 = SDCCH [44.018: 10.5.2.8] Mobile identity = 0 = This is a paging channel fill message [24.008: 10.5.1.4] Message 3:

Protocol discriminator = 6 = Radio Resource Management [04.07: 11.2.3.1.1] Message type = 0x21 = PAGING REQUEST TYPE 1 [44.018: 10.4][44.018: 9.1.22] Page mode = 0 = Normal [44.018: 10.5.2.26] First channel needed = 2 = TCH/F Second channel needed = 2 = TCH/F Mobile identity 1 = TMSI 0x2402810b [24.008: 10.5.1.4] Mobile identity 2 = TMSI 0x18000312 [24.008: 10.5.1.4]

Message 4: Protocol discriminator = 6 = Radio Resource Management [04.07: 11.2.3.1.1]

Page 5: Ch01 Tore-GSM Sample Files Analysis Results

Message type = 0x21 = PAGING REQUEST TYPE 1 [44.018: 10.4] Page mode = 0 = Normal [44.018: 10.5.2.26] First channel needed = 2 = TCH/F Second channel needed = 0

Mobile identity 1 = TMSI 2e020e94 Run MatLab script pch.m to see the contents of the messages.

Physical channel 1- 7 All these channels are sending dummy bursts only. View them by running for example phych1.m.

Page 6: Ch01 Tore-GSM Sample Files Analysis Results

GSMSP_20070204_robert_dbsrx_953.6MHz_64.cfile

Physical channel 0

Frequency Correction Channel (FCCH) information The file contains 2 frequency correction bursts. They start at sample 25695 and 75700 (sample numbers are after re-sampling). The MatLab script fcch.m shows their location and calculates the frequency error to be 8047 Hz and 8050 Hz. The error should probably the same for all of them, but the calculation method is not that accurate.

Synchronization Channel (SCH) information The data in the sync bursts [44.018: 9.1.30a] indicate: Burst starting at 30704 is frame number 834983 Burst starting at 80703 is frame number 834993 Base Station Identity Code (BSIC) = 56 (PLMN colour code = 7, BS colour code = 0)

Common Control Channel (CCCH) information The two first messages (frames numbered 834978 to 834981 and 843984 to 843987) are fill messages [04.06: 5.4.2.3]. The third message (frame numbers 843988 – 843991) is an empty PAGING REQUEST TYPE 1 message as previously described.

Physical channels 1-3 and 7 These channels are sending dummy bursts [05.02: 5.2.6] only. View them by running for example phych1.m.

Physical channels 4-6 These channels are sending mostly normal burst but there are also some dummy burst at the end. The data seems to be encoded the same way as the control channels. The file is long enough to extract 3 blocks of data (messages) from each channel, but they all seem to be sending only some fill message. Run MatLab scripts phych4.m phych5.m or phych6.m to have a look at the data blocks.