2 คะแนน โดย GN⁺ 2025-11-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เฟิร์มแวร์แบบกำหนดเองสำหรับอุปกรณ์ Nest Thermostat รุ่น 1 และ 2 โดยใช้โครงสร้างที่เปลี่ยนบูตโหลดเดอร์และเคอร์เนลผ่านอินเทอร์เฟซ OMAP DFU
  • หลังแฟลชแล้ว อุปกรณ์จะ หยุดเชื่อมต่อกับเซิร์ฟเวอร์ Nest/Google และเปลี่ยนไปสื่อสารกับ แพลตฟอร์ม NoLongerEvil ที่ทำงานอย่างอิสระ
  • รีไดเรกต์ทราฟฟิกเครือข่ายไปยัง เซิร์ฟเวอร์ API ที่ทำ reverse engineering ไว้ เพื่อคงฟังก์ชันเดิม พร้อมให้ผู้ใช้ควบคุมข้อมูลและการตั้งค่าได้อย่างสมบูรณ์
  • ขั้นตอนการติดตั้งประกอบด้วยการเข้าโหมด DFU, การแฟลชบูตโหลดเดอร์ (x-load, u-boot) และเคอร์เนล (uImage) รวมถึงการลงทะเบียนบัญชีและเชื่อมโยงอุปกรณ์
  • มีเป้าหมายเพื่อ ปลดการพึ่งพาคลาวด์และกู้คืนความเป็นเจ้าของอุปกรณ์ พร้อมประกาศสนับสนุนการเปิดซอร์สและ ขบวนการ right-to-repair

ภาพรวม

  • โปรเจ็กต์นี้จัดเตรียมเครื่องมือและอิมเมจสำหรับติดตั้ง เฟิร์มแวร์แบบกำหนดเอง บน Nest Thermostat
    • ใช้อินเทอร์เฟซ OMAP DFU (Device Firmware Update) เพื่อเปลี่ยนบูตโหลดเดอร์และเคอร์เนล
    • สามารถรับเฟิร์มแวร์ใหม่ได้เฉพาะในโหมด DFU เท่านั้น
  • หลังจากแฟลชแล้ว อุปกรณ์จะ ไม่สื่อสารกับเซิร์ฟเวอร์ Nest/Google และเชื่อมต่อกับ แพลตฟอร์ม NoLongerEvil
    • ทำให้ผู้ใช้มีสิทธิ์ควบคุมการทำงานและข้อมูลของเทอร์โมสแตตได้อย่างสมบูรณ์

วิธีการทำงาน

  • เฟิร์มแวร์แบบกำหนดเองนี้ แก้ไของค์ประกอบของบูตโหลดเดอร์และเคอร์เนล เพื่อรีไดเรกต์ทราฟฟิกเครือข่ายไปยังเซิร์ฟเวอร์ที่กำหนด
    • เซิร์ฟเวอร์ดังกล่าวเป็น เซิร์ฟเวอร์จำลองที่สร้างจากการ reverse engineering ของ Nest API ทำให้อุปกรณ์ทำงานได้อย่างอิสระ
  • ดักชั้นการสื่อสารเพื่อให้อุปกรณ์รับรู้ราวกับว่ายังเชื่อมต่อกับโครงสร้างพื้นฐาน Nest อย่างเป็นทางการ
    • วิธีนี้ช่วย คงความเข้ากันได้กับซอฟต์แวร์เดิม และ ตัดการพึ่งพา Google Cloud

ขั้นตอนการติดตั้ง

  • หลังโคลนรีโพซิทอรี ให้ติดตั้ง แพ็กเกจที่จำเป็น (เช่น libusb) ตามระบบปฏิบัติการ
    • Linux: build-essential, libusb-1.0-0-dev, gcc, pkg-config
    • macOS: Xcode Command Line Tools และการติดตั้ง libusb ผ่าน Homebrew
  • รัน build.sh เพื่อให้ตรวจจับระบบปฏิบัติการอัตโนมัติและ สร้างเครื่องมือ omap_loader
  • ก่อนรัน install.sh ต้องเปลี่ยนอุปกรณ์เข้าสู่โหมด DFU
    • ตรวจสอบระดับแบตเตอรี่ (50% ขึ้นไป), ถอดออกจากผนัง, เชื่อมต่อ USB, รีบูต (กดค้าง 10~15 วินาที)
    • เมื่อเข้าโหมด DFU แล้ว จะทำการแฟลช x-load, u-boot, uImage โดยอัตโนมัติ
  • หลังบูตเสร็จจะ แสดงโลโก้ NoLongerEvil ใช้เวลาประมาณ 3~4 นาที
  • ลงทะเบียนบัญชีบนเว็บไซต์ nolongerevil.com แล้วเชื่อมโยงอุปกรณ์
    • บนอุปกรณ์ Nest ไปที่ Settings → Nest App → Get Entry Code เพื่อดูโค้ด
    • เมื่อกรอกโค้ดในแดชบอร์ดแล้ว การเชื่อมต่ออุปกรณ์จะเสร็จสมบูรณ์

