Nest Thermostat Firmware Setup

Buy Me A Coffee Discord Release

FULU Bounties Winner

🏆 FULU Bounty Winner 🏆

Hack House and this project are the official winners of the FULU Bounty for Nest Learning Thermostat Gen 1/2

Hardware Alternative: If you're interested in the hardware side of things, check out https://sett.homes for a drop-in PCB replacement option.


Installation

📖 Follow the installation guide at docs.nolongerevil.com or download the latest release directly.

The installer handles everything — flashing the firmware and walking you through setup. During setup, choose your hosting mode:

  • Cloud-hosted — connects to the No Longer Evil platform; no server setup required
  • Self-hosted (Home Assistant) — auto-discovers your Home Assistant instance and connects to the No Longer Evil add-on
  • Self-hosted (NLE Server) — connects to a standalone No Longer Evil server at a custom IP and port

Self-hosting? You'll need to set up your server infrastructure separately before running the installer. See the Self-Hosted Guide.

Option 2: Build from Source

If you'd rather build and run the installer yourself instead of downloading a release:


Prerequisites

  • Node.js 18+ and npm
  • Docker — only needed if rebuilding firmware from source (Install Docker)
  • macOS/Linux — Windows is not supported for building or flashing

1. Clone the Repository

git clone https://github.com/codykociemba/NoLongerEvil-Thermostat.git
cd NoLongerEvil-Thermostat

2. Build the Firmware (optional)

The repo already includes pre-built firmware files in firmware/installer/resources/firmware/. This step is only needed if you want to customize the firmware (e.g. a different server URL).

cd firmware/builder
./docker-build.sh --generation both --enable-root-access --yes

This builds for both Nest Gen 1 and Gen 2 inside Docker. Afterwards, copy the output to the installer:

cp firmware/builder/firmware/* firmware/installer/resources/firmware/

3. Build or Run the Installer

cd firmware/installer
npm install

Run directly (no build needed):

npm run electron:dev

Or build a distributable:

npm run package:mac    # macOS
npm run package:linux  # Linux

Output is in firmware/installer/dist/. Open the built app and follow the on-screen steps.

Security Considerations

This tool provides low-level access to the device's boot process. Use responsibly:

  • Only use on devices you own
  • Improper firmware can brick your device (Don't sue me bro)

Credits & Acknowledgments

This project builds upon the excellent work of several security researchers and developers:

Without their groundbreaking research, open-source contributions, and advocacy for device ownership rights, this work would not be possible. Thank you!

Open Source Commitment

We are committed to transparency and the right-to-repair movement. The firmware images and backend API server code will be open sourced soon, allowing the community to audit, improve, and self-host their own infrastructure.

References

S
Description
No description provided
Readme 53 MiB
Languages
JavaScript 68%
Shell 22.9%
TypeScript 8%
CSS 0.6%
Dockerfile 0.4%
Other 0.1%