2021-11-06 08:38:11 -04:00
# [InfiniTime](https://github.com/InfiniTimeOrg/InfiniTime)
2020-07-28 16:51:14 -04:00
2022-08-21 07:42:53 -04:00
![InfiniTime logo ](doc/logo/infinitime-logo-small.jpg "InfiniTime Logo" )
2020-08-02 12:09:38 -04:00
2024-02-21 14:49:46 -05:00
Fast open-source firmware for the [PineTime smartwatch ](https://pine64.org/devices/pinetime/ ) with many features, written in modern C++.
2020-07-18 16:15:14 -04:00
2021-08-03 12:51:58 -04:00
## New to InfiniTime?
2022-08-21 07:50:09 -04:00
- [Getting started with InfiniTime ](doc/gettingStarted/gettingStarted-1.0.md )
- [Updating the software ](doc/gettingStarted/updating-software.md )
- [About the firmware and bootloader ](doc/gettingStarted/about-software.md )
2024-06-13 02:41:00 -04:00
- [PineTimeStyle Watch face ](https://pine64.org/documentation/PineTime/Watchfaces/PineTimeStyle )
- [Weather integration ](https://pine64.org/documentation/PineTime/Software/InfiniTime_weather/ )
2022-07-21 16:02:33 -04:00
2021-11-08 10:42:42 -05:00
### Companion apps
2022-07-21 16:02:33 -04:00
2022-08-21 07:50:09 -04:00
- [Gadgetbridge ](https://gadgetbridge.org/ ) (Android)
- [AmazFish ](https://openrepos.net/content/piggz/amazfish/ ) (SailfishOS)
- [Siglo ](https://github.com/alexr4535/siglo ) (Linux)
2023-12-25 09:32:55 -05:00
- [InfiniLink ](https://github.com/InfiniTimeOrg/InfiniLink ) (iOS)
2023-04-21 01:32:48 -04:00
- [ITD ](https://gitea.elara.ws/Elara6331/itd ) (Linux)
2023-02-11 08:23:51 -05:00
- [WatchMate ](https://github.com/azymohliad/watchmate ) (Linux)
2021-07-25 11:50:55 -04:00
2023-11-19 18:11:30 -05:00
***Note**: We removed mentions to NRFConnect as this app is closed source and recent versions do not work anymore with InfiniTime (the last version known to work is 4.24.3). If you used NRFConnect in the past, we recommend you switch to [Gadgetbridge ](https://gadgetbridge.org/ ).*
2022-11-06 09:50:37 -05:00
2021-11-14 08:23:12 -05:00
## Development
2020-07-27 15:23:51 -04:00
2022-08-21 07:50:09 -04:00
- [InfiniTime Vision ](doc/InfiniTimeVision.md )
- [Rough structure of the code ](doc/code/Intro.md )
- [How to implement an application ](doc/code/Apps.md )
- [Generate the fonts and symbols ](src/displayapp/fonts/README.md )
- [Tips on designing an app UI ](doc/ui_guidelines.md )
- [Bootloader, OTA and DFU ](bootloader/README.md )
2022-10-02 06:27:10 -04:00
- [External resources ](doc/ExternalResources.md )
2022-02-01 15:48:56 -05:00
2021-11-14 08:23:12 -05:00
### Contributing
2022-07-21 16:02:33 -04:00
2023-02-20 13:01:44 -05:00
- [How to contribute? ](CONTRIBUTING.md )
2022-08-21 07:50:09 -04:00
- [Coding conventions ](doc/coding-convention.md )
2021-11-14 08:23:12 -05:00
2020-07-18 16:15:14 -04:00
### Build, flash and debug
2021-07-25 11:50:55 -04:00
2022-08-21 07:50:09 -04:00
- [InfiniTime simulator ](https://github.com/InfiniTimeOrg/InfiniSim )
- [Build the project ](doc/buildAndProgram.md )
- [Build the project with Docker ](doc/buildWithDocker.md )
- [Build the project with VSCode ](doc/buildWithVScode.md )
- [Flash the firmware using OpenOCD and STLinkV2 ](doc/openOCD.md )
- [Flash the firmware using SWD interface ](doc/SWD.md )
- [Flash the firmware using JLink ](doc/jlink.md )
- [Flash the firmware using GDB ](doc/gdb.md )
- [Stub using NRF52-DK ](doc/PinetimeStubWithNrf52DK.md )
2020-07-26 10:15:12 -04:00
2020-07-18 16:15:14 -04:00
### API
2021-07-25 11:50:55 -04:00
2022-08-21 07:50:09 -04:00
- [BLE implementation and API ](doc/ble.md )
2021-07-25 11:50:55 -04:00
2020-07-18 16:15:14 -04:00
### Architecture and technical topics
2021-07-25 11:50:55 -04:00
2022-08-21 07:50:09 -04:00
- [Memory analysis ](doc/MemoryAnalysis.md )
2021-07-25 11:50:55 -04:00
2023-01-15 03:41:10 -05:00
### Project management
- [Maintainer's guide ](doc/maintainer-guide.md )
- [Versioning ](doc/versioning.md )
- [Project branches ](doc/branches.md )
- [Files included in the release notes ](doc/filesInReleaseNotes.md )
2023-02-10 03:09:01 -05:00
- [Files needed by the factory ](doc/files-needed-by-factory.md )
2023-01-15 03:41:10 -05:00
2020-08-02 11:38:51 -04:00
## Licenses
2021-07-25 11:50:55 -04:00
2020-08-02 11:38:51 -04:00
This project is released under the GNU General Public License version 3 or, at your option, any later version.
It integrates the following projects:
2022-08-21 07:50:09 -04:00
2023-11-19 18:11:30 -05:00
- RTOS: ** [FreeRTOS ](https://freertos.org )** under the MIT license
- UI: ** [LittleVGL/LVGL ](https://lvgl.io/ )** under the MIT license
- BLE stack: ** [NimBLE ](https://github.com/apache/mynewt-nimble )** under the Apache 2.0 license
- Font: ** [Jetbrains Mono ](https://www.jetbrains.com/fr-fr/lp/mono/ )** under the Apache 2.0 license
2021-07-25 11:50:55 -04:00
## Credits
2023-11-28 17:26:08 -05:00
I’ m not working alone on this project. First, many people create pull requests for this project. 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.
2020-03-29 09:19:39 -04:00
2020-07-18 16:15:14 -04:00
Here are some people I would like to highlight:
2020-03-29 09:19:39 -04:00
2023-11-19 18:11:30 -05:00
- [Atc1441 ](https://github.com/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 ](https://github.com/bosmoment ): 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 ](https://github.com/lupyuen ): 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!