In short, HARQ mechanism for LTE NB(M2) downlink is similar to legacy LTE mechanism (except the repetitive transmission), but HARQ mechanism is a little bit different from legacy LTE as described below.
The difference comes from the channel structure. LTE-NB has no PHICH and no PUCCH, so neither direction can use the LTE feedback path. The downlink sends its ACK/NACK on NPUSCH, and the uplink gets no ACK/NACK at all. This page goes through the downlink, then the uplink, and then the number of HARQ processes a UE can run.
Followings are the topics to be covered in this page.
- HARQ Operation for Downlink
- HARQ Operation for Uplink
- How many HARQ processes can LTE-NB run ?
- Reference
HARQ Operation for Downlink
The downlink keeps the LTE idea of an ACK or a NACK for each transport block. What changes is the timing, because every step is repeated and each step must finish before the next one starts.
HARQ Process for Downlink is similar to legacy LTE except that each transmission would happen in repetition in LTE-NB. The rough HARQ sequence would be as follows.
i) UE <-- NW : NPDCCH (DCI for NPDSCH) in repetition
ii) UE <-- NW : NPDSCH in repetition
iii) UE --> NW : HARQ ACK/NACK on NPUSCH format 2
Note : Step i) and ii) happens not in the same subframe. (This is different from legacy LTE)
36.213 v19.4.0 fixes the gaps between the three steps. NPDSCH starts no earlier than subframe n+5, where n is the last subframe of the NPDCCH. The scheduling delay field in DCI format N1 can push it later. After NPDSCH ends in subframe n, the UE starts ACK/NACK after the end of subframe n+k0-1. The HARQ-ACK resource field in DCI format N1 selects both k0 and the subcarrier from 36.213 Table 16.4.2-1 or 16.4.2-2, with k0 between 13 and 21.
36.321 v19.3.0 clause 5.3.2 treats the repeated NPDSCH as one bundle. The UE sends one HARQ feedback for the whole bundle, after its last repetition. A retransmission is also a bundle, and the eNB schedules it with a new DCI format N1 in which the NDI is not toggled.
Three steps, three sets of subframes : NPDCCH, then NPDSCH from subframe n+5 at the earliest, then ACK/NACK on NPUSCH format 2.One ACK/NACK per bundle : all the repetitions of one NPDSCH get a single feedback.The DCI picks the feedback resource : the 4-bit HARQ-ACK resource field sets the subcarrier and k0.Retransmission is scheduled like a new transmission : a new DCI format N1 with the NDI not toggled.
HARQ Operation for Uplink
Without PHICH, the eNB has no channel for sending ACK or NACK in the downlink. The UE still needs to know whether to retransmit, keep its data or send new data. LTE-NB answers this with the uplink grant alone.
HARQ Process for Downlink of LTE-NB(M2) is similar to legacy LTE except that each transmission would happen in repetition. However, HARQ Process for Uplink in M2 is different from legacy LTE. The most critical difference is that eNB does not send any HARQ ACK/NACK for NPUSCH (It is understandable because there is no PHICH in LTE M2).
Then, you may ask how eNB can handle the case where PUSCH reception fail ? Following process would give you the answer. Basically this mechanism is almost same as in LTE BL/CE(M1).
The rough HARQ sequence would be as follows.
- case 1 : NW successfully decoded NPUSCH, it stops there and complete NPUSCH reception process.(No ACK transmission).
- case 2 : NW failed to decode NPUSCH. it sends NPDCCH (DCI for NPUSCH) for NPUSCH retransmission
i) UE <-- NW : NPDCCH (DCI for NPUSCH) with UL Grant in repetition
ii) UE --> NW : NPUSCH in repetition
iii) One of the following cases happens :
NOTE : If UE does not receive NPDCCH for NPUSCH retransmission, UE assumes that NPUSCH is properly received by NW. PHICH does not exists to send ACK/NACK for NPUSCH in LTE-NB.
If you turn this into a little bit detailed illustration, it can be as follows (try to follow through the step (A) through (K) and make your own story just like you explain to others)

