Doomed Thermostat

It is amazing how the game Doom has been ported to so many things. Enter one more port, where the hardware in question is a Honeywell Prestige thermostat.

In his video, [cz7asm] shows us the game running quite nicely on the 480 x 272 LCD with an NES controller plugged into the USB port originally intended for software updates. The thermostat runs on a STM32F429 which is an ARM9 processor that has the juice to pull it off. The Doom engine being used is based on Chocolate Doom, an open source port of the game, and the binaries can be downloaded for Windows and Mac. The source code is also available as a download for your tinkering pleasure. This project by [cz7asm]  is extended from a code on GitHub by [floppes] that was meant for the STM32F429IDISCOVERY evaluation board.

The author shares his code for the STM32F4 on Dropbox as a zip and in order to compile it, the Atmel BSP for GNU GCC is used. The video below demonstrates the hack in action and, though there is no sound yet, the satisfaction that comes from such modifications is its own reward.

What else can you run Doom on? How about a calculator or maybe the Intel Edison or even an ATM machine! If there is a processor with enough muscle power, hackers will find a way to run Doom on it. So have you seen any alien computers lately that you think can be hacked?

25 thoughts on “Doomed Thermostat

  1. Honey, it’s 3am what are you doing standing in the hallway playing with the thermostat?
    It was cold and when I came to turn up the temp it asked me if I wanted to play a game of thermo nuclear war….

  2. I’m always confused by ARM numbering, but the STM32F4 is definitely an ARM Cortex-M4, so that’s an ARMv7E, not an ARM9; I think ARM9 would be an older architecture, but again, I’m confused.

    1. It’s a obviously a mistake in the text. The device is based on ARM9 cpu, which is based on armv5 architecture. The MPU is SAM9G35 from Atmel (hence the mentioned Atmel BSP).

    2. I think the biggest issue with the ARM numbering is that there is so much of it! (and sadly all to easy to be confused)

      So, the STM32F contains a Cortex-M4 which is a specific implementation of the ARM Architecture v7E-M (normally just referred to as v7-M – which is a branch of the v7 architecure, with bits specific to Microcontroller devices, compared to the V7-A branch, found in the Cortex-A9, which is Application tuned).
      Now, the ARM9 series pre-dates that lot by quite a margin and, depending upon which specific ARM9 core it is, could implement anything from ARMv4T (Thumb) through to ARMv5TEJ (Thumb, DSP and Jazelle DBX).

      And all of this becomes even more embroiled when customers of ARM can license at a multitude of different levels and release items with similar numbering such as Apple releasing a ‘M7’ chip which is entirely unrelated to the ARM Cortex-M7 (the former said to contain a Cortex-M3 but both being v7-M architecture). Or take the Apply ‘A9’ chip which contains their own implementation of a V8-A core and so very removed from the ARM Cortex-A9 (which is v7-A) that had appeared within the Apple ‘A5’ (again not to be confused with the ARM Cortex-A5 which happens to also be a v7-A core).

      Simple, right?

      1. not always. At least for IoT-Nonsense a µC that has just the power needed is good, because this way there is less power for DDoS or stuff like this if the device gets hacked. (Of course no internet would even be better…)

      2. Look at what happened with routers not so many years ago-

        Manufacturers realized they could build a UI that made the device look super advanced, but it ran on a chip that couldn’t handle the heat from real-world load.

        Then again that was also to limit how well 3rd Party firmwares would run.

      1. Probably because it is. As opposed to “appropriate power for the job”, all the alternative of “as much power as we can buy and still fit in the budget” does is encourage lazy implementation for which raw power is expected to compensate, which in turn more often than not fosters buggy, hackish solutions lacking any robustness and potentially squandering performance at rates that can end up placing the “brute force beast” below its “modest but properly taken advantage of” competition (if you need examples of wasted oomph, just pick an Arduino. Any Arduino…).

  3. The Honeywell thermostat has an Atmel SAM9G35 in it, and the code found in the Dropbox link the author of this article clearly targets the SAM9G35 (and explains it in the readme file). There is absolutely no STM32F4 involved in this project at all, yet it’s mentioned several times in the article, and the article is tagged as “stm32”

    I’m not sure how this glaring mistake made it through the editing process — especially with an extremely awkward sentence like: “The author shares his code for the STM32F4 on Dropbox as a zip and in order to compile it, the Atmel BSP for GNU GCC is used” — huh?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.