Restoring your Nest Thermostat with NoLongerEvil firmware

Restoring your Nest Thermostat with NoLongerEvil firmware

I had a Nest that stopped talking to Google. I flashed NoLongerEvil and got local control back. This is the process I used, along with the checks and backups that mattered.

Getting Started with Nest Thermostat Firmware

Understanding the Need for Replacement Firmware

Google disabled cloud access for older Nest models. If your Nest can no longer reach Google servers, you lose remote features and the device may stop behaving as expected. Replacement firmware can redirect the thermostat to a different server. NoLongerEvil is one project that aims to restore local control for Gen 1 and Gen 2 Nest devices.

NoLongerEvil GitHub | NoLongerEvil dashboard

Overview of NoLongerEvil Firmware

NoLongerEvil replaces the network layer so the thermostat thinks it is still talking to Nest. The project provides build and installer scripts and a hosted dashboard. The README lists the supported models and current limits. Some binaries in the repo are closed, so I would read the issue tracker before treating it as fully open. Expect temperature control, mode switching, and local status pages. It does not bring back Google cloud features.

Preparing Your Nest Thermostat for Flashing

Make these checks before you touch the device.

  • Confirm the model: Gen 1 or Gen 2. Those are the models the project targets.
  • Power: turn off mains power to the thermostat before you open the backplate. Use a multimeter if you are not sure.
  • Hardware: you need basic tools, a USB-to-serial adapter such as an FTDI, and jumper cables. The README shows the pinout for the Nest PCB. Take photos of the wiring before you disconnect anything.
  • Host: use a Linux laptop or a small Linux VM. The build scripts assume a Unix shell and common tools such as git, curl, and make.

Backing Up Your Current Configuration

Do this first. You may want to go back to the stock firmware.

  • Photograph the current screen and menu settings.
  • Dump the flash if you can. The build scripts include a read command for the flash chip. Save that binary somewhere safe.
  • Keep the original serial logs. They help when troubleshooting.
  • If you cannot dump the flash, at least keep copies of any configuration screenshots and the original device label.

Connecting to Home Assistant

If you run Home Assistant, plan the integration before flashing. NoLongerEvil aims to offer a server API that Home Assistant can use. In practice, integration will usually be through a REST or MQTT bridge. I installed the firmware, pointed it at a local server on the homelan, then added a simple MQTT sensor in Home Assistant to reflect temperature and HVAC state. If there is no ready-made integration, expect to write a small template or use the HTTP sensor.

Flashing the Firmware on Your Nest Thermostat

Step-by-Step Flashing Process

Read the project README twice before you start.

  1. Clone the repo and fetch releases. Example:
git clone https://github.com/codykociemba/NoLongerEvil-Thermostat.git
cd NoLongerEvil-Thermostat
  1. Install build dependencies on your Linux host. Commands vary by distro. The README lists the packages I used on Ubuntu: build-essential, python3, git, and avr tools.
  2. Put the thermostat into serial programming mode. That means opening the backplate and wiring the FTDI adapter to the correct pins. Label the wires.
  3. Verify the serial connection. Use screen or minicom. Typical baud is 115200. If you get gibberish, swap RX and TX.
  4. Create a backup of the existing flash with the provided read script. Save that file outside the project folder.
  5. Build the image with the provided script or download a release binary. Some parts of the installer are precompiled.
  6. Flash the image using the installer script. Run it from a shell and watch the logs. The script writes the firmware and sets the server URL.
  7. Reassemble the thermostat and apply mains power.

I used those steps and a cheap FTDI adapter. The whole process took me under an hour, not counting backups.

Verifying Successful Installation

Check it after flashing:

  • Boot trace: connect serial and look for a boot banner that references NoLongerEvil.
  • Dashboard: point the thermostat at the dashboard URL you set during install. The device should register.
  • Local control: change temperature on the device and confirm the change in the dashboard.
  • Home Assistant: confirm Home Assistant sees the state if you set up MQTT or HTTP integration.

If the device fails to boot, restore your flash backup.

Troubleshooting Common Issues

These are the fixes I used.

  • No serial output: check the ground connection and swap TX and RX. Use a fresh USB cable.
  • Installer fails with permission errors: run the script as your normal user and use sudo only on the command that needs it. Do not run the whole build as root.
  • Device loops at boot: restore the original flash and run the read step again to check the backup is intact.
  • Dashboard shows the wrong timezone: change the timezone on the server config and restart the device.

Log everything. Logs are the quickest route to a fix.

Adjusting Privacy Settings

This is one reason to use replacement firmware. NoLongerEvil gives local control and avoids Google endpoints. After flashing, set privacy in two places.

  • Thermostat: disable any network features you do not need. Turn off remote logging if it is offered.
  • Server: run the NoLongerEvil server on your LAN if you want full control. If you run a public-facing instance, secure it with HTTPS and basic auth.

I run the server on a local VM behind a firewall. That keeps the device on an internal IP and the traffic local.

Integrating with Smart Home Automation

For smart home automation I used Home Assistant with a small MQTT bridge. Steps I used:

  1. Enable MQTT on the NoLongerEvil server or use a local adapter script.
  2. Create sensors in Home Assistant for temperature, humidity, and hvac_mode. Use explicit topics and set payload types.
  3. Use automations sparingly. For example, trigger heating only when the house is occupied and the external temperature is below a threshold.

Home Assistant integration may improve as the community adds an official integration. For now, an MQTT or HTTP bridge gives reliable control.

Back up before you touch the device, follow the repo instructions, and verify with serial logs. NoLongerEvil can restore local control and cut Google out of the loop.

Tags:

Related posts

Metadata schema choices for content libraries

Structured metadata only works when it matches how people actually retrieve content. I have seen neat schemas fail as soon as the library meets real records, and tarot makes the problem obvious. If...

Federation trade-offs in self-hosted social feeds

Federation looks tidy until you let it touch the edges, and then the odd cases arrive fast. I prefer self-hosted social feeds that stay explicit about what is local, what is remote, and what should...

FireAvert Z-Wave stove shutoffs for offline safety

FireAvert’s setup does the part that matters without asking Home Assistant to babysit it, which is exactly how I want stove protection to behave. The Home Assistant Z-Wave stove shutoffs badge is...