Friday, February 16, 2018

RACH Procedure

RACH Procedure Flow

1. RRC Layer sends Access Req for RRC Connection Request/RRC Coonection Re-establishment Request to MAC and starts T300 timer
[020/008/012] OTA LOG 00:00:21.032 UL_CCCH / RRCConnectionRequestRadio Bearer ID: 0, Freq: 2050, SFN:0
[9504/0002] MSG 00:00:21.032 LTE MACCTRL Start Access Request for reason=0, RAID=2551
[9501/0002/0010] MSG 00:00:21.069 LTE RRC   T300 timer internally restarted with 400ms

2. MAC sends Start_RACH_Req to ML1
[9509/0001/0010] MSG 00:00:21.032 LTE ML1  ML1: LTE_CPHY_START_RACH_REQ rcvd

3. ML1 sends the first preamble and starts RA response timer
[0xB167] LOG 00:00:21.069 LTE Random Access Request (MSG1) ReportLength: 0032 
[9509/0002] MSG 00:00:21.073 LTE ML1 Processing LTE_CPHY_RA_TIMER_STARTED_IND

4. If MAC could decode RAR before ML1 RA timer expiry and send the same to ML1, ML1 will go ahead with MSG3 transmission
[9509/0002] MSG 00:00:21.073 LTE ML1 Processing LTE_CPHY_RA_TIMER_STARTED_IND
[0xB168] LOG 00:00:21.077 LTE Random Access Response (MSG2) ReportLength: 0012

5. If MAC could not give RA parameter request to ML1 before ML1 RA timer expiry, then ML1 sends RA timer expiry indication to MAC
6. Here MAC starts another RACH attempt (with another preamble sequence with increased preamble power); MAC repeats this procedure till it sends maximum number of preambles (MAX_RACH attempts)
7. If MAC reaches MAX_RACH attempts, i.e., maximum number of preambles reached, and still could not get RAR, then MAC sends Random Access Problem indication to RRC and continues RACHing
8. MAC will stop RACHing only when T300 expired in RRC and RRC sends Abort request