GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - kLabz/InfiniTime: Firmware for Pinetime smartwatch written in C/C++ and based on FreeRTOS

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

1,068 Commits
1,068 Commits

Folders and files

NameName
Last commit message
Last commit date
.devcontainer
.devcontainer
 
 
.github
.github
 
 
.idea/codeStyles
.idea/codeStyles
 
 
.vscode
.vscode
 
 
bootloader
bootloader
 
 
cmake-nRF5x
cmake-nRF5x
 
 
doc
doc
 
 
docker
docker
 
 
hooks
hooks
 
 
images
images
 
 
src
src
 
 
tools
tools
 
 
.clang-format
.clang-format
 
 
.clang-tidy
.clang-tidy
 
 
.gitattributes
.gitattributes
 
 
.gitconfig
.gitconfig
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.gitpod.yml
.gitpod.yml
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
gcc_nrf52-mcuboot.ld
gcc_nrf52-mcuboot.ld
 
 
gcc_nrf52.ld
gcc_nrf52.ld
 
 
nrf52.svd
nrf52.svd
 
 
nrf_common.ld
nrf_common.ld
 
 

Repository files navigation

InfiniTime

Build PineTime Firmware

InfiniTime logo

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

  • Code written in modern C++;
  • Build system based on CMake;
  • Based on FreeRTOS 10.0.0 real-time OS.
  • Using LittleVGL/LVGL 7 as UI library...
  • ... and NimBLE 1.3.0 as BLE stack.

New to InfiniTime?

  • Getting started with InfiniTime 1.0 (quick user guide, update bootloader and InfiniTime,...)
  • Flash, upgrade (OTA), time synchronization,...

Overview

Pinetime screens

As of now, here is the list of achievements of this project:

  • Fast and optimized LCD driver
  • BLE communication
  • Rich user interface via display, touchscreen and pushbutton
  • Time synchronization via BLE
  • Notification via BLE
  • Heart rate measurements
  • Step counting
  • Wake-up on wrist rotation
  • Quick actions
    • Disable vibration on notification
    • Brightness settings
    • Flashlight
    • Settings
  • 3 watch faces:
    • Digital
    • Analog
    • PineTimeStyle
  • 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
    • 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 step goal
    • Battery status
    • Firmware validation
    • System information
  • Supported by 3 companion apps (development is in progress):
    • Gadgetbridge (on Android via F-Droid)
    • Amazfish (on SailfishOS and Linux)
    • Siglo (on Linux)
    • [Experimental] WebBLEWatch Synchronize time directly from your web browser. video
    • [Experimental] Infini-iOS (on iOS)
  • OTA (Over-the-air) update via BLE
  • Bootloader based on MCUBoot

Documentation

Develop

  • Generate the fonts and symbols
  • Creating a stopwatch in Pinetime(article)

Build, flash and debug

  • Project branches
  • Versioning
  • Files included in the release notes
  • Build the project
  • Flash the firmware using OpenOCD and STLinkV2
  • Build the project with Docker
  • Build the project with VSCode
  • Bootloader, OTA and DFU
  • Stub using NRF52-DK
  • Logging with JLink RTT.
  • Using files from the releases

Contribute

  • How to contribute ?

API

  • BLE implementation and API

Architecture and technical topics

  • Memory analysis

Using the firmware

  • Integration with Gadgetbridge
  • Integration with AmazFish
  • Firmware update, OTA

TODO - contribute

This project is far from being finished, and there are still a lot of things to do for this project to become a firmware usable by the general public.

Here a quick list out of my head of things to do for this project:

  • Improve BLE communication stability and reliability
  • Improve OTA and MCUBoot bootloader
  • Add more functionalities : Alarm, chronometer, configuration, activities, heart rate logging, games,...
  • Add more BLE functionalities : call notifications, agenda, configuration, data logging,...
  • Measure power consumption and improve battery life
  • Improve documentation, take better pictures and video than mine
  • Improve the UI
  • Create companion app for multiple OSes (Linux, Android, iOS) and platforms (desktop, ARM, mobile). Do not forget the other devices from Pine64 like the Pinephone and the Pinebook Pro.
  • Design a simple CI (preferably self-hosted and easy to reproduce).

Do not hesitate to clone/fork the code, hack it and create pull-requests. I'll do my best to review and merge them :)

Licenses

This project is released under the GNU General Public License version 3 or, at your option, any later version.

It integrates the following projects:

  • RTOS : FreeRTOS under the MIT license
  • UI : LittleVGL/LVGL under the MIT license
  • BLE stack : NimBLE under the Apache 2.0 license
  • Font : Jetbrains Mono under the Apache 2.0 license

Credits

I’m not working alone on this project. First, many people create PR for this projects. Then, there is the whole #pinetime community : a lot of people all around the world who are hacking, searching, experimenting and programming the Pinetime. We exchange our ideas, experiments and code in the chat rooms and forums.

Here are some people I would like to highlight:

  • Atc1441 : He works on an Arduino based firmware for the Pinetime and many other smartwatches based on similar hardware. He was of great help when I was implementing support for the BMA421 motion sensor and I²C driver.
  • Koen : He’s working on a firmware based on RiotOS. He integrated similar libs as me : NimBLE, LittleVGL,… His help was invaluable too!
  • Lup Yuen Lee : He is everywhere: he works on a Rust firmware, builds a MCUBoot based bootloader for the Pinetime, designs a Flutter based companion app for smartphones and writes a lot of articles about the Pinetime!

If you feel like you should appear on this list, just get in touch with me or submit a PR :)

About

Firmware for Pinetime smartwatch written in C/C++ and based on FreeRTOS

Resources

Readme
GPL-3.0 license

Contributing

Contributing
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.