ZSWatch: An Open Source Smartwatch Based on Zephyr RTOS

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.

ZSWatch: An Open Source Smartwatch Based on Zephyr RTOS

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

Leave a Comment