The Nokia Remote Control protocol uses 17 bits to transmit the IR commands, which immediately explains the name of this protocol.
The protocol was designed for Nokia consumer electronics. It was used during the last few years in which Nokia produced TV sets and VCRs. Also the sister brands like Finlux and Salora used this protocol. Later the protocol was mainly used in Nokia satellite receivers and set-top boxes, until Nokia stopped making them too.
The protocol uses bi-phase (or so-called NRZ - Non Return to Zero) modulation of a 38kHz IR carrier frequency.
All bits are of equal length of 1ms in this protocol, with half of the bit time filled with a burst of the 38kHz carrier and the other half being idle.
A logical one is represented by a burst in the first half of the bit time.
A logical zero is represented by a burst in the second half of the bit time.
The pulse/pause ratio of the 38kHz carrier frequency is 1/4 which helps to reduce power consumption.
The drawing below shows a typical pulse train of an NRC17 message. This example transmits command $5C to address $6 sub-code $1.
The first pulse is called the pre-pulse, and is made up of a 500µs burst followed by a 2.5ms pause, giving a total of 3 bit times.
Then the Start bit is transmitted, which is always a logic "1". This pulse can be used to calibrate the bit time on the receiver side, because the burst time is exactly half a bit time.
The next 8 bits represent the IR command, which is sent with LSB first. The command is followed by a 4 bit device address. Finally a 4 bit sub-code is transmitted, which can be seen as an extension to the address bits.
A message consists of a 3ms pre-pulse and 17 bits of 1ms each. This adds up to a total of 20ms per message.
Every time a key is pressed on the remote control a start message is transmitted containing a command of $FE and address/sub-code of $FF.
The actual message is sent 40ms later, and is repeated every 100ms for as long as the key on the remote control remains down.
When the key is released a stop message will complete the sequence.
The stop message also uses the command $FE and address/sub-code $FF.
Every sequence can be treated as one single sequence at the receiver's end because of the start and stop messages. Accidental key bounces are effectively eliminated by this procedure.
The receiver may decide to honour the repeated messages or not. E.g. cursor movements may repeat for as long as the key is pressed. Numerical inputs better don't allow auto repeat.
The NRC17 protocol provides in a way for the remote control to tell the receiver that the battery capacity is getting low.
The receiver may display a message on the TV screen informing the user that the remote control's batteries have to be replaced.
The pre-pulse normally is 3ms long. When the battery power is low this pre-pulse will become 4ms long. In practice only the pre-pulse of the start and stop messages are made longer this way.