<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pine64.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RamDav</id>
	<title>PINE64 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pine64.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RamDav"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/RamDav"/>
	<updated>2026-04-17T19:02:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime_Development&amp;diff=11734</id>
		<title>PineTime Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime_Development&amp;diff=11734"/>
		<updated>2021-11-02T05:40:57Z</updated>

		<summary type="html">&lt;p&gt;RamDav: /* Available firmware and projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reprogramming ==&lt;br /&gt;
&lt;br /&gt;
[[PineTime devkit wiring|Wire it up]] and then [[Reprogramming the PineTime| flash something]].&lt;br /&gt;
&lt;br /&gt;
== Available firmware and projects ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Project Homepage&lt;br /&gt;
! Project Source&lt;br /&gt;
! PineTime Implementations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FreeRTOS&lt;br /&gt;
|https://www.freertos.org&lt;br /&gt;
| https://sourceforge.net/projects/freertos/&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[[InfiniTime]] (GitHub: [https://github.com/JF002/Pinetime JF002/Pinetime])&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/kaythe/pinetime-os kaythe/pinetime-os]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Zephyr&lt;br /&gt;
| https://www.zephyrproject.org&lt;br /&gt;
| https://github.com/zephyrproject-rtos/zephyr&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/najnesnaj/pinetime-zephyr najnesnaj/pinetime-zephyr]&lt;br /&gt;
|- &lt;br /&gt;
|[https://github.com/SuperPrower/pinetime_zephyr_sample_fw SuperPrower/pinetime_zephyr_sample_fw]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/Dejvino/pinetime-hermes-firmware Dejvino/pinetime-hermes-firmware]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/endian-albin/pinetime-hypnos endian-albin/pinetime-hypnos]&lt;br /&gt;
|-&lt;br /&gt;
|[https://zephyrlabs.github.io/Watchfaces/OmegaTime/ omegatime watchface]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! mynewt&lt;br /&gt;
| https://mynewt.apache.org/about/&lt;br /&gt;
| https://github.com/apache/mynewt-core&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/lupyuen/pinetime-rust-mynewt lupyuen/pinetime-rust-mynewt](Discontinued by Creator)&lt;br /&gt;
|-&lt;br /&gt;
|[https://gitlab.com/caspermeijn/klok caspermeijn/klok]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MbedOS&lt;br /&gt;
| https://os.mbed.com&lt;br /&gt;
| https://github.com/ARMmbed/mbed-os&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/sethitow/mbed-pinetime sethitow/mbed-pinetime]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/geoffrey-vl/mbed-pinetime geoffrey.vl/mbed-pinetime]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! RIOT&lt;br /&gt;
| http://riot-os.org/&lt;br /&gt;
| https://github.com/RIOT-OS/RIOT/&lt;br /&gt;
| [https://github.com/bosmoment/PineTime-apps bosmoment/PineTime-apps]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TinyGo&lt;br /&gt;
| https://tinygo.org&lt;br /&gt;
| https://github.com/tinygo-org/tinygo&lt;br /&gt;
| [https://github.com/aykevl/go-smartwatch aykevl/go-smartwatch]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! wasp-os (MicroPython)&lt;br /&gt;
| https://wasp-os.readthedocs.io/&lt;br /&gt;
| https://github.com/daniel-thompson/wasp-os&lt;br /&gt;
| [https://wasp-os.readthedocs.io/en/latest/install.html#pine64-pinetime-developer-edition WaspOS PineTime install guide]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Rust + RTFM&lt;br /&gt;
| https://rtfm.rs/&lt;br /&gt;
| [https://github.com/rtfm-rs/cortex-m-rtfm rtfm-rs/cortex-m-rtfm]&lt;br /&gt;
| https://github.com/dbrgn/pinetime-rtfm/&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Bare Metal&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|https://github.com/xriss/timecake&lt;br /&gt;
|-&lt;br /&gt;
|https://github.com/Arc13/Pyrus&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/xriss/timecake xriss/timecake]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/Arc13/Pyrus Arc13/Pyrus]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! AdaFruit bootloader&lt;br /&gt;
|&lt;br /&gt;
| https://github.com/adafruit/Adafruit_nRF52_Bootloader&lt;br /&gt;
| [https://github.com/daniel-thompson/wasp-bootloader daniel-thompson/wasp-bootloader]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Useful drivers&lt;br /&gt;
|&lt;br /&gt;
| https://github.com/sethitow/mbed-pinetime&lt;br /&gt;
| [https://github.com/sethitow/mbed-pinetime/tree/master/drivers https://github.com/sethitow/mbed-pinetime]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Project Homepage&lt;br /&gt;
! Project Source&lt;br /&gt;
! PineTime Implementations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Gadgetbridge (Android companion app)&lt;br /&gt;
| https://gadgetbridge.org/&lt;br /&gt;
| https://codeberg.org/Freeyourgadget/Gadgetbridge&lt;br /&gt;
| InfiniTime support in mainline&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Arduino&lt;br /&gt;
| https://youtu.be/4aFDjymXjOw&lt;br /&gt;
| https://github.com/atc1441/ATCwatch&lt;br /&gt;
| https://github.com/atc1441/ATCwatch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! OTA Update Flasher / DaFlasher&lt;br /&gt;
| https://youtu.be/gUVEz-pxhgg&lt;br /&gt;
| https://github.com/atc1441/DaFlasherFiles&lt;br /&gt;
| https://github.com/atc1441/DaFlasherFiles&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! InfiniTime companion app for Linux&lt;br /&gt;
| [https://github.com/alexr4535/siglo alexr4535/siglo]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Wasp-os companion app for Linux&lt;br /&gt;
| [https://github.com/arteeh/wasp-companion arteeh/wasp-companion]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! UI design proposal&lt;br /&gt;
| [https://github.com/arteeh/pinetime arteeh/pinetime]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Flashing app for Linux&lt;br /&gt;
| [https://github.com/arteeh/pinetime-flasher arteeh/pinetime-flasher]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Flashing app for Windows&lt;br /&gt;
| [https://github.com/ZephyrLabs/PinetimeFlasher ZephyrLabs/PinetimeFlasher]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! ESP32 / ESP8266 SWD WebFlasher&lt;br /&gt;
| https://youtu.be/Iu6RoXRZxOk&lt;br /&gt;
| https://github.com/atc1441/ESP32_nRF52_SWD&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! InfiniTime companion daemon for Linux&lt;br /&gt;
| [https://gitea.arsenm.dev/Arsen6331/itd Arsen6331/itd]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Manuals ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/JF002/Pinetime InfiniTime installation]&lt;br /&gt;
* [https://github.com/najnesnaj/pinetime-zephyr Zephyr installation] Beginner manual which explains how to install Zephyr (by najnesnaj).&lt;br /&gt;
* [https://wasp-os.readthedocs.io/en/latest/ Wasp-OS installation] Full manual with install instructions and an application writer's guide.&lt;br /&gt;
&lt;br /&gt;
== How to write battery friendly software? ==&lt;br /&gt;
&lt;br /&gt;
The key to save battery is to enable only what you need when you need it. nRF52832 has a lot of functionalities allowing you to draw as little current as possible. Here are some tips and tricks:&lt;br /&gt;
&lt;br /&gt;
* Disable / shutdown / put in sleep mode '''all devices around the MCU''' (display controller, touch controller, external memory,...). &lt;br /&gt;
* Disable all '''peripheral inside the MCU''' when you don't need them (SPI, TWI(I²C),...). The power management of the NRF52832 is very smart and will completely shut down (power off and disable the clock) the peripheral when the software disables it.&lt;br /&gt;
* Put the MCU to sleep as soon and as often as possible. If you are not using a RTOS, this is done by calling ''WFE'' (wait for event) instruction. Most of the time, RTOS implement this functionality. For example, FreeRTOS calls it the ''tickless mode'' : it puts the CPU in sleep mode when no task is planned for execution for more than a specified time, and wakes up as soon as an event is detected or when a task is ready to run.&lt;br /&gt;
* Do not use logging (JLink RTT, SWO, semihosting,...), it uses a lot of power.&lt;br /&gt;
* Ensure that the debug circuitry of the MCU is not enabled when you measuring the battery life. The debug peripheral is enabled as soon as you connect a debugger to the device, and '''is not automatically disabled''', even if you disconnect the debugger you will have to wait for the battery to go flat to disable to port. The software running in the NRF52832 cannot disable the debug peripheral. How to disable the debug circuitry:&lt;br /&gt;
  - using ''nrfjprog --reset''&lt;br /&gt;
  - using JLinkExe : issue the command ''writeDP 1 0''&lt;br /&gt;
&lt;br /&gt;
  or with OpenOCD&lt;br /&gt;
  - issue the command ''halt''&lt;br /&gt;
  - issue the command ''flash fillw 0x10001208 0xFFFFFF00 0x01''&lt;br /&gt;
  - issue the command ''reset''&lt;br /&gt;
&lt;br /&gt;
  you can check if the debug port is enabled using the following code&lt;br /&gt;
  DWT-&amp;gt;CYCCNT ? &amp;quot;NO&amp;quot;:&amp;quot;YES&amp;quot;&lt;br /&gt;
* Read [https://infocenter.nordicsemi.com/pdf/nRF52832_Rev_2_Errata_v1.1.pdf the errata sheet of the MCU] and apply workarounds if they apply to your software.&lt;br /&gt;
&lt;br /&gt;
== Wishlist ==&lt;br /&gt;
&lt;br /&gt;
In order to keep track of features and changes to the hardware people would like to see, check out this article: [[PineTime Hardware Wishlist]]&lt;br /&gt;
&lt;br /&gt;
== Compatibility with other projects ==&lt;br /&gt;
&lt;br /&gt;
Different firmware running using different bootloaders and Bluetooth stacks on the nRF52832 have different requirements on how they should be initialised and what should be placed where in the internal flash.&lt;br /&gt;
&lt;br /&gt;
To keep track of what, how and why things work like they do across the different projects, check out the [[PineTime SD MCUBoot|PineTime SoftDevice and MCUBoot compatibility]] article.&lt;br /&gt;
&lt;br /&gt;
== Compatibility with companions apps and Bluetooth communication ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of different firmware running on the Pinetime that implement different BLE APIs (time synchronization, notifications, ...). Companion apps must be able to differentiate between different firmware and forks of the same firmware. See [[PineTime Bluetooth]].&lt;br /&gt;
&lt;br /&gt;
== PineTime equivalents and jailbreaking ==&lt;br /&gt;
&lt;br /&gt;
This page contains a list of PineTime-like smartwatches that might be &amp;quot;jailbreakable&amp;quot; or a good source for ideas for the PineTime: [[PineTime Equivalents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>RamDav</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime_Development&amp;diff=11733</id>
		<title>PineTime Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime_Development&amp;diff=11733"/>
		<updated>2021-11-02T05:39:55Z</updated>

		<summary type="html">&lt;p&gt;RamDav: Added discontinuation node to mynewt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reprogramming ==&lt;br /&gt;
&lt;br /&gt;
[[PineTime devkit wiring|Wire it up]] and then [[Reprogramming the PineTime| flash something]].&lt;br /&gt;
&lt;br /&gt;
== Available firmware and projects ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Project Homepage&lt;br /&gt;
! Project Source&lt;br /&gt;
! PineTime Implementations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! FreeRTOS&lt;br /&gt;
|https://www.freertos.org&lt;br /&gt;
| https://sourceforge.net/projects/freertos/&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[[InfiniTime]] (GitHub: [https://github.com/JF002/Pinetime JF002/Pinetime])&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/kaythe/pinetime-os kaythe/pinetime-os]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Zephyr&lt;br /&gt;
| https://www.zephyrproject.org&lt;br /&gt;
| https://github.com/zephyrproject-rtos/zephyr&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/najnesnaj/pinetime-zephyr najnesnaj/pinetime-zephyr]&lt;br /&gt;
|- &lt;br /&gt;
|[https://github.com/SuperPrower/pinetime_zephyr_sample_fw SuperPrower/pinetime_zephyr_sample_fw]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/Dejvino/pinetime-hermes-firmware Dejvino/pinetime-hermes-firmware]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/endian-albin/pinetime-hypnos endian-albin/pinetime-hypnos]&lt;br /&gt;
|-&lt;br /&gt;
|[https://zephyrlabs.github.io/Watchfaces/OmegaTime/ omegatime watchface]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! mynewt(Discontinued by Creator)&lt;br /&gt;
| https://mynewt.apache.org/about/&lt;br /&gt;
| https://github.com/apache/mynewt-core&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/lupyuen/pinetime-rust-mynewt lupyuen/pinetime-rust-mynewt]&lt;br /&gt;
|-&lt;br /&gt;
|[https://gitlab.com/caspermeijn/klok caspermeijn/klok]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! MbedOS&lt;br /&gt;
| https://os.mbed.com&lt;br /&gt;
| https://github.com/ARMmbed/mbed-os&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/sethitow/mbed-pinetime sethitow/mbed-pinetime]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/geoffrey-vl/mbed-pinetime geoffrey.vl/mbed-pinetime]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! RIOT&lt;br /&gt;
| http://riot-os.org/&lt;br /&gt;
| https://github.com/RIOT-OS/RIOT/&lt;br /&gt;
| [https://github.com/bosmoment/PineTime-apps bosmoment/PineTime-apps]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! TinyGo&lt;br /&gt;
| https://tinygo.org&lt;br /&gt;
| https://github.com/tinygo-org/tinygo&lt;br /&gt;
| [https://github.com/aykevl/go-smartwatch aykevl/go-smartwatch]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! wasp-os (MicroPython)&lt;br /&gt;
| https://wasp-os.readthedocs.io/&lt;br /&gt;
| https://github.com/daniel-thompson/wasp-os&lt;br /&gt;
| [https://wasp-os.readthedocs.io/en/latest/install.html#pine64-pinetime-developer-edition WaspOS PineTime install guide]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Rust + RTFM&lt;br /&gt;
| https://rtfm.rs/&lt;br /&gt;
| [https://github.com/rtfm-rs/cortex-m-rtfm rtfm-rs/cortex-m-rtfm]&lt;br /&gt;
| https://github.com/dbrgn/pinetime-rtfm/&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Bare Metal&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|https://github.com/xriss/timecake&lt;br /&gt;
|-&lt;br /&gt;
|https://github.com/Arc13/Pyrus&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|[https://github.com/xriss/timecake xriss/timecake]&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/Arc13/Pyrus Arc13/Pyrus]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! AdaFruit bootloader&lt;br /&gt;
|&lt;br /&gt;
| https://github.com/adafruit/Adafruit_nRF52_Bootloader&lt;br /&gt;
| [https://github.com/daniel-thompson/wasp-bootloader daniel-thompson/wasp-bootloader]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Useful drivers&lt;br /&gt;
|&lt;br /&gt;
| https://github.com/sethitow/mbed-pinetime&lt;br /&gt;
| [https://github.com/sethitow/mbed-pinetime/tree/master/drivers https://github.com/sethitow/mbed-pinetime]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Project Homepage&lt;br /&gt;
! Project Source&lt;br /&gt;
! PineTime Implementations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Gadgetbridge (Android companion app)&lt;br /&gt;
| https://gadgetbridge.org/&lt;br /&gt;
| https://codeberg.org/Freeyourgadget/Gadgetbridge&lt;br /&gt;
| InfiniTime support in mainline&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Arduino&lt;br /&gt;
| https://youtu.be/4aFDjymXjOw&lt;br /&gt;
| https://github.com/atc1441/ATCwatch&lt;br /&gt;
| https://github.com/atc1441/ATCwatch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! OTA Update Flasher / DaFlasher&lt;br /&gt;
| https://youtu.be/gUVEz-pxhgg&lt;br /&gt;
| https://github.com/atc1441/DaFlasherFiles&lt;br /&gt;
| https://github.com/atc1441/DaFlasherFiles&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! InfiniTime companion app for Linux&lt;br /&gt;
| [https://github.com/alexr4535/siglo alexr4535/siglo]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Wasp-os companion app for Linux&lt;br /&gt;
| [https://github.com/arteeh/wasp-companion arteeh/wasp-companion]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! UI design proposal&lt;br /&gt;
| [https://github.com/arteeh/pinetime arteeh/pinetime]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Flashing app for Linux&lt;br /&gt;
| [https://github.com/arteeh/pinetime-flasher arteeh/pinetime-flasher]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Flashing app for Windows&lt;br /&gt;
| [https://github.com/ZephyrLabs/PinetimeFlasher ZephyrLabs/PinetimeFlasher]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! ESP32 / ESP8266 SWD WebFlasher&lt;br /&gt;
| https://youtu.be/Iu6RoXRZxOk&lt;br /&gt;
| https://github.com/atc1441/ESP32_nRF52_SWD&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! InfiniTime companion daemon for Linux&lt;br /&gt;
| [https://gitea.arsenm.dev/Arsen6331/itd Arsen6331/itd]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Manuals ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/JF002/Pinetime InfiniTime installation]&lt;br /&gt;
* [https://github.com/najnesnaj/pinetime-zephyr Zephyr installation] Beginner manual which explains how to install Zephyr (by najnesnaj).&lt;br /&gt;
* [https://wasp-os.readthedocs.io/en/latest/ Wasp-OS installation] Full manual with install instructions and an application writer's guide.&lt;br /&gt;
&lt;br /&gt;
== How to write battery friendly software? ==&lt;br /&gt;
&lt;br /&gt;
The key to save battery is to enable only what you need when you need it. nRF52832 has a lot of functionalities allowing you to draw as little current as possible. Here are some tips and tricks:&lt;br /&gt;
&lt;br /&gt;
* Disable / shutdown / put in sleep mode '''all devices around the MCU''' (display controller, touch controller, external memory,...). &lt;br /&gt;
* Disable all '''peripheral inside the MCU''' when you don't need them (SPI, TWI(I²C),...). The power management of the NRF52832 is very smart and will completely shut down (power off and disable the clock) the peripheral when the software disables it.&lt;br /&gt;
* Put the MCU to sleep as soon and as often as possible. If you are not using a RTOS, this is done by calling ''WFE'' (wait for event) instruction. Most of the time, RTOS implement this functionality. For example, FreeRTOS calls it the ''tickless mode'' : it puts the CPU in sleep mode when no task is planned for execution for more than a specified time, and wakes up as soon as an event is detected or when a task is ready to run.&lt;br /&gt;
* Do not use logging (JLink RTT, SWO, semihosting,...), it uses a lot of power.&lt;br /&gt;
* Ensure that the debug circuitry of the MCU is not enabled when you measuring the battery life. The debug peripheral is enabled as soon as you connect a debugger to the device, and '''is not automatically disabled''', even if you disconnect the debugger you will have to wait for the battery to go flat to disable to port. The software running in the NRF52832 cannot disable the debug peripheral. How to disable the debug circuitry:&lt;br /&gt;
  - using ''nrfjprog --reset''&lt;br /&gt;
  - using JLinkExe : issue the command ''writeDP 1 0''&lt;br /&gt;
&lt;br /&gt;
  or with OpenOCD&lt;br /&gt;
  - issue the command ''halt''&lt;br /&gt;
  - issue the command ''flash fillw 0x10001208 0xFFFFFF00 0x01''&lt;br /&gt;
  - issue the command ''reset''&lt;br /&gt;
&lt;br /&gt;
  you can check if the debug port is enabled using the following code&lt;br /&gt;
  DWT-&amp;gt;CYCCNT ? &amp;quot;NO&amp;quot;:&amp;quot;YES&amp;quot;&lt;br /&gt;
* Read [https://infocenter.nordicsemi.com/pdf/nRF52832_Rev_2_Errata_v1.1.pdf the errata sheet of the MCU] and apply workarounds if they apply to your software.&lt;br /&gt;
&lt;br /&gt;
== Wishlist ==&lt;br /&gt;
&lt;br /&gt;
In order to keep track of features and changes to the hardware people would like to see, check out this article: [[PineTime Hardware Wishlist]]&lt;br /&gt;
&lt;br /&gt;
== Compatibility with other projects ==&lt;br /&gt;
&lt;br /&gt;
Different firmware running using different bootloaders and Bluetooth stacks on the nRF52832 have different requirements on how they should be initialised and what should be placed where in the internal flash.&lt;br /&gt;
&lt;br /&gt;
To keep track of what, how and why things work like they do across the different projects, check out the [[PineTime SD MCUBoot|PineTime SoftDevice and MCUBoot compatibility]] article.&lt;br /&gt;
&lt;br /&gt;
== Compatibility with companions apps and Bluetooth communication ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of different firmware running on the Pinetime that implement different BLE APIs (time synchronization, notifications, ...). Companion apps must be able to differentiate between different firmware and forks of the same firmware. See [[PineTime Bluetooth]].&lt;br /&gt;
&lt;br /&gt;
== PineTime equivalents and jailbreaking ==&lt;br /&gt;
&lt;br /&gt;
This page contains a list of PineTime-like smartwatches that might be &amp;quot;jailbreakable&amp;quot; or a good source for ideas for the PineTime: [[PineTime Equivalents]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>RamDav</name></author>
	</entry>
</feed>