base on ZSWatch - the Open Source Zephyr™ based Smartwatch, including both HW and FW. # [zswatch.dev](https://zswatch.dev/)
<img alt="ZSWatch_logo_with_text" src="https://github.com/user-attachments/assets/6669a8eb-a4fd-424e-9a7c-201e0a571641" />
<div align="center">
[](https://opensource.org/licenses/GPL-3.0)
[](https://discord.gg/8XfNBmDfbY)
[](https://zswatch.dev/docs/intro)
<p float="left">
<img src=".github/images/in_use.jpg" width="67.5%" object-fit="cover"/>
<img src=".github/images/v3_case.jpg" width="31%" object-fit="cover"/>
</p>
<sub>
ZSWatch v4 CNC:ed Stainless Steel (left), Clear Resin 3D print (right)
</sub>
</div>
> **WatchDK** - The ZSWatch development kit ($99) has the same nRF5340 chip and sensors as the final watch, in a larger form factor for development and debugging. Battery optional, runs off USB-C.
>
> [Order from Elecrow](https://www.elecrow.com/zswatch-development-kit.html)
>
> [Quick Start](https://zswatch.dev/docs/getting-started/watchdk-quickstart)
## About
Smartwatch built from scratch, both hardware and software. Built on the [Zephyr™ Project](https://www.zephyrproject.org/) RTOS, hence the name **ZSWatch** (*Zephyr Smartwatch*).
<kbd><img title="ZSWatch Development Kit" src="website/blog/2025-12-05-dk-and-hr/watchdk.jpg" alt="ZSWatch Development Kit promotional image"/></kbd>
<sub>ZSWatch Development Kit (WatchDK)</sub>
https://github.com/ZSWatch/ZSWatch/assets/4318648/ec1a94fd-a682-4559-9e68-f3e5bfcbe682
## Documentation
Full documentation is available at **[zswatch.dev](https://zswatch.dev)**:
- [Getting Started](https://zswatch.dev/docs/getting-started/watchdk-quickstart) - WatchDK quick start guide
- [Toolchain & Compiling](https://zswatch.dev/docs/development/toolchain) - Environment setup, building, and flashing
- [Writing Apps](https://zswatch.dev/docs/development/writing_apps) - How to create applications for ZSWatch
- [Hardware Design](https://zswatch.dev/docs/hardware-design) - PCB design documentation
## Features
### Hardware
- nRF5340 BLE chip ([u-blox NORA-B10 module](https://www.u-blox.com/en/product/nora-b1-series-open-cpu))
- 128 MHz Dual core
- 512 KB RAM
- 1 MB Flash
- 30 MHz SPI for display
- [240x240 round display](https://www.buydisplay.com/catalog/product/view/id/1849/s/240x240-round-ips-tft-lcd-display-1-28-capacitive-touch-circle-screen/) with touch screen
- IMU [Bosch BMI270](https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi270-ds000.pdf) for gesture navigation, wrist-wake, step counting
- Bosch [BMP581](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp581/) High-performance pressure sensor (~20 cm accuracy)
- ST [LIS2MDLTR](https://www.st.com/resource/en/datasheet/lis2mdl.pdf) Magnetometer
- Macronix [MX25U51245GZ4I00](https://www.mouser.de/datasheet/2/819/MX25U51245G_2c_1_8V_2c_512Mb_2c_v1_4-3371129.pdf) 64 MB external flash
- Broadcom [APDS-9306-065](https://docs.broadcom.com/docs/AV02-4755EN) Light Sensor for automatic brightness control
- Micro Crystal [RV-8263-C8](https://www.microcrystal.com/en/products/real-time-clock-rtc-modules/rv-8263-c8) RTC for time keeping and alarm functions
- Knowles [SPK0641HT4H-1](https://www.knowles.com/docs/default-source/model-downloads/spk0641ht4h-1-rev-a.pdf) I2S microphone for audio recording
- Nordic [nPM1300](https://docs.nordicsemi.com/category/npm1300-category) PMIC for power and system management
- Speaker (Requires HR Extension Board)
#### PCB
All hardware is designed in KiCad. Hardware repos:
- [Watch PCB](https://github.com/ZSWatch/Watch-HW) - 38 mm diameter watch PCB
- [Watch DevKit PCB](https://github.com/ZSWatch/Watch-DevKit-HW) - Larger development board with breakout headers and debug header
- [Extension PCB](https://github.com/ZSWatch/Extension-HW) - Health and audio addon PCB
- [Dock/Breakout PCB](https://github.com/ZSWatch/Dock-HW) - USB-C breakout for debugger and UART access
<kbd><img title="Hardware Overview for v5 (v6 coming soon)" src="resources/images/Hardware-Overview.png" alt="Hardware overview for v5 (v6 coming soon)"/></kbd>
#### HR Extension Board (WIP)
The Extension PCB is a small add-on board (approximately 16.8 mm diameter) that plugs into the WatchDK headers. It is still in development and the design, BOM, and firmware support may change.
More background and progress updates:
- https://zswatch.dev/blog/dk-and-hr-integration
- https://zswatch.dev/blog/progress-hw-xip-usb-power
- https://zswatch.dev/blog/progress-hr-fota
Key BOM highlights:
- Analog Devices / Maxim `MAX86141` optical AFE + ams OSRAM `SFH 7016` (RGB/IR LED module) + Vishay `VEMD8082` photodiodes
- Analog Devices / Maxim `MAX32664` biometric sensor hub
- Renesas / Dialog `DA7212` audio codec (speaker support)
- Amphenol `101P014FB110` board-to-board connectors
### Software
- Bluetooth LE communications via the [ZSWatch Companion App](https://zswatch.dev/docs/getting-started/companion_app) (iOS/Android) or [GadgetBridge](https://codeberg.org/Freeyourgadget/Gadgetbridge) (Android)
- Multiple watchfaces (dynamically switchable), showing time, date, battery, weather, steps, notifications, environmental data, and more
- Pop-up notifications
- Application picker with extensible app framework
- [Settings](app/src/applications/settings/), [Music control](app/src/applications/music_control/), [Compass](app/src/applications/compass/), and many more
- Step counting, gestures, and much more
The watch also supports ESP32 watchfaces from [Felix Biego](https://github.com/fbiego). See [this fork](https://github.com/Kampi/esp32-lvgl-watchface) for details.
### Smartphone Communication
**iOS (recommended):** Use the official [ZSWatch Companion App](https://apps.apple.com/us/app/zswatch/id6759058602) on the App Store. ZSWatch also supports native [Apple Notification Center Service](https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html) and [Apple Media Service](https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleMediaService_Reference/Specification/Specification.html).
**Android (experimental companion app):** The ZSWatch Companion App currently requires invite access. Request access via [Discord](https://discord.gg/8XfNBmDfbY) or email [
[email protected]](mailto:
[email protected]). For a stable experience, use [GadgetBridge](https://codeberg.org/Freeyourgadget/Gadgetbridge).
See [phone setup on zswatch.dev](https://zswatch.dev/docs/getting-started/phone_setup) for details.
### Enclosure/Casing
3D-printed casing with 3D-printed buttons, with an option for CNC:ed metal casing.
## Getting a WatchDK or Building Your Own
**For development:** The [WatchDK](https://zswatch.dev/docs/getting-started/watchdk-quickstart) ($99) is the recommended starting point. It has the same nRF5340 SoC, sensors, and display as the final watch, with breakout headers, USB-C with SWD/UART, power measurement headers, and a debug header. Everything except battery is included. Battery is optional.
Order WatchDK from Elecrow: [www.elecrow.com/zswatch-development-kit.html](https://www.elecrow.com/zswatch-development-kit.html)
**For DIY builders:** Head over to the hardware repos for the for ordering information. The final miniature watch hardware is still being developed.
## Demos
- [HTTP requests over BLE through Gadgetbridge](https://github.com/ZSWatch/ZSWatch/assets/4318648/12d6e754-ceb3-4efd-9a75-d207aaeb0e82)
- [Watchfaces](https://github.com/ZSWatch/ZSWatch/assets/4318648/13e43401-1c00-40ab-866f-e6518e61940d)
## Developing
See the [Toolchain & Build Guide](https://zswatch.dev/docs/development/toolchain) for environment setup, compiling, and flashing.
To learn how to write apps for ZSWatch, see [Writing Apps](https://zswatch.dev/docs/development/writing_apps).
## Licence GPL-3.0
The main difference from MIT is that if anyone wants to build something more with this, they need to also open source their changes back to the project, which I think is fair, so everyone can benefit from those improvements. If you think this is wrong, feel free to contact me and I'm open to change the licence.
## Thanks
### Funding
This project is partly funded through [NGI0 Commons Fund](https://nlnet.nl/commonsfund), a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) program. Learn more at the [NLnet project page](https://nlnet.nl/project/ZSWatch).
[<img src="https://nlnet.nl/logo/banner.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl)
[<img src="https://nlnet.nl/image/logos/NGI0_tag.svg" alt="NGI Zero Logo" width="20%" />](https://nlnet.nl/commonsfund)
### Support
<p align="left">
<a href="https://www.pcbway.com/">
<img width="20%" src=".github/images/pcbway_logo.svg" alt="PCBWay Logo" style="vertical-align:middle;" />
</a>
<a href="https://www.segger.com/">
<img width="20%" src=".github/images/SEGGER-Logo-the-embedded-experts-RGB.jpg" alt="SEGGER Logo" style="vertical-align:middle; margin-right: 32px;" />
</a>
</p>
**PCBWay** for sponsoring the manufacturing and assembly of prototype PCBs. PCBWay is the recommended manufacturer for PCBs and assembly of ZSWatch.
## Miscellaneous
- [Watch my presentation at Zephyr Developer Summit 2023](https://www.youtube.com/watch?v=MmCzV0jV9hs)
", Assign "at most 3 tags" to the expected json: {"id":"5532","tags":[]} "only from the tags list I provide: []" returns me the "expected json"