Forked from InfiniTime
Full credit and thanks to the original InfiniTime team for their amazing open-source smartwatch firmware project!
RoutineHero is a fun and structured smartwatch experience built for kids, based on the InfiniTime firmware.
As a parent, you define a daily routine made up of activities — like brushing teeth, reading, playtime, etc. — and the watch guides your child throughout the day.
RoutineHero displays these activities visually as segments on a pie chart over an analog-style clock face, giving kids a sense of time and structure in a playful and intuitive way.
Here are two GIFs showcasing RoutineHero on the watch:
Short videos of the app in use:
App on the Play Store: https://play.google.com/store/apps/details?id=com.routinehero
-
🧭 Analog Clock UI with Activity Pie Chart
Each segment of the analog clock represents an activity in the child’s day. -
👨👩👧👦 Parent-Defined Routine
Define your child’s daily routine with a simple config (custom app or BLE tool integration planned). -
🔔 Gentle Time Awareness
Visual reminders help kids understand when it's time to transition to the next task. -
🎨 Kid-Friendly Design
Clean, colorful UI tailored for younger users with simplified interactions. -
💡 Based on InfiniTime
Leverages the powerful open-source firmware platform that runs on PineTime and compatible devices.
RoutineHero runs on devices compatible with InfiniTime, including:
- PineTime (nRF52832)
- Dev boards supporting BLE and compatible display controllers (with porting)
To get RoutineHero running on your watch, choose one of the flashing options below. After flashing, proceed to configure your child's routine.
Use this if you already have a compatible bootloader and want to install the firmware wirelessly.
-
Download the latest DFU package from the repo:
doc/dfu/pinetime-mcuboot-app-dfu-1.15.0.zip -
Use a Bluetooth Low Energy (BLE) capable DFU tool to flash the firmware to your PineTime device, for example:
-
Follow the instructions in the DFU tool to upload the firmware to your watch over BLE.
Use this if you want to install our custom bootloader to prevent kids from resetting the device, or if you need to flash the firmware wired.
The included bootloader.bin in the root of the repository is a modified version of the official PineTime bootloader. It is customized to load the application firmware immediately (disabling the button-press delay), preventing children from resetting or rolling back the firmware by holding down the button.
Important
Installing or updating the bootloader requires opening the watch casing and connecting an SWD debugger (like a J-Link or ST-Link). This is completely optional.
If you have a J-Link debugger connected:
-
Unzip the pre-built DFU package included in the repository to extract the firmware binary:
unzip -o doc/dfu/pinetime-mcuboot-app-dfu-1.15.0.zip -d doc/dfu/
-
Run the OpenOCD command from the root of the project to flash both the custom bootloader and the extracted application firmware:
openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf52.cfg -c "\ init; halt; reset_config none; \ flash erase_address 0x00000000 0x80000; \ program bootloader.bin verify 0x00000000; \ program $(ls build/src/pinetime-mcuboot-app-image-1.15.*.bin) verify 0x8000; \ reset run; exit"
Use this if you want to customize the firmware code and compile it yourself.
-
Clone the Repo
git clone https://github.com/trollderiu/InfiniTime-RoutineHero.git cd InfiniTime-RoutineHero -
Build the Firmware
Follow the InfiniTime build instructions, as they apply here too.docker pull --platform linux/amd64 infinitime/infinitime-build docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime/infinitime-build
-
Flash the Custom Binary
- Over BLE (DFU): Flash the resulting DFU package at
build/output/src/pinetime-mcuboot-app-dfu-1.15.*.zipusing the tools from Option A. - Over J-Link (SWD): If you want to use J-Link with your newly compiled binary, make sure you have
bootloader.binin the root, and run:openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf52.cfg -c "\ init; halt; reset_config none; \ flash erase_address 0x00000000 0x80000; \ program bootloader.bin verify 0x00000000; \ program $(ls build/output/src/pinetime-mcuboot-app-image-1.15.*.bin) verify 0x8000; \ reset run; exit"
- Over BLE (DFU): Flash the resulting DFU package at
After flashing the watch, use the official RoutineHero Parent App to set up daily routines and activities:
This app lets you:
- Create and manage a daily schedule
- Set icons, names, and durations for each task
- Sync routines wirelessly to the watch
iOS support is planned for the future.
This project retains much of the original InfiniTime code, with key changes including:
src/display/RoutineHeroWatchFace.cpp– Custom watchface with pie chart overlaysrc/display/RoutineHeroTimer.cpp– Screen with time left for the current activityresources/images/– Custom icons for kid-friendly interface
More detailed module descriptions coming soon.
Want to help improve RoutineHero? PRs and suggestions are welcome!
Check the Issues tab for bugs and roadmap items.
RoutineHero is powered by:
- InfiniTime – Original firmware base
- LittlevGL (LVGL) – Embedded graphics library
- The open-source community ❤️
RoutineHero inherits the InfiniTime license (Apache 2.0).