2 điểm bởi GN⁺ 2025-11-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Firmware tùy chỉnh cho thiết bị Nest Thermostat thế hệ 1·2, hoạt động bằng cách thay thế bootloader và kernel thông qua giao diện OMAP DFU
  • Sau khi flash, thiết bị sẽ ngừng kết nối với máy chủ Nest/Google và chuyển sang giao tiếp với nền tảng NoLongerEvil độc lập
  • Chuyển hướng lưu lượng mạng tới máy chủ API được reverse engineer để duy trì các chức năng hiện có đồng thời cho phép kiểm soát hoàn toàn dữ liệu và cài đặt của người dùng
  • Quá trình cài đặt gồm các bước vào chế độ DFU, flash bootloader (x-load, u-boot) và kernel (uImage), đăng ký tài khoản và liên kết thiết bị
  • Mục tiêu là thoát phụ thuộc vào đám mây và khôi phục quyền sở hữu thiết bị, đồng thời nêu rõ việc công khai mã nguồn mở và ủng hộ phong trào right-to-repair

Tổng quan

  • Dự án này cung cấp công cụ và image để cài đặt firmware tùy chỉnh cho Nest Thermostat
    • Sử dụng giao diện OMAP DFU (Device Firmware Update) để thay bootloader và kernel
    • Chỉ có thể nhận firmware mới khi ở chế độ DFU
  • Sau khi flash, thiết bị không giao tiếp với máy chủ Nest/Google mà kết nối với nền tảng NoLongerEvil
    • Nhờ đó người dùng có thể giành quyền kiểm soát hoàn toàn đối với hoạt động và dữ liệu của thermostat

Cách hoạt động

  • Firmware tùy chỉnh sửa đổi các thành phần bootloader và kernel để chuyển hướng lưu lượng mạng tới máy chủ được chỉ định
    • Máy chủ này là máy chủ sao chép đã reverse engineer từ Nest API, cho phép thiết bị hoạt động độc lập
  • Bằng cách chặn tầng giao tiếp, thiết bị được khiến cho nhận biết như thể vẫn đang kết nối với hạ tầng Nest chính thức
    • Cách làm này giúp duy trì khả năng tương thích với phần mềm hiện cóloại bỏ sự phụ thuộc vào đám mây của Google

Quy trình cài đặt

  • Sau khi clone repository, cài các gói cần thiết (như libusb) theo từng hệ điều hành
    • Linux: build-essential, libusb-1.0-0-dev, gcc, pkg-config
    • macOS: Xcode Command Line Tools và cài libusb bằng Homebrew
  • Chạy build.sh để tự động nhận diện hệ điều hành rồi build công cụ omap_loader
  • Trước khi chạy install.sh, cần chuyển thiết bị sang chế độ DFU
    • Kiểm tra pin/sạc (trên 50%), tháo khỏi tường, kết nối USB, khởi động lại (nhấn giữ 10~15 giây)
    • Khi vào chế độ DFU, hệ thống sẽ tự động flash x-load, u-boot, uImage
  • Sau khi khởi động xong, logo NoLongerEvil sẽ hiển thị, mất khoảng 3~4 phút
  • Đăng ký tài khoản trên nolongerevil.com rồi liên kết thiết bị
    • Trên thiết bị Nest, vào Settings → Nest App → Get Entry Code để xem mã
    • Nhập mã vào dashboard là hoàn tất kết nối thiết bị

Các thành phần được flash

  • Khi cài đặt sẽ flash ba binary chính
    1. x-load.bin – bootloader giai đoạn 1 (X-Loader for OMAP)
    2. u-boot.bin – bootloader giai đoạn 2 (Das U-Boot, địa chỉ 0x80100000)
    3. uImage – image kernel Linux (địa chỉ 0x80A00000)
  • Sau khi flash, thiết bị bắt đầu thực thi từ 0x80100000 (u-boot)

Bảo mật và lưu ý

  • Công cụ này cung cấp truy cập mức thấp vào tiến trình khởi động của thiết bị
    • Chỉ nên dùng trên thiết bị do chính người dùng sở hữu
    • Firmware sai có nguy cơ làm hỏng thiết bị (brick)
  • Đây là phần mềm mang tính thử nghiệm, khuyến cáo không dùng cho thiết bị thiết yếu đối với sưởi ấm hoặc làm mát

