Doom Is Officially Running on the Xiaomi Mi Band 10
Aaron Christophel reverse engineered the Xiaomi Mi Band 10 to get Doom running on its tiny screen.
When Aaron Christophel picks up his soldering iron, you know something unexpected is about to start running Doom. It doesn’t matter if it’s a cooking pot or a toy video walkie-talkie — it will run Doom before he’s done with it. The latest victim is the Xiaomi Mi Band 10, an affordable smartwatch with an unusually long battery life.
Getting Doom onto the tiny wearable turned out to be much more complicated than simply compiling a game and flashing it to the watch. The Mi Band 10 is built around a Bestechnic BES2700iMP system-on-chip, also known as the BEST1503. While the processor shares some similarities with other Bestechnic chips, no public software development kit exists for this particular variant. That meant Christophel had to begin with a leaked SDK for a related audio-focused chip and then reverse engineer the missing pieces himself.
The BES2700iMP differs significantly from its audio-oriented cousin. It includes more memory and hardware intended for wearable devices, such as display acceleration and graphics support. Unfortunately, documentation for those features was unavailable, forcing Christophel to study the stock Mi Band firmware to determine how everything worked.
Before any software could be developed, he first had to figure out how to communicate with the hardware. Earlier Mi Band models exposed Serial Wire Debug connections, but those interfaces were missing on the Mi Band 10. Instead, Christophel built a custom breakout fixture that interfaces with the watch's tiny 32-pin display connector. The jig allowed him to attach logic analyzers and monitor signals while the factory firmware was running. Through this process, he discovered multiple UART interfaces, including one connected directly to the chip's built-in boot ROM.
That bootloader interface became the key to gaining control of the device. During a brief 200-millisecond window after power-up, the processor listens for commands on the UART port. By taking advantage of leaked Bestechnic flashing tools and second-stage bootloader binaries, Christophel was able to load custom code into memory, dump the watch firmware, and eventually flash his own software onto the device.
Even so, getting graphics onto the AMOLED display wasn’t easy. The original firmware uses hardware-accelerated Quad SPI transfers and DMA to rapidly update the screen. Without access to the necessary register documentation, Christophel initially resorted to software-driven SPI routines. The display worked, but refresh rates were painfully slow. Later improvements restored proper color handling and touchscreen functionality, though performance still lags behind the hardware-accelerated approach used by Xiaomi's firmware.
After working through these issues, Doom now boots and runs directly on the Mi Band 10's 212×520-pixel AMOLED display. Touchscreen controls handle movement, firing, and menu navigation, and the game's data is stored in the watch's flash memory. Moreover, Christophel’s work has resulted in what appears to be the first practical SDK for the BEST1503 platform, opening the door for developers to build entirely new applications and custom firmware for both the Mi Band 10 and the closely related Mi Band 9.