องค์ประกอบที่ถูกแฟลช

  • ระหว่างการติดตั้งจะมีการแฟลชไบนารีหลัก 3 รายการ
    1. x-load.bin – บูตโหลดเดอร์ขั้นที่ 1 (X-Loader for OMAP)
    2. u-boot.bin – บูตโหลดเดอร์ขั้นที่ 2 (Das U-Boot, ที่อยู่ 0x80100000)
    3. uImage – อิมเมจเคอร์เนล Linux (ที่อยู่ 0x80A00000)
  • หลังแฟลชแล้ว อุปกรณ์จะเริ่มรันจาก 0x80100000 (u-boot)

ความปลอดภัยและข้อควรระวัง

  • เครื่องมือนี้ให้ การเข้าถึงระดับต่ำต่อกระบวนการบูตของอุปกรณ์
    • แนะนำให้ใช้กับอุปกรณ์ที่ผู้ใช้เป็นเจ้าของเท่านั้น
    • เฟิร์มแวร์ที่ไม่ถูกต้องมีความเสี่ยงทำให้อุปกรณ์เสียหายถาวร (brick)
  • เป็นซอฟต์แวร์เชิงทดลอง จึงแนะนำว่า ไม่ควรใช้กับอุปกรณ์ที่จำเป็นต่อระบบทำความร้อนหรือความเย็น

เครดิตและคำมั่นเรื่องโอเพนซอร์ส

  • เทคโนโลยีพื้นฐานอาศัยงานวิจัยจากนักวิจัยด้านความปลอดภัยหลายราย
    • grant-h / ajb142: เครื่องมือ OMAP USB bootloader omap_loader
    • exploiteers (GTVHacker) : งานวิจัย Nest DFU Attack ที่พิสูจน์ความเป็นไปได้ของเฟิร์มแวร์แบบกำหนดเองสำหรับอุปกรณ์รุ่น 1 และ 2
    • FULU และผู้สนับสนุน: การสนับสนุน bug bounty สำหรับ Nest Learning Thermostat Gen 1/2
  • โปรเจ็กต์นี้สนับสนุน ความโปร่งใสและขบวนการ right-to-repair
    • มีแผนจะเปิดซอร์สโค้ดของอิมเมจเฟิร์มแวร์และโค้ดเซิร์ฟเวอร์ backend API ในเร็ว ๆ นี้
    • เพื่อให้ชุมชนสามารถตรวจสอบ ปรับปรุง และโฮสต์โครงสร้างพื้นฐานของตนเองได้

เอกสารอ้างอิง

