Tech Behind ThingsHow the ordinary machinery actually works

Home Tech

How A Garage Door Opener Changes Its Code Every Time

A modern garage remote sends a different number on every press, and the opener accepts it because both devices are running the same sequence from a shared starting point.

Close-up of a robotic vacuum cleaner operating on a hardwood floor, showcasing modern cleaning technology.
Photograph by Jens Mahnke via Pexels
Editorial note. Independent reporting and analysis. Nothing here is sponsored or paid for. How we work.

An old garage remote sent one fixed code that anyone with a receiver could capture and replay. Modern openers send a different code on every press, and the way the receiver still recognizes them explains most of the odd behavior owners run into.

A fixed code is a key anyone can copy

Early systems set a code with a row of small switches inside both the remote and the opener. The remote broadcast that number and the opener compared it against its own.

The number was short, the switch settings were limited, and the transmission was unencrypted radio. A device that recorded one press could open the door forever afterward.

Trying every combination was also practical, because the total number of settings was small enough to sweep through in minutes with a purpose-built transmitter.

Rolling codes replace the number with a sequence

In a rolling-code system the remote and the opener share a secret value and a counter. Each press increments the counter, and the remote transmits an encrypted result derived from both.

The opener runs the same calculation with its own counter. If the incoming value matches what it expects, the door opens and both sides advance.

A recorded transmission is useless afterward, because that counter value has already been consumed and will not be accepted a second time.

The receiver has to tolerate presses it never heard

Buttons get pressed out of range, in a pocket, or by a child, and each press advances the remote's counter while the opener's stands still. The two drift apart.

Openers therefore accept any code within a forward window of several hundred counts, resynchronizing to whatever they receive. Outside that window the code is rejected as stale or implausible.

This is why a spare remote left in a drawer may eventually need reprogramming, while the one clipped to a visor and used daily never does.

Why pairing has to happen at the opener

The shared secret cannot travel over the air during normal use, so it is transferred once during a learn mode entered by pressing a button on the motor unit itself.

Physical access to that button is the security boundary. Anyone standing on a ladder next to the opener can already open the door by hand, so the requirement costs nothing.

Erasing all remotes usually means holding the same button until an indicator clears, which is the correct step after buying a house or losing a transmitter.

Interference looks exactly like a dead battery

Openers listen on shared unlicensed radio bands, and nearby transmitters, LED bulbs with noisy drivers and some vehicle electronics can raise the noise floor enough to swallow a weak signal.

The symptom is a remote that works from ten feet and not from the street, which owners reasonably attribute to the battery. Changing the bulb in the opener fixes a surprising share of these cases.

Antenna position matters for the same reason. The wire hanging from the motor unit is the receiving antenna, and coiling it up around the housing shortens the usable range.

Questions readers ask

Why does my dehumidifier collect less water in winter?

Cold air holds less water to begin with, and compressor types lose efficiency or frost up as the coil temperature drops.

Where should I place it?

Where air can circulate around it and near the source of moisture. Pressed against a wall or into a corner restricts its own airflow.

Home Techapplianceshumidityheathome
Mikkel Aas
Editor, Tech Behind Things

Mikkel edits Tech Behind Things and has taken apart more devices than he has successfully reassembled.

Also by Mikkel Aas