Skip to main content
Before you begin:
  • Ensure you have a Nest Generation 1 or Generation 2 thermostat (check compatibility)
  • Do NOT use this on a thermostat critical for heating/cooling (experimental software)
  • Gen 1 requires device teardown - only proceed if comfortable with electronics disassembly

What You’ll Need

Compatible Device

Nest Generation 1 or 2 thermostatCheck compatibility →

Computer

Linux or macOS⚠️ Windows NOT supported (including WSL)

USB Cable

Mini USB (Gen 1) or Micro USB (Gen 2)Must be data-capable, not charge-only

For Gen 1 Only

Phillips screwdriverMetal tweezers/conductive tool

Step 1: Download Firmware Installer

Download the firmware installer for your operating system:

Step 2: Prepare the Installer

  1. Make the AppImage executable:
    chmod +x NoLongerEvil-*.AppImage
    
  2. Install dependencies:
    sudo apt-get update
    sudo apt-get install -y curl build-essential libusb-1.0-0-dev libudev-dev gcc pkg-config
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    sudo apt-get install -y nodejs
    sudo npm install ts-node typescript --save
    
  3. Run the AppImage:
    ./NoLongerEvil-*.AppImage
    
AppImage files are self-contained and don’t need extraction. You can also double-click the file in your file manager after making it executable.
If the pre-built installer doesn’t work for you, you can run it manually from source:
# Install dependencies
sudo apt-get update
sudo apt-get install -y curl build-essential libusb-1.0-0-dev libudev-dev gcc pkg-config

# Install Node.js 20 (required)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# Clone the repository
git clone -b open-source-prototype https://github.com/codykociemba/NoLongerEvil-Thermostat.git
cd NoLongerEvil-Thermostat

# Install typescript
sudo npm install ts-node typescript --save

# Run the installer
cd firmware/installer
npm install
export ELECTRON_DISABLE_SANDBOX=1
npm run electron:dev
This will run the installer directly from source using Electron. The installer GUI will open just like the pre-built version.

Step 3: Launch the Installer

  1. Open the NoLongerEvil installer app
    • Linux: Run ./NoLongerEvil-*.AppImage or double-click the AppImage file
    • macOS: Double-click NoLongerEvil.app
  2. The installer GUI will open - Follow the on-screen instructions in the installer
  3. The installer will guide you through the process, including:
    • Selecting your device generation (Gen 1 or Gen 2)
    • Entering DFU mode
    • Flashing the firmware
    • Setting up your device
USB Permissions: You may be prompted to grant USB permissions:
  • macOS: System Preferences → Security & Privacy → Allow USB access
  • Linux: May need to run with sudo or add udev rules if you get permission errors
The rest of this guide provides detailed manual instructions for each step. However, the installer app will walk you through everything - you can simply follow the GUI prompts instead of reading the steps below.

Step 4: Enter DFU Mode

The process differs between Generation 1 and Generation 2 devices. Choose the instructions for your device:

Gen 2: Simple Reboot Method

Follow these steps carefully:
  1. Boot device on backplate - IMPORTANT: Connect your Nest to the wall backplate and let it fully boot to the home screen. This ensures the battery is charged and the device is ready.
  2. Remove from wall - Once fully booted, remove the Nest from its back plate/wall mount
  3. Start the installer - Make sure the install.sh script is running and waiting for the device
  4. Connect via USB - Plug the Nest into your computer using a micro USB cable
  5. Reboot the device - Press and hold down on the display for 10-15 seconds until the device reboots
  6. DFU mode active - Once it reboots, the device will enter DFU mode and the installer script will recognize it and begin flashing
The firmware installer will automatically detect the device and flash the custom bootloader (x-load, u-boot) and kernel (uImage).

Step 5: Wait for Boot

After the firmware is flashed successfully, you should see the No Longer Evil logo on the device screen. Important:
  • Keep the device plugged in via USB
  • Wait for the device to complete its boot sequence (this may take 3-4 minutes)
  • Do not disconnect or power off the device during this time

Step 6: Register Account

Once the device has fully rebooted:
  1. Visit https://nolongerevil.com in your web browser
  2. Register an account (or sign in if you already have one)
  3. Navigate to your Dashboard
You will see a “No devices” screen that prompts you for an entry code.
To link your Nest device to your No Longer Evil account:
  1. On your Nest device, navigate to: Settings → Nest App → Get Entry Code
  2. The device will display a unique entry code
  3. Enter this code on the No Longer Evil dashboard
  4. Your device is now linked and ready to use!

Step 8: Reinstall on Wall

Once everything is working:
  1. Align the Nest with the backplate on the wall
  2. Push gently until it clicks into place
  3. The device will reconnect to HVAC power and charge

🎉 Success!

Your Nest Thermostat is now running No Longer Evil and connected to your account!

What Gets Flashed

The firmware installation process installs three components:
  1. x-load.bin - First-stage bootloader (X-Loader for OMAP)
  2. u-boot.bin - Second-stage bootloader (Das U-Boot) loaded at address 0x80100000
  3. uImage - Linux kernel image loaded at address 0x80A00000
After flashing, the device jumps to execution at 0x80100000 (u-boot).

Something Went Wrong?

See Entry Code Issues

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!

Get Help

Join our Discord community or open a GitHub issue for assistance