Nest Thermostat Firmware Setup
🏆 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
Option 1: GUI Installer - Recommended
📖 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:
- grant-h / ajb142 - omap_loader, the USB bootloader tool used to flash OMAP devices
- exploiteers (GTVHacker) - Original research and development of the Nest DFU attack, which demonstrated the ability to flash custom firmware to Nest devices gen 1 & gen 2
- FULU and all bounty backers - For funding the Nest Learning Thermostat Gen 1/2 bounty and supporting the right-to-repair movement
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.