23 comments

  • userbinator 3 days 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 days 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 days 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 days 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 2 days ago

          The article says the display is physically round.

          • userbinator 2 days ago

            The pictures tell a different story.

            • paco3346 2 days 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 2 days 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 days 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 days ago

    Author here, if anyone has deeper questions

    • tchebb 2 days 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/...

      • z3ugma 2 days ago

        Good idea - I can take this to the developers of Toit lang https://toitlang.org/ which is the stack I'm using and is built atop of ESP-IDF

    • jon9544hn 3 days ago

      Proud of your work! Keep it up

      • z3ugma 3 days 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 2 days ago

      Well done, seems like a very challenging project!

    • hdx19 3 days ago

      [dead]

  • minton 3 days 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 days 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 days 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 days ago

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

  • matteska 3 days ago

    Pre-ordered! Thanks for the reverse engineering work!

  • Hobadee 3 days 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 2 days 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