unfr0zen Download

Install

unfr0zen patches the thermostat over USB from your computer: Nest's own software stays, and local control is added to it. About ten minutes and no tools on a 2nd or 3rd generation; a 1st generation has to be opened up.

Your heating doesn't run while the display is off its base. Pick a time when you can do without it for half an hour.

Before you start

Not sure? Plug the display into the computer with the app open: the Patch page shows which generation it found. The Nest Thermostat E is recognised and refused.

  • A USB cable that carries data. Many cables only charge; they're the most common reason a thermostat isn't found. Plug it straight into the computer, not through a hub.
  • Some charge in the battery. If the thermostat has been sitting unpowered, leave it on its base or on USB for a while first: it restarts several times during a run.
  • A computer running Windows 10 or later, macOS 13 or later, or Linux.

Get the app

Do this once, on the computer you'll plug the thermostat into.

1Download it

  1. Open the download page. It picks your computer's system for you; if it's wrong, click macOS, Windows or Linux.
  2. Click the first button:
    • macOS (Universal) works on every Mac.
    • Windows (x86_64) is right for almost every PC. Choose Windows (arm64) only if the PC has a Snapdragon processor.
  3. The file lands in your Downloads folder.

2Open it the first time

On a Mac:

  1. Open Downloads in Finder and double-click the .zip file. unfr0zen appears next to it. You can drag it into Applications.
  2. Double-click unfr0zen. macOS says it can't check the app for malicious software, because the app isn't registered with Apple. Click Done.
  3. Open the Apple menu → System Settings → Privacy & Security, scroll down to Security, and click Open Anyway next to the message about unfr0zen. Enter your Mac's password if it asks.
  4. Double-click unfr0zen again and click Open Anyway. From now on it opens like any other app.

On Windows:

  1. Open Downloads, right-click the .zip file and choose Extract All…, then Extract.
  2. In the folder that opens, double-click unfr0zen.
  3. If a blue box says Windows protected your PC, click More info, then Run anyway. The app isn't signed by a company Windows knows, so it warns once.
  4. For a 1st or 2nd generation thermostat, Windows asks Do you want to allow this app to make changes to your device? the first time: click Yes. This installs the driver the app needs to talk to the thermostat.

On Linux: unpack the download, run ./unfr0zen, and add the USB rule shown on the download page once, so the app can reach the thermostat.

2nd & 3rd generation

Both use the same steps, and the app walks you through them. You don't need any tools. Allow about half an hour.

1Take the display off and plug it in

back of the display micro-USB to the computer
Off its base, the display's USB port is on its back.
The app's Connect step: three numbered instructions, and a ring saying Plug in, with a data cable above Looking for your thermostat.
Before the thermostat is plugged in, the app is looking for it.
  1. Open unfr0zen. It starts on the Patch page, at Connect.
  2. Hold the thermostat's display by its ring and pull it straight towards you, off the wall. The heating stays off until you put it back.
  3. Turn it over to find the small USB port on the back.
  4. Plug the small end of the cable into it, and the other end into the computer.

2Check the app has found it

The Connect step with the thermostat found: a ring reading 3rd Gen Learning Thermostat, a green Found your thermostat label, and Continue at the bottom right.
Found: the ring names the generation. Click Continue.
  1. Within a few seconds the ring shows the generation and a green Found your thermostat.
  2. Click Continue, at the bottom right.

Still Looking for your thermostat… after half a minute? Try another cable: many cables only charge, and can't carry data. Plug it straight into the computer, not into a hub or a screen.

3Choose what to add

The Integrations step: MQTT on with its broker address, and Matter on with its pairing code.
Integrations: how your smart home talks to the thermostat.
The Features step: Nest and Google servers blocked with a time server, and Doom on.
Features: extras for the thermostat itself.
  1. On Integrations, switch on the ones your smart home uses and fill in what each asks for. Integrations explains each one. Not sure? Leave them all off: you can run the patch again later.
  2. Click Continue.
  3. On Features, do the same, then click Continue.

4Start, with a backup

