What is InfiniTime

Generalities about PineTime

PineTime is an open source smartwatch produced by Pine64.

From Pine64’s website:

“The PineTime is a free and open source smartwatch capable of running custom-built open operating systems. Some of the notable features include a heart rate monitor, a week-long battery, and a capacitive touch IPS display that is legible in direct sunlight. It is a fully community driven side-project which anyone can contribute to, allowing you to keep control of your device.”

More details can be found on the PineTime page of the Pine64 website.

InfiniTime goals

The goal of this project is to design an open-source firmware for the Pinetime smartwatch :

InfiniTime features - high level

InfiniTime implements the following features:

  • Rich user interface via display, touchscreen and pushbutton

  • Time synchronization via Bluetooth Low Energy (BLE)

  • Time setup via the watch itself

  • Notifications via BLE

  • Heart rate measurements

  • Steps counting

  • Wake-up on wrist rotation

  • Quick actions

    • Disable vibration on notification

    • Brightness settings

    • Flashlight

    • Settings

  • 3 watch faces:

  • Multiple ‘apps’ :

    • Music (control the playback of music on your phone)

    • Heart rate (measure your heart rate)

    • Navigation (displays navigation instructions coming from the companion app)

    • Notification (displays the last notification received)

    • Paddle (single player pong-like game)

    • Twos (2048 clone game)

    • Stopwatch

    • Alarm App

    • Steps (displays the number of steps taken)

    • Timer (set a countdown timer that will notify you when it expires)

    • Metronome (vibrates to a given bpm with a customizable beats per bar)

  • User settings:

    • Display timeout

    • Wake-up condition

    • Time format (12/24h)

    • Default watch face

    • Daily steps goal

    • Battery status

    • Firmware validation

    • System information

  • Supported by multiple companion apps (development is in progress):

InfiniTime history

Project history

The project was started by JF in October 2019. JF already knew Pine64 as a company that builds ARM-based SBCs, and had followed the Pinebook Pro and PinePhone. In September 2019, JF saw an article about the PineTime, an open-source smartwatch, stating that Pine64 was looking for developers to build a software running on it.
After he contacted Pine64 to explain his motivation, he got sent a PineTime dev kit and starting tinkering with it.

The first version of the bootloader, based on MCUBoot, was written by Lup Yuen.

The first versions of InfiniTime were mainly a one-man show, but quickly a lot of developers joined the project, and the speed of development and therefore new features increased a lot:

  • The first release, version 0.1.0 already provided basic functionalities : display the time, BLE connection and time synchronization. There was no touch interface, the UI was slow and basic.

  • Version 0.2.2 was the first release that received contributions from other developpers :) project!

  • Version 0.3 switched from a custom graphics library to LittleVGL, a light and versatile graphics library for embedded systems.

  • Version 0.5 introduced a change of the BLE stack: instead of using the NRF SoftDevice (the BLE stack from Nordic Semiconductor), the decision was taken to use NimBLE, an open source BLE stack.
    Amazfish, a companion app for Sailfish OS and Linux, added support for InfiniTime, becoming the first companion app for the smartwatch.

  • Version 0.6 brought the OTA functionality, allowing users to upgrade the firmare over-the-air, using their smartphone and BLE connectivity.

  • Version 0.7.1, which brought improvements, optimisations, became the official firmware sent with new PineTime (previous firmware was a “work in progress” one, and closed-source).

Firmwares history and changelog

The releases history can be found here on GitHub.

For a list with a summary of new features for each release, please see this article.