Ghi nhận và cam kết mã nguồn mở

  • Công nghệ nền tảng dựa trên nghiên cứu của nhiều nhà nghiên cứu bảo mật
    • grant-h / ajb142: công cụ bootloader USB OMAP omap_loader
    • exploiteers (GTVHacker): nghiên cứu Nest DFU Attack, chứng minh khả năng chạy firmware tùy chỉnh trên thiết bị thế hệ 1·2
    • FULU và các nhà tài trợ: hỗ trợ bug bounty cho Nest Learning Thermostat Gen 1/2
  • Dự án ủng hộ tính minh bạch và phong trào right-to-repair
    • Image firmware và mã máy chủ API backend sẽ sớm được công khai mã nguồn mở
    • Hỗ trợ cộng đồng tự kiểm toán, cải tiến và tự vận hành hạ tầng riêng

Tài liệu tham khảo

1 bình luận

 
GN⁺ 2025-11-05
Ý kiến trên Hacker News
  • Nếu nồi hơi hỗ trợ OpenTherm thì nên thử dự án thermostat SAT
    Có bù theo thời tiết, bù tải thấp và điều khiển PID, nên có thể điều khiển theo đúng độ chính xác mà cảm biến nhiệt độ hỗ trợ (trong trường hợp của tôi là ±0.02°C)
    Vận hành bằng Home Assistant, nên vừa tiết kiệm năng lượng vừa giữ được sự thoải mái
    Có thể xem dữ liệu thời gian thực trên bảng điều khiển Grafana hoặc Emoncms

    • Tôi cũng rất quan tâm đến dự án này. Tôi đang dùng tổ hợp nồi hơi Vitodens 100 + Ecobee + bơm nhiệt, nhưng khá bất tiện vì mỗi hệ thống hoạt động tách rời nhau
      Ví dụ, Ecobee không hỗ trợ điều khiển đa cấp của nồi hơi, cũng không tích hợp với bơm nhiệt nên nhiệt độ giữa các phòng bị mất cân bằng
      Một ngày nào đó tôi muốn lắp cảm biến nhiệt độ HA cho cả nhà, để hệ thống tự quyết định nên ưu tiên chạy hệ nào theo từng khung giờ
    • Tôi thắc mắc liệu dự án này có hoạt động với HVAC cưỡng bức bằng quạt hay không
    • Trước đây khi thay nồi hơi Vaillant, tôi từng định tự lắp bo mạch OpenTherm, nhưng nhà sản xuất ngăn lại vì nói sẽ mất bảo hành
      Cuối cùng tôi dừng luôn ý định dùng OpenTherm ở đó
    • Với nồi hơi Worcester Bosch cũ, tôi đang dùng ems-esp để điều khiển nhiệt độ nước cấp theo nhiệt độ ngoài trời. Cũng quản lý qua Home Assistant
    • Tôi đang muốn tìm một bộ điều khiển đa vùng tốt cho Home Assistant
  • Cái này trông chỉ như dùng một dịch vụ đóng khác tên là NoLongerEvil thay cho Google
    Dù tên là gì thì cũng không thể biết họ có đáng tin hay không.
    Muốn thật sự tin được thì tôi nghĩ cần có firmware và backend mã nguồn mở hoàn chỉnh
    Hiện tại mới chỉ ở mức hack firmware của Google rồi chuyển lưu lượng sang máy chủ khác, nên tôi mong sẽ có backend có thể tự host và quy trình build được công khai
    Sửa: nghe nói backend sắp được công bố mã nguồn mở, nên tôi đang chờ xem

    • Google đã bỏ rơi các thiết bị này rồi. Giờ tôi xem đây đơn giản là một nỗ lực hồi sinh rác thải điện tử
      Không hoàn hảo, nhưng việc giúp thiết bị đã chết dùng lại được vẫn rất có ý nghĩa
    • Tôi muốn dựng một máy chủ chồng SBC nhỏ để tự chạy nhiều dịch vụ trong nhà
      Từ bộ điều khiển Nest đến máy chủ Minecraft, tôi muốn quản lý bằng Kubernetes nhẹ rồi thay node khi cần theo kiểu đó
  • Hiện tại nó chỉ là một ảnh firmware kết nối tới dịch vụ đóng
    Bạn cũng không thể đổi nó kết nối tới đâu, và cũng không có chính sách quyền riêng tư
    Đăng nhập dùng tài khoản GitHub thuộc sở hữu của Microsoft, còn xác thực do clerk.com xử lý
    Nghe nói sắp mã nguồn mở nên cứ chờ thêm

    • Tôi thấy dự án này rất ngầu. Reverse engineering Nest Thermostat để làm firmware mới là quá ấn tượng
      Việc chưa có chính sách quyền riêng tư ở giai đoạn đầu cũng có thể hiểu được
    • Tôi nghĩ kiểu phản ứng tiêu cực này là lý do khiến các dự án tốt trở nên khó tồn tại trên mạng
  • Trang "Open Source" trên website dashboard chỉ có firmware chứ không có mã phía máy chủ
    Chỉ riêng firmware thì khó mà xem là phần mềm tự do hoàn chỉnh
    Sửa: xem kỹ hơn thì có ghi là backend cũng sẽ sớm được công bố mã nguồn mở

    • Họ nói đang chờ mã gửi lên cho chương trình bug bounty mà Louis Rossman đề xuất. Nếu suôn sẻ thì sẽ rất hay
      GitHub issue liên quan
    • Giờ tôi khó mà tin vào câu “sắp công bố”
  • Có cảnh báo rằng không nên dùng firmware này cho thermostat thiết yếu với hệ thống sưởi/làm mát
    Trước đây tôi từng gặp sự cố thermostat khiến nhiệt độ trong nhà tăng lên mức nguy hiểm, nên loại cảnh báo này cần được xem trọng

    • Đó chỉ là một câu miễn trừ trách nhiệm thôi.
      Tôi vẫn định tiếp tục dùng thermostat tròn analog Honeywell đã hoạt động tốt hàng chục năm nay
  • Tôi chọn cách khác và tự thiết kế PCB mới
    Tôi làm nó để có thể kiểm soát firmware 100%, và đã chia sẻ quá trình reverse engineering giao diện LCD
    Tôi hy vọng exploit của Cody sẽ cho phép ghi hẳn firmware mới

  • Tôi thật sự mong dự án này thành công
    Trước đây tôi từng làm việc với đội phát triển Nest thế hệ 1 và 2, và họ rất tâm huyết với sản phẩm
    Họ hẳn sẽ không đưa ra quyết định ngừng dịch vụ theo cách này

    • Giờ thì ở Google không còn ai trong số những người thời đó nữa.
      Ngay cả khi chúng tôi còn ở đó thì ý kiến của chúng tôi cũng không được lắng nghe
  • Tôi đang kỳ vọng vì thấy câu “chúng tôi cam kết với sự minh bạch và phong trào quyền được sửa chữa”

  • Thật khó chấp nhận khi một công ty từng nói quan tâm tới môi trường lại biến thiết bị của người dùng thành rác theo cách này
    Có vẻ đây chỉ là quyết định để tiết kiệm chi phí cloud hoặc bán thêm sản phẩm mới

    • Không có kết nối mạng cũng không có nghĩa là phải vứt bỏ một thermostat vẫn còn hoạt động
    • Marketing rốt cuộc chỉ là nghệ thuật nói dối.
      Những công ty kiểu này chỉ theo đuổi lợi nhuận chứ không phải môi trường.
      Hơn nữa, một số bên còn liên quan đến xung đột quốc tế và vấn đề nhân quyền
      Liên kết báo cáo của UN
  • Tôi đang tìm một thermostat ít phụ thuộc cloud hơn
    Tôi dùng hai chiếc Nest mà thấy quá bức bối, nên muốn một sản phẩm tích hợp trực tiếp với Home Assistant

    • Cũng có thermostat dùng Z-Wave thay vì WiFi, nhưng tôi thích HTTP hoặc MQTT hơn
      Sản phẩm hỗ trợ cả WiFi lẫn API hầu như không có, Venstar là bên hiếm hoi làm được nhưng tôi đã bỏ vì module WiFi không ổn định
      Cấu trúc firmware của nó cũng khá lạ nên tôi không thử nữa
    • Ecobee vẫn cần kết nối cloud, nhưng có thể điều khiển cục bộ thông qua tích hợp HomeKit
      Trong Home Assistant nó cũng hoạt động tốt qua tích hợp HomeKit