- Nest Thermostat के 1st और 2nd gen डिवाइसों के लिए custom firmware, जो OMAP DFU इंटरफ़ेस के जरिए bootloader और kernel को बदलने वाली संरचना पर आधारित है
- फ्लैश करने के बाद डिवाइस Nest/Google सर्वरों से कनेक्शन बंद कर देता है और स्वतंत्र NoLongerEvil platform से संचार करने लगता है
- नेटवर्क ट्रैफ़िक को reverse-engineered API server की ओर redirect करके, मौजूदा फ़ीचर बनाए रखते हुए user data और settings पर पूरा नियंत्रण संभव होता है
- इंस्टॉलेशन प्रक्रिया DFU mode में जाना, bootloader (
x-load, u-boot) और kernel (uImage) फ्लैश करना, account registration और device linking जैसे चरणों से बनी है
- लक्ष्य cloud dependency हटाना और device ownership वापस पाना है, साथ ही open source release और right-to-repair movement के समर्थन को स्पष्ट करता है
अवलोकन
- यह प्रोजेक्ट Nest Thermostat पर custom firmware इंस्टॉल करने के लिए tools और images प्रदान करता है
- OMAP DFU(Device Firmware Update) इंटरफ़ेस का उपयोग करके bootloader और kernel को बदला जाता है
- नया firmware केवल DFU mode में ही स्वीकार किया जा सकता है
- फ्लैशिंग के बाद डिवाइस Nest/Google सर्वरों से संचार नहीं करता, बल्कि NoLongerEvil platform से जुड़ता है
- इससे उपयोगकर्ता thermostat के व्यवहार और data पर पूरा नियंत्रण प्राप्त कर सकता है
यह कैसे काम करता है
- custom firmware bootloader और kernel components को modify करके नेटवर्क ट्रैफ़िक को तय सर्वर की ओर redirect करता है
- यह सर्वर Nest API का reverse-engineered clone server है, जिससे डिवाइस स्वतंत्र रूप से काम कर सकता है
- communication layer को intercept करके डिवाइस को ऐसा महसूस कराया जाता है मानो वह आधिकारिक Nest infrastructure से जुड़ा हो
- इस तरीके से मौजूदा software के साथ compatibility बनी रहती है और Google cloud dependency हट जाती है
इंस्टॉलेशन प्रक्रिया
- repository clone करने के बाद, OS के अनुसार ज़रूरी packages (जैसे libusb) इंस्टॉल करें
- Linux:
build-essential, libusb-1.0-0-dev, gcc, pkg-config
- macOS: Xcode Command Line Tools और Homebrew आधारित libusb इंस्टॉलेशन
build.sh चलाने पर OS अपने-आप detect होता है और omap_loader tool build होता है
install.sh चलाने से पहले डिवाइस को DFU mode में ले जाना ज़रूरी है
- charging status जाँचें (50% या अधिक), दीवार से अलग करें, USB connect करें, reboot करें (10~15 सेकंड दबाकर)
- DFU mode में जाने पर x-load, u-boot, uImage अपने-आप फ्लैश हो जाते हैं
- boot पूरा होने के बाद NoLongerEvil logo दिखाई देता है, इसमें लगभग 3~4 मिनट लगते हैं
- वेबसाइट nolongerevil.com पर account register करने के बाद डिवाइस लिंक करें
- Nest डिवाइस में Settings → Nest App → Get Entry Code पर जाकर code देखें
- dashboard में code दर्ज करने पर डिवाइस कनेक्ट हो जाता है
फ्लैश किए जाने वाले components
- इंस्टॉलेशन के दौरान तीन मुख्य binaries फ्लैश की जाती हैं
- x-load.bin – पहला चरण bootloader (X-Loader for OMAP)
- u-boot.bin – दूसरा चरण bootloader (Das U-Boot, address
0x80100000)
- uImage – Linux kernel image (address
0x80A00000)
- फ्लैशिंग के बाद डिवाइस
0x80100000(u-boot) से execution शुरू करता है
सुरक्षा और सावधानियाँ
- यह tool डिवाइस boot process तक low-level access देता है
- इसे केवल उपयोगकर्ता के स्वामित्व वाले डिवाइस पर ही उपयोग करने की सिफारिश की जाती है
- गलत firmware से डिवाइस खराब होने (brick होने) का जोखिम है
- यह experimental software है, इसलिए heating या cooling के लिए आवश्यक डिवाइसों पर इसका उपयोग न करने की सलाह दी जाती है
क्रेडिट और open source वादा
- आधारभूत तकनीक कई security researchers के शोध पर निर्भर है
- grant-h / ajb142: OMAP USB bootloader tool
omap_loader
- exploiteers (GTVHacker): Nest DFU Attack शोध, जिसने 1st और 2nd gen डिवाइसों पर custom firmware की संभावना साबित की
- FULU और sponsors: Nest Learning Thermostat Gen 1/2 bug bounty support
- प्रोजेक्ट transparency और right-to-repair movement का समर्थन करता है
- firmware images और backend API server code को जल्द open source के रूप में जारी करने की योजना है
- ताकि community अपने infrastructure का audit, improvement और hosting कर सके
संदर्भ सामग्री
1 टिप्पणियां
Hacker News राय
अगर आपका boiler OpenTherm को सपोर्ट करता है, तो SAT thermostat project आज़माने की सिफारिश करता हूँ
इसमें weather compensation, low-load compensation, और PID control संभव है, इसलिए तापमान sensor जितनी precision सपोर्ट करता है (मेरे मामले में ±0.02°C), उतनी ही सटीकता से control होता है
इसे Home Assistant से operate किया जाता है, और इससे energy saving व comfort दोनों मिल सकते हैं
real-time data Grafana dashboard या Emoncms में देखा जा सकता है
उदाहरण के लिए, Ecobee boiler के multi-stage control को सपोर्ट नहीं करता, और heat pump के साथ भी integrate नहीं होता, इसलिए कमरों के बीच तापमान असंतुलन हो जाता है
कभी न कभी मैं पूरे घर में HA temperature sensors लगाना चाहता हूँ, ताकि समय के हिसाब से अपने-आप तय हो सके कि किस system को प्राथमिकता देकर चलाना है
आखिरकार OpenTherm की कोशिश वहीं खत्म हो गई
यह बस Google की जगह NoLongerEvil नाम की एक और बंद service इस्तेमाल करने जैसा लगता है
नाम कुछ भी हो, यह भरोसेमंद है या नहीं, कहना मुश्किल है
सच में भरोसा करने लायक होने के लिए पूरी तरह open source firmware और backend चाहिए, ऐसा मुझे लगता है
अभी तो यह Google firmware को hack करके traffic को दूसरे server पर मोड़ने जैसा है, इसलिए उम्मीद है कि self-hostable backend और build process भी public किए जाएँगे
संपादन: backend को जल्द open source करने वाले हैं, यह सुनकर उम्मीद है
यह परफेक्ट नहीं है, फिर भी मरे हुए device को दोबारा इस्तेमाल लायक बनाना मायने रखता है
Nest controller से लेकर Minecraft server तक सब कुछ lightweight Kubernetes से manage करूँ, और ज़रूरत पड़ने पर nodes बदलता रहूँ — कुछ ऐसा करना चाहता हूँ
फिलहाल यह सिर्फ एक firmware image है जो किसी बंद service से जुड़ती है
इसे कहाँ connect होना है, यह भी बदला नहीं जा सकता, और privacy policy भी नहीं है
login Microsoft के स्वामित्व वाले GitHub account से होता है, और authentication clerk.com संभालता है
कहा जा रहा है कि जल्द open source होगा, इसलिए इंतज़ार कर रहा हूँ
अभी privacy policy न होना शुरुआती चरण होने की वजह से समझा जा सकता है
dashboard site के "Open Source" page पर सिर्फ firmware है, server-side code नहीं
सिर्फ firmware होने से इसे पूरी तरह free software कहना मुश्किल है
संपादन: ध्यान से देखा तो लिखा है कि backend भी जल्द open source किया जाएगा
संबंधित GitHub issue
एक चेतावनी है कि “इस firmware को heating/cooling के लिए ज़रूरी thermostat में इस्तेमाल न करें”
पहले thermostat खराब होने के कारण घर का तापमान खतरनाक स्तर तक बढ़ जाने का अनुभव हो चुका है, इसलिए ऐसी चेतावनी को गंभीरता से लेना चाहिए
मैं तो दशकों से ठीक चल रहे analog Honeywell round thermostat का इस्तेमाल जारी रखने वाला हूँ
मैंने दूसरा रास्ता अपनाकर नया PCB खुद design किया
इसे इस तरह बनाया कि 100% firmware control संभव हो, और LCD interface reverse engineering process भी साझा की
उम्मीद है कि Cody का exploit पूरी तरह नया firmware लिखने की सुविधा देगा
मैं सच में चाहता हूँ कि यह project सफल हो
पहले मैंने Nest 1st gen, 2nd gen development team के साथ काम किया था, और वह टीम product को लेकर बेहद गंभीर थी
वे लोग इस तरह service बंद करने का फैसला नहीं लेते
जब हम वहाँ थे, तब भी हमारी राय नहीं सुनी जाती थी
“हम transparency और right to repair movement के लिए प्रतिबद्ध हैं” यह पंक्ति देखकर उम्मीद जगी है
जो company पर्यावरण की बात करती थी, उसका इस तरह users के devices को कचरा बना देना सच में बेतुका है
यह बस cloud cost बचाने या नए products बेचने का फैसला लगता है
ऐसी कंपनियाँ पर्यावरण से ज़्यादा मुनाफे का पीछा करती हैं
और इनमें से कुछ अंतरराष्ट्रीय संघर्षों और मानवाधिकार मुद्दों में भी उलझी हुई हैं
UN report link
मैं कम cloud-dependent thermostat ढूँढ रहा हूँ
दो Nest इस्तेमाल करता हूँ और उनसे बहुत परेशान हूँ, इसलिए ऐसा product चाहिए जो Home Assistant के साथ सीधे integrate हो
WiFi + API दोनों सपोर्ट करने वाले products लगभग नहीं हैं, Venstar ही कुछ हद तक संभव था, लेकिन उसके unstable WiFi module की वजह से छोड़ दिया
उसका firmware structure भी अजीब है, इसलिए अब और कोशिश नहीं कर रहा
Home Assistant में भी HomeKit integration के साथ यह अच्छी तरह काम करता है