The eNB never sends ACK/NACK. A DCI format N0 with the NDI not toggled asks for a retransmission, and a toggled NDI asks for new data, so the UE can discard its buffer. The boxes at steps (B) and (I) spell NPUSCH as NPUSH.
Step (0) : It is assumed that eNB transmitted UL Grant(DCI N0) and UE successfully decoded it.
Step (A) : UE transmit a NPUSCH
Step (B) : UE stores the NPUSCH into a buffer in case that it need to retransmit later
Step (C) : eNB detected NPUSCH and tries to decode it.
If the decoding is successful (no Error), eNB does not send any feedback(no HARQ feedback)
If the decoding is not successful (CRC Error), go to Step (D)
Step (D) : eNB sends another UL Grant(DCI N0) with NDI Not Toggled (This implies 'this DCI is for Grant to
retransmit NPUSCH')
Step (F) : UE retransmit (send again) NPUSCH data stored in the buffer
Step (G) : eNB detected NPUSCH and tries to decode it.
If the decoding is successful (no Error), eNB does not send any feedback(no HARQ feedback)
If the decoding is not successful (CRC Error), go back to Step (D) through the dashed arrow (K)
Step (H) : (If there is any other data the eNB need to get from UE) eNB sends another UL Grant(DCI N0) with
NDI Toggled (This implies 'this DCI is for Grant to transmit a new NPUSCH')
Step (I, J) : (After decoding a DCI with NDI Toggled), UE discard the NPUSCH stored in the buffer and send
a new NPUSCH.
Step (E) is the success case : the eNB decodes NPUSCH and sends nothing, as step (C) describes.Arrow (K) is the second failure : the eNB returns to step (D) and asks for another retransmission.NDI is the only feedback : not toggled means send again, and toggled means send new data.The buffer stays until the NDI toggles : the UE discards NPUSCH(1) only at step (I).
36.321 v19.3.0 clause 5.4.2 calls this asynchronous UL HARQ, and it applies to every NB-IoT UE. A retransmission does not happen at a fixed time after the first transmission. It happens when the eNB sends a new uplink grant, and HARQ feedback is not applicable. So each retransmission is adaptive. The DCI format N0 for it can change the resources, the repetition number and the 1-bit redundancy version.
Repetition works inside this scheme as a bundle, as in the downlink. The UE sends all repetitions of one NPUSCH without waiting for anything. The next uplink grant, for a retransmission or for new data, only arrives after the last repetition of the bundle.
How many HARQ processes can LTE-NB run ?
The sequences above show one transport block at a time, and that was the whole story in Release 13. A UE with one HARQ process cannot send new data while the eNB is still deciding about the old block. Later releases added a second process to fill that gap.
36.321 v19.3.0 says that NB-IoT has one or two DL HARQ processes, plus the broadcast HARQ process for system information. It also says that NB-IoT has one or two UL HARQ processes. When the UE runs a single process, the DCI carries no HARQ process ID. With two processes, DCI formats N0 and N1 in the UE-specific search space carry a 1-bit HARQ process number, as 36.212 v19.3.0 clause 6.4.3 defines.
The single-process case has one more restriction. In FDD with a single HARQ process, the eNB does not schedule DL and UL in parallel, as NOTE 4 of 36.321 clause 5.7 states. If a DL transmission has been scheduled, no UL transmission is scheduled until the HARQ RTT timer of that DL process has expired, and the same holds the other way round.
Two later features change the feedback itself. With multi-TB scheduling, one DCI schedules two transport blocks, and HARQ-ACK bundling can combine their feedback into one. In a non-terrestrial network, downlinkHARQ-FeedbackDisabledBitmap-NB or the DCI can disable HARQ feedback per HARQ process. The long round-trip delay makes waiting for feedback costly there.
Release 13 has one process each way : one DL process, one UL process, and a separate broadcast process.Two processes are now possible : each direction can have two, identified by a 1-bit HARQ process number in the DCI.A single process forbids parallel DL and UL in FDD : one direction waits for the HARQ RTT timer of the other.Feedback can be bundled or disabled : multi-TB scheduling can bundle HARQ-ACK, and NTN can switch feedback off per process.
Reference
[1] 3GPP TS 36.212 v19.3.0 - clause 6.4.3 for DCI formats N0 and N1
[2] 3GPP TS 36.213 v19.4.0 - clause 16.4.1 for NPDSCH timing, clause 16.4.2 for ACK/NACK, clause 16.5.2 for NPUSCH retransmission
[3] 3GPP TS 36.321 v19.3.0 - clause 5.3.2 and clause 5.4.2 for DL and UL HARQ, clause 5.7 for the HARQ RTT timers