The Review step, Ready to patch: the chosen options with an Edit link each, Back up, then patch selected as Recommended, and the Back up and patch button at the bottom right.
Leave Back up, then patch selected and click Back up and patch.
  1. Review lists what you chose. Click Edit next to anything you want to change.
  2. Leave Back up, then patch selected. The backup is a copy of everything on the thermostat, so it can always be put back exactly as it was.
  3. Click Back up and patch, at the bottom right.

5Press and hold the display

A window over the app titled Enter USB download mode: a ring counting down from 2 minutes, the instruction to hold the front panel button for 10 seconds, and Cancel.
The app asks, and counts down 2 minutes.
hold 10 s keep the cableplugged in
The whole display is the button: press it in and hold.
  1. A window titled Enter USB download mode appears.
  2. With the cable still plugged in, press the middle of the display in, like a button, and keep it pressed for about 10 seconds, until the screen goes dark.
  3. Let go. The window closes by itself once the app has the thermostat.

You have 2 minutes. If the time runs out, the run stops before changing anything: click Back to review, then Back up and patch again.

6Wait

Patching your thermostat: a ring at 41 percent labelled Backing up, and a checklist from Waiting for download mode to Restarting.
The ring shows how far the current step is; the list shows the steps.
  1. Don't unplug the cable or touch the display. The backup takes the longest; patching takes a few minutes more.
  2. The thermostat's screen goes dark and lights up again a few times. That's normal.
  3. If the app needs you again, it tells you what to do.

7Put it back

Your thermostat is ready: the backup's file name with an Open Backups link, and What's next cards for putting it back on its base and the chosen integrations.
Done. What's next lists the steps for the integrations you chose.
  1. When the app shows Your thermostat is ready, unplug the cable.
  2. Push the display back onto its base on the wall until it clicks. It starts as usual, with your schedule.
  3. Your backup is listed on the Backups page. Keep it: it's how you undo the patch.

1st generation

Opening the display is at your own risk; take your time with the battery and the shield. Zigbee, Matter over Thread and the USB shell aren't available on the 1st generation.

The 1st generation won't go into USB download mode from its button. Instead, two points on its main board are bridged while the USB cable goes in, which makes its boot ROM wait for the computer.

1Open the display

The back of a 1st generation display: Phillips screws in the grey plastic, the mini-USB port on the left and the base connector at the bottom.
The back of the display. Photo: SparkFun, CC BY-SA 4.0.
A 1st generation display taken apart: the outer ring, the front with its ribbon cable, and the main board with the battery on top.
Opened: the ring, the front, and the board with its battery. Photo: SparkFun, CC BY-SA 4.0.
  1. Take the display off its base.
  2. Undo the Phillips screws in the grey back cover and lift the board, with its battery, out of the ring. SparkFun's Nest teardown shows the parts in more detail.
  3. The front connects to the board by a ribbon cable. Leave it in place if you can. If it comes out, lift the connector's latch first, and close the latch on it again when you reassemble.

2Unplug the battery and lift the shield

The board with its battery on top; the battery's red, yellow and black wires run to a small connector at the top left, next to the mini-USB port.
The battery's red, yellow and black wires end in a connector at the top left. Photo: SparkFun, CC BY-SA 4.0.
Close-up of the corner of the metal shield under the battery, circled in red, next to the front button.
Start lifting the shield at this corner. Photo: guyman70718.
  1. Unplug the battery: get a fingernail or a plastic tool under its wires at the connector and lift straight up. Don't use anything metal here, which could short the battery.
  2. Pry the metal shield up, starting at the corner shown, to uncover the components under it.
  3. Plug the battery back in. The thermostat won't start without it, even on USB. Its screen stays off.

3Find the two points

The main board with its shield removed. A red circle near the middle is enlarged above it: a yellow dot marks one end of a small resistor, and a black dot a point just above it.
Yellow: the end of the resistor to bridge. Black: ground. Photo: guyman70718.

The red circle on the board is enlarged at the top left. You'll touch the yellow and black points with the two tips of a pair of metal tweezers, so find them before the next step.

