Settings

Theme

Reverse-Engineering the LCD Display Interface of the Nest 2nd Gen Thermostat

sett.homes

67 points by karagenit 3 months ago · 23 comments

Reader

userbinator 3 months ago

I immediately recognised many of the commands, both their names and byte values, as exactly the same as those of the Philips PCF8833 from 2 decades ago, an extremely common LCD controller for the tiny displays on mobile phones of the time.

The displays have 320 x 320px square addressable pixels, but only the circular portion is displayed - that is to say you can draw pixels as though they were there in the lower corner, past the radius of the circle, but nothing gets drawn.

Always thought round LCDs (and rounded corners on displays and now GUI windows) were stupid, and this explains exactly why. What would otherwise be perfectly usable pixels are missing, and the panel itself is still square.

  • gyomu 3 months ago

    Is there some sort of ideological imperative to use every single pixel? If your product design doesn’t call for it because of low information density, who cares.

  • KPGv2 3 months ago

    > Always thought round LCDs (and rounded corners on displays and now GUI windows) were stupid

    If you've ever used a Nest thermostat before, you'd understand why a square display would be stupider.

    It would either:

    1. force a larger interface so the square display could have its diagonal fully enclosed by the diameter of the radial control (i.e., oafishly large thermostat too big for a human hand to easily manipulate)

    2. force a smaller LCD to fit inside a normal hand-sized radial control, making it less readable to all but the spriteliest of youths

    3. make a radial control that is a spinning rhombus, which is pretty ugly

    Or we could just do what the Nest does and the only person who "suffers" is the original designer, one time, when they write the code

    • Karliss 3 months ago

      But Nest is using a square display. They are just hiding the corners behind plastic with round hole, which according to you would mean either 1 or 2.

      • two_handfuls 3 months ago

        The article says the display is physically round.

        • userbinator 3 months ago

          The pictures tell a different story.

          • paco3346 3 months ago

            The display itself is round, although the module is a square with trapezoidal corners.

            This is odd because you get the intended shape but not the benefit of the shape. There are plenty of displays that are actually round, such as for smart watches.

            I'm curious if Google did this for cost and had decided on a larger bezel from the start.

            • nom 3 months ago

              My guess: it's much easier to cut straight lines. If you don't need it, why go through the more complicated step to cut it circularly.

  • karlgkk 3 months ago

    I don't think they're stupid, especially if the application isn't particularly information dense.

    Like... this is a thing meant to be operated at arm's length. Some extra pixels aren't going to meaningfully improve how you view the current temperature.

z3ugma 3 months ago

Author here, if anyone has deeper questions

  • tchebb 3 months ago

    Is there a reason you wired MOSI and MISO together with a resistor instead of setting the SPI_SIO bit in the ESP32C6's SPI controller? The reference manual[1] says that bit enables "3-line half-duplex communication, where MOSI and MISO signals share the same pin" (page 866). I'm not sure if it's suitable, since the half-duplex mode (see section 28.5.8.4) seems to be designed mainly for talking to SPI flash chips.

    [1] https://www.espressif.com/sites/default/files/documentation/...

  • jon9544hn 3 months ago

    Proud of your work! Keep it up

    • z3ugma 3 months ago

      Thank you for saying so! 1 month until this one hits the Google Graveyard; Kevo smart locks are next, who knows what comes after

  • tiniuclx 3 months ago

    Well done, seems like a very challenging project!

minton 3 months ago

I love the idea of this. Keep perfectly working things from being made obsolete artificially. They should look at the old Nest Protect next.

  • pabs3 3 months ago

    There is a constant stream of artificially obsolete devices, its a lot of work to keep up with that. Seems like we need a Reverse Engineers Anonymous co-operative to receive hardware and donations and pay people to do the work.

    • hdx19 3 months ago

      For devices that are connected to internet it should be a best practice at least and probably an obligation to open source the firmware / code that drives the object when the company decides it wants to stop providing security updates.

      • pabs3 3 months ago

        Copyright law should require source code escrow before the software is protected under the DMCA provisions.

matteska 3 months ago

Pre-ordered! Thanks for the reverse engineering work!

Hobadee 3 months ago

I would love to see an open source/Home Assistant native version of the Nest, if the author or anyone else has further ambitions.

IMHO the Nest is hands-down the best thermostat hardware out there. It's a case study in simplicity, elegance, and intuitive UI. I have bought a couple of them, and am likely to buy more in the future should I need another thermostat for any reason.

Google locking it down more and more, and bricking old hardware versions, is a case study in hardware enshitification. For this reason I am very hesitant to buy more.

  • z3ugma 3 months ago

    Yep that’s what we are working on at https://sett.homes - you can pre order the replacement for the Nest 2nd gen.

    I agree that I want something aesthetically pleasing if it’s going to be displayed on the walls of my home where I entertain. Nest has always been the best for this, but the software has limited it. Hence, Sett - open source PCBs in the beautiful Nest enclosure

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection