Recently, I came across a piece of cutting-edge technology—ZSWatch, which immediately caught my attention. It is not just an ordinary smartwatch that “copies the official SDK”; rather, it is a fully DIY product that encompasses everything from hardware to software. Let’s take a look at what makes it so impressive!
What is the ToolZSWatch, literally meaning Zephyr Smartwatch, is a smartwatch based on Zephyr™ RTOS. The entire set of hardware, firmware, and app is open source, allowing you to tinker with it as you wish, no questions asked.

What Pain Points Does It Address
- • “Commercial watches have locked features”: ZSWatch allows you to change watch faces, modify firmware, and add functionalities at will.
- • “Closed-source ecosystems are restrictive”: Fully GPL-3.0 licensed, you can modify the source code and add new protocols as you please.
- • “Limited functionalities and not hacker-friendly”: A plethora of sensors, gesture navigation, environmental monitoring, AoA direction finding… you can play around freely!
Feature Highlights
- • BLE communication + GadgetBridge / iOS native message push
- • Gesture wake-up & navigation: Built-in BMI270 allows you to switch pages with a wave of your hand
- • A multitude of sensors: Barometric, high-precision temperature and humidity, light sensor, magnetometer, microphone…
- • Dynamic Watchface: Supports both Zephyr native and ESP32 watch faces
- • DIY Dock: With/without J-Link OB, it instantly becomes a debugging tool
Hardware Overview (Partial)
| Module | Model | Function |
| Main Chip | nRF5340 (u-blox NORA-B10) | Dual-core 128MHz, BLE |
| Memory/Storage | 512KB RAM / 1MB Flash | System operation + storage |
| Display | 240×240 circular touchscreen | Interactive UI |
| Sensors | BMI270/BME688/BMP581/LIS2MDLTR | Gesture, environment, barometric, compass |
| External Storage | MX25U51245GZ4I00 64MB | Data logging |
| Power Management & Interface | nPM1300 / TS3USB221A | Power supply & USB/SWD |
Software Ecosystem
- • Built on Zephyr RTOS, modular.
- • GadgetBridge Android App plug-and-play; iOS uses ANCS+AMS native channels.
- • Tired of the same time display? Easily change the watch face.
- • Music control, notification pop-ups, compass, settings menu… You can install various apps.
Example CodeHere’s a quick demo to light up the screen (Zephyr C version):
#include <zephyr.h>
#include <device.h>
#include <drivers/gpio.h>
#define SCREEN_PWR_NODE DT_ALIAS(screen_pwr)
static const struct gpio_dt_spec screen_pwr = GPIO_DT_SPEC_GET(SCREEN_PWR_NODE, gpios);
void main(void) {
if (!device_is_ready(screen_pwr.port)) return;
gpio_pin_configure_dt(&screen_pwr, GPIO_OUTPUT_ACTIVE);
printk("ZSWatch screen has been lit up!\n");
/* More initialization code can be added here */
while (1) {
k_sleep(K_SECONDS(1));
}
}
Pros and Cons OverviewPros
- • Truly open source: Hardware and firmware are fully GPL-3.0, allowing for deep customization
- • Rich in sensors: From environmental to gesture, navigation to light sensing, it has almost no shortcomings
- • DIY friendly: KiCad 4-layer board, 3D printed case, optional metal CNC
Cons
- • High entry barrier: Requires knowledge of Zephyr development and PCB soldering
- • Features not fully “commercialized”: Still in continuous iteration, bugs may occur
- • Battery life is slightly inferior compared to major brands, requiring frequent charging
ConclusionZSWatch is more like a “hacker’s experimental board”, suitable for those who want to make significant modifications to hardware, firmware, and apps. It addresses the two major pain points of “closed-source restrictions” and “limited functionalities of official SDKs”, allowing you to change watch faces, flash firmware, and add sensors as you wish. If you are looking to DIY a real smartwatch or study low-power RTOS, don’t miss out on ZSWatch.
Project address: https://github.com/ZSWatch/ZSWatch