<?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=Tree</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=Tree"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/Tree"/>
	<updated>2026-05-08T14:09:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User_talk:Fxc&amp;diff=15475</id>
		<title>User talk:Fxc</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User_talk:Fxc&amp;diff=15475"/>
		<updated>2023-01-13T15:48:12Z</updated>

		<summary type="html">&lt;p&gt;Tree: /* Request to involve Manual of style */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Carrier Support ==&lt;br /&gt;
Can you please explain why you keep removing my additions to [[PinePhone_Carrier_Support]] -- [[User:Mikehenson|Mike]] 02:22:09 29 April 2021 (UTC)&lt;br /&gt;
: You keep adding your provider in the wrong section. You want to add it in the section &amp;quot;Tested and working&amp;quot; but you keep adding it to the section &amp;quot;Does not work / special notes&amp;quot;. Regards --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 12:13, 29 April 2021 (UTC)&lt;br /&gt;
:: Thank you! I added it to [[PinePhone_Carrier_Support#North_America]] -- [[User:Mikehenson|Mike]] 17:09:09 29 April 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Discussion on what to do with the Rock64 page ==&lt;br /&gt;
&lt;br /&gt;
Hi, I'm asking you about this since you seem to be one of the more active contributors of the wiki.&lt;br /&gt;
&lt;br /&gt;
I recently noticed that there are two ROCK64 pages, one is [[ROCK64]], the other is [[Rock64]]. They seem to duplicate a lot of information, and the latter appears to contain a large list of links already covered in the software releases page.&lt;br /&gt;
&lt;br /&gt;
What should be done about this? Should we delete [[Rock64]] and make it a redirect? --[[User:CounterPillow|CounterPillow]] ([[User talk:CounterPillow|talk]]) 19:20, 13 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
:For now I've decided to make it a redirect, upon seeing that the user who created it also created other pages which were just carbon copies of the respective actual pages at the time. Maybe some spam thing? --[[User:CounterPillow|CounterPillow]] ([[User talk:CounterPillow|talk]]) 06:24, 14 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Yup, I would have recommended a redirect too. The SBC articles and especially their naming is quite chaotic so (radically) cleaning up the wiki and finding a better structure between different articles is something which has to be done sooner or later anyway. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 12:38, 14 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Re: Your edits in PinePhone ==&lt;br /&gt;
&lt;br /&gt;
Good day, Fxc! Thank you very much for your help in moving my recent edits to their more suitable places: this stuff took me plenty of time to figure out &amp;amp; test, and hopefully our work could be valuable to the fellow PinePhone users.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, I noticed that &amp;quot;IMEI check and change&amp;quot; has been reverted for the reason &amp;quot;Illegal wiki contents removed&amp;quot;. Please tell, &amp;quot;illegal&amp;quot; - in what country? I.e. PINE64 is a Hong Kong company, while a Pine64 wiki website is hosted in Slovakia, - and I can't any info that changing IMEI in either Hong Kong or Slovakia is illegal, or at least posting the &amp;quot;how-to&amp;quot; information about this. And what isn't forbidden - is allowed. For the majority of countries ''(not taking some totalitarian ones into account)'', changing IMEI is as legal as changing the MAC address which has been allowed to stay.&lt;br /&gt;
&lt;br /&gt;
Since a &amp;quot;pinephone change imei&amp;quot; seems to be a popular Google request (it's even more popular than &amp;quot;pinephone change os&amp;quot;), I'd like to preserve this information for the public usage. If, to be able to do that, I need to re-word/extend the warning about the possible legal issues (something like &amp;quot;please check the laws of your country before doing that&amp;quot;) - please let me know.&lt;br /&gt;
&lt;br /&gt;
At the same time I understand this advanced information is probably not suitable for the main PinePhone page. Please tell what's the more appropriate place in your opinion - [[PineModems]], [[PinePhone_Software_Tweaks]] or [[PinePhone_FAQ#Modem]] ?&lt;br /&gt;
&lt;br /&gt;
: Please don't re-add information regarding the IMEI on the wiki. Regarding software information: there is currently no place for it, [[PinePhone Software Tweaks]] was a quick idea - if you have other ideas feel free! The PineModems article is more on the hardware side of different modems and in the FAQ it would probably fit but that article isn't read very often. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 21:46, 23 August 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Removing the addition about battery ==&lt;br /&gt;
&lt;br /&gt;
Hello all,&lt;br /&gt;
&lt;br /&gt;
I think it was not so good to remove the section, explaining how exactly one could get a good replacement battery&lt;br /&gt;
and make it fit into PP without any difficulties. Because this is actually a problem: there are any replacement battries&lt;br /&gt;
and fitting the J7 battery into the PP without filing it could result in a broken phone.&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.pine64.org/index.php?title=PinePhone&amp;amp;diff=15200&amp;amp;oldid=15102&lt;br /&gt;
--[[User:Pptester|Pptester]] ([[User talk:Pptester|talk]])  14:16, 13 January 2023‎ (UTC)&lt;br /&gt;
&lt;br /&gt;
: Said section doesn't fit the quality requirements of the rest of the page, as written in the edit note. There are multiple issues here. The newer PinePhone revisions have a bigger battery compartment for the plastic tabs on some batteries (the ones which are deemed incompatible due to the size in the battery paragraph). The paragraph is telling users to use a sharp object on batteries, which is a big no no. People can do that on their personal items but telling users to do so without sufficient warnings (colors, specialized templates PRIOR the instructions) is a red flag. The wiki also tries to be OS-agnostic as much as possible, which the commands are not. The same is the problem for random systemd service files, while distributions are not shipped with systemd - and a systemd service file isn't even the right solution anyway, it's a cheap workaround for not knowing the proper solution to apply sysfs changes permanently. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 14:38, 13 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Request to involve Manual of style ==&lt;br /&gt;
&lt;br /&gt;
Hello, I have noticed from the histories that you are a very active wiki editor and I would like to announce my new initiative, [[Help:Manual of style]]. It's important, because there are many articles to go through, to improve and to &amp;quot;standardize&amp;quot;, but before that we need to create some kind of guide for these. --[[User:Tree|Tree]] ([[User talk:Tree|talk]]) 15:48, 13 January 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User_talk:Fxc&amp;diff=15473</id>
		<title>User talk:Fxc</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User_talk:Fxc&amp;diff=15473"/>
		<updated>2023-01-13T15:42:35Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Carrier Support ==&lt;br /&gt;
Can you please explain why you keep removing my additions to [[PinePhone_Carrier_Support]] -- [[User:Mikehenson|Mike]] 02:22:09 29 April 2021 (UTC)&lt;br /&gt;
: You keep adding your provider in the wrong section. You want to add it in the section &amp;quot;Tested and working&amp;quot; but you keep adding it to the section &amp;quot;Does not work / special notes&amp;quot;. Regards --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 12:13, 29 April 2021 (UTC)&lt;br /&gt;
:: Thank you! I added it to [[PinePhone_Carrier_Support#North_America]] -- [[User:Mikehenson|Mike]] 17:09:09 29 April 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Discussion on what to do with the Rock64 page ==&lt;br /&gt;
&lt;br /&gt;
Hi, I'm asking you about this since you seem to be one of the more active contributors of the wiki.&lt;br /&gt;
&lt;br /&gt;
I recently noticed that there are two ROCK64 pages, one is [[ROCK64]], the other is [[Rock64]]. They seem to duplicate a lot of information, and the latter appears to contain a large list of links already covered in the software releases page.&lt;br /&gt;
&lt;br /&gt;
What should be done about this? Should we delete [[Rock64]] and make it a redirect? --[[User:CounterPillow|CounterPillow]] ([[User talk:CounterPillow|talk]]) 19:20, 13 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
:For now I've decided to make it a redirect, upon seeing that the user who created it also created other pages which were just carbon copies of the respective actual pages at the time. Maybe some spam thing? --[[User:CounterPillow|CounterPillow]] ([[User talk:CounterPillow|talk]]) 06:24, 14 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Yup, I would have recommended a redirect too. The SBC articles and especially their naming is quite chaotic so (radically) cleaning up the wiki and finding a better structure between different articles is something which has to be done sooner or later anyway. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 12:38, 14 May 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Re: Your edits in PinePhone ==&lt;br /&gt;
&lt;br /&gt;
Good day, Fxc! Thank you very much for your help in moving my recent edits to their more suitable places: this stuff took me plenty of time to figure out &amp;amp; test, and hopefully our work could be valuable to the fellow PinePhone users.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, I noticed that &amp;quot;IMEI check and change&amp;quot; has been reverted for the reason &amp;quot;Illegal wiki contents removed&amp;quot;. Please tell, &amp;quot;illegal&amp;quot; - in what country? I.e. PINE64 is a Hong Kong company, while a Pine64 wiki website is hosted in Slovakia, - and I can't any info that changing IMEI in either Hong Kong or Slovakia is illegal, or at least posting the &amp;quot;how-to&amp;quot; information about this. And what isn't forbidden - is allowed. For the majority of countries ''(not taking some totalitarian ones into account)'', changing IMEI is as legal as changing the MAC address which has been allowed to stay.&lt;br /&gt;
&lt;br /&gt;
Since a &amp;quot;pinephone change imei&amp;quot; seems to be a popular Google request (it's even more popular than &amp;quot;pinephone change os&amp;quot;), I'd like to preserve this information for the public usage. If, to be able to do that, I need to re-word/extend the warning about the possible legal issues (something like &amp;quot;please check the laws of your country before doing that&amp;quot;) - please let me know.&lt;br /&gt;
&lt;br /&gt;
At the same time I understand this advanced information is probably not suitable for the main PinePhone page. Please tell what's the more appropriate place in your opinion - [[PineModems]], [[PinePhone_Software_Tweaks]] or [[PinePhone_FAQ#Modem]] ?&lt;br /&gt;
&lt;br /&gt;
: Please don't re-add information regarding the IMEI on the wiki. Regarding software information: there is currently no place for it, [[PinePhone Software Tweaks]] was a quick idea - if you have other ideas feel free! The PineModems article is more on the hardware side of different modems and in the FAQ it would probably fit but that article isn't read very often. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 21:46, 23 August 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Removing the addition about battery ==&lt;br /&gt;
&lt;br /&gt;
Hello all,&lt;br /&gt;
&lt;br /&gt;
I think it was not so good to remove the section, explaining how exactly one could get a good replacement battery&lt;br /&gt;
and make it fit into PP without any difficulties. Because this is actually a problem: there are any replacement battries&lt;br /&gt;
and fitting the J7 battery into the PP without filing it could result in a broken phone.&lt;br /&gt;
&lt;br /&gt;
ref: https://wiki.pine64.org/index.php?title=PinePhone&amp;amp;diff=15200&amp;amp;oldid=15102&lt;br /&gt;
--[[User:Pptester|Pptester]] ([[User talk:Pptester|talk]])  14:16, 13 January 2023‎ (UTC)&lt;br /&gt;
&lt;br /&gt;
: Said section doesn't fit the quality requirements of the rest of the page, as written in the edit note. There are multiple issues here. The newer PinePhone revisions have a bigger battery compartment for the plastic tabs on some batteries (the ones which are deemed incompatible due to the size in the battery paragraph). The paragraph is telling users to use a sharp object on batteries, which is a big no no. People can do that on their personal items but telling users to do so without sufficient warnings (colors, specialized templates PRIOR the instructions) is a red flag. The wiki also tries to be OS-agnostic as much as possible, which the commands are not. The same is the problem for random systemd service files, while distributions are not shipped with systemd - and a systemd service file isn't even the right solution anyway, it's a cheap workaround for not knowing the proper solution to apply sysfs changes permanently. --[[User:Fxc|Fxc]] ([[User talk:Fxc|talk]]) 14:38, 13 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Request to involve Manual of style ==&lt;br /&gt;
&lt;br /&gt;
Hello, I have noticed from the histories that you are a very active wiki editor and I would like to announce my new initiative, [[Help:Manual of style]]. It's important, because there are many articles to go through, to improve and to &amp;quot;standardize&amp;quot;, but before that we need to create some kind of guide for these.&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15466</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15466"/>
		<updated>2023-01-13T15:10:40Z</updated>

		<summary type="html">&lt;p&gt;Tree: Okay, but it is a bigger mistake to write misinformation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://matrix.to/#/#pinetime:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://matrix.to/#/#pinetime-dev:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
= Accessory = &lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
== Screen protectors ==&lt;br /&gt;
Screen protectors for PineTime: &lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
The community designed the following cases:&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15463</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15463"/>
		<updated>2023-01-13T15:05:38Z</updated>

		<summary type="html">&lt;p&gt;Tree: According links, they are designed for PineTime.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://matrix.to/#/#pinetime:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://matrix.to/#/#pinetime-dev:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
= Accessory = &lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
== Screen protectors ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
The community designed the following cases:&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15460</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15460"/>
		<updated>2023-01-13T15:02:55Z</updated>

		<summary type="html">&lt;p&gt;Tree: /* Chat */ Use matrix.to&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://matrix.to/#/#pinetime:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://matrix.to/#/#pinetime-dev:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
= Accessory = &lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
== Screen protectors ==&lt;br /&gt;
&lt;br /&gt;
The following screen protectors might fit the PineTime:&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
The community designed the following cases:&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15458</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15458"/>
		<updated>2023-01-13T15:00:13Z</updated>

		<summary type="html">&lt;p&gt;Tree: Undo revision 15285 by Mashuptwice (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime-dev:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
= Screen protectors =&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
=== Community case design ===&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15457</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15457"/>
		<updated>2023-01-13T14:59:54Z</updated>

		<summary type="html">&lt;p&gt;Tree: Undo revision 15284 by Mashuptwice (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime:matrix.org Matrix Channel]&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime-dev:matrix.org Matrix Channel] (No login required to read)&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
= Screen protectors =&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
=== Community case design ===&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15456</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15456"/>
		<updated>2023-01-13T14:57:39Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime:matrix.org Matrix Channel]&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime-dev:matrix.org Matrix Channel]&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
= Screen protectors =&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
=== Community case design ===&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15454</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15454"/>
		<updated>2023-01-13T14:55:23Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime:matrix.org Matrix Channel]&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime-dev:matrix.org Matrix Channel]&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
= Screen protectors =&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
= Community case design =&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15453</id>
		<title>PineTime</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime&amp;diff=15453"/>
		<updated>2023-01-13T14:53:29Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinetime.png|400px|thumb|right|The PineTime]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions / Getting started ==&lt;br /&gt;
&lt;br /&gt;
'''Read these first!'''&lt;br /&gt;
&lt;br /&gt;
* [[Upgrade PineTime to InfiniTime 1.0.0|Upgrading your new PineTime to InfiniTime 1.0.0]]&lt;br /&gt;
* [[PineTime FAQ| Frequently Asked Questions about the PineTime]]&lt;br /&gt;
* [[PineTime Devkit Wiring]]&lt;br /&gt;
* [[Reprogramming the PineTime|Reprogramming the PineTime (development kit)]]&lt;br /&gt;
* [[Switching your PineTime between InfiniTime and Wasp-os]]&lt;br /&gt;
&lt;br /&gt;
== Default OS ==&lt;br /&gt;
&lt;br /&gt;
The current default operating system on the PineTime is called [[InfiniTime]], you can find more information about the firmware on its GitHub page. First devkits shipped with a proprietary custom firmware.&lt;br /&gt;
&lt;br /&gt;
You can find a list of available firmware and other software here: [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Companion Apps ==&lt;br /&gt;
&lt;br /&gt;
PineTime/InfiniTime needs a companion app to e.g. upload a firmware, get notifications from a phone, or just get the date/time.   &lt;br /&gt;
Here are some companion apps:&lt;br /&gt;
&lt;br /&gt;
* [https://www.gadgetbridge.org Gadgetbridge] (Android &amp;gt;= 4.4) - Companion mobile app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://openrepos.net/content/piggz/amazfish Amazfish] (SailfishOS and Linux) - Companion mobile and desktop app, supports updating firmware/bootloader, send notifications, etc.&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux) - Companion desktop app.&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows) - Companion desktop app, only supports flashing firmware.&lt;br /&gt;
* [https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403 nRFConnect] (iOS) - Only supports flashing firmware.  The app is closed source and versions after 4.24.3 don't work for the PineTime anymore&lt;br /&gt;
* [https://github.com/xan-m/InfiniLink InfiniLink] (iOS) - Companion mobile app in development. Supports updating firmware/bootloader, setting date and time, Apple Music controls, and battery and heart rate data.&lt;br /&gt;
* [https://gitea.arsenm.dev/Arsen6331/itd itd] (Linux)&lt;br /&gt;
&lt;br /&gt;
== Short overview  / Specifications ==&lt;br /&gt;
'''Dimensions:''' 37.5 x 40 x 11mm &amp;lt;br&amp;gt;&lt;br /&gt;
'''Weight:''' 38 grams &amp;lt;br&amp;gt;&lt;br /&gt;
'''IP Rating:''' IP67 (waterproof to 1 meter (sealed edition!)) &amp;lt;br&amp;gt;&lt;br /&gt;
'''Display:'''&lt;br /&gt;
: '''Size:''' 1.3 inches (33mm) diagonal&lt;br /&gt;
: '''Type:''' IPS capacitive touchscreen, RGB 65K colors&lt;br /&gt;
: '''Display Controller:''' ST7789&lt;br /&gt;
: '''Resolution:''' 240x240 pixels &amp;lt;br&amp;gt;&lt;br /&gt;
'''System on Chip:''' Nordic Semiconductor nRF52832 &amp;lt;br&amp;gt;&lt;br /&gt;
'''Flash:''' 512KB with additional 4MB SPI NOR &amp;lt;br&amp;gt;&lt;br /&gt;
'''RAM:''' 64KB &amp;lt;br&amp;gt;&lt;br /&gt;
'''Bluetooth:''' [[PineTime_Bluetooth|5.0 (including Bluetooth Low Energy)]] &amp;lt;br&amp;gt;&lt;br /&gt;
'''Sensors:''' Accelerometer, Heart rate sensor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Feedback:''' Vibration motor &amp;lt;br&amp;gt;&lt;br /&gt;
'''Battery:''' 170-180mAh 3.8V LiPo&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=134 PineTime forum]&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime:matrix.org Matrix Channel]&lt;br /&gt;
* IRC Server: [ircs://irc.pine64.org#pinetime irc.pine64.org] Channel: PineTime&lt;br /&gt;
* [https://t.me/pinetime Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
=== Developers and coding ===&lt;br /&gt;
* [https://app.element.io/#/room/#pinetime-dev:matrix.org Matrix Channel]&lt;br /&gt;
* [https://t.me/pinetime_dev Telegram group]&lt;br /&gt;
* [https://discordapp.com/invite/DgB7kzr Discord server invite link]&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
To read more about development on the PineTime, the projects available and more technical details, check out [[PineTime Development]]&lt;br /&gt;
&lt;br /&gt;
== Useful articles and blog posts == &lt;br /&gt;
&lt;br /&gt;
If you want to dive in to the ecosystem, here's a short list of various articles and blog posts that can help you set up your soft- or hardware development environment.&lt;br /&gt;
&lt;br /&gt;
* [https://www.ncartron.org/one-week-with-my-pinetime---a-feedback.html Using the PineTime in production (January 2021)]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sneak-peek-of-pinetime-smart-watch-and-why-its-perfect-for-teaching-iot Sneak Peek of PineTime Smart Watch… And why it’s perfect for teaching IoT]&lt;br /&gt;
* [https://lupyuen.github.io/articles/building-a-rust-driver-for-pinetimes-touch-controller Building a Rust Driver for PineTime’s Touch Controller]&lt;br /&gt;
* [https://lupyuen.github.io/articles/porting-druid-rust-widgets-to-pinetime-smart-watch Porting (druid) Rust Widgets to PineTime Smart Watch]&lt;br /&gt;
* [https://lupyuen.github.io/articles/optimising-pinetimes-display-driver-with-rust-and-mynewt Optimising PineTime’s Display Driver with Rust and Mynewt]&lt;br /&gt;
* [https://electronut.in/getting-started-with-zephyr-rtos-on-nordic-nrf52832-hackable/ Getting Started with Zephyr RTOS on Nordic nRF52832 hackaBLE]&lt;br /&gt;
* [https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html Removing the lock and installing another firmware on the nRF52832 using CMSIS-DAP dongle on Linux]&lt;br /&gt;
* [https://github.com/JF002/nrf52-baseproject/wiki/Build,-program-and-debug-NRF52-project-with-JLink,-CMake-and-CLion Build, program and debug NRF52 project with JLink, CMake and CLion]&lt;br /&gt;
* [https://www.nrbtech.io/blog/2020/1/4/using-clion-for-nordic-nrf52-projects Using CLion for Nordic nRF52 projects]&lt;br /&gt;
* [https://dev.to/aaronc81/flashing-your-pinetime-using-an-st-link-and-openocd-54dd Flashing your PineTime using an ST-Link and OpenOCD]&lt;br /&gt;
* [https://zephyrlabs.github.io/Watchfaces/ Zephyrlabs: just a bunch of watchfaces made for the pinetime]&lt;br /&gt;
* [https://pankajraghav.com/2021/04/03/PINETIME-STOPCLOCK.html Creating a stopwatch in Pinetime (with Infinitime)]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
&lt;br /&gt;
Note: The factory-default software on the PineTime does not auto-detect the display being disconnected when it has already booted. That can cause garbled output, to fix it just restart the PineTime.&lt;br /&gt;
&lt;br /&gt;
The display is driven using the ST7789 display controller. Use the following pins to drive the screen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PineTime pin&lt;br /&gt;
! ST7789 pin&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SCK (P0.02)&lt;br /&gt;
| SPI clock&lt;br /&gt;
|-&lt;br /&gt;
| LCD_SDI (P0.03)&lt;br /&gt;
| SPI MOSI&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RS (P0.18)&lt;br /&gt;
| Command/Data pin (CD)&lt;br /&gt;
|-&lt;br /&gt;
| LCD_CS (P0.25)&lt;br /&gt;
| Chip select&lt;br /&gt;
|-&lt;br /&gt;
| LCD_RESET (P0.26)&lt;br /&gt;
| Display reset&lt;br /&gt;
|-&lt;br /&gt;
| LCD_BACKLIGHT_{LOW,MID,HIGH}&lt;br /&gt;
| Backlight (active low)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Chip select must be held low while driving the display. It must be high when using other SPI devices on the same bus (such as external flash storage) so that the display controller won't respond to the wrong commands.&lt;br /&gt;
* SPI must be used in mode 3. Mode 0 (the default) won't work.&lt;br /&gt;
* LCD_BACKLIGHT_* is used to enable the backlight. Set at least one to low to see anything on the screen.&lt;br /&gt;
* Use SPI at 8MHz (the fastest clock available on the nRF52832) because otherwise refreshing will be super slow.&lt;br /&gt;
&lt;br /&gt;
'''References''':&lt;br /&gt;
&lt;br /&gt;
[https://github.com/adafruit/Adafruit-ST7735-Library/ Adafruit ST7789 driver in cpp]&lt;br /&gt;
&lt;br /&gt;
== Battery measurement ==&lt;br /&gt;
&lt;br /&gt;
Reading whether the PineTime has power attached is easy: simply read the charge indication pin (P0.12). When it is high it is running on battery, when it is low it is charging.&lt;br /&gt;
&lt;br /&gt;
Reading the battery voltage is a bit harder. For that you can use the battery voltage pin on P0.31 (AIN7). The returned value is 12 bits, which means it is 0..4095. You can get the measured voltage with the following formula, assuming a reference voltage of 3.3V (this is configurable in the ADC):&lt;br /&gt;
&lt;br /&gt;
 adcVoltage = adcValue / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
The measured voltage is actually half of the actual battery voltage, because the ADC is connected between a voltage divider where both resistors are 1MΩ. This can be corrected by multiplying the value:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2 / (4095 / 3.3)&lt;br /&gt;
&lt;br /&gt;
It's often better to avoid floating point values on embedded systems and in this case there is no reason to use float at all, we can just represent the value in millivolts. Therefore the formula can be simplified to:&lt;br /&gt;
&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / (4095 / 3.3)&lt;br /&gt;
 batteryVoltage = adcValue * 2000 / 1241&lt;br /&gt;
&lt;br /&gt;
Converting this voltage to an estimated capacity in percent requires a more complicated algorithm, because Lithium-ion batteries have a non-linear discharge curve.&lt;br /&gt;
&lt;br /&gt;
== Button ==&lt;br /&gt;
&lt;br /&gt;
The button on the side of the PineTime is disabled by default. To enable it, drive the button out pin (P0.15) high.&lt;br /&gt;
&lt;br /&gt;
While enabled, the button in pin (P0.13) will be high when the button is pressed, and low when it is not pressed.&lt;br /&gt;
&lt;br /&gt;
== Watch band ==&lt;br /&gt;
&lt;br /&gt;
The PineTime uses a standard 20mm watch band / strap. There is a [https://forum.pine64.org/showthread.php?tid=9392&amp;amp;pid=81902 thread] in the forum discussing this.&lt;br /&gt;
&lt;br /&gt;
== Touch panel ==&lt;br /&gt;
&lt;br /&gt;
The touch panel is controlled by a Hynitron CST816S chips. Unfortunately, there is not much information about this chip on the internet apart from the datasheet below and a [https://github.com/lupyuen/hynitron_i2c_cst0xxse/ reference driver]. This is enough to implement a basic driver, but crucial information needed to implement advanced functionalities are missing (I²C protocol and registers, timings, power modes,...).&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.10 : Reset&lt;br /&gt;
* P0.28 : Interrupt (signal to the CPU when a touch event is detected)&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
&lt;br /&gt;
=== I²C ===&lt;br /&gt;
&lt;br /&gt;
* Device address : 0x15&lt;br /&gt;
* Frequency : from 10Khz to 400Khz&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The controller go to sleep when no event is detected. In sleep mode, the controller does not communicate on the I²C bus (it appears disconnected). So, for the communication to work, you need to tap on the screen so that the chip wakes-up.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: ''' The I²C bus, also known as TWI bus has known issues, make sure to write your TWI driver with timeouts.&lt;br /&gt;
&lt;br /&gt;
=== Touch events ===&lt;br /&gt;
&lt;br /&gt;
Touch information is available from the 63 first registers of the controller. Remember: the device is in sleep mode when no touch event is detected. It means that you can read the register only when the touch controller detected an event. You can use the ''Interrupt'' pin to detect such event in the software. &lt;br /&gt;
&lt;br /&gt;
These 63 bytes contain up to 10 touch point (X, Y, event type, pressure,...) : &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte&lt;br /&gt;
! Bit7&lt;br /&gt;
! Bit6&lt;br /&gt;
! Bit5&lt;br /&gt;
! Bit4&lt;br /&gt;
! Bit3&lt;br /&gt;
! Bit2&lt;br /&gt;
! Bit1&lt;br /&gt;
! Bit0&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|?&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|GestureID : (Gesture code ,&lt;br /&gt;
&lt;br /&gt;
0x00: no gesture,&lt;br /&gt;
&lt;br /&gt;
0x01: Slide down,&lt;br /&gt;
&lt;br /&gt;
0x02: Slide up,&lt;br /&gt;
&lt;br /&gt;
0x03: Slide left,&lt;br /&gt;
&lt;br /&gt;
0x04: Slide right,&lt;br /&gt;
&lt;br /&gt;
0x05: Single click,&lt;br /&gt;
&lt;br /&gt;
0x0B: Double click,&lt;br /&gt;
&lt;br /&gt;
0x0C: Long press) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|? &lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Number of touch points &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Event (0 = Down, 1 = Up, 2 = Contact)&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|X (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|X (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|?&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Touch ID&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|Y (MSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Y (LSB) coordinate&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Pressure (?)&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;|Miscellaneous (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bytes 3 to 8 are repeated 10 times (10*6 + 3 = 63 bytes).&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
* The touch controller seems to report only 1 touch point&lt;br /&gt;
* Fields X, Y, Number of touch points and touch ID are updated. The others are always 0.&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
The reference driver specifies some registers and value, but there is no information about them: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!Register&lt;br /&gt;
!Address&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_INT_CNT&lt;br /&gt;
|0x8F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FLOW_WORK_CNT&lt;br /&gt;
|0x91&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_WORKMODE &lt;br /&gt;
|0x00&lt;br /&gt;
|0 = WORK, 0x40 = FACTORY&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID&lt;br /&gt;
|0xA3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHIP_ID2&lt;br /&gt;
|0x9F&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_POWER_MODE&lt;br /&gt;
|0xA5&lt;br /&gt;
|0x03 = SLEEP (reset the touchpanel using the reset pin before using this register : pin_low, delay 5ms, pin_high, delay 50ms then write 3 to register 0xA5)&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FW_VER&lt;br /&gt;
|0xA6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_VENDOR_ID&lt;br /&gt;
|0xA8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_LCD_BUSY_NUM&lt;br /&gt;
|0xAB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_FACE_DEC_MODE_EN&lt;br /&gt;
|0xB0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GLOVE_MODE_EN&lt;br /&gt;
|0xC0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_COVER_MODE_EN&lt;br /&gt;
|0xC1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_CHARGER_MODE_EN&lt;br /&gt;
|0x8B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_EN&lt;br /&gt;
|0xD0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_GESTURE_OUTPUT_ADDRESS&lt;br /&gt;
|0xD3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|HYN_REG_ESD_SATURATE 0xED&lt;br /&gt;
|0xED&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''WARNING : ''' &amp;lt;del&amp;gt;Writing the SLEEP command (write 0x05 in HYN_REG_POWER_MODE) seems to freeze the controller (it returns only static values) until the battery is totally drained and the whole system reset. Analysis and debugging is more than welcome!&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Accelerometer==&lt;br /&gt;
The on board accelerometer in devices shipped before July 2021 is a Bosch BMA421, connected to the I2C bus.&lt;br /&gt;
Devices shipped after July 2021 use a Bosch BMA425 accelerometer.&lt;br /&gt;
&lt;br /&gt;
=== Pins ===&lt;br /&gt;
&lt;br /&gt;
* P0.06 : I²C SDA&lt;br /&gt;
* P0.07 : I²C SCL&lt;br /&gt;
* P0.08 : Interrupt&lt;br /&gt;
&lt;br /&gt;
I2C Device address : 0x18&lt;br /&gt;
&lt;br /&gt;
= Screen protectors =&lt;br /&gt;
&lt;br /&gt;
* [https://www.protectionfilms24.com/article/2x-vikuiti-screen-protector-cv8-pine64-pinetime-442381.html Vikuiti screen protector CV8 (2pcs)]&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinetime-1642381.html Savvies SU75 UltraClear Screen Protector (6pcs)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinetime-2342381.html (18pcs)]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
There are no cases for PineTime yet, but some cases for Fitbit are suitable for it. Cases for Fitbit have one microphone hole, which is unnecessary for the PineTime, but otherwise they fit perfectly.&lt;br /&gt;
&lt;br /&gt;
* [https://www.aliexpress.com/item/1005003150606521.html Soft TPU case for Fitbit Versa 2/Versa Lite from AliExpress]&lt;br /&gt;
&lt;br /&gt;
= Datasheets, Schematics and Certifications=&lt;br /&gt;
&lt;br /&gt;
== Schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Schematic-V1.0a-20191103.pdf PineTime Schematic ver1.0a]&lt;br /&gt;
* [https://files.pine64.org/doc/PineTime/PineTime%20Port%20Assignment%20rev1.0.pdf PineTime GPIO Port Assignment ver1.0]&lt;br /&gt;
&lt;br /&gt;
Note: The part number for the SPI FLASH in the schematic diagram is not correct, the PineTime features a larger external FLASH device, see below.&lt;br /&gt;
&lt;br /&gt;
== Chip Datasheets ==&lt;br /&gt;
* NORDIC nRF52832 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf nRF52832 Product Brief]&lt;br /&gt;
** [https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf nRF52832 Product Specification v1.4]&lt;br /&gt;
* ARMv7-M information:&lt;br /&gt;
** [https://static.docs.arm.com/ddi0403/eb/DDI0403E_B_armv7m_arm.pdf ARMv7-M Architecture Reference Manual]&lt;br /&gt;
&lt;br /&gt;
== Component Datasheets ==&lt;br /&gt;
* PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGM40561.pdf SGMicro SGM40561 Single Cell Charger Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/SGMICRO-SGM2036.pdf SGMicro SGM2036 3.3V Low Power Low Dropout RF Linear Regulator Datasheet]&lt;br /&gt;
* SPI Flash information:&lt;br /&gt;
** [https://www.elnec.com/en/device/XTX/XT25F32B+%28QuadSPI%29+%5BSOP8-200%5D/ XTX XT25F32B 32Mb(4MB) SPI NOR Flash] (data sheets for this part are hard to find but it acts similar to other QuadSPI SPI NOR Flash such as [https://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf Macronix 32Mb(4MB) SPI NOR Flash])&lt;br /&gt;
** [https://datasheet.lcsc.com/szlcsc/2005251035_XTX-XT25F32BSOIGU-S_C558851.pdf XTX XT25F32B]&lt;br /&gt;
** IDs for XT25F32B are: manufacturer (0x0b), device (0x15), memory type (0x40), density (0x16)&lt;br /&gt;
* LCD Panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20LCD%20Panel.jpg 1.3&amp;quot; 240x240 IPS LCD Panel Specification for PineTime]&lt;br /&gt;
** [https://wiki.pine64.org/images/5/54/ST7789V_v1.6.pdf 11.6&amp;quot; Sitronix LCD Driver/Controller Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/PineTime%20Touch%20Panel.jpg Touchpad Specification for PineTimel]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/CST816S数据手册V1.1.pdf 11.6&amp;quot; Hynitron CST816S Capacitive Touch Controller Datasheet in Chinese]&lt;br /&gt;
** [https://wiki.pine64.org/images/2/2f/CST816S.zip Touch Controller Datasheet en]&lt;br /&gt;
* Sensor:&lt;br /&gt;
** [https://datasheet.lcsc.com/lcsc/1912111437_Bosch-Sensortec-BMA425_C437656.pdf BOSCH BMA425 Triaxial Acceleration Sensor Datasheet on current PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/BST-BMA421-FL000.pdf BOSCH BMA421 Triaxial Acceleration Sensor Product Brief on early PineTime device]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinetime/HRS3300%20Heart%20Rate%20Sensor.pdf TianYiHeXin HRS3300 PPG Heart Rate Sensor Data Sheet]&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
** [https://files.pine64.org/doc/cert/FCC_Grant_PineTime_2AWAG-PINETIME_DTS.pdf PineTime FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/CTL2203033031-W%20RED%20Certificate.pdf PineTime CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Manuals ==&lt;br /&gt;
* [[:File:PineTime Quick Start Guide.pdf|PineTime Quick Start Guide]]&lt;br /&gt;
&lt;br /&gt;
= Community case design =&lt;br /&gt;
* [https://www.thingiverse.com/thing:4172849 PineTime Smart Watch case by dara0s at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4651462 PineTime dev kit back fix by joaquimorg at thingiverse]&lt;br /&gt;
* [https://www.thingiverse.com/thing:4763267 PineTime dev kit charging holder v4 by zevix81 at thingiverse]&lt;br /&gt;
* [https://www.prusaprinters.org/prints/88913-pinetime-charger-case PineTime Charger Travel Case by brett at PrusaPrinters]&lt;br /&gt;
[[Category:PineTime]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone&amp;diff=15448</id>
		<title>PinePhone</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone&amp;diff=15448"/>
		<updated>2023-01-13T14:38:15Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:PinePhone Beta Edition.png|400px|thumb|right|Rendering of the PinePhone Beta Edition]]&lt;br /&gt;
&lt;br /&gt;
The '''PinePhone''' is a smartphone created by PINE64. It is capable of running mainline Linux and is supported by many partner projects.&lt;br /&gt;
&lt;br /&gt;
The Braveheart Edition of the PinePhone was the first publicly available version of the phone. It shipped without a fully functional operating system and was geared specifically towards early adopters. The Braveheart Edition's successors were the Community Editions, which featured a branded backcover and box of selected community projects. The Community Editions became available in June 2020. The Beta Edition featuring Manjaro with Plasma Mobile is the latest edition, it became available in March 2021.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The PinePhone is not a regular phone and you might not get the latest and greatest hardware and this years' newest innovation. You will get a device with good mainline support with a great community behind it.&lt;br /&gt;
&lt;br /&gt;
=== State of the software ===&lt;br /&gt;
&lt;br /&gt;
First things first, the PinePhone is aimed solely at early adopters - more specifically, the units are solely intended to find their way into the hands of users with extensive operating system experience.&lt;br /&gt;
&lt;br /&gt;
Bear in mind that the software for these smartphones is very early, with most of the software being in alpha or beta state. That's especially also the case for scalability of applications, their availability and practicability, any hardware function implementations and the firmware. The software is provided as is. There is no warranty for the software, not even for merchantability or fitness for a particular purpose.&lt;br /&gt;
&lt;br /&gt;
If you have any questions regarding the current state of the software or of specific features working, please don't hesitate to ask in the community chat (see [[Main Page#Community and Support]])!&lt;br /&gt;
&lt;br /&gt;
=== Help and support ===&lt;br /&gt;
&lt;br /&gt;
Still have any questions regarding software, shipping, or ordering after reading this wiki? Please don't hesitate to contact the community in the bridged community channels for detailed answers or simply to chat with friendly people in the community! See [[Main Page#Community and Support]].&lt;br /&gt;
&lt;br /&gt;
Please keep in mind that PINE64 is not like a regular company (see the [https://www.pine64.org/philosophy/ PINE64 philosophy]) and that support resources are limited - the best way to get support quickly is to ask in the community chat! Please only contact the PINE64 support directly if questions couldn't be solved via the community chat or this wiki.&lt;br /&gt;
&lt;br /&gt;
== First time installation ==&lt;br /&gt;
[[File:Pinephone_warning.png|320px|thumb|right|A protection foil isolates the battery for the shipping.]]&lt;br /&gt;
&lt;br /&gt;
When shipped the battery is isolated from the device using a protective plastic tab, which is required to be removed before using the phone. The battery '''will not''' charge or boot until it is removed and the battery is connected again.&lt;br /&gt;
&lt;br /&gt;
{{Info|To remove the sticker after unboxing the phone: Carefully remove the back panel using the notch in the corner of the back cover without overbending it. Then remove the battery. Peel off the clear plastic sticker below it, which isolates the charging contacts and reinsert the battery.}}&lt;br /&gt;
&lt;br /&gt;
The PinePhone's SIM slot only accepts a micro-SIM, please do not insert a nano-SIM without an adapter and make sure that the nano-SIM does not get released from its adapter. The SIM card has to be placed in the lower slot, while the microSD has to be placed in the upper slot.&lt;br /&gt;
&lt;br /&gt;
{{Info|Do not insert an empty micro-SIM adapter into the phone and do not release the nano-SIM inside the adapter, as it will get stuck on the contact pins. If the nano-SIM got released inside the adapter inside the phone, carefully reinsert the nano-SIM card without moving the adapter. In that case do not pull on the empty adapter as it will get stuck on the contact pins and damage them!}}&lt;br /&gt;
&lt;br /&gt;
[[File:Pinephone slots.png|600px|thumb|none|The microSD belongs in the upper slot, the micro-SIM in the lower slot.]]&lt;br /&gt;
&lt;br /&gt;
An adapter from a nano to a micro-SIM might be included under tape in the camera notch of the phone's packaging. Some nano-SIMs will not fit firmly into that adapter that comes with the PinePhone and if the included adapter is used without a well-fitting nano-SIM, the contact pins might get damaged. In that case it is highly recommended to acquire a better fitting adapter.&lt;br /&gt;
&lt;br /&gt;
== Operating systems ==&lt;br /&gt;
&lt;br /&gt;
The PinePhone will automatically boot from microSD if a bootable card is inserted. Although it is technically possible to use any ARM distribution (because the PinePhone uses the mainline kernel), there are a few that are designed specifically for mobile use on devices like the PinePhone.&lt;br /&gt;
&lt;br /&gt;
=== Software releases ===&lt;br /&gt;
&lt;br /&gt;
The [[PinePhone Software Releases]] page has a complete list of currently supported phone-optimized Operating System images that work with the PinePhone as well as other related software information. As soon as more patches get mainlined and distributions ship with the updated kernel, they will also be able to run unmodified on the device. To update any installed operating system please see [[PinePhone Updating Instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Installation instructions ===&lt;br /&gt;
&lt;br /&gt;
For instructions on how to install the operating systems to the eMMC or SD card see [[PinePhone Installation Instructions]].&lt;br /&gt;
&lt;br /&gt;
Relevant subsections of the article for installing OSes to the PinePhone are:&lt;br /&gt;
&lt;br /&gt;
* [[PinePhone Installation Instructions#Boot_priority|Boot priority]]&lt;br /&gt;
* [[PinePhone Installation Instructions#Installation_to_the_microSD|Installation to the microSD]]&lt;br /&gt;
* [[PinePhone Installation Instructions#Installation_to_the_eMMC|Installation to the eMMC]]&lt;br /&gt;
* [[PinePhone Installation Instructions#Resize_partition_to_fit_disk_space|Resize partition to fit disk space]]&lt;br /&gt;
* [[PinePhone Installation Instructions#Reuse_SD_card_for_data_storage_on_system_booting_from_eMMC|Reuse SD card for data storage on system booting from eMMC]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
* '''Dimensions:''' 160.5 x 76.6 x 9.2mm&lt;br /&gt;
* '''Weight:''' Between 180 ~ 200 grams&lt;br /&gt;
* '''SIM Card:''' Micro-SIM&lt;br /&gt;
* '''Display:'''&lt;br /&gt;
** '''Size:''' 5.95 inches (151mm) diagonal&lt;br /&gt;
** '''Type:''' HD IPS capacitive touchscreen, 16M colors&lt;br /&gt;
** '''Resolution:''' 1440x720, 18:9 ratio&lt;br /&gt;
* '''System on Chip:''' [https://linux-sunxi.org/A64 Allwinner A64]&lt;br /&gt;
* '''RAM:''' 2GB or 3GB LPDDR3 SDRAM&lt;br /&gt;
* '''Internal Storage:''' 16GB or 32GB eMMC, extendable up to 2TB via microSD, supports SDHC and SDXC&lt;br /&gt;
* '''Back [[#Camera|Camera]]:''' Single 5MP, 1/4&amp;quot;, LED Flash&lt;br /&gt;
* '''Front Camera:''' Single 2MP, f/2.8, 1/5&amp;quot;&lt;br /&gt;
* '''Sound:''' Loudspeaker, 3.5mm jack &amp;amp; mic (jack doubles as hardware UART if hardware switch 6 is deactivated)&lt;br /&gt;
* '''Communication:'''&lt;br /&gt;
** '''[[#Modem|Modem]]:''' [https://www.quectel.com/product/lte-eg25-g/ Quectel EG25-G]&lt;br /&gt;
** '''LTE-FDD''': B1, B2, B3, B4, B5, B7, B8, B12, B13, B18, B19, B20, B25, B26, B28&lt;br /&gt;
** '''LTE-TDD''': B38, B39, B40, B41&lt;br /&gt;
** '''WCDMA''': B1, B2, B4, B5, B6, B8, B19&lt;br /&gt;
** '''GSM''': B2, B3, B5, B8 (850, 900, 1800, 1900 MHz)&lt;br /&gt;
** '''WLAN:''' Wi-Fi 802.11 b/g/n, single-band, hotspot&lt;br /&gt;
** '''Bluetooth:''' 4.0, A2DP&lt;br /&gt;
** '''GNSS:''' GPS/GLONASS/BeiDou/Galileo/QZSS, with A-GPS&lt;br /&gt;
* '''Sensors:''' Accelerometer, gyroscope, proximity, ambient light, compass&lt;br /&gt;
* '''Privacy switches:''' Modem, WiFi &amp;amp; Bluetooth, Microphone, Cameras&lt;br /&gt;
* '''[[#Battery|Battery]]:''' Lithium-ion, rated capacity 2800mAh (10.64Wh), typical capacity 3000mAh (11.40Wh) (nominally replaceable with any Samsung J7 form-factor battery)&lt;br /&gt;
* '''I/O:''' USB Type-C, USB Host, DisplayPort Alternate Mode output, 15W 5V 3A Quick Charge, follows USB PD specification&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Component&lt;br /&gt;
! Model&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen&lt;br /&gt;
| Goodix GT917S&lt;br /&gt;
|-&lt;br /&gt;
| Rear camera&lt;br /&gt;
| OmniVision OV5640&lt;br /&gt;
|-&lt;br /&gt;
| Camera flash&lt;br /&gt;
| SGMICRO SGM3140&lt;br /&gt;
|-&lt;br /&gt;
| Front camera&lt;br /&gt;
| GalaxyCore GC2145&lt;br /&gt;
|-&lt;br /&gt;
| LCD&lt;br /&gt;
| Xingbangda XBD599&lt;br /&gt;
|-&lt;br /&gt;
| WiFi&lt;br /&gt;
| Realtek RTL8723CS&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth&lt;br /&gt;
| Realtek RTL8723CS&lt;br /&gt;
|-&lt;br /&gt;
| Modem&lt;br /&gt;
| [http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf Quectel EG25-G]&lt;br /&gt;
|-&lt;br /&gt;
| GNSS/GPS&lt;br /&gt;
| [http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf Quectel EG25-G]&lt;br /&gt;
|-&lt;br /&gt;
| Magnetometer&lt;br /&gt;
| ST LIS3MDL&lt;br /&gt;
|-&lt;br /&gt;
| Ambient light / Proximity&lt;br /&gt;
| SensorTek STK3335&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer / Gyroscope&lt;br /&gt;
| InvenSense MPU-6050&lt;br /&gt;
|-&lt;br /&gt;
| Vibration motor&lt;br /&gt;
| Unknown model&lt;br /&gt;
|-&lt;br /&gt;
| Notification LED&lt;br /&gt;
| LED0603RGB&lt;br /&gt;
|-&lt;br /&gt;
| Volume buttons&lt;br /&gt;
| Buttons connected to the KEYADC&lt;br /&gt;
|-&lt;br /&gt;
| Power button&lt;br /&gt;
| X-Powers AXP803&lt;br /&gt;
|-&lt;br /&gt;
| Battery fuel gauge&lt;br /&gt;
| X-Powers AXP803&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See the [[PinePhone_component_list|PinePhone Component List]].&lt;br /&gt;
&lt;br /&gt;
== Hardware revisions ==&lt;br /&gt;
&lt;br /&gt;
[[File:Pinephone_revisions.png|400px|thumb|right|The history of the PinePhone CEs]]&lt;br /&gt;
&lt;br /&gt;
The following are all hardware revisions of the PinePhone that have existed, ordered by the time of their releases:&lt;br /&gt;
&lt;br /&gt;
* [[Project Anakin]]&lt;br /&gt;
* [[Project Don't be evil|&amp;quot;Project Don't Be Evil&amp;quot;]] &amp;amp;ndash; development kit (devkit)&lt;br /&gt;
* [[PinePhone v1.0 - Dev|PinePhone v1.0]] &amp;amp;ndash; developer batch&lt;br /&gt;
* [[PinePhone v1.1 - Braveheart|PinePhone v1.1]] &amp;amp;ndash; Braveheart&lt;br /&gt;
* [[PinePhone v1.2‎]] &amp;amp;ndash; Ubports Community Edition&lt;br /&gt;
* [[PinePhone v1.2a]] &amp;amp;ndash; postmarketOS Community Edition&lt;br /&gt;
* [[PinePhone v1.2b]] &amp;amp;ndash; Manjaro Community Edition, KDE Community Edition, Mobian Community Edition and Beta Edition&lt;br /&gt;
&lt;br /&gt;
== Hardware accessory ==&lt;br /&gt;
&lt;br /&gt;
=== Add-ons ===&lt;br /&gt;
The PinePhone (and PinePhone Pro) is compatible with the official add-on cases, such as the keyboard, the LoRa add-on, the Qi wireless charging add-on and the fingerprint reader add-on. Details can be found under:&lt;br /&gt;
&lt;br /&gt;
* [[PinePhone (Pro) Add-ons]]&lt;br /&gt;
* [[PinePhone (Pro) Keyboard]]&lt;br /&gt;
&lt;br /&gt;
=== PinePhone Accessories ===&lt;br /&gt;
See [[PinePhone Hardware Accessory Compatibility]] for a list of devices working with the PinePhone (depending on their OS support).&lt;br /&gt;
&lt;br /&gt;
The USB-C can be used to power the device, and offers USB2 host and OTG capabilities, and also can make use of the USB-C capability to integrate HDMI signals. Some USB-C hubs are available that offer power throughput, USB connection, an HDMI port and Ethernet connection.&lt;br /&gt;
&lt;br /&gt;
=== Pogo pins ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinephone pogo.png|400px|thumb|right|The pogo pins, as visible under the back cover.]]&lt;br /&gt;
&lt;br /&gt;
The PinePhone has six pogo pins on the back allowing for custom hardware extensions such as wireless charging, an IR blaster, a keyboard extension or extended battery case. The pogo pins provide access to an interrupt line, power inputs/outputs and an I2C interface.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Interrupt&lt;br /&gt;
| SDA&lt;br /&gt;
| SCL&lt;br /&gt;
|-&lt;br /&gt;
| DCIN&lt;br /&gt;
| USB-5V&lt;br /&gt;
| GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
DCIN and USB-5V are the names used in the schematics. The actual behavior of these pogo pins is not obvious based on their names. DCIN is connected both to the VBUS line of the USB Type-C connector and to the ACIN/VBUS inputs on the PMIC. This means that, depending on a number of factors, DCIN may be at 0&amp;amp;nbsp;V or 5&amp;amp;nbsp;V. USB-5V is connected at the output of an LP6226 DC/DC boost converter (5&amp;amp;nbsp;V), which in turn is fed by the PS output of the PMIC. The boost converter is enabled or disabled by a GPIO output from the A64 SoC, controlled by software (e.g. the Linux kernel). Depending on inputs and decision made by the PMIC, PS may be at the battery voltage (fed &amp;quot;directly&amp;quot; by the battery through a [https://www.zxcompo.com/ transistor] controlled by the PMIC), or at the &amp;quot;USB&amp;quot; voltage (fed by the PMIC's ACIN/VBUS inputs). This means that depending on a number of factors, USB-5V may be at battery voltage (between 3.0&amp;amp;nbsp;V and 4.3&amp;amp;nbsp;V), or at 5&amp;amp;nbsp;V.&lt;br /&gt;
&lt;br /&gt;
Because the PinePhone may act as a USB host (providing 5&amp;amp;nbsp;V at the USB Type-C connector's VBUS to a connected device) or as a USB device (drawing from a 5&amp;amp;nbsp;V source on the USB Type-C connector's VBUS), DCIN is actually not strictly an input nor an output. Some community analysis of the PinePhone schematic (and some testing) indicates that you can connect a 5&amp;amp;nbsp;V power supply to DCIN in order to power the phone at the PMIC's ACIN/VBUS inputs (and, as a side effect, charge the battery). This may not be safe to do in all conditions, e.g., when the phone is acting as a USB host to a connected USB device. It should also be safe to use DCIN as a power output from the PinePhone, e.g., when a USB Type-C charger is connected, you can draw current directly from the USB Type-C port's VBUS, which is provided by the charger. Please note that, when using DCIN as an output from the PinePhone, DCIN isn't &amp;quot;always on&amp;quot;; it may be 0&amp;amp;nbsp;V. It is currently not documented on how much current can be safely drawn.&lt;br /&gt;
&lt;br /&gt;
USB-5V should be safe to use as an &amp;quot;always on&amp;quot; power output from the PinePhone. Depending on a number of factors, voltage may be from 3&amp;amp;nbsp;V to 5&amp;amp;nbsp;V; thus, if you are using USB-5V to power your pogo-pins expansion board, you will probably need to use DC/DC converters/regulators as appropriate. USB-5V is on even while the A64 SoC is powered down.&lt;br /&gt;
&lt;br /&gt;
The I2C and interrupt lines have pull-ups on the phone side. The I2C lines are pulled up to 3v3 by the phone.&lt;br /&gt;
&lt;br /&gt;
For a breakout board see [https://github.com/SMR404/PinephonePogoBreakout here]. For an example project see Martijn's blog post [https://blog.brixit.nl/making-a-backcover-extension-for-the-pinephone/ &amp;lt;i&amp;gt;&amp;quot;Making a backcover extension for the PinePhone&amp;quot;&amp;lt;/i&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
PINE64 store currently sells the [https://pine64.com/product/pinephone-flex-break-out-board/?v=0446c16e2e66 PinePhone Flex Breakout Board]. With the pitch being 2.54 mm, this Flex Breakout Board may have leads soldered directly to the contacts for use in a solderless board. A non-soldered solution would be to use a [https://www.digikey.com/en/products/detail/te-connectivity-amp-connectors/5-520315-6/2258879 TE AMP Connector] that will accept a Flat Flexible Cable 2.54 mm pitch.&lt;br /&gt;
&lt;br /&gt;
=== Back cover ===&lt;br /&gt;
A step file for the back cover for creating custom cases is freely available [https://files.pine64.org/doc/PinePhone/PinePhone%20Back%20Cover%20ver%200.5.stp here].&lt;br /&gt;
&lt;br /&gt;
=== Serial console ===&lt;br /&gt;
&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter.]]&lt;br /&gt;
&lt;br /&gt;
The PinePhone has a serial port in the headphone connector, it's activated by the 6th contact on the dipswitch. If the switch is set to &amp;quot;on&amp;quot;, the headphone connector is in audio mode, if it is set to &amp;quot;off&amp;quot; it's in UART mode. The UART serial connection can also be used for communication with other devices from the PinePhone.&lt;br /&gt;
&lt;br /&gt;
The UART is 115200n8.&lt;br /&gt;
&lt;br /&gt;
The pinout for the serial connector is:&lt;br /&gt;
&lt;br /&gt;
* Tip: RX&lt;br /&gt;
* Ring: TX&lt;br /&gt;
* Sleeve: GND&lt;br /&gt;
&lt;br /&gt;
You can buy a serial debug cable from the [https://pine64.com/product/pinebook-pinephone-pinetab-serial-console/ PINE64 Store]. The store cable uses a 4 ring plug, as seen in the [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf here], but a 3 ring plug works just as well. The cable uses a CH340 chipset based serial to USB converter, but any 3.3v serial connection can be used. Because it is a &amp;quot;host&amp;quot;/DTE it means that you need a ''cross modem cable'' ([https://en.wikipedia.org/wiki/Null_modem Null Modem]) with TX on Tip to be connected to RX. A cable like e.g. [https://www.ftdichip.com/Products/Cables/USBTTLSerial.htm FTDI TTL-232R-3V3-AJ] which has TX on Tip and RX on Ring fits perfectly.&lt;br /&gt;
&lt;br /&gt;
== Privacy switch configuration ==&lt;br /&gt;
&lt;br /&gt;
[[File:PinePhone Kill Interruptors de Maquinari del PinePhone 4529.jpg|320px|thumb|right|Picture of the privacy switches]]&lt;br /&gt;
&lt;br /&gt;
The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their &amp;quot;on&amp;quot; position is toward the top of the phone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number&lt;br /&gt;
! Name&lt;br /&gt;
! Explanation&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modem&lt;br /&gt;
| Pulls Q1501 gate up (FET killing modem power)&lt;br /&gt;
| &amp;quot;On&amp;quot; enables 2G/3G/4G communication and GNSS hardware, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| WiFi / Bluetooth&lt;br /&gt;
| Pulls up CHIP_EN&lt;br /&gt;
| &amp;quot;On&amp;quot; enables WiFi and Bluetooth communication hardware, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Microphone&lt;br /&gt;
| Breaks microphone bias voltage from the SoC&lt;br /&gt;
| &amp;quot;On&amp;quot; enables audio input from on-board microphones (not 3.5 mm jack), &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Rear camera&lt;br /&gt;
| Pulls up PWDN on OV5640&lt;br /&gt;
| &amp;quot;On&amp;quot; enables the rear camera, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Front camera&lt;br /&gt;
| Pulls up PWDN on GC2145&lt;br /&gt;
| &amp;quot;On&amp;quot; enables the front camera, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Headphone&lt;br /&gt;
| Pulls up IN2 on analog switch BCT4717ETB&lt;br /&gt;
| &amp;quot;On&amp;quot; enables audio input and output via the 3.5 mm audio jack, &amp;quot;off&amp;quot; switches the jack to hardware UART mode.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Camera ==&lt;br /&gt;
&lt;br /&gt;
The PinePhone has two cameras, OmniVision OV5640 with 5MP (up to 2592 x 1944 pixels) as rear camera and GalaxyCore GC2145 with 2MP (up to 1600 x 1200 pixels) as front camera.&lt;br /&gt;
&lt;br /&gt;
[[File:Rose.jpg|400px|thumb|none|Example picture taken on the PinePhone's rear camera by Martijn Braam using his app ''Megapixels''.]]&lt;br /&gt;
&lt;br /&gt;
Further details regarding the camera and the Megapixels camera app can be found on [https://blog.brixit.nl/tag/phones/ Martijn's blog].&lt;br /&gt;
&lt;br /&gt;
== Battery ==&lt;br /&gt;
{{Hint|The EG25-G modem and the RTL8723CS WiFi and Bluetooth combo do not work without battery power, even when enough power is supplied to the PinePhone via the USB Type-C port.}}&lt;br /&gt;
&lt;br /&gt;
The phone ships with a protective plastic sticker between the battery and the phone to protect the device from turning on during shipping. You need to gently open the back cover, then remove the battery and finally remove the sticker and check that the pins aren't bent. Note: If the battery is stuck inside the phone, the mid screw in the lower part of the midframe needs to be slightly loosened, see [[PinePhone_FAQ#The_battery_is_stuck_inside_the_phone|here]].&lt;br /&gt;
&lt;br /&gt;
The [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery%20Specification.pdf supplied battery] is meant to be compatible with Samsung part number EB-BJ700BBC / BBE / CBE from the 2015 J7 phone. The extended life aftermarket BBU does fit, although it is a tight fit.&lt;br /&gt;
&lt;br /&gt;
The battery terminals, from the nearest to the battery edge to the nearest to the middle of battery, are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;min-width: 90px; text-align: center;&amp;quot; | +ve&lt;br /&gt;
| style=&amp;quot;min-width: 90px; text-align: center;&amp;quot; | thermistor&lt;br /&gt;
| style=&amp;quot;min-width: 90px; text-align: center;&amp;quot; | -ve&lt;br /&gt;
| style=&amp;quot;min-width: 90px; text-align: center;&amp;quot; | not connected&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The battery includes a protection circuit that isolates it in a number of fault conditions, including if it is discharged too far. The fully discharged battery can be recharged by connecting the phone to a charger with a sufficient output. Once it has charged sufficiently you will be able to boot the phone.&lt;br /&gt;
&lt;br /&gt;
== Modem ==&lt;br /&gt;
&lt;br /&gt;
The PinePhone uses Quectel EG25-G as modem. AT commands are used to communicate with the modem.&lt;br /&gt;
&lt;br /&gt;
=== AT commands ===&lt;br /&gt;
&lt;br /&gt;
A list of documented AT commands can be found for example in this [[:File:Quectel_EC2x&amp;amp;EG9x&amp;amp;EG2x-G&amp;amp;EM05_Series_AT_Commands_Manual_V2.0.pdf|AT commands documentation]] from Quectel. Further undocumented AT commands found by the developer megi, who reverse-engineered parts of the modem and its firmware, can be found on megi's website [http://xnux.eu/devices/feature/modem-pp-reveng.html#toc-un-der-documented-at-commands here].&lt;br /&gt;
&lt;br /&gt;
To send AT commands to the modem under Linux, &amp;lt;code&amp;gt;minicom&amp;lt;/code&amp;gt; or the often-preinstalled &amp;lt;code&amp;gt;atinout&amp;lt;/code&amp;gt; utility:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;atinout&amp;lt;/i&amp;gt; example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
atinout - /dev/EG25.AT out.txt &amp;lt;&amp;lt; EOF&lt;br /&gt;
&amp;gt; AT+... command here&lt;br /&gt;
&amp;gt; EOF&lt;br /&gt;
cat ./out.txt # to see the result of a command execution&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;minicom&amp;lt;/i&amp;gt; example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;minicom -D /dev/ttyUSB2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VoLTE ===&lt;br /&gt;
&lt;br /&gt;
The PinePhone's modem supports VoLTE and comes with a few VoLTE profiles preloaded. Most OSes try to set the correct profile automatically.&lt;br /&gt;
&lt;br /&gt;
To list the available VoLTE profiles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AT+QMBNCFG=&amp;quot;list&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,0,1,1,&amp;quot;ROW_Generic_3GPP&amp;quot;,0x0501081F,201901141&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,1,0,0,&amp;quot;VoLTE-ATT&amp;quot;,0x0501033C,201909271&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,2,0,0,&amp;quot;hVoLTE-Verizon&amp;quot;,0x05010141,201911251&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,3,0,0,&amp;quot;Sprint-VoLTE&amp;quot;,0x05010205,201908141&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,4,0,0,&amp;quot;Commercial-TMO_VoLTE&amp;quot;,0x05010505,201811231&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,5,0,0,&amp;quot;Telus-Commercial_VoLTE&amp;quot;,0x05800C43,201912031&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,6,0,0,&amp;quot;Commercial-SBM&amp;quot;,0x05011C18,201904021&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,7,0,0,&amp;quot;Commercial-DT&amp;quot;,0x05011F1C,201905311&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,8,0,0,&amp;quot;Reliance_OpnMkt&amp;quot;,0x05011B38,201910161&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,9,0,0,&amp;quot;TF_Germany_VoLTE&amp;quot;,0x05010C1B,201909201&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,10,0,0,&amp;quot;TF_Spain_VoLTE&amp;quot;,0x05010CFA,201909261&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,11,0,0,&amp;quot;Volte_OpenMkt-Commercial-CMCC&amp;quot;,0x05012071,201904281&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,12,0,0,&amp;quot;OpenMkt-Commercial-CT&amp;quot;,0x05011322,201911081&lt;br /&gt;
+QMBNCFG: &amp;quot;List&amp;quot;,13,0,0,&amp;quot;OpenMkt-Commercial-CU&amp;quot;,0x05011505,201807052&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To select a profile manually, select the best fitting one or a generic one if none fits:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AT+QMBNCFG=&amp;quot;select&amp;quot;,&amp;quot;ROW_Generic_3GPP&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then enable Voice over LTE using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AT+QCFG=&amp;quot;ims&amp;quot;,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And reboot the modem to apply the settings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AT+CFUN=1,1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check the status of VoLTE during a call, the AT command &amp;lt;code&amp;gt;CLCC&amp;lt;/code&amp;gt; can be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AT+CLCC&lt;br /&gt;
&lt;br /&gt;
+CLCC: 1,1,0,1,0,&amp;quot;&amp;quot;,128&lt;br /&gt;
+CLCC: 2,1,0,1,0,&amp;quot;&amp;quot;,128&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the fourth item of the list, &amp;quot;0&amp;quot; means voice and and &amp;quot;1&amp;quot; means data. If both rows have &amp;quot;1&amp;quot; then the voice call is being carried over VoLTE.&lt;br /&gt;
&lt;br /&gt;
=== APN settings ===&lt;br /&gt;
&lt;br /&gt;
The APN setting is only required for a public Internet connection (&amp;quot;data&amp;quot;) on the phone. For tested APN settings and how to apply them see [[PinePhone APN Settings]].&lt;br /&gt;
&lt;br /&gt;
=== Carrier support ===&lt;br /&gt;
The page [[PinePhone Carrier Support]] contains information about the frequency support of different carriers and hints on setting up cellular network connectivity.&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
Detailed information about the modem can be found on the [https://xnux.eu/devices/feature/modem-pp.html#toc-modem-on-pinephone page of the developer megi], including reverse-engineered parts of the firmware and its functions. There is also a document about using the modem from January 18th 2020 by megi [https://megous.com/dl/tmp/modem.txt here]. A script at the end of the document showcases a way to poweroff the modem before powering off the phone, which is integrated into most of the available OSes.&lt;br /&gt;
&lt;br /&gt;
=== Firmware update ===&lt;br /&gt;
&lt;br /&gt;
{{Hint|The following instructions are directed towards professional users. It is highly recommend to make sure the update process is not interrupted to prevent the modem from bricking.}}&lt;br /&gt;
&lt;br /&gt;
The modem firmware can be updated to a newer version if it is outdated. The firmware version can be checked using the following AT command (at the example of &amp;lt;code&amp;gt;atinout&amp;lt;/code&amp;gt;, alternatively &amp;lt;code&amp;gt;minicom&amp;lt;/code&amp;gt; can be used to communicate with the modem too):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 'AT+QGMR' | sudo atinout - /dev/ttyUSB2 -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the version number is 01.001.01.001 ''(EG25GGBR07A08M2G_01.001.01.001)'' it is recommended to update the firmware to version 01.002.01.002 ''(EG25GGBR07A08M2G_01.002.01.002)'' due to various bug fixes.&lt;br /&gt;
&lt;br /&gt;
'''Pre-update checklist:'''&lt;br /&gt;
&lt;br /&gt;
Please make sure all requirements of the checklist are fulfilled. If the update process is interrupted it will lead to a corrupted firmware of the modem, causing it to brick. Recovering a bricked modem is exponentially more complicated and requires the user to boot a special mode by physically bridging test points on the modem.&lt;br /&gt;
&lt;br /&gt;
* The battery needs to be charged sufficiently&lt;br /&gt;
* The phone needs to be plugged into a charger&lt;br /&gt;
* Deep sleep is recommended to be disabled as it can interrupt the update process&lt;br /&gt;
* It is recommended to close all other running applications&lt;br /&gt;
* Use common sense while doing the update, don't do the update while being impaired in any way&lt;br /&gt;
&lt;br /&gt;
To get the latest firmware, clone the repository of user Biktorgj on the phone:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/Biktorgj/quectel_eg25_recovery&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After cloning the directory, open it with cd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd quectel_eg25_recovery&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run qfirehose, which starts the flashing process:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ./qfirehose -f ./&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The modem will automatically reboot after the update process is done. The boot process takes around 30 to 60 seconds. After that it is highly recommended to reboot the device.&lt;br /&gt;
&lt;br /&gt;
=== Firmware modifications ===&lt;br /&gt;
&lt;br /&gt;
See [[PineModems]] for more information regarding modem bootloader unlocking, building a custom modem firmware and modem recovery.&lt;br /&gt;
&lt;br /&gt;
=== GPS / GNSS ===&lt;br /&gt;
The GPS engine in the modem supports mutli-GNSS reception from GPS, GLONASS, BeiDou, Galileo and QZSS independent of a cellular connection. The operation of the GNSS subsystem can be controlled via a separate set of AT commands, or via qmi. The A-GPS data upload uses the file management AT commands, which also have their own manual. These are linked in the [[PinePhone#Datasheets for components and peripherals|documentation section]] below.&lt;br /&gt;
&lt;br /&gt;
As with most smartphones, the PinePhone has a small antenna and has difficulty getting a first fix without assistance data, a cold start can take 15 minutes under good conditions. The ''eg25-mananger'' is configured to upload A-GPS data by default (see [https://gitlab.com/mobian1/eg25-manager/-/merge_requests/15 here]).&lt;br /&gt;
&lt;br /&gt;
Basic testing of GNSS reception can be done by using the AT command interface (''/dev/ttyUSB2'') from a terminal program like ''minicom'' and the data output interface (''/dev/ttyUSB1'') to feed NMEA data into gpsmon or some other program that can parse standard NMEA sentences.&lt;br /&gt;
&lt;br /&gt;
[[File:Gpsmon eg25g.png|400px|thumb|none|gpsmon decoding GPS data from ''/dev/ttyUSB1'']]&lt;br /&gt;
&lt;br /&gt;
To check if GNSS data output is enabled, you can&lt;br /&gt;
&lt;br /&gt;
 cat /dev/ttyUSB1&lt;br /&gt;
&lt;br /&gt;
this should display a stream of NMEA sentences&lt;br /&gt;
&lt;br /&gt;
 $GPVTG,,T,,M,,N,,K,N*2C&lt;br /&gt;
 $GPGSA,A,1,,,,,,,,,,,,,,,,*32&lt;br /&gt;
 $GPGGA,,,,,,0,,,,,,,,*66&lt;br /&gt;
&lt;br /&gt;
=== Voice mail ===&lt;br /&gt;
&lt;br /&gt;
The operating systems of the PinePhone may not have support for accessing your voicemail by holding down the 1-key. Carriers might support accessing the voice mail via an external number however. If you are in Canada and using rogers or a rogers associated carrier (such as ''Chatr''), you can access your voice mail by calling an external number, see [https://www.howardforums.com/showthread.php/913346-Rogers-GSM-Voicemail-Retrieval-Numbers here]. In America, AT&amp;amp;T also has support for accessing your voicemail via an external phone number, see [https://www.att.com/support/article/wireless/KM1009101/ here].&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
&lt;br /&gt;
=== General recommendations ===&lt;br /&gt;
&lt;br /&gt;
Due to the greater control the user is having over the device and its software comes also greater responsibility. It is necessary to verify the configuration of the device to make sure that responsible settings are used. The different operating systems may come with non-sane default settings, including SSH with weak password authentication being enabled by default and exposed to the public Internet, the absence of a firewall, default passwords, unencrypted files, too high temperature zones and emergency shutoff values or an enabled root account. The usage of public resources to verify such settings (such as the in case of GNU/Linux, the Arch Linux [https://wiki.archlinux.org/title/security security] wiki page, or the [https://wiki.archlinux.org/title/general_recommendations general recommendations]) as well as the corresponding operating system's or distribution's resources are strongly recommended.&lt;br /&gt;
&lt;br /&gt;
=== Charging safety ===&lt;br /&gt;
&lt;br /&gt;
The PinePhone supports up to 5V 3A (15W) Quick Charge, it follows the USB Power Delivery specification. Only compatible phone chargers may be used, charging the phone with incompatible chargers (for example laptop chargers with a higher voltage) is prohibited. Charging the phone releases heat, general safety recommendations must be followed, see the section ''Thermal safety''.&lt;br /&gt;
&lt;br /&gt;
=== Thermal safety ===&lt;br /&gt;
&lt;br /&gt;
With the Allwinner A64 being an older generation SoC with a large 40nm chip, the phone produces quite some heat with medium or higher use and especially also during charging or when using USB accessories, like a docking station. Measurements to prevent damage to the phone and to its surroundings need to be taken by the user. This includes especially a proper handling of the phone: do not charge the phone in a way where heat builds up around the phone without being able to escape. Especially don't charge your phone under a pillow, blankets, in pockets or bags. Charging the phone produces heat and charging the phone in a way, where the excessive heat can't dispose around the phone poses an immediate fire risk.&lt;br /&gt;
&lt;br /&gt;
The user might notice that the phone gets warm under usage, compared to phones with more up-to-date hardware. Under normal circumstances these temperatures don't pose a risk while being in the levels within the safe operating temperatures (which lay far beyond the point where components can be too hot to touch). Higher temperatures might especially be experienced on the top side of the screen and on the inside of the phone at the RF shield of the modem. The higher temperature of the RF shield of the modem is commonly caused by the SoC on the opposite side of the mainboard, the RF shield of the modem is used to disperse heat of the SoC. In newer mainboard revisions starting from 1.2a there are also thermal pads on the back cover and between the SoC's RF shield and the screen, dispersing heat on the screen and on the back cover. In the past there has been safety issues regarding thermal safety functions, causing temperature reads to not properly work over an extended period of time, which was causing heat damage in some cases (see the documentation of that issue by the developer Megous [http://xnux.eu/log/#018 here] and [http://xnux.eu/log/#017 here]). While the developers are working hard to prevent such issues, they can't be excluded under all circumstances (see [[PinePhone#State_of_the_software|state of the software]]). The users are expected to monitor their phones' thermal safety at every point at this state of the software.&lt;br /&gt;
&lt;br /&gt;
It is highly recommend to update the phone on a regular basis to always get the latest improvements. The default settings to throttle the performance and to shut down the phone when reaching critical temperatures might be set to a too high point depending on the specific usage and usage length. Under GNU/Linux the phone's thermal management behavior can be modified via the Thermal Sysfs driver to achieve lower temperatures and preventing the screen and other components to potentially take damage, see [[PinePhone Thermal Tweaks]] for the details.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
For a list of frequently asked questions (including information regarding the shipping) see [[PinePhone FAQ]].&lt;br /&gt;
&lt;br /&gt;
== Modifications and repairs == &lt;br /&gt;
&lt;br /&gt;
=== Swapping in a new mainboard revision ===&lt;br /&gt;
&lt;br /&gt;
The mainboard can be replaced, for example for upgrading to a newer hardware revision or if it is faulty. The replacement board does not have an OS preinstalled, to test if everything is working after swapping the mainboard a flashed SD card is required. The mainboard also comes with a non-functional firmware on the ANX chip, a newer firmware version has to be flashed as explained below to get certain USB functionality to work.&lt;br /&gt;
&lt;br /&gt;
==== Replacing the mainboard ====&lt;br /&gt;
&lt;br /&gt;
{{Hint|Replacement boards come with an empty eMMC, which means that trying to boot from them looks like the board is faulty (no LEDs, no screen, no reaction of the phone). Please boot an OS from SD card.}}&lt;br /&gt;
&lt;br /&gt;
Prior to replacing your PinePhone’s mainboard please read the steps outlined in bullet points below and watch the attached video.&lt;br /&gt;
&lt;br /&gt;
# You’ll need a small Phillip’s screwdriver and a prying tool to swap out the PinePhone’s mainboard.&lt;br /&gt;
# Remove the PinePhone’s back cover. See your quick start guide for details.&lt;br /&gt;
# Remove the battery as well as any inserted SD and SIM cards.&lt;br /&gt;
# Unscrew all 15 Phillip’s head screws around the midframe of the phone.&lt;br /&gt;
# Gently pry up the midframe using a guitar pick or credit card corner. It is easiest to separate the midframe at one of the bottom edges. Work your way around all the sides of the phone until the midframe separates from the phone’s body.&lt;br /&gt;
# Detach all ribbon cables and “Lego” connectors. List of things to detach: 1) two “Lego” connects at the bottom of the mainboard. 2) u.FL antenna connect and touchscreen digitizer on PCD left side. 3) LCD ribbon cable top of mainboard, next to audio/ UART jack.&lt;br /&gt;
# Pry the mainboard up gently from the left-hand side.&lt;br /&gt;
# Remove front and main cameras and reset them into the new mainboard.&lt;br /&gt;
# Check that the rubber proximity sensor housing is in the chassis, not stuck to the removed mainboard.&lt;br /&gt;
# Place the new mainboard in the chassis, hooking in on the plastic tabs on left side and pressing down firmly on opposite side, and follow the steps (7-2) in reverse. When reattaching the midframe take care that no cables are out of place or trapped, as they may be damaged when tightening screws.&lt;br /&gt;
&lt;br /&gt;
After swapping the mainboard the phone won't boot as there is no OS on the replacement board's eMMC preinstalled. To boot an OS insert a flashed SD card.&lt;br /&gt;
&lt;br /&gt;
A video tutorial by &amp;lt;i&amp;gt;Martijn Braam&amp;lt;/i&amp;gt; can be found here (or alternatively a video tutorial by user &amp;lt;i&amp;gt;brigadan&amp;lt;/i&amp;gt; with additional notes about the camera swap and proximity sensor isolator [https://www.youtube.com/watch?v=J3AJEF7akkw here]):&lt;br /&gt;
[[File:Pinephone_martijn_pcb_replacement.png|thumb|none|600px|link=https://www.youtube.com/watch?v=5GbMoZ_zuZs|Watch Martijn Braam's video tutorial here: https://www.youtube.com/watch?v=5GbMoZ_zuZs.]]&lt;br /&gt;
&lt;br /&gt;
==== Flashing the ANX firmware ====&lt;br /&gt;
&lt;br /&gt;
===== Method 1 =====&lt;br /&gt;
&lt;br /&gt;
After swapping the mainboard the ANX7688 chip has to be flashed for full USB functionality.&lt;br /&gt;
&lt;br /&gt;
Under GNU/Linux this can be done by downloading the latest ANX7688 firmware image on the phone:&lt;br /&gt;
&lt;br /&gt;
 wget https://xff.cz/git/linux-firmware/plain/anx7688-fw.bin&lt;br /&gt;
&lt;br /&gt;
and executing as root (&amp;quot;sudo su&amp;quot;) on the phone:&lt;br /&gt;
&lt;br /&gt;
 cp anx7688-fw.bin /lib/firmware/&lt;br /&gt;
 echo 1 &amp;gt; /sys/class/typec/port0/device/flash_eeprom&lt;br /&gt;
&lt;br /&gt;
===== Method 2 =====&lt;br /&gt;
&lt;br /&gt;
Booting a factory test image will automatically flash the ANX7688 chip. See [[PinePhone Software Releases#Factory Test OS|Factory Test OS]] for such an image.&lt;br /&gt;
&lt;br /&gt;
=== Replacing the screen ===&lt;br /&gt;
&lt;br /&gt;
Before attempting to replace the screen be sure to review the section on [[#Swapping in a new mainboard revision|replacing the mainboard]] since that will get you most of the way there. Be aware that the replacement screen is actually the entire front frame of the phone and there are components that will need to be swapped from your old screen.&lt;br /&gt;
&lt;br /&gt;
* Make sure you have a precision screwdriver set that has the correct size Philips tip. The screws are very small and the heads can easily be stripped if the screwdriver is not correct - if you feel your screwdriver slipping, stop what you are doing and try one that is a better fit. A magnetized screwdriver will help in not losing screws, as will a magnetic parts holder to keep them in while working.&lt;br /&gt;
&lt;br /&gt;
* There are a number of components and cables as well as the insulator sheet under the battery that are glued in place. A hair dryer will loosen the glue and make them much easier to remove. You may want to order extra cables along with the screen just in case.&lt;br /&gt;
&lt;br /&gt;
* The vibration motor, which is part of the USB-C board assembly and glued into place, will come apart easily and be damaged if you pry it up in the wrong place. Make sure you pry from underneath the complete part, not midway on its housing. The ribbon cable attaching this to the USB-C board is small, thin, and fragile so be careful with that as well.&lt;br /&gt;
&lt;br /&gt;
* The new screen comes with new side switches and insulator sheet but there are a number of parts that need to be transferred from the old screen, like the thin coax cable running up the side, the phone ear speaker, proximity sensor gasket, and a gold-colored mesh glued in place that needs to be transferred to a flexible circuit included on the new screen. If you don't swap over the proximity sensor rubber gasket the screen will immediately turn off after logging in. Be careful when routing the coax cable that it goes around the screw holes or you may drive a screw right through the cable.&lt;br /&gt;
&lt;br /&gt;
Take your time, use the right tools, be careful and you should be rewarded with success.&lt;br /&gt;
&lt;br /&gt;
=== Spare parts not available in the PINE64 store ===&lt;br /&gt;
&lt;br /&gt;
* Earpiece dimensions: 12x6x2 mm. Compatible with Xiaomi Mi2 / Mi3 / Mi4 and others, see [https://forum.pine64.org/showthread.php?tid=12046&amp;amp;pid=85698#pid85698 here]&lt;br /&gt;
* Loudspeaker dimensions: 15x11x3 mm. Compatible with Nokia N91, Lenovo A536 (requires soldering) and others, see [https://forum.pine64.org/showthread.php?tid=12046&amp;amp;pid=85698#pid85698 here]&lt;br /&gt;
* Proximity sensor rubber isolator&lt;br /&gt;
&lt;br /&gt;
=== Other hardware issues ===&lt;br /&gt;
&lt;br /&gt;
See also [[PinePhone Hardware Issues]] for more issues and how-to's.&lt;br /&gt;
&lt;br /&gt;
== Screen protectors ==&lt;br /&gt;
=== Film ===&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinephone-pro-explorer-edition-1644059.html Savvies's SU75 Screen Protector (6x)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinephone-pro-explorer-edition-2344059.html (18x)]&lt;br /&gt;
&lt;br /&gt;
=== Glass ===&lt;br /&gt;
* [https://pine64.com/product/pinephone-tempered-glass-screen-protector/ Pine64's TEMPERED GLASS SCREEN PROTECTOR]&lt;br /&gt;
&lt;br /&gt;
== Privacy screens ==&lt;br /&gt;
* [https://www.protectionfilms24.com/article/upscreen-spy-shield-clear-premium-privacy-screen-protectorpine64-pinephone-pro-explorer-edition-3544059.html upscreen's Spy Shield Clear Premium Privacy Screen Protector]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
* [https://pine64.com/product/pinephone-soft-tpu-protective-case/ Pine64's SOFT TPU PROTECTIVE CASE]&lt;br /&gt;
* [https://pine64.com/product/pinephone-hard-protective-case/ Pine64's HARD PROTECTIVE CASE]&lt;br /&gt;
* [https://aliexpress.com/item/1005004062472923.html Another soft TPU protective case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003488932108.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003737555202.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003734984288.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003737130629.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003736793712.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003410671879.html Wallet case from AliExpress]&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
For an overview about media of the PinePhone you can use for the news, blogs, or similar see [[PinePhone Press]].&lt;br /&gt;
&lt;br /&gt;
== PinePhone board information, schematics and certifications ==&lt;br /&gt;
&lt;br /&gt;
* PinePhone mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2b%20Released%20Schematic.pdf PinePhone mainboard Released Schematic ver 1.2b]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2a%20Released%20Schematic.pdf PinePhone mainboard Released Schematic ver 1.2a]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2%20Released%20Schematic.pdf PinePhone mainboard Released Schematic ver 1.2]&lt;br /&gt;
** [[PinePhone_v1.2|PinePhone schematic ver 1.2 change list]]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20Schematic%20v1.1%2020191031.pdf &amp;quot;Braveheart&amp;quot; PinePhone mainboard Schematic ver 1.1]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20mainboard%20top%20placement%20v1.1%2020191031.pdf &amp;quot;Braveheart&amp;quot; PinePhone mainboard component top placement drawing ver 1.1]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20mainboard%20bottom%20placement%20v1.1%2020191031.pdf &amp;quot;Braveheart&amp;quot; PinePhone mainboard component bottom placement drawing ver 1.1]&lt;br /&gt;
** [[PinePhone component list]]&lt;br /&gt;
* PinePhone USB-C small board schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20USB-C%20small%20board%20schematic%20v1.0%2020190730.pdf PinePhone USB-C small board Schematic ver 1.0]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20USB-C%20small%20board%20top%20placement%20v1.0%2020190730.pdf PinePhone USB-C small board component top placement drawing ver 1.0]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/PinePhone%20USB-C%20small%20board%20bottom%20placement%20v1.0%2020190730.pdf PinePhone USB-C small board component bottom placement drawing ver 1.0]&lt;br /&gt;
* PinePhone certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhone%20FCC%20SDOC%20Certificate-S19112602605001.pdf PinePhone FCC Certificate]&lt;br /&gt;
** [https://fcc.report/FCC-ID/2AWAG-PINEPHONE RF Exposure SAR Information from FCC ID site]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhone%20CE%20RED%20Certificate-S19112602602.pdf PinePhone CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhone%20ROHS%20Report.pdf PinePhone ROHS Report]&lt;br /&gt;
** Note: PinePhone's Type Allocation Code (TAC) is &amp;lt;i&amp;gt;86769804&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
&lt;br /&gt;
* Allwinner A64 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64%20brief%20v1.0%2020150323.pdf Allwinner A64 SoC brief introduction]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf Allwinner A64 SoC Data Sheet V1.1 (Official Released Version)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/Allwinner_A64_User_Manual_V1.0.pdf Allwinner A64 SoC User Manual V1.0 (Official Release Version)]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP803 PMIC (Power Management IC) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf AXP803 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LPDDR3 (178 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/ATL3A1632H12A_mobile_lpddr3_11x11.5_v1.0_1600.pdf Artmem LPDDR3 datasheet]&lt;br /&gt;
&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/Kimtigo_fbga153_16_32_64_eMMC_datasheet_v1.3.pdf Kimtigo eMMC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/QZ01-rear-2019-0717(HW)%20Model.pdf PinePhone 5M Pixel Real CMOS Image Sensor Module]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC for Rear Module datasheet]&lt;br /&gt;
** [https://usermanual.wiki/Document/OV5640FirmwareUserGuideV10.952852672.pdf OV5640 Embedded Firmware User Guide&amp;amp;nbsp;&amp;amp;ndash; VCM AF Module]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/QZ01-front-2019-0717(HW)%20Model.pdf PinePhone 2M Pixel Front CMOS Image Sensor Module]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GC2145 2MP CMOS Image Sensor SoC for Front Module datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20LCD-QZ01.pdf 5.99&amp;quot; 1440x720 LCD IPS Panel specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/ST7703_DS_v01_20160128.pdf ST7703 LCD Controller datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/GT917S-Datasheet.pdf GOODiX GT917S Capacitive Touch Controller datasheet]&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery%20Specification.pdf PinePhone Lithium Battery specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery%20ZCV%20Curve%20Chart.xlsx PinePhone Lithium Battery ZCV curve chart]&lt;br /&gt;
** [https://cad.onshape.com/documents/5194d6303f021e6f300b70a0/w/7b63ac4c32ed63dfd78c7840/e/5d43c0ce5b665bae10082a08 PinePhone Lithium Battery 3D onshape drawing]&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf RTL8723BS/RTL8723CS specification]&lt;br /&gt;
&lt;br /&gt;
* LTE module information:&lt;br /&gt;
** [[File:Quectel_EG25-G_LTE_Standard_Specification_V1.3.pdf]]&lt;br /&gt;
** [[File:Quectel_EG25-G_Hardware_Design_V1.4.pdf]]&lt;br /&gt;
** [[File:Quectel_EC2x&amp;amp;EG9x&amp;amp;EG2x-G&amp;amp;EM05_Series_AT_Commands_Manual_V2.0.pdf]]&lt;br /&gt;
** [[File:Quectel_EC2xEG25-GEG9xEM05_FILE_AT_Commands_Manual_V1.0.pdf]]&lt;br /&gt;
** [[File:Quectel_EC2x&amp;amp;EG9x&amp;amp;EG2x-G&amp;amp;EM05_Series_GNSS_Application_Note_V1.3.pdf]]&lt;br /&gt;
&lt;br /&gt;
* Sensors:&lt;br /&gt;
** [https://www.st.com/en/mems-and-sensors/lis3mdl.html ST LIS3MDL 3-axis Magnetometer Datasheet]&lt;br /&gt;
** [https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/ InvenSense MPU-6050 Six-Axis (Gyro + Accelerometer) MEMS datasheet]&lt;br /&gt;
** [https://www.sensortek.com.tw/en/product/Proximity_Sensor_with_ALS.html SensorTek STK3335 Ambient Light Sensor and Proximity Sensor]&lt;br /&gt;
&lt;br /&gt;
* Digital video to USB-C bridge:&lt;br /&gt;
** [https://www.analogix.com/en/system/files/AA-002281-PB-6-ANX7688_Product_Brief.pdf ANX7688 product brief]&lt;br /&gt;
&lt;br /&gt;
* Case information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20Exploded%20Diagram%20ver%201.0.pdf PinePhone case exploded diagram]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20Back%20Cover.stp PinePhone back cover 3D file]&lt;br /&gt;
&lt;br /&gt;
* Other components:&lt;br /&gt;
** See the [[PinePhone_component_list|Component List]]&lt;br /&gt;
&lt;br /&gt;
== Developer works ==&lt;br /&gt;
&lt;br /&gt;
* The following resources have been made available by Ondřej Jirman, a developer for the Pinephone:&lt;br /&gt;
** [https://xnux.eu/howtos/pine64-pinephone-getting-started.html Getting started with PinePhone Hardware]&lt;br /&gt;
** [https://xnux.eu/devices/pine64-pinephone.html State of development progress]&lt;br /&gt;
** [https://xnux.eu/log/ Development log]&lt;br /&gt;
** [https://xnux.eu/news.html PinePhone Technical News and Update, also applies to other Allwinner devices including PINE A64 SBC]&lt;br /&gt;
** [https://xnux.eu/contribute.html Contributions to the kernel development]&lt;br /&gt;
* [[PinePhone Development]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://pine64.com/product-category/pinephone/ The PinePhone on the official Pine store]&lt;br /&gt;
* [https://pine64.com/product-category/smartphone-spare-parts/ PinePhone spare parts on the official Pine store]&lt;br /&gt;
* [https://pine64.com/product-category/smartphone-accessories/ PinePhone accessories on the official Pine store]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]] [[Category:Allwinner A64]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone_Pro&amp;diff=15447</id>
		<title>PinePhone Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone_Pro&amp;diff=15447"/>
		<updated>2023-01-13T14:24:52Z</updated>

		<summary type="html">&lt;p&gt;Tree: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pinephone_double.png|400px|thumb|right|Rendering of the PinePhone Pro]]&lt;br /&gt;
&lt;br /&gt;
The '''PinePhone Pro''' is PINE64's flagship smartphone announced on October 15, 2021. It features 4GB of RAM, an 128GB eMMC and is using an Rockchip RK3399S SoC, which is a specialized version of the RK3399 made specifically for the PinePhone Pro.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The PinePhone Pro is PINE64’s second smartphone and a successor to the original PinePhone. It does not, however, replace the original PinePhone. It should also not be considered a second generation PinePhone; it is a higher-end device, with much better specs, aimed at those who wish to daily-drive a open system stack. Achieving this goal will, however, take time as the software and overall smartphone software ecosystem needs to mature.&lt;br /&gt;
&lt;br /&gt;
More information about the PinePhone Pro can be found on the device [https://www.pine64.org/pinephonepro/ main page].&lt;br /&gt;
&lt;br /&gt;
=== State of the software ===&lt;br /&gt;
&amp;lt;sup&amp;gt;([[PinePhone Pro Software State|view separately]])&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:PinePhone Pro Software State}}&lt;br /&gt;
&lt;br /&gt;
=== Editions and revisions ===&lt;br /&gt;
Similarly to the original PinePhone, various PinePhone Pro editions are planned, the first of which is the Developer Edition (aimed at developers, as the name entails) followed by the Explorer Edition, which is aimed at early adopters.&lt;br /&gt;
&lt;br /&gt;
* [[PinePhone Pro Developer Edition]]&lt;br /&gt;
* [[PinePhone Pro Explorer Edition]]&lt;br /&gt;
&lt;br /&gt;
=== Help and support ===&lt;br /&gt;
&lt;br /&gt;
Still have any questions regarding software, shipping, or ordering after reading this Wiki? Please don't hesitate to contact the community in the bridged community channels for detailed answers or simply to chat with friendly people in the community! See [[Main Page#Community and Support]].&lt;br /&gt;
&lt;br /&gt;
Please keep in mind that PINE64 is not like a regular company (see the [https://www.pine64.org/philosophy/ PINE64 philosophy]) and that support resources are limited - the best way to get support quickly is to ask in the community chat! Please only contact the PINE64 support directly if questions couldn't be solved via the community chat or this wiki.&lt;br /&gt;
&lt;br /&gt;
== First time setup ==&lt;br /&gt;
[[File:Pinephone_warning.png|320px|thumb|right|A protection foil isolates the battery for the shipping.]]&lt;br /&gt;
&lt;br /&gt;
When shipped the battery is isolated from the device using a protective plastic tab, which is required to be removed before using the phone. The battery '''will not''' charge or boot until it is removed and the battery is connected again. &lt;br /&gt;
&lt;br /&gt;
{{Info|To remove the sticker after unboxing the phone: Carefully remove the back panel using the notch in the corner of the back cover without overbending it. Then remove the battery. Peel off the clear plastic sticker below it, which isolates the charging contacts and reinsert the battery.}}&lt;br /&gt;
&lt;br /&gt;
The SIM card has to be placed in the lower slot, while the microSD has to be placed in the upper slot. Devices shipped after the end of July 2022 do only accept a nano-SIM, the SIM is inserted into a carriage released by slightly pulling on the handle in the lower slot (for information regarding devices shipped prior to end of July 2022 see below).&lt;br /&gt;
&lt;br /&gt;
[[File:Pinephone slots.png|600px|thumb|none|The microSD belongs in the upper slot, the SIM card in the lower slot.]]&lt;br /&gt;
&lt;br /&gt;
{{Info|Information regarding devices shipped prior to end of July 2022: The PinePhone Pros shipped prior to the end of July 2022 come with a micro-SIM slot instead of a nano-SIM slot. Do not insert an empty micro-SIM adapter into the phone and do not release the nano-SIM inside the adapter, as it will get stuck on the contact pins. &amp;lt;br&amp;gt; If the nano-SIM got released inside the adapter inside the phone, carefully reinsert the nano-SIM card without moving the adapter. In that case do not pull on the empty adapter as it will get stuck on the contact pins and damage them!}}&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The software section explains how to install the available software releases for the PinePhone Pro to the internal eMMC or a microSD card, how to boot them and how to solve common booting issues.&lt;br /&gt;
&lt;br /&gt;
=== Software releases ===&lt;br /&gt;
&lt;br /&gt;
The [[PinePhone Pro Software Releases]] page has a complete list of currently supported phone-optimized operating system images that work with the PinePhone Pro.&lt;br /&gt;
&lt;br /&gt;
{{Info|Images of the regular PinePhone are not compatible with the PinePhone Pro.}}&lt;br /&gt;
&lt;br /&gt;
=== Boot order ===&lt;br /&gt;
&lt;br /&gt;
The RK3399S processor in the PinePhone Pro searches for the bootloader (such as ''U-Boot'' or ''Tow-Boot'') in the following order:&lt;br /&gt;
&lt;br /&gt;
# SPI flash&lt;br /&gt;
# eMMC (the internal memory)&lt;br /&gt;
# MicroSD card&lt;br /&gt;
&lt;br /&gt;
==== Boot from microSD card temporarily ====&lt;br /&gt;
&lt;br /&gt;
To temporarily boot from an inserted '''microSD card''' do the following:&lt;br /&gt;
&lt;br /&gt;
* On the '''Explorer Edition ordered after July 2022''' hold the ''volume down key'' while powering on the device. The batches bought after July 2022 come with ''Tow-Boot'' flashed to the SPI, which offers additional functionality over ''U-Boot'' as bootloader.&lt;br /&gt;
&lt;br /&gt;
* On the '''Explorer Edition ordered between January and July 2022''' hold the ''RE'' button underneath the cover for a few seconds, while powering on the device. If the button is labeled ''RESET'' instead of ''RE'' please verify if the device is a regular [[PinePhone]] (or the Developer Edition). This is required because older batches don't ship with ''Tow-Boot'' on the SPI. Flashing ''Tow-Boot'' can be caught up by following [https://tow-boot.org/devices/pine64-pinephonePro.html this] instruction. After flashing ''Tow-Boot'' the microSD card can be selected at boot with the volume down key as well.&lt;br /&gt;
&lt;br /&gt;
* On the '''Developer Edition (sold to selected developers only)''' the SPI and the eMMC can be bypassed by shorting the bypass test points while booting. The process is explained in the article [[PinePhone Pro Developer Edition#Nuking the factory AOSP installation|PinePhone Pro Developer Edition]]. Please join the community chat for any questions regarding the process.&lt;br /&gt;
&lt;br /&gt;
The RE button disables the SPI and the eMMC at the hardware level while the button is held and the PinePhone Pro will try to boot from the next available boot medium, which is the microSD card. Note: When holding the ''RE'' button (or when shorting the contact points in case of the ''Developer Edition'') for a longer time at boot the operating system will not initialize the SPI and eMMC and it will not be possible to write to these storage mediums until the next reboot.&lt;br /&gt;
&lt;br /&gt;
{{Template:Info|The bootloader uses its own boot order for loading the kernel and other core operating system components at boot, which for example may result in the boot loader residing on the eMMC loading and booting the kernel from a microSD card.}}&lt;br /&gt;
&lt;br /&gt;
==== Boot from microSD card permanently ====&lt;br /&gt;
&lt;br /&gt;
The bootloader (such as ''U-Boot'') resides in the free space in front of the first partition. Wiping the bootloader from the eMMC to make the PinePhone Pro boot from microSD card can be done using &amp;lt;code&amp;gt;sudo dd if&amp;amp;#61;/dev/zero of&amp;amp;#61;/dev/mmcblk2 seek&amp;amp;#61;64 count&amp;amp;#61;400 conv&amp;amp;#61;fsync&amp;lt;/code&amp;gt;. Formatting the drive or deleting the partition table is not sufficient to wipe the bootloader.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
If you received your device after July of 2022, the bootloader (''Tow-Boot'') resides on the SPI. To boot to an SD card, place the SD card in your PinePhone Pro and turn it on. The phone will vibrate once. At this point, hold down the volume down button until you feel the device vibrate again then release the button. The LED color should change to blue and your display should remain black for a few seconds. In a few seconds you should see the SD card booting, the indications of which are dependent on what image you chose. If the LED is flashing instead, the boot from SD failed. Erasing the SPI can be achieved via the Tow-Boot installer image. Instructions are available here [https://tow-boot.org/devices/pine64-pinephonePro.html Tow-Boot PinePhone Pro Instructions].&lt;br /&gt;
&lt;br /&gt;
See [[RK3399 boot sequence]] for further details regarding the boot sequence.&lt;br /&gt;
&lt;br /&gt;
=== Installation instructions ===&lt;br /&gt;
&lt;br /&gt;
The software releases can be installed (the process is being referred to as ''flashing'') to the eMMC or to an microSD card.&lt;br /&gt;
&lt;br /&gt;
==== Flashing to microSD card ====&lt;br /&gt;
To install an image to the microSD card:&lt;br /&gt;
&lt;br /&gt;
# Download a compatible image from [[PinePhone Pro Software Releases]].&lt;br /&gt;
# '''Important:''' Typically the image will be compressed in an archive file to reduce the download size (such as ''.gz'' or ''.xz''). Extract the image from its archive file to get the file with the file extension ''.img''.&lt;br /&gt;
# Write the image to your microSD card using your favorite method, examples:&lt;br /&gt;
#* Using ''dd'': On the device you're flashing the microSD card from, find the correct device under &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and then flash the image to the microSD card using &amp;lt;code&amp;gt;sudo dd if='''IMAGE.img''' of=/dev/'''[DEVICE]''' bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt;. Make sure the target is the whole microSD card and not its first partition (''sdc1'' or ''mmcblk0p1'' are wrong!).&lt;br /&gt;
#* Using ''bmaptool'': Make sure to select the correct device using &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;. Then run bmaptool with the correct device: Download the ''IMAGE.xz'' and the ''IMAGE.bmap'' files, then run &amp;lt;code&amp;gt;bmaptool copy --bmap '''IMAGE.bmap''' '''IMAGE.xz''' /dev/'''[DEVICE]'''&amp;lt;/code&amp;gt;. This takes around 2.5 minutes to flash a 4 GB file.&lt;br /&gt;
#* Using ''a graphical tool'': A graphical tool such as Gnome Disks under Linux or Etcher under Windows may also be used.&lt;br /&gt;
# Insert the microSD card into the top slot of the PinePhone Pro. Make sure the microSD card is inserted all the way and that the notch of the right side of the microSD card is not visible anymore, see [[:File:Pinephone_slots.png|here]].&lt;br /&gt;
# Boot the device using the following method:&lt;br /&gt;
#* On the '''Explorer Edition ordered after July 2022''' hold the ''volume down key'' while booting.&lt;br /&gt;
#* On the '''Explorer Edition ordered between January and July 2022''' hold the ''RE'' button underneath the back cover while booting (or the ''volume down key'' if you flashed ''Tow-Boot'').&lt;br /&gt;
#* On the '''Developer Edition (sold to selected developers only)''' apply the bypass by shorting the testing pads while booting according to the datasheet.&lt;br /&gt;
&lt;br /&gt;
Details regarding the boot order can be found in the [[PinePhone Pro#Boot order|Boot order]] section.&lt;br /&gt;
&lt;br /&gt;
==== Flashing to the eMMC ====&lt;br /&gt;
Flashing to the eMMC can be done by booting an operating system from the microSD (see the section [[PinePhone Pro#Flashing to microSD card|Flashing to microSD card]]) and by writing to the eMMC directly from there:&lt;br /&gt;
&lt;br /&gt;
# Boot an operating system [[PinePhone Pro#Flashing to microSD card|from the microSD card]]. If there is already a bootloader on the eMMC installed see the section [[PinePhone Pro#Boot order|Boot order]] to bypass it.&lt;br /&gt;
# Download or copy the desired image to the microSD card as file&lt;br /&gt;
# Check if the eMMC appears under &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;. If it doesn't appear in the output of the command, the eMMC wasn't initialized due to applying the above explained bypass method for a too long time during the boot&lt;br /&gt;
# '''Important:''' Typically the image will be compressed in an archive file to reduce the download size (such as ''.gz'' or ''.xz''). Extract the image from its archive file to get the file with the file extension ''.img''.&lt;br /&gt;
# Flash the image file using &amp;lt;code&amp;gt;sudo dd if='''IMAGE.img''' of=/dev/mmcblk2 bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt; (replace ''IMAGE.img'' with the filename of the image you want to flash and make sure it has the file extension ''.img'').&lt;br /&gt;
# Reboot the PinePhone Pro&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If the PinePhone Pro is not booting (either booting incompletely into a boot splash or tty or if the PinePhone Pro is showing no signs of life) this will typically have the following two reasons:&lt;br /&gt;
&lt;br /&gt;
==== The battery is fully drained ====&lt;br /&gt;
&lt;br /&gt;
If the battery is drained then the board can reset during boot causing a boot loop because of undervoltage condition. It can happen on all stages of the boot including ''U-Boot'' bootloader, display initialization and USB (re-)configuration. In that case it is not possible to charge the phone. The battery can be charged by interrupting the boot loop by booting the PinePhone Pro into ''Maskrom mode'' or by charging the battery externally. To boot the PinePhone Pro into ''Maskrom mode'':&lt;br /&gt;
&lt;br /&gt;
* Remove any microSD card from the phone and keep it removed for the below procedure&lt;br /&gt;
* Remove the battery, any USB cable and any serial cable&lt;br /&gt;
* Reinsert the battery&lt;br /&gt;
* Hold the ''RE'' button underneath the back cover of your ''Explorer Edition'' (or short the bypass contact points on the ''Developer Edition'') &lt;br /&gt;
{{Info|Confirm that the label of the button says ''RE'' and not ''RESET''! If the button label says ''RESET'' instead you probably have a regular PinePhone and you're reading the wrong page.}}&lt;br /&gt;
* Connect the phone to an USB port of a computer, while still holding the button for some time&lt;br /&gt;
* Check if the phone in Maskrom mode appears in the output of the terminal command &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; on the computer, the expected ''VID:PID'' of the device is ''2207:330c''&lt;br /&gt;
**(under ''Windows'' this can be checked using the ''Device Manager'' and checking the VID and PID of an appearing ''Unknown device'')&lt;br /&gt;
**(under ''macOS'' this can be checked in ''/Applications/Utilities/System Information.app'' under ''USB'' and checking the VID and PID of an appearing ''Composite Device''&lt;br /&gt;
* Let the phone charge for multiple hours&lt;br /&gt;
&lt;br /&gt;
{{Info|If the device doesn't appear under ''lsusb'' please try again with a different known good USB-C cable and make sure that there is no microSD card in the phone inserted.}}&lt;br /&gt;
&lt;br /&gt;
{{Info|It may not be necessary to use a computer to successfully boot into ''Maskrom mode'', at least one user has reported successfully charging in ''Maskrom mode'' using a standard USB wall charger. This method has no way to determine if ''Maskrom mode'' has been entered successfully, however. }}&lt;br /&gt;
&lt;br /&gt;
The device should now be able to boot from the boot medium again. If that is not the case the installation got corrupted, as explained below.&lt;br /&gt;
&lt;br /&gt;
Levinboot bootloader doesn't have the bootloop issue, because it configures high input current limit (2A) during early boot, which is sufficient to complete the boot even with discharged battery, without any boot loops.&lt;br /&gt;
&lt;br /&gt;
==== The installation is corrupted ====&lt;br /&gt;
The PinePhone Pro won't be able to boot if the installation on the SPI flash, the eMMC or the microSD card got corrupted. To boot a working operating system:&lt;br /&gt;
&lt;br /&gt;
* Prepare a microSD card as explained in the section [[PinePhone Pro#Flashing to microSD card|Flashing to microSD card]]&lt;br /&gt;
* Remove any USB-C cable or device or add-on case from the PinePhone Pro&lt;br /&gt;
* Make sure the device is powered off by shortly removing the battery for a second&lt;br /&gt;
* Insert the microSD card into the top slot of the PinePhone Pro. Make sure the microSD card is inserted all the way and that the notch of the right side of the microSD card is not visible anymore.&lt;br /&gt;
* Power on the device while bypassing the SPI and eMMC as explained under [[PinePhone Pro#Boot order|Boot order]]&lt;br /&gt;
&lt;br /&gt;
The device should now boot from the microSD card. If the phone does not boot from the microSD card the microSD card was flashed with an incompatible image or the battery got drained as explained above.&lt;br /&gt;
&lt;br /&gt;
=== Bootloaders ===&lt;br /&gt;
The following section contains notes regarding compatible bootloaders with the PinePhone Pro.&lt;br /&gt;
&lt;br /&gt;
==== U-Boot ====&lt;br /&gt;
The pre-installed operating system on the PinePhone Pro Explorer Edition, if sold prior to the end of July of 2022, is using [[Uboot|U-Boot]] as default bootloader. Batches sold after July of 2022 are using ''Tow-Boot''&lt;br /&gt;
&lt;br /&gt;
==== Tow-Boot ====&lt;br /&gt;
Current batches of the PinePhone Pro ship with ''Tow-Boot'' pre-installed to the SPI flash, which is an opinionated distribution of ''U-Boot'' and brings numerous advantages over stock ''U-Boot'', such as the possibility to choose from booting the eMMC or microSD card using the volume buttons during boot, as well as a ''USB Mass Storage mode'', where the device can be written to by connecting the device to a computer via USB.&lt;br /&gt;
&lt;br /&gt;
The user can flash Tow-Boot to the PinePhone Pro using the [https://tow-boot.org/devices/pine64-pinephonePro.html instructions on the Tow-Boot website].&lt;br /&gt;
&lt;br /&gt;
==== levinboot ====&lt;br /&gt;
The levinboot bootloader is another option for the PinePhone Pro. The project repository can be found [https://gitlab.com/DeltaGem/levinboot/-/tree/master/ here]. (Pinephone Pro supporting fork is [https://xff.cz/git/levinboot/ here].)&lt;br /&gt;
&lt;br /&gt;
== Privacy switch configuration ==&lt;br /&gt;
&lt;br /&gt;
[[File:PinePhone Kill Interruptors de Maquinari del PinePhone 4529.jpg|320px|thumb|right|Picture of the privacy switches]]&lt;br /&gt;
&lt;br /&gt;
The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their &amp;quot;on&amp;quot; position is toward the top of the phone.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Number&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Modem&lt;br /&gt;
| &amp;quot;On&amp;quot; enables 2G/3G/4G communication and GNSS hardware, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| WiFi / Bluetooth&lt;br /&gt;
| &amp;quot;On&amp;quot; enables WiFi and Bluetooth communication hardware, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Microphone&lt;br /&gt;
| &amp;quot;On&amp;quot; enables audio input from on-board microphones (not 3.5 mm jack), &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Rear camera&lt;br /&gt;
| &amp;quot;On&amp;quot; enables the rear camera, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Front camera&lt;br /&gt;
| &amp;quot;On&amp;quot; enables the front camera, &amp;quot;off&amp;quot; disables it.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Headphone&lt;br /&gt;
| &amp;quot;On&amp;quot; enables audio input and output via the 3.5 mm audio jack, &amp;quot;off&amp;quot; switches the jack to hardware UART¹ mode.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
¹ Note: The baud rate may be 1500000 instead of 115200.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
* '''Dimensions:''' 160.8 x 76.6 x 11.1mm&lt;br /&gt;
* '''Weight:''' Approx. 220g&lt;br /&gt;
* '''SIM Card:''' Nano-SIM (Micro-SIM before 07/2022)&lt;br /&gt;
* '''Display:'''&lt;br /&gt;
** '''Size:''' 6 inches (151mm) diagonal&lt;br /&gt;
** '''Type:''' 1440 x 720 in-cell IPS with Gorilla Glass 4™&lt;br /&gt;
** '''Resolution:''' 1440x720, 18:9 ratio&lt;br /&gt;
* '''System on Chip:''' Rockchip RK3399S 64bit SoC – 2x A72 and 4x A53 CPU cores @ 1.5GHz&lt;br /&gt;
* '''RAM:''' 4GB LPDDR4 @ 800MHz&lt;br /&gt;
* '''Internal Storage:''' 128GB eMMC, extendable up to 2TB via microSD, supports SDHC and SDXC&lt;br /&gt;
* '''NOR Flash:''' Listed as [GigaDevices] GD25LQ128EWIGR, but physical inspection found a SiliconKaiser SK25LP128.&lt;br /&gt;
* '''Back [[#Camera|Camera]]:''' 13MP Sony IMX258 with Gorilla Glass 4™ protective layer, LED Flash&lt;br /&gt;
* '''Front Camera:''' 8MP, OmniVision OV8858 front-facing camera&lt;br /&gt;
* '''Sound:''' Loudspeaker, 3.5mm jack &amp;amp; mic (jack doubles as hardware UART if hardware switch 6 is deactivated)&lt;br /&gt;
* '''Communication:'''&lt;br /&gt;
** '''[[#Modem|Modem]]:''' [https://www.quectel.com/product/lte-eg25-g/ Quectel EG25-G]&lt;br /&gt;
** '''LTE-FDD''': B1, B2, B3, B4, B5, B7, B8, B12, B13, B18, B19, B20, B25, B26, B28&lt;br /&gt;
** '''LTE-TDD''': B38, B39, B40, B41&lt;br /&gt;
** '''WCDMA''': B1, B2, B4, B5, B6, B8, B19&lt;br /&gt;
** '''GSM''': B2, B3, B5, B8 (850, 900, 1800, 1900 MHz)&lt;br /&gt;
** '''WLAN &amp;amp; Bluetooth:''' Wi-Fi 802.11AC, hotspot capable + Bluetooth V5.0&lt;br /&gt;
** '''GNSS:''' GPS/GLONASS/BeiDou/Galileo/QZSS, with A-GPS&lt;br /&gt;
* '''Sensors:''' Accelerometer, gyroscope, proximity, ambient light, compass&lt;br /&gt;
* '''Privacy switches:''' Modem, WiFi &amp;amp; Bluetooth, Microphone, Cameras&lt;br /&gt;
* '''[[#Battery|Battery]]:''' Lithium-ion, rated capacity 2800mAh (10.64Wh), typical capacity 3000mAh (11.40Wh) (nominally replaceable with any Samsung J7 form-factor battery; unglue bottom black plastic with your nail from Samsung battery before installation in order to match the dimensions)&lt;br /&gt;
* '''I/O:''' USB Type-C, USB Host, DisplayPort Alternate Mode output, 15W 5V 3A Quick Charge, follows USB PD specification&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Component&lt;br /&gt;
! Model&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen&lt;br /&gt;
| Goodix GT917S&lt;br /&gt;
|-&lt;br /&gt;
| LCD&lt;br /&gt;
| Himax HX8394 compatible&lt;br /&gt;
|-&lt;br /&gt;
| Rear camera&lt;br /&gt;
| IMX258&lt;br /&gt;
|-&lt;br /&gt;
| Front camera&lt;br /&gt;
| OV8858&lt;br /&gt;
|-&lt;br /&gt;
| Camera flash&lt;br /&gt;
| AW3641EDNR&lt;br /&gt;
|-&lt;br /&gt;
| WiFi + Bluetooth&lt;br /&gt;
| [https://www.azurewave.com/img/wireless-modules/AW_CM256SM_DS_Rev15_CYW.pdf AzureWave AW-CM256SM]&lt;br /&gt;
|-&lt;br /&gt;
| Modem&lt;br /&gt;
| [http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf Quectel EG25-G]&lt;br /&gt;
|-&lt;br /&gt;
| GNSS/GPS&lt;br /&gt;
| [http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf Quectel EG25-G]&lt;br /&gt;
|-&lt;br /&gt;
| 3 Axis Magnetometer&lt;br /&gt;
| [https://www.st.com/en/mems-and-sensors/lis3mdl.html ST LIS3MDL]&lt;br /&gt;
|-&lt;br /&gt;
| Geo Magnetic Sensor&lt;br /&gt;
| [http://www.voltafield.com/products01.html Voltafield AF8133J]&lt;br /&gt;
|-&lt;br /&gt;
| Ambient light / Proximity&lt;br /&gt;
| STK3311-A&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer / Gyroscope&lt;br /&gt;
| [https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6500/ TDK MPU-6500]&lt;br /&gt;
|-&lt;br /&gt;
| Vibration motor&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Notification LED&lt;br /&gt;
| LED0603RGB&lt;br /&gt;
|-&lt;br /&gt;
| Audio Codec&lt;br /&gt;
| ALC5616 and ALC5640&lt;br /&gt;
|-&lt;br /&gt;
| Volume buttons&lt;br /&gt;
| Buttons connected to the KEYADC&lt;br /&gt;
|-&lt;br /&gt;
| Power button&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Battery fuel gauge&lt;br /&gt;
| [https://rockchip.fr/RK818%20datasheet%20V1.0.pdf RK818]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Screen protectors ==&lt;br /&gt;
=== Film ===&lt;br /&gt;
* [https://www.protectionfilms24.com/article/6x-savvies-su75-screen-protectorpine64-pinephone-pro-explorer-edition-1644059.html Savvies's SU75 Screen Protector (6x)], [https://www.protectionfilms24.com/article/18x-savvies-su75-screen-protectorpine64-pinephone-pro-explorer-edition-2344059.html (18x)]&lt;br /&gt;
&lt;br /&gt;
=== Glass ===&lt;br /&gt;
* [https://pine64.com/product/pinephone-tempered-glass-screen-protector/ Pine64's TEMPERED GLASS SCREEN PROTECTOR]&lt;br /&gt;
&lt;br /&gt;
== Privacy screens ==&lt;br /&gt;
* [https://www.protectionfilms24.com/article/upscreen-spy-shield-clear-premium-privacy-screen-protectorpine64-pinephone-pro-explorer-edition-3544059.html upscreen's Spy Shield Clear Premium Privacy Screen Protector]&lt;br /&gt;
&lt;br /&gt;
== Cases ==&lt;br /&gt;
* [https://pine64.com/product/pinephone-soft-tpu-protective-case/ Pine64's SOFT TPU PROTECTIVE CASE]&lt;br /&gt;
* [https://pine64.com/product/pinephone-hard-protective-case/ Pine64's HARD PROTECTIVE CASE]&lt;br /&gt;
* [https://aliexpress.com/item/1005004062472923.html Another soft TPU protective case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003488932108.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003737555202.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003734984288.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003737130629.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003736793712.html Wallet case from AliExpress]&lt;br /&gt;
* [https://aliexpress.com/item/1005003410671879.html Wallet case from AliExpress]&lt;br /&gt;
&lt;br /&gt;
== Datasheets, schematics and certifications ==&lt;br /&gt;
&lt;br /&gt;
* PinePhone Pro mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhonePro/PinephonePro-Schematic-V1.0-20211127.pdf PinePhone Pro mainboard Explorer Edition Released Schematic ver 1.0 20211127]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhonePro/PinephonePro_PCB_Component_Placement-V02_20211127-top.pdf PinePhone Pro mainboard Explorer Edition component top placement ver 1.0 20211127]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhonePro/PinephonePro_PCB_Component_Placement-V02_20211127-bottom.pdf PinePhone Pro mainboard Explorer Edition component bottom placement ver 1.0 20211127]&lt;br /&gt;
&lt;br /&gt;
* PinePhone Pro USB-C small board schematic:&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
* Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhone%20Pro%20FCC%20Certificate-S21101902805001.pdf PinePhone Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhonePro%20SAR%20Evaluation%20Report-S21101902806001.pdf PinePhone Pro SAR Evaluation Report]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhone%20Pro%20CE%20RED%20Certificate-S21101902802-R1.pdf PinePhone Pro CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PinePhonePro%20RoHS%20Test%20Report.pdf PinePhone Pro ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
== Factory Test Build for Hardware Checking ==&lt;br /&gt;
&lt;br /&gt;
* Please note that this Android build solely for PinePhone Pro hardware checking purpose and solely used by the support team. This is NOT a general release build.&lt;br /&gt;
* DD image (for 8GB microSD Card or larger)&lt;br /&gt;
** [http://files.pine64.org/os/PinePhonePro/pinephone_pro_dd_android9_QC_Test_SDboot_20220215-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 214e063c8205c1a98d44b2015a21bb5d&lt;br /&gt;
*** File Size: 722MB&lt;br /&gt;
&lt;br /&gt;
* Download the build, extract the image and dd it to a 8 GB or larger microSD card, take out the PinePhone Pro Explorer Edition, then insert it into microSD slot (upper slot).&lt;br /&gt;
* Insert battery, press RE button (bypass SPI and eMMC boot) while plugging in the USB-C power. After 3 seconds release the RE button. &lt;br /&gt;
* When powering up, a battery icon screen will show up blow, press power key for two seconds, then the Rockchip logo screen shows up.&lt;br /&gt;
&lt;br /&gt;
[[File:PPP_Abdroid_Test_Utility-1.jpg|300px]][[File:PPP_Abdroid_Test_Utility-2.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
* Wait for the home screen, double tap on the test app icon (mark red circuit) and this will bring up the factory test screen. Please note that the SD test is disabled due in this is SD boot build.&lt;br /&gt;
* After running a particular test function, please snapshot the test result and pass it back to support team&lt;br /&gt;
** Note: Please insert a functional SIM card when performing the SIM test&lt;br /&gt;
** Note: When perform GPS test, the first result may fail and please ignore this false message.&lt;br /&gt;
** Note: For light sensing test, please have a light shine to the PinePhone Pro when performing the test.&lt;br /&gt;
&lt;br /&gt;
[[File:PPP_Abdroid_Test_Utility-4.jpg|300px]][[File:PPP_Abdroid_Test_Utility-5.jpg|538px]]&lt;br /&gt;
&lt;br /&gt;
== Using Factory Test Build for Battery charging ==&lt;br /&gt;
&lt;br /&gt;
* Please note that this Android build solely for PinePhone Pro hardware checking purpose and solely used by support team. This is NOT a general release build.&lt;br /&gt;
* DD image (for 8GB microSD Card or larger)&lt;br /&gt;
** [http://files.pine64.org/os/PinePhonePro/pinephone_pro_dd_android9_QC_Test_SDboot_20220215-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 214e063c8205c1a98d44b2015a21bb5d&lt;br /&gt;
*** File Size: 722MB&lt;br /&gt;
&lt;br /&gt;
* Download the build, extract the image and dd it to a 8 GB or larger microSD card, takes out the PinePhone Pro Explorer Edition then insert it into microSD slot (upper slot).&lt;br /&gt;
* Insert battery, press RE button (bypass SPI and eMMC boot)  while plug in USB-C power. After 3 seconds release RE button. &lt;br /&gt;
* When power up, below battery icon screen show up and battery will start charging. &lt;br /&gt;
* The battery icon display for few seconds and then LCD panel turn off while charging. To check charging status, just quick press power button (about 0.5 second) and battery icon will display progress.&lt;br /&gt;
&lt;br /&gt;
[[File:PPP_Abdroid_Test_Utility-1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Press ==&lt;br /&gt;
&lt;br /&gt;
For an overview about media of the PinePhone Pro you can use for the news, blogs, or similar see [[PinePhone Press]].&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://www.pine64.org/pinephonepro/ Product Page]&lt;br /&gt;
* [https://www.youtube.com/watch?v=wP2-6Z74W44 Announcement video]&lt;br /&gt;
* [https://www.pine64.org/2021/10/15/october-update-introducing-the-pinephone-pro/ Blog post] with the announcement&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone Pro]][[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>Tree</name></author>
	</entry>
</feed>