WatchDK Quick Start

This guide walks you through setting up your ZSWatch Development Kit (WatchDK) for the first time - from powering on to having a fully working smartwatch UI with icons and images.
-
Back button not working: On some early DKs the RTC does not work reliably when powered from USB, which can cause the back button to stop responding. Latest firmware detects this at runtime and falls back automatically. See the Battery & RTC Jumper section for the required hardware config.
-
Production test firmware still running (bootloader not flashed): If your watch does not boot into the normal ZSWatch UI and appears to be running test firmware, the bootloader may not have been programmed during production. If this is the case you need to follow the debugger instructions below.
-
Missing jumper: Before starting, check that a jumper is present on the flash chip header (marked by the arrow tip in the image below). If it is missing, place a spare jumper there. If you do not have a spare, you can take the one from the vibration motor header. The vibration motor will stop working, but it is the least essential function.

If you have any further issue or question please reach out to us on Discord (preferred) or send an email to mail@zswatch.dev and we will help you resolve it.
What You Need
| Item | Required? | Notes |
|---|---|---|
| USB-C cable | Yes | For power and optional USB firmware updates |
| WatchDK (with display & vibration motor connected) | Yes | Ships assembled and tested with display & motor pre-connected |
| Debugger (recommended: Nordic nRF54L15 DK, ~$35) | Strongly recommended | Needed if you want to develop the FW and flash via SWD instead of USB/BLE. A SEGGER J-Link works too, but is more expensive |
| 10-pin 1.27mm SWD cable | Optional | Needed to connect the debugger to the WatchDK. Example cables: Adafruit, Amazon |
| Battery (LiPo) | Optional | The DK runs fine from USB power alone. See more at Battery & RTC Jumper section at the end |
Optional: Debugger Setup (nRF54L15 DK)
If you plan to develop firmware or flash via SWD, connect a Nordic nRF54L15 DK as a debugger. For full wiring details (SWD cable, GND, UART log pin connections, and RTT alternative), see the Debugger Hardware Setup section in the Debugging guide.
Step 1 - Power On
- Connect the USB-C cable to the WatchDK.
- The watch should boot into the ZSWatch UI.
- Try pressing the top right button to open the application picker.
The watch ships with firmware but without image resources. The UI will work, but icons and graphics will be missing until you upload them in Step 3.
Some DKs have an RTC power issue that can cause the back button to stop working when no battery is connected. See the Battery & RTC Jumper section for the fix.
Step 2 - Update Firmware
We recommend updating to the latest firmware as the first thing you do.
Enable Updates on the Watch
Before any USB or BLE update, you must enable it on the watch:
- On the watch, navigate to Apps → Update.
- Set USB and/or BLE to ON depending on which method you plan to use.
Choose Your Update Method
- Web Update (no debugger needed)
- Debugger (SWD)
This method requires no extra hardware.
- Make sure you enabled USB or BLE updates on the watch (see above).
- Go to zswatch.dev/update.
- Follow the on-screen instructions to flash via USB or BLE.
For details on firmware files and other update methods, see Firmware Updates.
Use this method if you have a debugger connected and want to flash via SWD.
See Firmware Updates for the full SWD flashing steps (pre-built firmware and building from source).
Step 3 - Upload Image Resources
Many icons and images in the ZSWatch UI are stored in external flash and are not included in the firmware binary itself. They need to be uploaded separately. The image resources file (lvgl_resources_raw.bin) is included in the firmware download package, so you already have it.
The easiest method is the web updater, no debugger required:
- On the watch, go to Apps → Update and enable USB and/or BLE.
- Go to zswatch.dev/update.
- Follow the on-screen instructions to upload image resources via USB or BLE.
See the full Image Resources guide for more details.
If you have a debugger connected, you can upload images from VS Code by pressing Ctrl+Shift+P and running the task Upload Raw FS, or from the terminal:
west upload_fs --type raw --ini_file app/boards/zswatch/watchdk/support/qspi_mx25u51245.ini
Or directly using nrfjprog
nrfjprog -f nrf53 \
--program lvgl_resources_raw.hex \
--qspisectorerase --verify --reset \
--qspiini app/boards/zswatch/watchdk/support/qspi_mx25u51245.ini \
--coprocessor CP_APPLICATION
Step 4 - Connect Your Phone
To get notifications, music control, weather, and more on your watch, pair it with a companion app on your phone:
- iOS: Download the ZSWatch Companion App from the App Store.
- Android: Download the ZSWatch Companion App from Google Play (invite required, DevKit buyers with a Google account email are already added; otherwise reach out on Discord or email mail@zswatch.dev). If you run into issues (especially with the background BLE connection), use GadgetBridge instead.
See Phone Setup for detailed pairing instructions.
Step 5 - Done!
Your WatchDK should now be running the latest firmware with all icons and images visible. Navigate around the UI using the four buttons and the touchscreen.
If you want to view logs or debug the firmware, see the Debugging guide, including how to connect the nRF54L15 DK for UART logs or use RTT.
Battery & RTC Jumper
The board has a jumper that selects whether the real-time clock (RTC) is powered from USB (VSYS) or from a battery (VBAT). The two positions are shown below:

On some DKs the RTC does not work reliably in the USB/VSYS position. We believe the pull-up resistors on the RTC level shifter are sized for battery voltage rather than 5V USB, which causes inconsistent behavior across boards. If the back button does not respond, this is likely the cause.
Current firmware automatically detects whether the RTC is available at runtime and falls back gracefully. A single firmware binary works on all boards regardless of RTC status, but the jumper has to be placed correctly.
Without a Battery
If you do not have a battery and the RTC is not working (back button unresponsive), remove the RTC jumper entirely or move it to the VBAT side. The firmware will automatically disable RTC-dependent features and continue using the software clock.
What you lose without RTC:
- Timer and Alarm app is disabled entirely.
- Time will not advance while powered off and drift after a power cycle until synced from a phone.
- All other features work normally.
With a Battery
Connect a battery and move the RTC power jumper to the VBAT position. This gives the RTC a stable power source and all features work as expected.
Suggested Batteries
Search for JST RC 3.7V 1S batteries and pick a suitable reseller. Just make sure the connector matches the WatchDK 2-pin battery header:

The nPM1300 PMIC calculates battery state-of-charge (%), time-to-empty, and time-to-full based on a profiled battery model. The firmware ships with a profile for a specific battery, so using a different LiPo (especially one with a larger capacity, e.g. >300 mAh) will make these estimates inaccurate. The voltage reading stays correct regardless of which battery you use. For more details on battery profiling, see the nRF Connect Power Manager documentation.
Next Steps
- Phone Setup - pair your watch with the companion app or GadgetBridge
- Setting up the Development Toolchain - install VS Code, nRF Connect SDK, and build tools
- Compiling the Software - build custom firmware from source
- Firmware Recovery - if the watch becomes unresponsive