A passcode is generated every time the button on the transmitter is pressed, even if it is out of range of the receiver. If it is out of range, the receiver does not generate a code – therefore leaving the transmitter and the receiver unsynchronised.
To overcome this limitation, the receiver stores a list of the upcoming passwords pre-determined by the PRNG. In KeeLoq hopping code, the list is up to 1,000 future passwords. Once the transmitter comes back into range of the receiver and the button is pressed, the receiver can still identify the code as one of the upcoming passwords and allow access. The ‘missed’ codes that were generated by the transmitter while it was out of range are simply invalidated and the codes are synchronised once again.
KeeLoq also benefits from additional synchronisation security measures. If the transmitter button is pressed 16 or more times whilst out of range of the receiver, the receiver will not unlock the door or barrier on the first press of the button once back in range. Re-synchronisation will only occur when the receiver is sent two consecutive matching codes from the list of valid future codes. In a typical system, if the transmitter button is pressed a few thousand times while out of range, it will be permanently locked out of the receiver and must be manually re-synchronised.