4Start the patch

  1. On the Patch page, go through Integrations and Features as for any generation.
  2. On Review, open Developer options and set Device to diamond. The 1st and 2nd generations look the same to the computer in download mode, and this tells the app which one to load.
  3. Leave Back up, then patch selected and click Back up and patch. The app waits for the thermostat in USB download mode.
The Review step with Developer options open and Device set to diamond.
On Review: Developer options → Device → diamond.

5Bridge the points and plug in

  1. With the battery connected and the USB cable not yet plugged into the thermostat, hold the tweezers across the yellow and black points.
  2. Keep them there and plug the mini-USB cable into the board.
  3. Once the app moves on from waiting for USB download mode, take the tweezers away.
  4. Leave everything alone until the app shows Your thermostat is ready.
  5. Unplug the cable, press the shield back on, reassemble the display and click it onto its base.

With the unfr0zen command-line tool, the same run is unfr0zen --device diamond with your options; bridge and plug in when it waits for the thermostat.

After patching

  • For MQTT or Matter, join the thermostat to Wi-Fi from its own menu (Settings → Network) if it isn't already. The network doesn't need internet access.
  • Set up Home Assistant, a Matter controller or Zigbee as described under Integrations.
  • The patch replaces the Nest cloud connection: the Nest and Google Home apps no longer control the thermostat.
  • To change options, run the patch again. To undo it, restore your backup from the app's Backups page (Backup & restore).

Troubleshooting

The app doesn't find the thermostat

  • Use a cable that carries data. Many cables only charge, and they're the most common reason a thermostat isn't found.
  • Plug into the USB port on the back of the display itself, not the power port of a Nest stand or a Heat Link.
  • Plug straight into the computer, not into a hub or a screen.
  • Linux: add the USB rule from the download page, then unplug the thermostat and plug it in again.
  • Windows, 1st or 2nd generation: the app needs its USB driver, installed after the administrator prompt on the first run. Check that prompt was accepted with Yes.

Windows, 3rd generation: the run stops with ACM interface for 18d1:4ee0 did not appear

An Android driver installed earlier has taken over the thermostat while it's in recovery. Leave it plugged in, in recovery, and:

  1. Open Device Manager and find Android Bootloader Interface.
  2. Right-click it: Update driver → Browse my computer → Let me pick → Universal Serial Bus devices → USB Composite Device.
  3. Run the patch again. Windows keeps the choice.

macOS won't open the app

Allow it once under System Settings → Privacy & Security, as in Get the app. In Terminal, this does the same:

xattr -dr com.apple.quarantine unfr0zen.app

2nd or 3rd generation: it doesn't enter USB download mode

Hold the display in a little longer, until the screen goes dark. If the battery is low, leave the display on its base or on USB for a while and try again.

1st generation: nothing happens when plugged in

Check the battery is plugged in, that both tweezer tips touch bare metal at the two points, and that Device is set to diamond. Unplug, bridge the points again, then plug in.

The run stopped part way

Unplug, let the thermostat start, and run the patch again. If it doesn't start, restore your backup from the Backups page, which puts it back as it was.

The thermostat shows error H71 or H74

Some 3rd generation Heat Link models stop on these errors once the Heat Link can no longer connect, which happens with Zigbee or Thread on. Patch again with Works With Nest boiler switched on under Features: the thermostat then heats through its own base. See Zigbee for what changes.

Home Assistant shows the thermostat as unavailable

It shows as available only while the thermostat's software is talking to unfr0zen on the thermostat, and unfr0zen is connected to your MQTT broker. Check that:

  • the thermostat is on Wi-Fi (Settings → Network on the thermostat);
  • the broker address you gave can be reached from that network;
  • the broker's user name and password are right. To change them, run the patch again.

Still stuck?

Open an issue or ask on the Discord, with:

  • how you ran it: the app or the command line (with its options), and your computer's system;
  • the run's full log, from the app's Logs page, which keeps every run's;
  • what the thermostat's screen showed.

Credits