1 ความคิดเห็น

 
GN⁺ 2025-11-05
ความคิดเห็นจาก Hacker News
  • ถ้าหม้อไอน้ำของคุณรองรับ OpenTherm ขอแนะนำให้ลองใช้ โปรเจ็กต์ SAT Thermostat
    สามารถทำ weather compensation, low-load compensation และการควบคุมแบบ PID ได้ จึงควบคุมได้ตามความละเอียดที่เซ็นเซอร์อุณหภูมิรองรับ (กรณีของฉันคือ ±0.02°C)
    ควบคุมผ่าน Home Assistant และได้ทั้งการประหยัดพลังงานกับความสบายไปพร้อมกัน
    ดูข้อมูลแบบเรียลไทม์ได้ที่ Grafana dashboard หรือ Emoncms

    • ฉันเองก็สนใจโปรเจ็กต์นี้มาก ใช้ชุด หม้อไอน้ำ Vitodens 100 + Ecobee + ฮีตปั๊ม อยู่ แต่แต่ละระบบทำงานแยกกันเลยไม่ค่อยสะดวก
      ตัวอย่างเช่น Ecobee ไม่รองรับการควบคุมหลายระดับของหม้อไอน้ำ และก็ไม่เชื่อมกับฮีตปั๊มด้วย ทำให้อุณหภูมิในแต่ละห้องไม่สมดุล
      สักวันหนึ่งอยากติดตั้ง เซ็นเซอร์อุณหภูมิ HA ทั่วทั้งบ้าน เพื่อให้ระบบตัดสินใจอัตโนมัติได้ว่าในแต่ละช่วงเวลาควรเดินระบบไหนก่อน
    • สงสัยว่าโปรเจ็กต์นี้ใช้กับ HVAC แบบบังคับลม ได้หรือไม่
    • ก่อนหน้านี้ตอนเปลี่ยนหม้อไอน้ำ Vaillant เคยพยายามติดตั้งบอร์ด OpenTherm เอง แต่ผู้ผลิตห้ามไว้โดยบอกว่าจะทำให้ ประกันเป็นโมฆะ
      สุดท้ายก็จบการลอง OpenTherm ไว้แค่นั้น
    • กับหม้อไอน้ำ Worcester Bosch รุ่นเก่า ฉันใช้ ems-esp เพื่อควบคุมอุณหภูมิน้ำไหลตามอุณหภูมิภายนอก และจัดการผ่าน Home Assistant เหมือนกัน
    • อยากรู้ว่ามี ตัวควบคุมหลายโซน สำหรับ Home Assistant ตัวไหนที่ดีบ้าง
  • มันดูเหมือนแค่เปลี่ยนจาก Google ไปใช้บริการปิดอีกเจ้าที่ชื่อ NoLongerEvil เท่านั้น
    ไม่ว่าชื่อจะเป็นอะไร เราก็ไม่รู้ว่าพวกเขาเชื่อถือได้แค่ไหน
    ถ้าจะให้น่าเชื่อถือจริง ๆ ฉันคิดว่าต้องมี เฟิร์มแวร์และแบ็กเอนด์ที่เป็นโอเพนซอร์สทั้งหมด
    ตอนนี้ยังเป็นแค่การแฮ็กเฟิร์มแวร์ของ Google แล้วเปลี่ยนทราฟฟิกไปยังเซิร์ฟเวอร์อื่น เลยหวังว่าจะมีการเปิดเผยทั้ง แบ็กเอนด์ที่โฮสต์เองได้ และกระบวนการบิลด์
    แก้ไข: ได้ยินมาว่ามีแผนจะเปิดซอร์สแบ็กเอนด์เร็ว ๆ นี้ เลยตั้งตารออยู่

    • Google ทิ้งอุปกรณ์พวกนี้ไปแล้ว ตอนนี้ฉันมองว่ามันเป็นแค่ ความพยายามชุบชีวิต e-waste
      แม้จะไม่สมบูรณ์แบบ แต่การทำให้อุปกรณ์ที่ตายไปแล้วกลับมาใช้งานได้อีกก็มีความหมาย
    • ฉันอยากทำ เซิร์ฟเวอร์แบบ SBC stack ขนาดเล็กขึ้นมา เพื่อรันบริการต่าง ๆ ในบ้านเอง
      ตั้งแต่คอนโทรลเลอร์ Nest ไปจนถึง Minecraft server จัดการด้วย lightweight Kubernetes และเปลี่ยนโหนดได้ตามต้องการ
  • ตอนนี้มันก็เป็นแค่ อิมเมจเฟิร์มแวร์ที่เชื่อมต่อกับบริการปิด เท่านั้น
    เปลี่ยนปลายทางที่เชื่อมต่อก็ไม่ได้ และก็ไม่มี นโยบายความเป็นส่วนตัว ด้วย
    การล็อกอินใช้บัญชี GitHub ที่เป็นของ Microsoft และการยืนยันตัวตนจัดการโดย clerk.com
    ได้ยินว่าจะเปิดซอร์สในเร็ว ๆ นี้ ก็เลยรอดูต่อไป

    • ฉันคิดว่าโปรเจ็กต์นี้เจ๋งมาก การ รีเวิร์สเอนจิเนียร์ Nest Thermostat แล้วทำเฟิร์มแวร์ใหม่ขึ้นมาได้นี่สุดยอดจริง
      เรื่องที่ยังไม่มีนโยบายความเป็นส่วนตัวก็คงพอเข้าใจได้ว่าเพราะยังอยู่ช่วงเริ่มต้น
    • ฉันคิดว่าปฏิกิริยาเชิงลบแบบนี้แหละที่ทำให้ โปรเจ็กต์ดี ๆ ไปต่อยาก บนโลกออนไลน์
  • หน้า "Open Source" ของเว็บไซต์แดชบอร์ดมีแค่เฟิร์มแวร์ แต่ไม่มี โค้ดฝั่งเซิร์ฟเวอร์
    ถ้ามีแค่เฟิร์มแวร์อย่างเดียวก็คงเรียกว่าซอฟต์แวร์เสรีเต็มรูปแบบได้ยาก
    แก้ไข: พอดูละเอียดแล้วเหมือนมีระบุไว้ว่าจะเปิดซอร์สแบ็กเอนด์ในเร็ว ๆ นี้ด้วย

    • มีคนบอกว่ากำลังรอ การส่งโค้ดตาม bug bounty ที่ Louis Rossman เสนอไว้ ถ้าทุกอย่างไปได้สวยก็น่าจะเจ๋งมาก
      GitHub issue ที่เกี่ยวข้อง
    • คำว่า “จะเปิดเร็ว ๆ นี้” เดี๋ยวนี้ฉัน ไม่ค่อยเชื่อแล้ว
  • มีคำเตือนว่า “อย่าใช้เฟิร์มแวร์นี้กับเทอร์โมสตัทที่จำเป็นต่อระบบทำความร้อน/ความเย็น”
    ฉันเคยมีประสบการณ์ที่เทอร์โมสตัทเสียจน อุณหภูมิในบ้านขึ้นไปถึงระดับอันตราย มาก่อน เลยคิดว่าคำเตือนแบบนี้ต้องเอาจริงเอาจัง

    • นั่นก็แค่ข้อความปฏิเสธความรับผิดเท่านั้น
      ฉันตั้งใจจะใช้ เทอร์โมสตัท Honeywell แบบวงกลมอะนาล็อก ที่ทำงานดีมาหลายสิบปีต่อไป
  • ฉันเลือกวิธีอื่นด้วยการ ออกแบบ PCB ใหม่เอง
    ทำให้ควบคุมด้วยเฟิร์มแวร์ได้ 100% และได้แชร์ กระบวนการรีเวิร์สเอนจิเนียร์อินเทอร์เฟซ LCD ไว้แล้ว
    หวังว่า exploit ของ Cody จะทำให้เขียนเฟิร์มแวร์ใหม่ได้อย่างสมบูรณ์

  • หวังว่าโปรเจ็กต์นี้จะสำเร็จจริง ๆ
    ฉันเคยทำงานร่วมกับ ทีมพัฒนา Nest รุ่น 1 และ 2 มาก่อน และทีมนั้นใส่ใจกับผลิตภัณฑ์นี้จริง ๆ
    พวกเขาคงไม่มีทางเป็นคนตัดสินใจปิดบริการแบบนี้

    • ตอนนี้ไม่มีใครจากทีมในยุคนั้นเหลืออยู่ที่ Google แล้ว
      ต่อให้ตอนที่เรายังอยู่ ความคิดเห็นของเราก็ไม่ได้ถูกรับฟัง
  • อ่านประโยคที่บอกว่า “เราทุ่มเทให้กับ ความโปร่งใสและขบวนการสิทธิในการซ่อม” แล้วก็เริ่มมีความหวัง

  • บริษัทที่ชอบพูดว่าใส่ใจสิ่งแวดล้อม แต่กลับ ทำอุปกรณ์ของผู้ใช้ให้กลายเป็นขยะ แบบนี้ มันน่าขันจริง ๆ
    ดูเหมือนเป็นการตัดสินใจเพื่อประหยัดค่า cloud หรือไม่ก็เพื่อขายผลิตภัณฑ์ใหม่

    • แค่ไม่มีการเชื่อมต่อเครือข่าย ก็ไม่ได้แปลว่าต้องทิ้ง เทอร์โมสตัทที่ยังใช้งานได้
    • การตลาดสุดท้ายแล้วก็เป็นแค่ ศิลปะแห่งการโกหก
      บริษัทพวกนี้สนใจแต่กำไร ไม่ได้สนใจสิ่งแวดล้อม
      แถมบางแห่งยัง พัวพันกับความขัดแย้งระหว่างประเทศและปัญหาสิทธิมนุษยชน อีกด้วย
      ลิงก์รายงาน UN
  • ฉันกำลังหา เทอร์โมสตัทที่พึ่งพา cloud น้อยกว่า
    ตอนนี้ใช้ Nest สองตัวอยู่และรู้สึกอึดอัดมาก เลยอยากได้ผลิตภัณฑ์ที่เชื่อมกับ Home Assistant ได้โดยตรง

    • มีเทอร์โมสตัทแบบ Z-Wave แทน WiFi ด้วย แต่ฉันชอบ HTTP หรือ MQTT มากกว่า
      ผลิตภัณฑ์ที่รองรับทั้ง WiFi + API แทบไม่มีเลย มีแค่ Venstar ที่พอได้ แต่ก็เลิกใช้เพราะ โมดูล WiFi ไม่เสถียร
      โครงสร้างเฟิร์มแวร์ก็แปลก ๆ เลยไม่ลองต่อแล้ว
    • Ecobee ยังต้องพึ่งการเชื่อมต่อ cloud อยู่ แต่สามารถควบคุมแบบโลคัลได้ผ่าน การรวมกับ HomeKit
      ใน Home Assistant ก็ใช้งานได้ดีผ่านการเชื่อมต่อ HomeKit