<?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=JerseyDevil</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=JerseyDevil"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/JerseyDevil"/>
	<updated>2026-04-23T10:36:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User:JerseyDevil&amp;diff=13238</id>
		<title>User:JerseyDevil</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User:JerseyDevil&amp;diff=13238"/>
		<updated>2022-07-02T02:22:19Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2022-07-01T22:03:05‎&lt;br /&gt;
&lt;br /&gt;
2021-05-12T04:39:59&lt;br /&gt;
&lt;br /&gt;
https://forum.pine64.org/member.php?action=profile&amp;amp;uid=22686&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|User_Talk:JerseyDevil}}&lt;br /&gt;
&lt;br /&gt;
Feel free to create the talk page if necessary, will be archived when conversation is finished.&lt;br /&gt;
&lt;br /&gt;
I'll notice that the talk page no longer red-links. presumably other notices will generate, but this is one I'll be looking for.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
It's funny when you hit the wiki ratelimit and it states you're adding a link when none are present in the page.&lt;br /&gt;
&lt;br /&gt;
also odd when the cluster starts throwing space errors on the forum and thumbnails don't generate on the wiki..&lt;br /&gt;
&lt;br /&gt;
capskhhhhhhskaaaaa immoral?&lt;br /&gt;
&lt;br /&gt;
nowiki:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePower]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ROCKPro64]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guide]]&lt;br /&gt;
&lt;br /&gt;
?action=info&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|ROCK64}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Guide]]&lt;br /&gt;
&lt;br /&gt;
{{toclimit|limit=1}}&lt;br /&gt;
&lt;br /&gt;
 {{tocleft|limit=1}} &lt;br /&gt;
&lt;br /&gt;
 {{tocright|limit=1}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
floatleft&lt;br /&gt;
floatright&lt;br /&gt;
&lt;br /&gt;
category:&lt;br /&gt;
__NOGALLERY__&lt;br /&gt;
&lt;br /&gt;
jdjdjd@&lt;br /&gt;
19210101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCone&amp;diff=13237</id>
		<title>PineCone</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCone&amp;diff=13237"/>
		<updated>2022-07-02T02:03:05Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: /* Pine64 USB JTAG Adapter information and schematics */ - correct link filename oldid=8860 - https://wiki.pine64.org/index.php?title=PineCone&amp;amp;diff=prev&amp;amp;oldid=8860 - (correct misnamed link, likely typo of ?20201218? pdf mod date.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pine64_BL602_EVB_photo-3-small.jpg|thumb|PineCone BL602 EVB (Evaluation Board)]]&lt;br /&gt;
&lt;br /&gt;
The '''PineCone''' is a BL602 evaluation board, which was developed with the goal to challenge the open source community to achieve blob-free and free and open source WiFi and Bluetooth, see the [https://www.pine64.org/2020/10/28/nutcracker-challenge-blob-free-wifi-ble/ Nutcracker Challenge].&lt;br /&gt;
&lt;br /&gt;
== BL602 Specifications ==&lt;br /&gt;
* '''CPU:''' 32-bit RV32IMAFC RISC-V “SiFive E24 Core”&lt;br /&gt;
** [https://www.sifive.com/cores/e24 SiFive E24 Core information]&lt;br /&gt;
* '''Memory:'''&lt;br /&gt;
** 128KB ROM&lt;br /&gt;
** 276KB SRAM&lt;br /&gt;
** 1Kb eFuse&lt;br /&gt;
** 2MB Embedded Flash&lt;br /&gt;
* '''Security:'''&lt;br /&gt;
** Secure boot&lt;br /&gt;
** Secure debug&lt;br /&gt;
** AES 128/192/256&lt;br /&gt;
** SHA-1/224/256&lt;br /&gt;
** TRNG (True Random Number Generator)&lt;br /&gt;
** PKA (Public Key Accelerator)&lt;br /&gt;
* '''Wireless:'''&lt;br /&gt;
** Wi-Fi 802.11 b/g/n&lt;br /&gt;
** Bluetooth® Low Energy 5.0&lt;br /&gt;
** Wi-Fi Fast connection with BLE assistance&lt;br /&gt;
** Wi-Fi and BLE coexistence&lt;br /&gt;
** Wi-Fi Security WPS/WEP/WPA/WPA2/WPA3&lt;br /&gt;
** STA, SoftAP and sniffer modes&lt;br /&gt;
** Multi-Cloud connectivity&lt;br /&gt;
** 2.4 GHz RF transceiver&lt;br /&gt;
** Integrated RF balun, PA/LNA&lt;br /&gt;
* '''Package Type:'''&lt;br /&gt;
** 32 pin QFN 4mm x 4mm&lt;br /&gt;
* JTAG support (See below for BL602 impact)&lt;br /&gt;
&lt;br /&gt;
[[File:BL602_Block_Diagram.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== JTAG ==&lt;br /&gt;
{| class=&amp;quot;wikitable floatright&amp;quot;&lt;br /&gt;
|+ Default JTAG pins&lt;br /&gt;
|-&lt;br /&gt;
| GPIO Pin || JTAG Pin&lt;br /&gt;
|-&lt;br /&gt;
| GPIO17 || TDI&lt;br /&gt;
|-&lt;br /&gt;
| GPIO11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| GPIO12 || TMS&lt;br /&gt;
|-&lt;br /&gt;
| GPIO14 || TCK&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BL602 multiplexes four GPIO pins to provide the familiar JTAG lines. See the accompanying table for the default pin mappings.&lt;br /&gt;
&lt;br /&gt;
These are the default JTAG pins in use after a cold boot. However, many pieces of software, including the demo that's installed by default on new PineCones, remap these pins to other functions. You cannot use the default wiring for JTAG while such software is running. This issue is especially prevalent on the PineCone because three of the default JTAG pins are connected to the onboard RGB LED. Nothing about the LED itself interferes with JTAG, but any program that uses the LED will necessarily remap some of the default JTAG pins to be GPIO.&lt;br /&gt;
&lt;br /&gt;
The MaskROM download mode that the BL602 enters when you tie GPIO8 high does '''not''' remap the default JTAG pins, and so you can and should use that mode while checking basic functionality of your JTAG adapter.&lt;br /&gt;
&lt;br /&gt;
Note that, just as software can remap the default JTAG pins to be something else, it can also remap other pins to be JTAG. Control over this is quite granular, with 5-6 candidate pins for each individual JTAG signal that can be mapped independently of one another. LEE Lup Yuen has written some [https://lupyuen.github.io/articles/openocd#free-the-led-from-jtag-port sample code] showing how to remap the JTAG pins so that your software can use the LED without giving up support for debugging.&lt;br /&gt;
&lt;br /&gt;
== Pine64 USB JTAG Adapter information and schematics ==&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/PINE64%20USB%20JTAG%20Adapter%20Schematic-20201215.pdf PINE64 USB JTAG Adapter Schematic-20201215.pdf (pine64_ft232hl_board-2020-12-14)] &lt;br /&gt;
* [[:File:PINE64_USB_JTAG_Adapter_Schematic_ver_1.0a-20210109.pdf|PINE64 USB JTAG Adapter schematic 20210109 1.0a]]&lt;br /&gt;
&lt;br /&gt;
== PineCone BL602 EVB information and schematics ==&lt;br /&gt;
* Approximate dimensions: 26mm x 43mm&lt;br /&gt;
* Board layout:&lt;br /&gt;
[[File:PADI-II_EVB.png]]&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/Pine64%20BL602%20EVB%20Schematic%20ver%201.1.pdf PineCone BL602 EVB schematic ver 1.1]&lt;br /&gt;
** Note: In PineCone revision 1.1 (&amp;quot;BL62B_EVB V1.1&amp;quot; silkscreened on back of board), CC1 and CC2 share one 5.1KΩ resistor. This means the board will fail to power when you use an e-marked USB-C cable like the one that comes with Apple chargers. See [https://medium.com/@leung.benson/how-to-design-a-proper-usb-c-power-sink-hint-not-the-way-raspberry-pi-4-did-it-f470d7a5910 this article] for details of why this happens. The next schematic design will give each line its own 5.1KΩ resistor as per the USB-C specification.&lt;br /&gt;
* The board uses a CH340 Serial/USB adapter. This chip is commonly used in Arduino-class development boards. It is a full speed (12Mbps) USB interface and has vendor ID 0x1a86 with product ID 0x7523.&lt;br /&gt;
* The GPIO pins (11, 12, 14, 17) plus the nearby RESET, POWER, and GND pins are all located on one side of the board, on J1 to provide JTAG connection.&lt;br /&gt;
&lt;br /&gt;
== Pinenut-01S Module information and schematics ==&lt;br /&gt;
[[File:Pinenut-01S_PCB-Front.png|225px]][[File:Pinenut-01S_PCB-Back.png|225px]]&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/Pinenut-01S%20V1.01%20SCH.pdf Pinenut-01S schematic ver 1.01]&lt;br /&gt;
* [https://wiki.pine64.org/images/6/6b/PineNut-01S_v1.01_KiCad.zip PineNut-01S KiCad schematic ver 1.01]&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/NUT-01S%20GPIO%20Definition%20ver%201.0.pdf Pinenut-01S GPIO Definition ver 1.0]&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/USB%20Adapter%20for%20Pinenut-01S%20Schematic%20V1.0.pdf USB Programmer adapter for Pinenut-01S schematic ver 1.0]&lt;br /&gt;
* The default firmware runs the UART at 2000000 bps.  It will accept input whilst regularly outputting:&amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;proc_hellow_entry: RISC-V rv32imafc&amp;lt;br/&amp;gt;cur key status:1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinenut-12S Module information ==&lt;br /&gt;
[[File:NUT-12S_module-front.jpg|200px]][[File:NUT-12S_module-back.jpg|200px]]&lt;br /&gt;
* [https://files.pine64.org/doc/Pinenut/NUT-12S%20GPIO%20Definition%20ver%201.0.pdf Pinenut-12S GPIO Definition ver 1.0]&lt;br /&gt;
* Onboard LED is connected to IO0&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Bouffalo BL-602 SoC information:&lt;br /&gt;
** [https://github.com/bouffalolab/bl_docs Bouffalo Lab's official bl_docs repository]: should always contain the latest SoC documentation available, in PDF, HTML, and reStructuredText source forms.&lt;br /&gt;
** [https://github.com/pine64/bl602-docs/tree/main/mirrored PINE64's bl602-docs repository]: contains an archive of all historical datasheets and reference manual PDFs but may lag behind Bouffalo's official repository. If you notice that it is, please submit a pull request!&lt;br /&gt;
* USB/Serial adapter:&lt;br /&gt;
** [https://cdn.sparkfun.com/datasheets/Dev/Arduino/Other/CH340DS1.PDF CH340 serial converter]&lt;br /&gt;
&lt;br /&gt;
== Misc notes ==&lt;br /&gt;
Planned to be available in at least three form factors:&lt;br /&gt;
* NUT-01S -&amp;gt; ESP-01S&lt;br /&gt;
* NUT-12S -&amp;gt; ESP-12S&lt;br /&gt;
* NUT-15 -&amp;gt; RTL8723/AMPAK&lt;br /&gt;
&lt;br /&gt;
== Loading code ==&lt;br /&gt;
To load code, you must move the jumper to the position closest to the edge, press reset, load the code, move the jumper back toward the center of the board, and press reset again.&lt;br /&gt;
&lt;br /&gt;
There are currently a number of loaders in progress, each with differing degrees of completeness and success on various operating systems.&lt;br /&gt;
* In the build tree, there is BLFlashCube for Windows, which is a proprietary GUI for flashing images. Linux and macOS binaries are available via [https://dev.bouffalolab.com/download Bouffalo Lab's developer portal].&lt;br /&gt;
* [https://github.com/stschake/bl60x-flash bl60x-flash] is in Python and has been reported successful on MacOS catalina (10.15.6) by Punnerud and madushan1000.&lt;br /&gt;
* [https://github.com/bouffalolab/BLOpenFlasher BLOpenFlasher] is a WIP, written in go, by Bouffalo Labs to provide source for a flash utility.&lt;br /&gt;
* [https://github.com/renzenicolai/bl602tool bl602tool] is a Python utility in development.&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://pypi.org/project/bflb-eflash-loader/ Bouffalo's Python Flash Loader] is a new (Dec 20) flash loader by the makers of the chip.&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;del&amp;gt;[https://pypi.org/project/bflb-image-build/ Bouffalo's image build] smooshes code and adds headers for downloads.&amp;lt;/del&amp;gt;&lt;br /&gt;
* [https://pypi.org/project/bflb-mcu-tool/ Bouffalo's MCU tool] (Mar 2021) Python image tool replaced both of the above. Now combined with eflash loader, deals with partitions, DTS, signing, fuses etc.&lt;br /&gt;
* [https://github.com/spacemeowx2/blflash blflash serial flasher] BL602 serial flasher, inspired by BLOpenFlasher&lt;br /&gt;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
* [https://github.com/pine64/bl_iot_sdk PineCone BL602 GitHub Page (PINE64 fork)] has compilers, linkers, and all the code to build on Windows, Linux (x86_64), and MacOS.&lt;br /&gt;
* [https://github.com/bouffalolab/bl_iot_sdk Bouffalo Lab GitHub Page]&lt;br /&gt;
* [https://github.com/renzenicolai/bl602-docs/ BL602 Developer organize documentation GitHub Page]&lt;br /&gt;
* [https://github.com/renzenicolai/bl602tool BL602 Developer organize tool GitHub Page]&lt;br /&gt;
* [https://github.com/stschake/bl60x-flash Programming tool for Bouffalo Labs BL602/BL604 chips]&lt;br /&gt;
* [https://github.com/pine64/bl602-re BL602 reverse engineering working group]&lt;br /&gt;
* [https://github.com/pine64/bl602-sdio-linux Linux kernel module]&lt;br /&gt;
* [https://github.com/tchebb/bl602-docs BL602 Documentation]&lt;br /&gt;
* [https://github.com/spacemeowx2/blflash BL602 serial flasher]&lt;br /&gt;
* [https://github.com/mkroman/awesome-bouffalo#feature-matrix Awesome Bouffalo]&lt;br /&gt;
&lt;br /&gt;
== Articles and Blogs ==&lt;br /&gt;
* [https://lupyuen.github.io/articles/pinecone Quick Peek of PineCone BL602 RISC-V Evaluation Board by Lup Yuen]&lt;br /&gt;
* [https://maero.dk/bl602-firmware-image-format/ Documenting the BouffaloLab BL602 firmware image format by MK]&lt;br /&gt;
* [https://lupyuen.github.io/articles/openocd Connect PineCone BL602 to OpenOCD by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/debug Debug Rust on PineCone BL602 with VSCode and GDB by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/mynewt Porting Mynewt to PineCone BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/flash Flashing Firmware to PineCone BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/led Control PineCone BL602 RGB LED with GPIO and PWM by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/gpio Mynewt GPIO ported to PineCone BL602 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/i2c PineCone BL602 talks to I2C Sensors by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/spi PineCone BL602 talks SPI too! by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/display PineCone BL602 Blasting Pixels to ST7789 Display with LVGL Library by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/uart PineCone BL602 Talks UART to Grove E-Ink Display by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/book The RISC-V BL602 Book by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lora Connect PineCone BL602 to LoRa Transceiver by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/wisblock RAKwireless WisBlock talks LoRa with PineCone BL602 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lora2 PineCone BL602 RISC-V Board Receives LoRa Packets by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/rust Run Rust RISC-V Firmware with BL602 IoT SDK by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lorawan PineCone BL602 Talks LoRaWAN by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lisp uLisp and Blockly on PineCone BL602 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/wasm Simulate RISC-V BL602 with WebAssembly, uLisp and Blockly by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/boot BL602 Bootloader by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/tflite Machine Learning on RISC-V BL602 with TensorFlow Lite by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/wifi Reverse Engineering WiFi on RISC-V BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/adc Rust on RISC-V BL602: Is It Sunny? by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/rustsim Rust on RISC-V BL602: Simulated with WebAssembly by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/pinedio PineDio Stack BL604 RISC-V Board: Testing The Prototype by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/rhai Rust on RISC-V BL602: Rhai Scripting by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lorawan2 LoRaWAN on PineDio Stack BL604 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/ttn The Things Network on PineDio Stack BL604 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/cbor Encode Sensor Data with CBOR on BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/roblox IoT Digital Twin with Roblox and The Things Network by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/tsen Internal Temperature Sensor on BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/payload CBOR Payload Formatter for The Things Network by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/prometheus Monitor IoT Devices in The Things Network with Prometheus and Grafana by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/nuttx Apache NuttX OS on RISC-V BL602 and BL604 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/spi2 SPI on Apache NuttX OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/sx1262 LoRa SX1262 on Apache NuttX OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/lorawan3 LoRaWAN on Apache NuttX OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/rust2 Rust on Apache NuttX OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/auto Auto Flash and Test NuttX on RISC-V BL602 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/loader BL602 EFlash Loader: Reverse Engineered with Ghidra by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/ikea Connect IKEA Air Quality Sensor to Apache NuttX OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/bme280 Apache NuttX Driver for BME280 Sensor: Ported from Zephyr OS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/rusti2c Rust talks I2C on Apache NuttX RTOS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/st7789 ST7789 Display with LVGL Graphics on Apache NuttX RTOS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/pinedio2 PineDio Stack BL604 runs Apache NuttX RTOS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/touch NuttX Touch Panel Driver for PineDio Stack BL604 by Lup Yuen]&lt;br /&gt;
* [https://www.robertlipe.com/buttons-on-bl602-nuttx/ Buttons on BL602 NuttX]&lt;br /&gt;
* [https://lupyuen.github.io/articles/expander NuttX GPIO Expander for PineDio Stack BL604 by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/auto2 (Mostly) Automated Testing of Apache NuttX RTOS on PineDio Stack BL604 RISC-V Board by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/zig Zig on RISC-V BL602: Quick Peek with Apache NuttX RTOS by Lup Yuen]&lt;br /&gt;
* [https://lupyuen.github.io/articles/iot Build an IoT App with Zig and LoRaWAN by Lup Yuen]&lt;br /&gt;
&lt;br /&gt;
[[Category:Nutcracker]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User:JerseyDevil&amp;diff=10809</id>
		<title>User:JerseyDevil</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User:JerseyDevil&amp;diff=10809"/>
		<updated>2021-06-19T09:55:04Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: sorry for the wall of edits, lot's of small ones.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2021-05-12T04:39:59&lt;br /&gt;
&lt;br /&gt;
https://forum.pine64.org/member.php?action=profile&amp;amp;uid=22686&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|User_Talk:JerseyDevil}}&lt;br /&gt;
&lt;br /&gt;
Feel free to create the talk page if necessary, will be archived when conversation is finished.&lt;br /&gt;
&lt;br /&gt;
I'll notice that the talk page no longer red-links. presumably other notices will generate, but this is one I'll be looking for.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
It's funny when you hit the wiki ratelimit and it states you're adding a link when none are present in the page.&lt;br /&gt;
&lt;br /&gt;
also odd when the cluster starts throwing space errors on the forum and thumbnails don't generate on the wiki..&lt;br /&gt;
&lt;br /&gt;
capskhhhhhhskaaaaa immoral?&lt;br /&gt;
&lt;br /&gt;
nowiki:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePower]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ROCKPro64]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Guide]]&lt;br /&gt;
&lt;br /&gt;
?action=info&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|ROCK64}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Guide]]&lt;br /&gt;
&lt;br /&gt;
{{toclimit|limit=1}}&lt;br /&gt;
&lt;br /&gt;
 {{tocleft|limit=1}} &lt;br /&gt;
&lt;br /&gt;
 {{tocright|limit=1}} &lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
floatleft&lt;br /&gt;
floatright&lt;br /&gt;
&lt;br /&gt;
category:&lt;br /&gt;
__NOGALLERY__&lt;br /&gt;
&lt;br /&gt;
jdjdjd@&lt;br /&gt;
19210101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Accessories_Step_by_Step_Guides&amp;diff=10808</id>
		<title>Accessories Step by Step Guides</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Accessories_Step_by_Step_Guides&amp;diff=10808"/>
		<updated>2021-06-19T09:03:26Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Accessories Step by Step Guides&lt;br /&gt;
==Wifi/Bluetooth module:==&lt;br /&gt;
*[http://files.pine64.org/doc/guide/PINE64_Wi-Fi_Bluetooth_Installation_Guide.pdf Step by Step Installation Guide]&lt;br /&gt;
==Acrylic Open Enclosure:==&lt;br /&gt;
*[http://files.pine64.org/doc/guide/PINE64_Acrylic_Open_Enclosure_Installation_Guide.pdf Step by Step Installation Guide]&lt;br /&gt;
&lt;br /&gt;
If you wish to stack two or more of these enclosures, the screws that serve as feet can be replaced by M8-1.25x16mm grub screws.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
1.25mm is the pitch between threads, and for the M8 (8mm outer diameter) that's the default pitch, and most are advertised as M8x16mm screws. 16mm is really the minimum workable length to catch both the bottom and top aluminium standoffs, with both washers and the acrylic sheet in between. It's workable, but if you can get 20mm it's probably for the best.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Images: https://imgur.com/a/Zka1qfb&lt;br /&gt;
&lt;br /&gt;
==Simple 3D Printed Case by Harlandraka==&lt;br /&gt;
*[http://www.thingiverse.com/thing:1831345 3D printing schematics]&lt;br /&gt;
==Sliding 3D Printed Case by Harlandraka==&lt;br /&gt;
*[http://www.thingiverse.com/thing:1694943 3D printing schematics]&lt;br /&gt;
==C4 Labs Case for the Pine==&lt;br /&gt;
*[http://forum.pine64.org/showthread.php?tid=2277 Forum thread including instructions]&lt;br /&gt;
==7&amp;quot; LCD Touch Screen Panel:==&lt;br /&gt;
*[http://files.pine64.org/doc/guide/PINE64_7_inches_LCD_Touch_Screen_Panel_Installation_Guide.pdf Step by Step Installation Guide]&lt;br /&gt;
==Real Time Clock (RTC) battery holder (AAA battery type):==&lt;br /&gt;
*[http://files.pine64.org/doc/guide/PINE64_RTC_Backup_Battery_AAA_Installation_Guide.pdf Step by Step Installation Guide]&lt;br /&gt;
==Real Time Clock (RTC) battery holder (CR-2032 Coin Cell battery type):==&lt;br /&gt;
*[http://files.pine64.org/doc/guide/PINE64_RTC_Backup_Battery_CR2032_Installation_Guide.pdf Step by Step Installation Guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pine A64]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineTime_Custom_Watchface_Tutorial&amp;diff=10807</id>
		<title>PineTime Custom Watchface Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineTime_Custom_Watchface_Tutorial&amp;diff=10807"/>
		<updated>2021-06-19T09:00:47Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=PineTime Custom Watchface Tutorial=&lt;br /&gt;
&lt;br /&gt;
This is a tutorial to help new users create custom watchfaces based on the InfiniTime Firmware for Pinetime made by user JF002, thanks to him for its development...&lt;br /&gt;
&lt;br /&gt;
We will explain some of the things we went through while creating some custom Watchfaces, so consider this as a log of experiments of sorts..&lt;br /&gt;
&lt;br /&gt;
So stay tuned to it as it will be dynamically updated...&lt;br /&gt;
&lt;br /&gt;
==What you need to start==&lt;br /&gt;
The entire building process will be done by GitHub, so all you need is a device which can give you a Github Web Client, a PC or tablet to give you enough screen space to review your code and a steady internet connection.&lt;br /&gt;
&lt;br /&gt;
Since the compiling and file management is done by Github online, you have nothing else to worry about other than working with the files that display the watch face.&lt;br /&gt;
&lt;br /&gt;
So with those things settled, let's start with the basics of a watchface.&lt;br /&gt;
&lt;br /&gt;
Please remember that this is a wiki, so you can make an account and help us improve this page.&lt;br /&gt;
&lt;br /&gt;
Please make sure not to unilaterally remove info though, but offer an alternative. If it is indeed a better way, in time your alternative will grow into the main text, and the latter info will be pruned.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Firmware (also called InfiniTime) we will be working with is made with a programming language named '''C++''':[https://en.wikipedia.org/wiki/C%2B%2B]&lt;br /&gt;
&lt;br /&gt;
Basic knowledge of C/C++ is required to to understand the advanced watch faces as that requires more complex code, but you can still do a some cool things without much knowledge of C++ programming, just some small edits to existing programs.&lt;br /&gt;
&lt;br /&gt;
InfiniTime uses the '''LVGL''':[https://lvgl.io] graphics library to provide users with a simple and clean UI without overpowering the Nordic '''nRF52832''':[http://files.pine64.org/doc/datasheet/pinetime/nRF52832%20product%20brief.pdf] microcontroller which is the brain of the watch.&lt;br /&gt;
&lt;br /&gt;
To get the watchface to work there are these basic steps. We will go over each step separately, so don't be daunted, all will become clear soon.&lt;br /&gt;
&lt;br /&gt;
For now we will, modify the the existing watchface, change the positioning of the text labels, add an icon to an existing watchface, and later on we will do a full watchface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main file we need to focus on is the '''WatchFaceDigital.cpp''' file, it is what contains most of the data attributed to what we see on the watchface, including The time/day characters, the battery and bluetooth icons, and also pedometer count...&lt;br /&gt;
&lt;br /&gt;
so everything we will be doing in the basic modifications is purely messing with this single file.&lt;br /&gt;
&lt;br /&gt;
==Labels==&lt;br /&gt;
===What are labels?===&lt;br /&gt;
Labels are considered as &amp;quot;elemental&amp;quot; parts that make up a screen's Text-based UI by the LVGL library...&lt;br /&gt;
Each label is also considered as an &amp;quot;object&amp;quot; or &amp;quot;obj&amp;quot; and can be manipulated, by changing the data attributed with the &amp;quot;obj&amp;quot;, for example, position, internal data like the strings/text etc.&lt;br /&gt;
when can change what the label shows and where it shows it...&lt;br /&gt;
&lt;br /&gt;
===Modifying label data===&lt;br /&gt;
let's observe something small like the word &amp;quot;BPM&amp;quot; near the bottom of the watch face...&lt;br /&gt;
[[file:PineTimeCustom-1.png|right|200px]]&lt;br /&gt;
&lt;br /&gt;
If we take a look at the source file of the watchface, (a.k.a the clock.cpp file)&lt;br /&gt;
we can observe that these particular lines are what attributes to the word &amp;quot;BPM being displayed...&lt;br /&gt;
 heartbeatBpm = lv_label_create(lv_scr_act(), NULL);&lt;br /&gt;
 lv_label_set_text(heartbeatBpm, &amp;quot;BPM&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
we can modify the text inside the quotes and replace the word 'BPM' between those quotes to something like 'LOVE'&lt;br /&gt;
and the result after compiling the firmware again with the changes and flashing it to the watch would be that the text changes on the watch face and displays 'LOVE' inplace of 'BPM'...&lt;br /&gt;
&lt;br /&gt;
If this happened correctly, then you have successfully made a custom new watchface! Now we can do something a bit more complex...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now take for in instance the days of the week that we have on the bottom line with the date...&lt;br /&gt;
&lt;br /&gt;
they are stored a &amp;quot;C array&amp;quot; which is basically multiple words separated by commas..&lt;br /&gt;
the date is in a format of '''&amp;lt;day of the week&amp;gt; &amp;lt;day&amp;gt; &amp;lt;Month&amp;gt; &amp;lt;year&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
which in the source file is expressed as,&lt;br /&gt;
 sprintf(dateStr, &amp;quot;%s %d %s %d&amp;quot;, DayOfWeekToString(dayOfWeek), day, MonthToString(month), year);&lt;br /&gt;
 lv_label_set_text(label_date, dateStr);&lt;br /&gt;
&lt;br /&gt;
here, &lt;br /&gt;
 %s %d %s %d &lt;br /&gt;
stores the print format of the variables, and&lt;br /&gt;
&lt;br /&gt;
 DayOfWeekToString(dayOfWeek), day, MonthToString(month), year  &lt;br /&gt;
are the variables themselves...&lt;br /&gt;
&lt;br /&gt;
Now, &lt;br /&gt;
if the date was a saturday 11/7/2020, you can observe that the date looks like &lt;br /&gt;
 SATURDAY 11 JUL 2020&lt;br /&gt;
as seen in the above image (the one where we changed BPM to LOVE)&lt;br /&gt;
&lt;br /&gt;
by modifying the format of the variables, we can change how those words are arranged, and add some extra characters if we like... &lt;br /&gt;
 (there is a catch to the list of characters you can use however, but it will be discussed later...)&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&lt;br /&gt;
We modifying the format by adding a comma... &amp;quot;,&amp;quot; in between the second &amp;quot;%s&amp;quot; and &amp;quot;%d&amp;quot; like this,&lt;br /&gt;
 &amp;quot;%s %d %s, %d&amp;quot;&lt;br /&gt;
and changing that in the line...&lt;br /&gt;
 sprintf(dateStr, &amp;quot;%s %d %s, %d&amp;quot;, DayOfWeekToString(dayOfWeek), day, MonthToString(month), year);&lt;br /&gt;
&lt;br /&gt;
we can make the date become...&lt;br /&gt;
 SATURDAY 11 JUL, 2020&lt;br /&gt;
&lt;br /&gt;
which means we now were able to modify how the text got display to make it a bit more nice...&lt;br /&gt;
&lt;br /&gt;
but if you haven't noticed, the line containing the date is already full, meaning we will get some problems while displaying the date and causing it to wrap around,&lt;br /&gt;
making a single character go to the next line and look more like,&lt;br /&gt;
&lt;br /&gt;
 SATURDAY 11 JUL, 202&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
so why don't we shorten the characters present in the date from being &amp;quot;SATURDAY&amp;quot; to simply just &amp;quot;sat.&amp;quot; (It will have the small period at the end, and is only 3 characters long) &lt;br /&gt;
I will also convert the months of the year from Capital to small letters... &lt;br /&gt;
&lt;br /&gt;
for that look into the part where the days of the week of are stored as text,&lt;br /&gt;
and also while looking at it, we can solve another question, why was their two variables in the date format that looked like, DayOfWeekToString(dayOfWeek), and MonthToString(month) ?&lt;br /&gt;
&lt;br /&gt;
It is because the system gives the date/ time as numbers (Monday-1, Tuesday-2 Wednesday-3 for the days, and 1-January, 2-February, 3-March ),&lt;br /&gt;
and so a function along with a C array is used to assign these numbers to Days/Months in text form as it is easier to read...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this is the Array containing the day of the week, (as text) &lt;br /&gt;
 char const *Clock::DaysString[] = {&lt;br /&gt;
        &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;MONDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;TUESDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;WEDNESDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;THURSDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;FRIDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;SATURDAY&amp;quot;,&lt;br /&gt;
        &amp;quot;SUNDAY&amp;quot;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
and this Array stores the months of the year, (as text)&lt;br /&gt;
 char const *Clock::MonthsString[] = {&lt;br /&gt;
        &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;JAN&amp;quot;,&lt;br /&gt;
        &amp;quot;FEB&amp;quot;,&lt;br /&gt;
        &amp;quot;MAR&amp;quot;,&lt;br /&gt;
        &amp;quot;APR&amp;quot;,&lt;br /&gt;
        &amp;quot;MAY&amp;quot;,&lt;br /&gt;
        &amp;quot;JUN&amp;quot;,&lt;br /&gt;
        &amp;quot;JUL&amp;quot;,&lt;br /&gt;
        &amp;quot;AUG&amp;quot;,&lt;br /&gt;
        &amp;quot;SEP&amp;quot;,&lt;br /&gt;
        &amp;quot;OCT&amp;quot;,&lt;br /&gt;
        &amp;quot;NOV&amp;quot;,&lt;br /&gt;
        &amp;quot;DEC&amp;quot;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
here we can see that the days are stored in a full format as &amp;quot;SUNDAY&amp;quot;, &amp;quot;MONDAY&amp;quot;, &amp;quot;TUESDAY&amp;quot; etc.&lt;br /&gt;
we can change all of them to a shorter format like &amp;quot;sun.&amp;quot;, &amp;quot;mon.&amp;quot;, &amp;quot;tue.&amp;quot;, to make it short and nice...&lt;br /&gt;
while doing so, we can even make the months use small letters as said before..&lt;br /&gt;
&lt;br /&gt;
so the source file (clock.cpp) becomes,&lt;br /&gt;
&lt;br /&gt;
(for the days of the week)&lt;br /&gt;
 char const *Clock::DaysString[] = {&lt;br /&gt;
        &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;mon.&amp;quot;,&lt;br /&gt;
        &amp;quot;tue.&amp;quot;,&lt;br /&gt;
        &amp;quot;wed.&amp;quot;,&lt;br /&gt;
        &amp;quot;thu.&amp;quot;,&lt;br /&gt;
        &amp;quot;fri.&amp;quot;,&lt;br /&gt;
        &amp;quot;sat.&amp;quot;,&lt;br /&gt;
        &amp;quot;sun.&amp;quot;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
(for the months of the year)&lt;br /&gt;
 char const *Clock::MonthsString[] = {&lt;br /&gt;
        &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;jan&amp;quot;,&lt;br /&gt;
        &amp;quot;feb&amp;quot;,&lt;br /&gt;
        &amp;quot;mar&amp;quot;,&lt;br /&gt;
        &amp;quot;apr&amp;quot;,&lt;br /&gt;
        &amp;quot;may&amp;quot;,&lt;br /&gt;
        &amp;quot;jun&amp;quot;,&lt;br /&gt;
        &amp;quot;jul&amp;quot;,&lt;br /&gt;
        &amp;quot;aug&amp;quot;,&lt;br /&gt;
        &amp;quot;sep&amp;quot;,&lt;br /&gt;
        &amp;quot;oct&amp;quot;,&lt;br /&gt;
        &amp;quot;nov&amp;quot;,&lt;br /&gt;
        &amp;quot;dec&amp;quot;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
which means now our original date, saturday 11/7/2020 will become...&lt;br /&gt;
 sat. 11 jul, 2020&lt;br /&gt;
&lt;br /&gt;
you now know how to change the data present in a label object, and the format of it..,&lt;br /&gt;
 &lt;br /&gt;
Here is a fun idea you can try: you can even replace the days with whatever thing that tells you (or) reminds you the day of the week &lt;br /&gt;
(like the food served in the cafe, Monday/taco, Tuesday/burger, Wednesday/pasta etc.) &lt;br /&gt;
 &lt;br /&gt;
 NOTE: when making the custom array, don't forget to leave a empty &amp;quot;&amp;quot; as the first element of the array,&lt;br /&gt;
 This is because the date is given by the system in a natural numbers format (1,2,3...) rather than a zero-starting format (0,1,2,3...), which the C array uses to index...&lt;br /&gt;
 so the C array indexes the days as &amp;quot;&amp;quot;-0, &amp;quot;Monday&amp;quot;-1, &amp;quot;Tuesday&amp;quot;-2 etc. and the months as &amp;quot;&amp;quot;-0, &amp;quot;January&amp;quot;-1, &amp;quot;February&amp;quot;-2 etc.)&lt;br /&gt;
&lt;br /&gt;
===Label positioning===&lt;br /&gt;
&lt;br /&gt;
The locational placement in LVGL is done on a cartesian plane,&lt;br /&gt;
where each object can have dynamic origin placement, and the Y-axis is inverted...&lt;br /&gt;
So going down is done with a positive Y-axis value and not negative as the it is by de-facto...&lt;br /&gt;
&lt;br /&gt;
[[File:LVGL coord system.png|200px|thumb|right|LVGL coord system]]&lt;br /&gt;
&lt;br /&gt;
The position of the various objects in clock.cpp are set by the line,&lt;br /&gt;
 lv_obj_set_pos(&amp;lt;obj&amp;gt;, &amp;lt;new_x&amp;gt;, &amp;lt;new_y&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
and the top left corner is the Cartesian origin, aka coordinates (0,0)&lt;br /&gt;
&lt;br /&gt;
this image can show you how to decide label placement for lv_obj_set_pos(...)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
we use another function, that is more advanced that gives the positional alignment based on preset locations...&lt;br /&gt;
 lv_obj_align(&amp;lt;text/obj&amp;gt;, &amp;lt;image/obj&amp;gt;, &amp;lt;location_parameter&amp;gt;, &amp;lt;new_x&amp;gt;, &amp;lt;new_y&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
the &amp;quot;&amp;lt;image/obj&amp;gt;&amp;quot; data is used for putting text beside other picture icons , and so if using only text based labels, we can substitute it with,&lt;br /&gt;
 lv_scr_act() (or) NULL&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;new_x&amp;gt;, &amp;lt;new_y&amp;gt;''' are the cartesian coordinates, '''&amp;lt;location parameter&amp;gt;''' is replaced by '''LV_ALIGN_&amp;lt;preset&amp;gt;''',&lt;br /&gt;
there will be a picture showing the presets below, and '''&amp;lt;text/obj&amp;gt;''' is your text label...&lt;br /&gt;
&lt;br /&gt;
here, LV_ALIGN_&amp;lt;preset&amp;gt; sets the cartesian origin...&lt;br /&gt;
&lt;br /&gt;
Label positioning based on alignment is both a simple and complicated thing to understand, so here I have given something you can refer to while modifying the position of the various labels and objects...&lt;br /&gt;
&lt;br /&gt;
you can also refer here for LVGL's documentation of coordinate system https://docs.lvgl.io/v6/en/html/object-types/obj.html#coordinates&lt;br /&gt;
&lt;br /&gt;
It is however recommended that you use the first method to set the location&lt;br /&gt;
 lv_obj_set_pos(&amp;lt;obj&amp;gt;, &amp;lt;new_x&amp;gt;, &amp;lt;new_y&amp;gt;)&lt;br /&gt;
as it is simple and easier for beginners&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a small example.&lt;br /&gt;
&lt;br /&gt;
Take the Label that tells the date,&lt;br /&gt;
In the source file (clock.cpp) it is this line,&lt;br /&gt;
 lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 60);&lt;br /&gt;
by increasing the Value of the Y coordinate (60) to a higher value, we can bring the position of the Date downwards a bit away from the Time, and toward the Heartbeat count in the bottom row&lt;br /&gt;
here I will increase it to 80, so it becomes..&lt;br /&gt;
 lv_obj_align(label_date, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 80);&lt;br /&gt;
&lt;br /&gt;
and now we have made some space up top..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
now let's try something a bit complex,&lt;br /&gt;
&lt;br /&gt;
Take the position argument for the label that tells you time...&lt;br /&gt;
here, in the source file (clock.cpp),&lt;br /&gt;
 lv_obj_align(label_time, lv_scr_act(), LV_ALIGN_IN_LEFT_MID, 0, 0);&lt;br /&gt;
&lt;br /&gt;
this line determines the position of the Label telling time, as seen in the image...&lt;br /&gt;
&lt;br /&gt;
we modifying this, by changing the origin &amp;lt;preset&amp;gt; parameter (here it is LV_ALIGN_IN_LEFT_MID) to LV_ALIGN_IN_TOP_LEFT&lt;br /&gt;
&lt;br /&gt;
you can alternatively swap the whole line to,&lt;br /&gt;
 lv_obj_set_pos(label_time, 0, 0);&lt;br /&gt;
&lt;br /&gt;
this makes the Time label/obj. to go to the top left corner...&lt;br /&gt;
&lt;br /&gt;
but I will do something a little extra,&lt;br /&gt;
I will modify the label that store the data and Time format,&lt;br /&gt;
i.e this line,&lt;br /&gt;
 sprintf(timeStr, &amp;quot;%c%c:%c%c&amp;quot;, hoursChar[0],hoursChar[1],minutesChar[0], minutesChar[1]);&lt;br /&gt;
&lt;br /&gt;
by removing the &amp;quot;:&amp;quot; colon in between the numbers, and replacing it with a Newline symbol &amp;quot;\n&amp;quot;&lt;br /&gt;
I change it to become,&lt;br /&gt;
 sprintf(timeStr, &amp;quot;%c%c\n%c%c&amp;quot;, hoursChar[0],hoursChar[1],minutesChar[0], minutesChar[1]);&lt;br /&gt;
&lt;br /&gt;
this gives it a nice wrapped text format in the top corner, and gives us some space to play with in the side, for things like Pictures and icons, which we will do next..&lt;br /&gt;
&lt;br /&gt;
If you have been able to do these things, you now have completed the 2nd part of the tutorial, and now know how to change and modify the position of labels..&lt;br /&gt;
&lt;br /&gt;
==Using icons==&lt;br /&gt;
The LVGL library allows for the use of widgets known as &amp;quot;Images&amp;quot;, In short it allows you to use small Icons like pictures with a small dedicated function,&lt;br /&gt;
However when this was attempted the first time we stumbled on some problems as LVGL v6 (used on the pinetime) is not much documented as the latest release (v7 as of August 2020) &lt;br /&gt;
but also the existing code was only documented for C not C++, after some painful attempts we were able to translate it into C++, &lt;br /&gt;
&lt;br /&gt;
To bring images into Clock.cpp&lt;br /&gt;
you will need to do the following,&lt;br /&gt;
&lt;br /&gt;
1. Have a small image that cannot exceed a maximum size of 240px x 240px (pinetime max resolution)&lt;br /&gt;
&lt;br /&gt;
2. Use this Image converter (Thanks to LVGL) https://lvgl.io/tools/imageconverter&lt;br /&gt;
to convert your image to a C array and having the Color format as &amp;quot;True color&amp;quot; and the output format as &amp;quot;C array&amp;quot;&lt;br /&gt;
make sure to use something simple as the name we will be using &amp;quot;bitmap&amp;quot; as the name, but will also be referred as &amp;lt;name&amp;gt; for simplicity&lt;br /&gt;
&lt;br /&gt;
 Note: for example we shall use &amp;lt;name&amp;gt; = bitmap, but any simple word can be used, as long as it does not cause problems with system variables&lt;br /&gt;
&lt;br /&gt;
===Image size considerations===&lt;br /&gt;
since the image will be using the flash directly, we need to be considerate about flash memory usage.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;picture_X&amp;gt; x &amp;lt;picture_Y&amp;gt; x 2 &lt;br /&gt;
gives you the number of KB the image used in storage...&lt;br /&gt;
&lt;br /&gt;
where, &amp;lt;picture_X&amp;gt; &amp;lt;picture_Y&amp;gt; are the dimensions of the image horizontally and vertically&lt;br /&gt;
&lt;br /&gt;
for example,&lt;br /&gt;
 if &amp;lt;picture_X&amp;gt;=80px &amp;lt;picture_Y&amp;gt;=64px&lt;br /&gt;
then,&lt;br /&gt;
 total storage used = 80 x 60 x 2 = 10.24KB &lt;br /&gt;
&lt;br /&gt;
 please use the flash storage with consideration, when using other apps as well, excess usage of storage &lt;br /&gt;
 might mean the Firmware will not compile... the limit to storage to about 400Kb for the user, the &lt;br /&gt;
 firmware size must not exceed that...&lt;br /&gt;
&lt;br /&gt;
==Preparing the image for inclusion as an icon==&lt;br /&gt;
&lt;br /&gt;
Once you have your obtained your C array from the LVGL converter, you can take a look inside it to see all the different formats of your image, &lt;br /&gt;
try using something like Notepad++ or any of your favorite text editors to peek inside of it,&lt;br /&gt;
 &lt;br /&gt;
there will be 4 sets of Arrays inside it that look like,&lt;br /&gt;
&lt;br /&gt;
 #if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8&lt;br /&gt;
  /*Pixel format: Red: 3 bit, Green: 3 bit, Blue: 2 bit*/&lt;br /&gt;
  0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0x00, &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #if LV_COLOR_DEPTH == 16 &amp;amp;&amp;amp; LV_COLOR_16_SWAP == 0&lt;br /&gt;
  /*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit*/&lt;br /&gt;
  0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0x00, &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #if LV_COLOR_DEPTH == 16 &amp;amp;&amp;amp; LV_COLOR_16_SWAP != 0&lt;br /&gt;
  /*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 bytes are swapped*/&lt;br /&gt;
  0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0x00, &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #if LV_COLOR_DEPTH == 32&lt;br /&gt;
  /*Pixel format: Fix 0xFF: 8 bit, Red: 8 bit, Green: 8 bit, Blue: 8 bit*/&lt;br /&gt;
  0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0xff, &lt;br /&gt;
 #endif&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
And another small bit of info we will need for later that looks like,&lt;br /&gt;
&lt;br /&gt;
 const lv_img_dsc_t bitmap = {&lt;br /&gt;
  .header.always_zero = 0,&lt;br /&gt;
  .header.w = 40,&lt;br /&gt;
  .header.h = 40,&lt;br /&gt;
  .data_size = 1600 * LV_COLOR_SIZE / 8,&lt;br /&gt;
  .header.cf = LV_IMG_CF_TRUE_COLOR,&lt;br /&gt;
  .data = bitmap_map,&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 NOTE: There are some header files at the top, which we can ignore...&lt;br /&gt;
===RGB565 image format===&lt;br /&gt;
&lt;br /&gt;
The Pinetime uses a display that uses a 16 bit color space, also known as RGB565.&lt;br /&gt;
&lt;br /&gt;
These 16 bit are assigned to RGB as 5 bits each for Red and Blue and 6 bits for Green, so 5+6+5=16 bits are required, so each pixel's color occupies 2 bytes of data,&lt;br /&gt;
and since 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt; is equal to 65,536 it allows us to view 65,536 or 65k colors&lt;br /&gt;
&lt;br /&gt;
The way it packs these bits is by converting the bits into 2x  4+4 bit hex-code, so for example,&lt;br /&gt;
 &lt;br /&gt;
if the color of a pixel in Binary is '''10110100 01011111''' (this color is approximately Lavender purple)&lt;br /&gt;
 &lt;br /&gt;
It is split as '''1011''' &amp;amp; '''0100''' for the first byte and '''0101''' &amp;amp; '''1111''' for the second byte&lt;br /&gt;
and so, converting the binary into Hex-code,&lt;br /&gt;
&lt;br /&gt;
the two parts are '''0xB4''' and '''0xF5'''&lt;br /&gt;
&lt;br /&gt;
These two parts in conjunction are used for determining the color of one pixel...&lt;br /&gt;
&lt;br /&gt;
also from the binary, it is observed that,&lt;br /&gt;
&lt;br /&gt;
The bits '''10110''' is used for Red, '''100010''' is used for green, and '''11111''' is used for blue.&lt;br /&gt;
&lt;br /&gt;
===Flipping the bytes===&lt;br /&gt;
The LVGL library has a feature that allows you to flip the two bytes of the pixel, so if the two parts were, ...0xB4,0xF5,... ,it will change it to become, ...0xF5,0xB4,...&lt;br /&gt;
&lt;br /&gt;
The reason for this is to allow the use of 8-bit SPI interfaces, but we do not require it, and if set with  wrong parameter we could get problems with the color...&lt;br /&gt;
&lt;br /&gt;
To make sure you are ready for the next step, make sure that inside your lvgl configuration file (located at '''src/libs/lv_conf.h''')&lt;br /&gt;
&lt;br /&gt;
this parameter, &lt;br /&gt;
 '''#define LV_COLOR_16_SWAP   1'''&lt;br /&gt;
is set to &amp;quot;1&amp;quot; as seen...&lt;br /&gt;
&lt;br /&gt;
 NOTE: if you haven't modified it or tampered with it with your Github fork, you shouldn't have a problem &lt;br /&gt;
 as it is correct by default, and you can skip these steps&lt;br /&gt;
&lt;br /&gt;
===Creating an Object from the Array===&lt;br /&gt;
To include the Icon, first Identify the Array you need to copy to the source (clock.cpp)&lt;br /&gt;
&lt;br /&gt;
The one we require from it is the data below the tag that looks like,&lt;br /&gt;
 #if LV_COLOR_DEPTH == 16 &amp;amp;&amp;amp; LV_COLOR_16_SWAP != 0&lt;br /&gt;
 /*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 bytes are swapped*/&lt;br /&gt;
 0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0x00, &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
from this copy the Data from the array alone...&lt;br /&gt;
I.e this part,&lt;br /&gt;
 0x00, 0x00, 0x00,...&lt;br /&gt;
 ...0x00, 0x00, 0x00&lt;br /&gt;
&lt;br /&gt;
(Make sure to not include the comma at the end or the #endif as the entire part is going to substitute a new array)&lt;br /&gt;
&lt;br /&gt;
In clock.cpp, just below the header files and the Task creation part (I.e event_handler...),&lt;br /&gt;
&lt;br /&gt;
 static void event_handler(lv_obj_t * obj, lv_event_t event) {&lt;br /&gt;
 Clock* screen = static_cast&amp;lt;Clock *&amp;gt;(obj-&amp;gt;user_data);&lt;br /&gt;
 screen-&amp;gt;OnObjectEvent(obj, event);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
create a name for the label with,&lt;br /&gt;
 static lv_img_dsc_t &amp;lt;name&amp;gt;; // remember to replace &amp;lt;name&amp;gt; with the actual name you gave to your image while converting !&lt;br /&gt;
&lt;br /&gt;
then below it create a array to hold the data with,&lt;br /&gt;
 const uint8_t &amp;lt;name&amp;gt;_map[] = {}; // paste the array you copied from the conversion file we specified above...&lt;br /&gt;
&lt;br /&gt;
so your  array is something like,&lt;br /&gt;
&lt;br /&gt;
 const uint8_t &amp;lt;name&amp;gt;_map[] = {0x00,0x00,0x00...&lt;br /&gt;
 ...0x00,0x00,0x00};&lt;br /&gt;
&lt;br /&gt;
so your Entire top region of declaration looks like,&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;cstdio&amp;gt;&lt;br /&gt;
 #include &amp;lt;libs/date/includes/date/date.h&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 using namespace Pinetime::Applications::Screens;&lt;br /&gt;
 extern lv_font_t jetbrains_mono_extrabold_compressed;&lt;br /&gt;
 extern lv_font_t jetbrains_mono_bold_20;&lt;br /&gt;
 extern lv_style_t* LabelBigStyle;&lt;br /&gt;
 '''   '''&lt;br /&gt;
 static void event_handler(lv_obj_t * obj, lv_event_t event) {&lt;br /&gt;
  Clock* screen = static_cast&amp;lt;Clock *&amp;gt;(obj-&amp;gt;user_data);&lt;br /&gt;
  screen-&amp;gt;OnObjectEvent(obj, event);&lt;br /&gt;
 }&lt;br /&gt;
 '''   '''&lt;br /&gt;
 '''//Declare the descriptor here'''&lt;br /&gt;
 static lv_img_dsc_t &amp;lt;name&amp;gt;;&lt;br /&gt;
 '''//place the Image data here&lt;br /&gt;
 const uint8_t &amp;lt;name&amp;gt;_map[] = {0x00,0x00,0x00...&lt;br /&gt;
 ...0x00,0x00,0x00&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''note: Declaring variables outside a function like we did above is known as global scope declaration, this means the variable can be used by not just one function but the Entire code...'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then inside the &lt;br /&gt;
 Clock::Clock(DisplayApp* app,...){... &lt;br /&gt;
region, (the watchface function)&lt;br /&gt;
You need to place a particular set of lines which LVGL uses to define the object declare the array as an Icon/Image, You can place this set of lines above label_time...&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;name&amp;gt;.header.always_zero = 0; //Initialization&lt;br /&gt;
  &amp;lt;name&amp;gt;.header.w = &amp;lt;picture_X&amp;gt;;                     // Setting the Width (or) Horizontal length of the image (number of px)&lt;br /&gt;
  &amp;lt;name&amp;gt;.header.h = &amp;lt;picture_Y&amp;gt;;                     // Setting the Height (or) vertical length of the image (number of px)&lt;br /&gt;
  &amp;lt;name&amp;gt;.data_size = &amp;lt;Hr_length&amp;gt; * &amp;lt;Vr_length&amp;gt; * LV_COLOR_SIZE / 8; //Allocation of memory for the image&lt;br /&gt;
  &amp;lt;name&amp;gt;.header.cf = LV_IMG_CF_TRUE_COLOR; // Sets the color scheme for the image&lt;br /&gt;
  &amp;lt;name&amp;gt;.data = &amp;lt;name&amp;gt;_map;                // Maps the Image data to the Array&lt;br /&gt;
  lv_obj_t *img_src = lv_img_create(lv_scr_act(), NULL);  // Create an image object&lt;br /&gt;
  lv_img_set_src(img_src, &amp;amp;&amp;lt;name&amp;gt;);        // Set the created file as image (&amp;lt;name&amp;gt;)&lt;br /&gt;
  &lt;br /&gt;
again, make sure to replace &amp;lt;name&amp;gt; with the name you gave it during conversion!&lt;br /&gt;
&lt;br /&gt;
Now that we have bought in the image data, we need to set the position, you can place this just below the lines we wrote for bringing in the image, It can be done with either,&lt;br /&gt;
 lv_obj_set_pos(img_src, &amp;lt;x_pos, &amp;lt;y_pos&amp;gt;); // &amp;lt;x_pos&amp;gt;, &amp;lt;y_pos&amp;gt; are the coordinates of the cartesian plane&lt;br /&gt;
or,&lt;br /&gt;
 lv_obj_align(img_src, lv_scr_act(), LV_ALIGN_&amp;lt;parameter&amp;gt;, &amp;lt;x_pos, &amp;lt;y_pos&amp;gt;); &lt;br /&gt;
&lt;br /&gt;
If done correctly, you will now have a beautiful little Icon/Image in your Watch face,&lt;br /&gt;
Make sure that your Watch face can accommodate the Image by pushing the other labels farther away creating space for it...&lt;br /&gt;
&lt;br /&gt;
We have provided a small template you can use for adding even a large image comfortably&lt;br /&gt;
&lt;br /&gt;
If you have succeeded with this, you have completed part 3 of the tutorial.&lt;br /&gt;
&lt;br /&gt;
=Creating an entirely new watchface=&lt;br /&gt;
The instructions above describe how to modify the existing default watchface, if you would like to create a new watchface instead you will need to complete some additional steps. We will refer to the new watchface as WatchFaceName in these instructions.&lt;br /&gt;
&lt;br /&gt;
==Create the watchface files==&lt;br /&gt;
The watchface is composed of 2 files, WatchFaceName.cpp and WatchFaceName.h. You can copy them from one of the existing watchfaces and give it a new name to provide a basic layout to start from. It is important to increment the ClockFace number near the top of WatchFaceName.cpp otherwise the wrong watchface will be displayed when leaving the menu.&lt;br /&gt;
   settingsController.SetClockFace(0);&lt;br /&gt;
&lt;br /&gt;
==Add the watchface to Clock.cpp and Clock.h==&lt;br /&gt;
Clock.cpp now provides the ability to switch between multiple watchfaces by long-pressing the screen. You will need to make 3 modifications in Clock.cpp and 2 modifications in Clock.h. &lt;br /&gt;
&lt;br /&gt;
'''src/displayapp/screens/Clock.cpp'''&lt;br /&gt;
 #include &amp;quot;WatchFaceDigital.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;WatchFaceAnalog.h&amp;quot;&lt;br /&gt;
 '''#include &amp;quot;WatchFaceName.h&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
                [this]() -&amp;gt; std::unique_ptr&amp;lt;Screen&amp;gt; { return WatchFaceDigitalScreen(); },&lt;br /&gt;
                [this]() -&amp;gt; std::unique_ptr&amp;lt;Screen&amp;gt; { return WatchFaceAnalogScreen(); },&lt;br /&gt;
                '''[this]() -&amp;gt; std::unique_ptr&amp;lt;Screen&amp;gt; { return WatchFaceNameScreen(); },'''&lt;br /&gt;
&lt;br /&gt;
 std::unique_ptr&amp;lt;Screen&amp;gt; Clock::WatchFaceAnalogScreen() {  &lt;br /&gt;
   return std::make_unique&amp;lt;Screens::WatchFaceAnalog&amp;gt;(app, dateTimeController, batteryController, bleController, notificatioManager, settingsController);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 '''std::unique_ptr&amp;lt;Screen&amp;gt; Clock::WatchFaceNameScreen() {  '''&lt;br /&gt;
   '''return std::make_unique&amp;lt;Screens::WatchFaceName&amp;gt;(app, dateTimeController, batteryController, bleController, notificatioManager, settingsController, heartRateController);'''&lt;br /&gt;
 '''}'''&lt;br /&gt;
&lt;br /&gt;
'''src/displayapp/screens/Clock.h'''&lt;br /&gt;
          ScreenList&amp;lt;'''3'''&amp;gt; screens;&lt;br /&gt;
          std::unique_ptr&amp;lt;Screen&amp;gt; WatchFaceDigitalScreen();&lt;br /&gt;
          std::unique_ptr&amp;lt;Screen&amp;gt; WatchFaceAnalogScreen();&lt;br /&gt;
          '''std::unique_ptr&amp;lt;Screen&amp;gt; WatchFaceNameScreen();'''&lt;br /&gt;
&lt;br /&gt;
Be sure to increment the number of screens.&lt;br /&gt;
&lt;br /&gt;
==Add the watchface to CMakeLists.txt==&lt;br /&gt;
'''src/CMakeLists.txt'''&lt;br /&gt;
&lt;br /&gt;
        ## Watch faces&lt;br /&gt;
        displayapp/icons/bg_clock.c&lt;br /&gt;
        displayapp/screens/WatchFaceAnalog.cpp&lt;br /&gt;
        displayapp/screens/WatchFaceDigital.cpp&lt;br /&gt;
        '''displayapp/screens/WatchFaceName.cpp'''&lt;br /&gt;
&lt;br /&gt;
=Using git to work on the firmware=&lt;br /&gt;
===Cloning the repository===&lt;br /&gt;
&lt;br /&gt;
Instructions for cloning the repository are available on the [https://github.com/JF002/InfiniTime/blob/develop/doc/buildAndProgram.md Building and programming page] on github.&lt;br /&gt;
&lt;br /&gt;
===Changing the code to add the image===&lt;br /&gt;
&lt;br /&gt;
Use the editor of your choice to modify the source files. Please read the [https://github.com/JF002/InfiniTime/blob/develop/doc/contribute.md#coding-convention coding conventions] before you start.&lt;br /&gt;
&lt;br /&gt;
===Compiling the firmware===&lt;br /&gt;
&lt;br /&gt;
Information about how to compile the firmware is included on the [https://github.com/JF002/InfiniTime/blob/develop/doc/buildAndProgram.md Building and programming page] on github.&lt;br /&gt;
&lt;br /&gt;
==Testing the firmware==&lt;br /&gt;
===Installing the new firmware===&lt;br /&gt;
&lt;br /&gt;
A holistic guide on how to install different firmware using various hardware programmers is available here: [[Reprogramming the PineTime]].&lt;br /&gt;
&lt;br /&gt;
If you would like to install the firmware by OTA/DFU, you can follow these steps:&lt;br /&gt;
 cmake -DARM_NONE_EABI_TOOLCHAIN_PATH=/path/to/gcc-arm-none-eabi-9-2020-q2-update -DNRF5_SDK_PATH=/path/to/nRF5_SDK_15.3.0_59ac345 -DUSE_OPENOCD=1 -DBUILD_DFU=1 ../&lt;br /&gt;
 make -j pinetime-mcuboot-app&lt;br /&gt;
&lt;br /&gt;
Be aware the paths for the cmake command must be absolute. The -DBUILD_DFU argument will generate a zip file which can be flashed using nRF Connect or Gadgetbridge on Android. You must have adafruit-nrfutil installed in your $PATH for this to work.&lt;br /&gt;
&lt;br /&gt;
===Activating the firmware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to troubleshoot===&lt;br /&gt;
==Conclusions==&lt;br /&gt;
==Next steps==&lt;br /&gt;
==More in-depth documentation==&lt;br /&gt;
==Thanks for the help==&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Troubleshooting_Guide&amp;diff=10784</id>
		<title>Pinebook Pro Troubleshooting Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Troubleshooting_Guide&amp;diff=10784"/>
		<updated>2021-06-19T07:38:36Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Useful Links=&lt;br /&gt;
&lt;br /&gt;
[[Pinebook_Pro|Back to the main Pinebook Pro page]]&lt;br /&gt;
&lt;br /&gt;
[[Pinebook_Pro_Hardware_Accessory_Compatibility|Hardware Compatibility page]]&lt;br /&gt;
&lt;br /&gt;
[[Pinebook Pro Software Release]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tips, tricks and other information for troubleshooting your Pinebook Pro=&lt;br /&gt;
&lt;br /&gt;
If something has gone wrong, the key thing is remain calm and not do anything hasty and make things worse, particularly when flashing the eMMC or firmware. Try and make a record of all the things you did in the run-up to the problem (even to the point of using a camera to take a note of errors on the screen, this record can be vital later).&lt;br /&gt;
&lt;br /&gt;
=Manjaro Updates Fail With 404=&lt;br /&gt;
If you have an old Manjaro installation then it will have the wrong repositories/mirrors set up and they won't work. Set up new repositories by following these instructions:&lt;br /&gt;
https://forum.manjaro.org/t/another-mirror-transition-manual-intervention-required/132302&lt;br /&gt;
&lt;br /&gt;
=Power And Boot=&lt;br /&gt;
&lt;br /&gt;
== New from the factory - Pinebook Pro won't boot / power on ==&lt;br /&gt;
* Some Pinebook Pros came from the factory with the eMMC switch in the disabled position. It should be switched towards the back / hinge to enable the eMMC.&lt;br /&gt;
* The eMMC may have come loose during shipment. [[Pinebook Pro#Accessing the Internals - Disassembly and Reassembly|Open the back]] and verify that the eMMC is firmly seated.&lt;br /&gt;
* You may want to try unplugging the SD card daughterboard ribbon cable and see if it powers on (remove the battery and peel off a bit of the tape before unplugging it to avoid damage). If it does, try reseating it on both sides. It might have come loose during shipping.&lt;br /&gt;
* It's possible that your eMMC is empty from the factory. Simply [[NOOB|create]] a bootable [[Pinebook_Pro#Pinebook_Pro_images|SD card]] and see if your Pinebook Pro [[Pinebook_Pro#Boot_sequence_details|boots]]. If so, you can then [[NOOB|write]] an OS image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not power on after toggling the eMMC enable/disable switch ==&lt;br /&gt;
* This may happen if you meant to toggle the UART/Headphone switch (9) towards touchpad for headphone use and instead you toggled the eMMC enable/disable switch (24).&lt;br /&gt;
* After reenabling eMMC by toggling switch (24) towards hinge, if Pinebook Pro does not turn on then press the RESET button (28). It is clearly marked 'reset' on the PCB board.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not power on after removing and replacing EMI shielding ==&lt;br /&gt;
* Closely inspect that the shielding is firmly seated in the clips on all sides. You can be seated in the clips on one axis, and have missed on an another axis.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro won't boot when using UART console cable ==&lt;br /&gt;
* If you're using the [[Pinebook_Pro#Using_the_UART|UART]] cable sold on the [https://pine64.com/product-category/pinebook-pro/ Pine Store], you may want to see if it boots after you disconnect it. Some users report that custom-made cables based on FTDI UART adapters do not cause this issue.&lt;br /&gt;
* Make sure your USB to serial UART device is 3.3v. Many are 5v and some even +-12v. Pinebook Pro's only support 3.3v and may act eratically when using higher voltage. Further, higher voltage could permananetly damage the Pinebook Pro's SoC.&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro will not sleep with lid closed ==&lt;br /&gt;
A problem with the positioning of the lid magnet has been identified by several forum users in mid-2020 models of the Pinebook Pro. The magnetic field from the lid magnet operates a hall effect sensor located on the daughterboard (smallboard), which causes the Pinebook Pro to sleep when the lid is closed. If the magnet is not positioned correctly, the Pinebook Pro will not sleep when the lid is fully closed, but may sleep if the lid is open about an inch. If you experience this problem, repositioning of the magnet may be necessary.&lt;br /&gt;
=== Lid Magnet Repositioning Step-by-Step ===&lt;br /&gt;
*Read these steps thoroughly before starting. This is a somewhat laborious process involving fragile parts!&lt;br /&gt;
# Remove bottom cover.&lt;br /&gt;
# Disconnect LCD and webcam ribbon cable from main board. Flip the small black strip on the connector upward and the ribbon cable can be easily removed. Do not pull the cable out without first raising the black retaining mechanism.&lt;br /&gt;
# Remove the small black plastic standoffs on each hinge and set aside.&lt;br /&gt;
# Remove the three screws from each hinge on the display assembly.&lt;br /&gt;
# Move the hinges upward to a 90 degree angle independently from the main body. Then lift the main body to the same 90 degree angle and you should be able to separate the display assembly from the main body. Set the main body aside.&lt;br /&gt;
# Remove the plastic hinge cover on the display assembly. There's not really an easy way to do this, just work slowly and deliberately so as not to damage the sensitive cable inside. Start from either end and work your way inward. Use a small flathead screwdriver or similar tool to get started.&lt;br /&gt;
# Remove the hinges from the display assembly.&lt;br /&gt;
# Remove the rubber bumpers at the top corners of the display assembly to expose two screws. Remove the screws.&lt;br /&gt;
# Starting at the corners, separate the bezel from the lid. The clips that hold it in place are similar to those found on the hinge cover. Again, slow deliberate work will get it done. Work from the top down. Take care not to damage the cables in the bottom.&lt;br /&gt;
# With the bezel separated from the lid, feed the cable through the slot and set the bezel aside.&lt;br /&gt;
# Without removing the LCD panel completely, lift and move the panel slightly to the left, taking care not to damage the cable running underneath up to the webcam. This will give you room to remove the magnet without risking damage to the panel.&lt;br /&gt;
# The magnet is a silver colored bar near the bottom right side of the lid. Pry the magnet out with a small flathead or similar tool and set it aside. There is some adhesive but it's not very strong.&lt;br /&gt;
# Put the LCD panel back where it belongs. Note the foam pads on either side of the panel. The magnet is the same width as the foam pad that keeps the panel in place, and should fit perfectly in the same channel.&lt;br /&gt;
# The magnet should be placed about 1 to 1.5cm lower than where it was originally. There should be no need for adhesive, as the magnet will stick to the LCD panel. For reference, the hall effect sensor that the magnet interacts with is in between the USB port and audio jack.&lt;br /&gt;
# Reassemble using these steps in reverse order.&lt;br /&gt;
&lt;br /&gt;
Your PineBook Pro should now sleep properly when the lid is closed.&lt;br /&gt;
&lt;br /&gt;
=WiFi And Bluetooth=&lt;br /&gt;
&lt;br /&gt;
== WiFi issues ==&lt;br /&gt;
* First, check the privacy switches to make sure your WiFi is enabled. They are persistant. See [[Pinebook_Pro#Privacy_Switches|Privacy Switches]]&lt;br /&gt;
* Next, you may have to modify the &amp;lt;code&amp;gt;/etc/NetworkManager/NetworkManager.conf&amp;lt;/code&amp;gt; as root user, and replace &amp;lt;code&amp;gt;managed=false&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;managed=true&amp;lt;/code&amp;gt;. Then reboot.&lt;br /&gt;
* For connections that drop and resume too often, it might be due to WiFi power management from earlier OS releases. Later OS releases either removed WiFi power management, or default to full power. (Power management can be turned off via command line with &amp;lt;code&amp;gt;iw dev wlan0 set power_save off&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;iwconfig wlan0 power off&amp;lt;/code&amp;gt;, although it is not persistent through re-boot.)&lt;br /&gt;
* For connections that drop under load on the default Debian, remove &amp;lt;code&amp;gt;iwconfig wlan0 power off&amp;lt;/code&amp;gt; in the file &amp;lt;code&amp;gt;/etc/rc.local&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If WiFi is un-usable or often crashes when using an alternate OS, then it might because its WiFi firmware is not appropriate for the WiFi chip in the Pinebook Pro. Try the latest firmware patch from [https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm]&lt;br /&gt;
* After re-enabling WiFi via the privacy switch, you have to reboot to restore function. There is a work around for the default Debian, (and may work with others);&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;code&amp;gt;sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/{un,}bind &amp;lt;&amp;lt;&amp;lt; 'fe310000.dwmmc'&amp;lt;/code&amp;gt;&lt;br /&gt;
* On extremely rare occasions, the WiFi antenna connection is loose. To fix, simply open up the bottom, re-connect the WiFi antenna cable. This may show up as any of the following symptoms:&lt;br /&gt;
** Can't connect to any network, but the network manager software sees the WiFi device, (so it has not been disabled by the Privacy Switch)&lt;br /&gt;
** Very limited range, meaning you can make a connection if the Pinebook Pro is next to the WiFi router. But not the next room.&lt;br /&gt;
** Unreliable connections, that are also limited by range.&lt;br /&gt;
&lt;br /&gt;
== Bluetooth issues ==&lt;br /&gt;
&lt;br /&gt;
* When connecting a Bluetooth device, such as a Bluetooth mouse, it does not automatically re-connect on re-boot. In the Bluetooth connection GUI, there is a yellow star for re-connect on boot. Use that button to enable a persistent connection. It can be changed back later.&lt;br /&gt;
* Bluetooth-attached speakers or headset require the &amp;lt;b&amp;gt;pulseaudio-module-bluetooth&amp;lt;/b&amp;gt; package. If not already installed, it can be installed with a package manager or using the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install pulseaudio-module-bluetooth&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When using Bluetooth-attached speakers or headset and 2.4Ghz WiFi at the same time, you may experience stuttering of the audio. One solution is to use 5Ghz WiFi if you can. Or you may try using a different 2.4Ghz channel, perhaps channel 1 or the top channel, (11 in the USA, or 13/14 in some other countries).&lt;br /&gt;
&lt;br /&gt;
= Sound issues =&lt;br /&gt;
&lt;br /&gt;
* Many reports of no sound are due to the OS, incorrect settings, or other software problems (eg. PulseAudio). So first test to see if it is a software or hardware problem, by trying another OS via SD card.  (For example, if Debian is installed on the eMMC, try Ubuntu on SD.) &lt;br /&gt;
* If you cannot get sound from the headphone jack, but can get sound from the speakers, then the headphone / UART console switch may be set to the UART mode. You can open the back and check the position of the switch. If set to UART mode, switch it to headphone mode. See the parts layout for the location and correct position of the switch.&lt;br /&gt;
* When using the USB C alternate DisplayPort mode, it is possible that the audio has been re-directed through this path. If your monitor has speakers, see if they work.&lt;br /&gt;
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/asound.state manjaro-arm/pinebookpro-post-install /var/lib/alsa/asound.state] for some ALSA tweaks.&lt;br /&gt;
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-audio manjaro-arm/pinebookpro-audio] for how to handle 3.5mm jack plug/unplug events with ACPID.&lt;br /&gt;
* Serveral users have reported that one internal speaker had reversed polarity. Thus, sound from the speakers is like an echo effect.&lt;br /&gt;
** Their is a software fix using alsamixer and then enable either &amp;quot;R invert&amp;quot; or &amp;quot;L invert&amp;quot;, however, now the headphones have incorrect audio.&lt;br /&gt;
** The permanent fix is to re-wire one speaker, though this requires soldering small wires.&lt;br /&gt;
* Sound playback may be affected by the &amp;quot;mirroring&amp;quot; between the right and left channels, which results in distorted sound image.  The root cause is the [https://linux.die.net/man/1/alsamixer ALSA mixer] setting named &amp;quot;DAC Stereo Enhancement&amp;quot;, which needs to be changed to 0% to fix this issue.  Please see [https://forum.pine64.org/showthread.php?tid=12631&amp;amp;pid=87372#pid87372 this forum post] for further information.&lt;br /&gt;
&lt;br /&gt;
= NVMe SSD issues =&lt;br /&gt;
&lt;br /&gt;
Many PineBook Pro users have reported issues with NVMe SSD drives, including random Linux lockups and crashes.  Some of these issues are related to the [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207 RK3399's errata] that disables Gen2 (5&amp;amp;nbsp;GT/s) speed for the PCI Express link used by the NVMe SSD, reducing it down to Gen1 speed (2.5&amp;amp;nbsp;GT/s).  However, as of December 17, 2020, Linux distributions that use mainline Linux kernel still configure the PCI Express link to run at Gen2 speed, which requires [https://forum.pine64.org/showthread.php?tid=11683 manual reconfiguration] to Gen1 speed in case system instability is experienced.  See also this [https://patchwork.kernel.org/project/linux-rockchip/patch/20200423150510.6216-1-pgwipeout@gmail.com/ related discussion]. NOTE: This issue seems to have been [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=642fb2795290 fixed] in mainline 5.12. It has been tested on Manjaro ARM and seems to work with no modifications.&lt;br /&gt;
&lt;br /&gt;
Some PineBook Pro users have reported issues with the default settings for the APST (Autonomous Powe State Transition) power saving, which cause an NVMe drive to disappear from the system or lock up after a certain period of time.  Please see [https://forum.pine64.org/showthread.php?tid=11337&amp;amp;pid=87711#pid87711 this forum thread] for further information.&lt;br /&gt;
&lt;br /&gt;
= Keyboard and trackpad =&lt;br /&gt;
&lt;br /&gt;
== Keys not registering / missing keys when typing ==&lt;br /&gt;
This issue occurs when your thumb or edge of the palm makes contact with left or right tip of the trackpad when you type. This is due to the palm rejection firmware being too forceful.  Instead of only disabling the trackpad, so your cursor does not move all over the screen, it disables both the trackpad and the keyboard.&lt;br /&gt;
&lt;br /&gt;
Using Fn+F7 to disable the touchpad will keep it from also disabling the keyboard.&lt;br /&gt;
&lt;br /&gt;
A [[Pinebook_Pro#Trackpad|firmware update]] has been released to address this.&lt;br /&gt;
&lt;br /&gt;
== Key mapping ==&lt;br /&gt;
* See this [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/10-usb-kbd.hwdb /etc/udev/hwdb.d/10-usb-kbd.hwdb] for some key mapping tweaks&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro gets stuck after first reboot in Trackpad Firmware Update ==&lt;br /&gt;
This refers to the firmware update shown here:&lt;br /&gt;
https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater#update-all-firmwares&lt;br /&gt;
* If the system is not responding after the 1st reboot, it might be easiest to do a system restore or boot an sdcard-only OS, and follow up by running the second step of the trackpad firmware update with a USB keyboard and mouse plugged in&lt;br /&gt;
* System restore https://forum.pine64.org/showthread.php?tid=8229&lt;br /&gt;
* Firmware update https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater#update-all-firmwares&lt;br /&gt;
&lt;br /&gt;
== ANSI Fn + F keys wrong for F9, F10, F11 and F12 ==&lt;br /&gt;
&lt;br /&gt;
There appears to be a minor firmware issue for ANSI keyboard models of the Pinebook Pro. Some discussion and fixes have been proposed;&lt;br /&gt;
* Discussion thread [https://forum.pine64.org/showthread.php?tid=8744&amp;amp;pid=57678#pid57678  Fn + F keys screwy for F9, F10, F11 and F12]&lt;br /&gt;
* Proposed fix [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater/issues/14#issuecomment-576825396 (ANSI) Fn + F(9-12) has wrong assignment after firmware update #14]&lt;br /&gt;
&lt;br /&gt;
= USB docks &amp;amp; USB C alternate mode video =&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro uses the RK3399 SoC (System on a Chip). It supports a video pass through mode on the USB C port using DisplayPort alternate mode. This DisplayPort output comes from the same GPU used to display the built-in LCD. &lt;br /&gt;
&lt;br /&gt;
Here are some selection criteria for successfully using the USB C alternate mode for video:&lt;br /&gt;
* The device must use USB C alternate mode DisplayPort. Not USB C alternate mode HDMI, or other.&lt;br /&gt;
* The device can have a HDMI, DVI, or VGA connector, if it uses an active translater.&lt;br /&gt;
* If USB 3 is also desired from a USB dock, the maximum resolution, frame rate and pixel depth is reduced to half the bandwidth. For example, 4K @ 30hz instead of 60hz.&lt;br /&gt;
* USB docks that also use USB C alternate mode DisplayPort will always have USB 2 available, (480Mbps, half-duplex).&lt;br /&gt;
&lt;br /&gt;
=Screen=&lt;br /&gt;
&lt;br /&gt;
Also see above about external screen using USB-C adaptor&lt;br /&gt;
&lt;br /&gt;
== After changing builtin LCD resolution, blank screen ==&lt;br /&gt;
Some people find that the text or icons are too small, so they attempt to change the resolution of the built-in display. Afterwards, the display is blank. &lt;br /&gt;
Use the following to fix when logged into a text console as yourself, pressing Control-Alt-F1 through F6. After listing the resolutions, select the native resolution, (1920x1080 aka 1080p).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export DISPLAY=:0.0&lt;br /&gt;
xrandr -q&lt;br /&gt;
xrandr -s [resolution]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the screen resolution is restored, try using the software settings to configure the desired screen scaling.&lt;br /&gt;
&lt;br /&gt;
If the above fix did not work, you can try this:&lt;br /&gt;
* Using a text console, (Control-Alt-F1), login with your normal user ID&lt;br /&gt;
* Edit the file &amp;lt;code&amp;gt;nano ~/.config/monitors.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Change the &amp;quot;width&amp;quot; value to &amp;quot;1920&amp;quot;&lt;br /&gt;
* Change the &amp;quot;height&amp;quot; value to &amp;quot;1080&amp;quot;&lt;br /&gt;
* If there is more than one monitor configuration listed, edit that one too. Be careful to make no other changes. If needed, exit without saving and re-edit.&lt;br /&gt;
* Save the file and exit.&lt;br /&gt;
* Login using the GUI and test&lt;br /&gt;
* If you are still loggied in via the GUI, you will have to reboot using &amp;lt;code&amp;gt;sudo shutdown -r now&amp;lt;/code&amp;gt;. After the reboot, you should be able to login to the GUI login and have the resolution back to normal.&lt;br /&gt;
&lt;br /&gt;
After restoring the usability of your Pinebook Pro's graphical screen, also see [[Pinebook Pro#Improving readability|this section]] on improving readability and usability.&lt;br /&gt;
&lt;br /&gt;
=Outer Shell=&lt;br /&gt;
&lt;br /&gt;
== Cracks in the plastic ==&lt;br /&gt;
There have been multiple reports of cracks in the plastic keyboard and trackpad part of the case. These are generally near:&lt;br /&gt;
* Hinges&lt;br /&gt;
* USB ports&lt;br /&gt;
* Top side, around the corners&lt;br /&gt;
&lt;br /&gt;
This seems to apply to the first batches in 2019. Later versions of the keyboard and trackpad have used better plastic. With replacements now in the Pine64 Store, it's possible to simply order a replacement.&lt;br /&gt;
&lt;br /&gt;
There have been a few reports of cracks in the plastic around the LCD display, but these appear to be less common. There are replacement LCDs with top cases available in the Pine64 Store.&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Switching_your_PineTime_between_InfiniTime_and_Wasp-os&amp;diff=10783</id>
		<title>Switching your PineTime between InfiniTime and Wasp-os</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Switching_your_PineTime_between_InfiniTime_and_Wasp-os&amp;diff=10783"/>
		<updated>2021-06-19T07:36:51Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Flash-reloader-mcuboot.jpg|600px|thumb|right|Flashing &amp;lt;code&amp;gt;reloader-mcuboot.zip&amp;lt;/code&amp;gt;]]&lt;br /&gt;
[[File:Flash-micropython.jpg|400px|thumb|right|Flashing &amp;lt;code&amp;gt;micropython.zip&amp;lt;/code&amp;gt;]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Both Infinitime and Wasp-os are very cool OS'es for the [[PineTime]] and many people will want to try both. This is possible, even with a sealed device!&lt;br /&gt;
&lt;br /&gt;
Both devices use the same Nordic (legacy) DFU protocol for updating firmware over the air. But the BLE stack and the bootloaders for both are different. That's why we need to use the [https://github.com/daniel-thompson/wasp-reloader reloader]. However, instructions you find elsewhere (including [https://www.youtube.com/watch?v=lPasAt1LJmo Daniel Thompsons video]) are somewhat outdated.&lt;br /&gt;
&lt;br /&gt;
Flashing can be done with any of&lt;br /&gt;
* nRF Connect for Mobile ([https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp Android], [https://apps.apple.com/us/app/nrf-connect-bluetooth-app/id1054362403 iOS])&lt;br /&gt;
* [https://www.gadgetbridge.org GadgetBridge] (Android &amp;gt;= 4.4)&lt;br /&gt;
* [https://github.com/piggz/harbour-amazfish Amazfish] (SailfishOS and Linux)&lt;br /&gt;
* [https://github.com/alexr4535/siglo Siglo] (Linux desktop and Pinephone) (Use the 'Manual OTA File' option)&lt;br /&gt;
* [https://github.com/ZephyrLabs/PinetimeFlasher PinetimeFlasher] (Windows)&lt;br /&gt;
* ota-dfu-python (Linux CLI) which is included in sources of both Infinitime and Wasp-os&lt;br /&gt;
** &amp;lt;code&amp;gt;InfiniTime/bootloader/ota-dfu-python/dfu.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;wasp-os/tools/ota-dfu-python/dfu.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This guide has been last updated for Infinitime 1.1.0 and Wasp-os 0.4&lt;br /&gt;
&lt;br /&gt;
== InfiniTime =&amp;gt; Wasp-os ==&lt;br /&gt;
&lt;br /&gt;
All the zips you need can be found on the [https://github.com/daniel-thompson/wasp-os/releases/ Wasp-os Releases] page, for example in [https://github.com/daniel-thompson/wasp-os/releases/download/v0.4/wasp-os-0.4.tar.gz wasp-os-0.4.tar.gz].&lt;br /&gt;
&lt;br /&gt;
* Make sure the watch is running Infinitime and can be found by your companion device (PC, phone, etc).&lt;br /&gt;
* First we need to flash the reloader, with the wasp-os bootloader as payload. To do this, flash: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;wasp-os-0.4/build-pinetime/reloader-mcuboot.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* After flashing, it will boot using the Infinitime bootloader (green large pine cone), then it'll hang for a few seconds, then it'll show the reloader animation (blue smaller pine cone), and then it'll boot the wasp-os bootloader.&lt;br /&gt;
* Make sure the watch is on the screen with the pine cone and arrow. If it is in a bootloop instead, then reboot the watch by holding the button until the arrow appears.&lt;br /&gt;
* Now you can flash micropython with wasp-os: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;wasp-os-0.4/build-pinetime/micropython.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* Wasp-os should now boot. Enjoy!&lt;br /&gt;
&lt;br /&gt;
== Wasp-os =&amp;gt; InfiniTime ==&lt;br /&gt;
[[File:Flash-reloader-infinitime-recovery.jpg|500px|thumb|right|Flashing &amp;lt;code&amp;gt;reloader-infinitime-recovery-0.14.1.zip.zip&amp;lt;/code&amp;gt;]]&lt;br /&gt;
[[File:Flash-infinitime.jpg|600px|thumb|right|Flashing &amp;lt;code&amp;gt;pinetime-mcuboot-app-dfu-1.1.0.zip.zip&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;reloader-factory.zip&amp;lt;/code&amp;gt; are unfortunately broken in wasp-os 0.4, and very outdated in older releases. I do not recommend flashing these. Older InfiniTime versions have flaky BLE which makes upgrading from there very unreliable. Trying to create new zips containing any recent version of InfiniTime also fails, because it has grown too big to fit inside a zip together with the reloader and bootloader.&lt;br /&gt;
&lt;br /&gt;
Instead, I made my own containing just the [https://github.com/JF002/InfiniTime/releases/tag/0.14.1 InfiniTime 0.14.1] [https://github.com/JF002/pinetime-mcuboot-bootloader/blob/develop/README.md#recovery-firmware recovery firmware]. This allows you to flash any future release of InfiniTime without having to find a new reloader zip. Get the [https://github.com/Peetz0r/wasp-reloader/releases/tag/infinitime-0.14.1-recovery reloader zip here] and the [https://github.com/JF002/InfiniTime/releases latest Infinitime here].&lt;br /&gt;
&lt;br /&gt;
* Reboot the watch by holding the button until the pine cone arrow appears.&lt;br /&gt;
* Flash the reloader zip: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;reloader-infinitime-recovery-0.14.1.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* After flashing, the reloader will run (blue smaller pine cone), then it'll boot the InfiniTime bootloader (large pine cone) will run.&lt;br /&gt;
* Boot the watch into recovery mode by holding the button until the pine cone turns red. It'll boot again (large pine cone will turn green) and then the InfiniTime loo will appear.&lt;br /&gt;
* You can now flash InfiniTime 1.1.0 (or any other version): &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;pinetime-mcuboot-app-dfu-1.1.0.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* InfiniTime should now boot. Enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone_Installation_Instructions&amp;diff=10782</id>
		<title>PinePhone Installation Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone_Installation_Instructions&amp;diff=10782"/>
		<updated>2021-06-19T07:33:50Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section has generic installation instructions. Please see the [[PinePhone Software Releases]] section for specific installation instructions for each distribution.&lt;br /&gt;
&lt;br /&gt;
== Boot priority ==&lt;br /&gt;
&lt;br /&gt;
The default PinePhone boot priority is first the SD card and then the eMMC so inserting your own SD card with your preferred release will result in the phone booting your image.&lt;br /&gt;
&lt;br /&gt;
== Installation to the microSD ==&lt;br /&gt;
&lt;br /&gt;
To install an image to the microSD card:&lt;br /&gt;
&lt;br /&gt;
# Download your chosen image from [[PinePhone Software Releases]]&lt;br /&gt;
# Extract the compressed file&lt;br /&gt;
# Write the image to your SD card, see below&lt;br /&gt;
# Plug SD card into phone&lt;br /&gt;
# Boot phone&lt;br /&gt;
&lt;br /&gt;
If you need step-by-step instructions for writing an image to an SD card, check [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|the NOOB guide]], then return to this page.&lt;br /&gt;
&lt;br /&gt;
=== Flashing the microSD ===&lt;br /&gt;
==== Using dd ====&lt;br /&gt;
Make sure to select the correct device using &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; with the correct device:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo dd if=pine.img of=/dev/[DEVICE] bs=1M status=progress conv=fsync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Using bmaptool ====&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
Download the .img.xz and the .img.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;
&lt;br /&gt;
==== Using graphical tools ====&lt;br /&gt;
GUI applications such as Etcher and GNOME Disks can be used to flash the MicroSD too.&lt;br /&gt;
&lt;br /&gt;
== Installation to the eMMC ==&lt;br /&gt;
=== Using JumpDrive ===&lt;br /&gt;
&lt;br /&gt;
[[File:jumpdrive.jpg|400px|thumb|right|Jumpdrive running on the PinePhone]]&lt;br /&gt;
The internal eMMC flash storage can be flashed using the Jumpdrive utility by Danct12 and Martijn from postmarketOS.&lt;br /&gt;
This utility boots from micro SD and exposes the internal eMMC flash storage when the PinePhone is connected to a computer.&lt;br /&gt;
The process of flashing an OS to the exposed and mounted eMMC is identical to that of any other storage medium - e.g. a SD card. You can use the &amp;lt;i&amp;gt;dd&amp;lt;/i&amp;gt; command or a utility such as Etcher or Gnome Disks, etc.&lt;br /&gt;
&lt;br /&gt;
Latest Jumpdrive can be found [https://github.com/dreemurrs-embedded/Jumpdrive/releases/ here].&lt;br /&gt;
&lt;br /&gt;
# Download and extract [https://github.com/dreemurrs-embedded/Jumpdrive/releases the Jumpdrive image]&lt;br /&gt;
# Flash the Jumpdrive image to a micro SD card&lt;br /&gt;
# Boot the PinePhone from the Jumpdrive micro SD card&lt;br /&gt;
# Connect the PinePhone to your computer using USB-A -&amp;gt; USB-C cable&lt;br /&gt;
# Flash the exposed PinePhone drive (e.g. /dev/mm..., check for the right device in dmesg, GNOME disks, or similar, and make sure it's unmounted) with your chosen OS image&lt;br /&gt;
# Once the flashing process is complete, disconnect the PinePhone from your PC, power it down and remove the Jumpdrive SD card&lt;br /&gt;
# The process is now finished, and you can boot from eMMC&lt;br /&gt;
&lt;br /&gt;
The Jumpdrive image is smaller than 50MB. You can keep an SD card specifically for using Jumpdrive, and there are 64MB micro SD cards sold cheaply that will suffice. Jumpdrive also acts as a rescue image in case if you messed up your installation. To do so, you can telnet to '''172.16.42.1''', mount rootfs and fix it!&lt;br /&gt;
&lt;br /&gt;
=== From the booted microSD OS ===&lt;br /&gt;
&lt;br /&gt;
# Flash an OS to the SD card (and optionally resize the partition, see below)&lt;br /&gt;
# Insert SD card and boot the phone&lt;br /&gt;
# Download the desired OS' image on the booted OS or transfer it to the SD card&lt;br /&gt;
# Extract the image file if it is archived&lt;br /&gt;
# Flash the image file to eMMC using &amp;lt;code&amp;gt;dd if=new-pinephone-image.img of=/dev/mmcblkX bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt; where X is the number label of the eMMC (of the disk, not the partition!). Use the command ''lsblk'' to check your devices: typically with the current kernel the SD card is /dev/mmcblk0 and the eMMC is /dev/mmcblk2 but as always with ''dd'' be extremely cautious to get the devices correct. &lt;br /&gt;
# Turn off phone, remove SD card and then turn on the phone.&lt;br /&gt;
&lt;br /&gt;
=== From the booted microSD OS (risky) ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|This copies a mounted filesystem, which can lead to instability, erratic behavior, and data corruption.}}&lt;br /&gt;
&lt;br /&gt;
# Prepare a new SD card, flash desired OS to the SD card&lt;br /&gt;
# Boot the phone with your new SD card image&lt;br /&gt;
# Within the booted OS, flash/clone the running OS to eMMC, e.g. using dd. It will take about 15 minutes (depending on the speed of your card), and in the end it may show an error about not enough space - just ignore it.&lt;br /&gt;
# Turn off phone, take out SD card, and try booting the phone which should load up the new OS from eMMC.&lt;br /&gt;
# Open terminal and resize partition to fill up entire disk (see below).&lt;br /&gt;
&lt;br /&gt;
=== SD to eMMC via installer ===&lt;br /&gt;
&lt;br /&gt;
postmarketOS installer images booted from SD card will simply ask the user, if they want to install to eMMC. The feature lives in the distro-agnostic calamares-extensions repository (see [https://github.com/calamares/calamares-extensions/pull/7 calamares-extensions#7]), so other distributions might adopt this in the future.&lt;br /&gt;
&lt;br /&gt;
== Resize partition to fit disk space ==&lt;br /&gt;
&lt;br /&gt;
{{Hint|Many OSes already include a script, which is resizing the partition on first boot, where this step is not required.}}&lt;br /&gt;
&lt;br /&gt;
Once you've flashed the OS to your SD card or eMMC storage, you may also need to expand the partition to fill all the available space.&lt;br /&gt;
&lt;br /&gt;
=== Resize SD card's partition using computer ===&lt;br /&gt;
&lt;br /&gt;
For SD cards, insert the SD card and resize the partitions through the computer. For eMMC, insert the phone cable and use Jumpdrive to access the eMMC directly, and resize the partition after flashing the image. To do the flashing you have two options:&lt;br /&gt;
&lt;br /&gt;
====Using Growpart ====&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;i&amp;gt;growpart&amp;lt;/i&amp;gt; and run:&lt;br /&gt;
 growpart /dev/mmcblkX Y&lt;br /&gt;
 resize2fs /dev/mmcblkXpY&lt;br /&gt;
where X is the storage device and Y is the partition number (viewable from &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
If you get any errors about missing or unknown commands, use &amp;lt;code&amp;gt;apt-cache search&amp;lt;/code&amp;gt; to find and install the needed software. Also don't forget to use &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Using Parted ====&lt;br /&gt;
&lt;br /&gt;
Parted's interactive mode and resize work well together. Do this before you put your SD card into the PinePhone for the first time for best results.&lt;br /&gt;
&lt;br /&gt;
 sudo parted /dev/&amp;lt;your_sd_card_device&amp;gt;&lt;br /&gt;
 (parted) resizepart 2 100%&lt;br /&gt;
 (parted) quit&lt;br /&gt;
 sudo resize /dev/&amp;lt;the_second_sd_card_PARTITION&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resize from within PinePhone ===&lt;br /&gt;
&lt;br /&gt;
eMMC: you would need to resize the partition on eMMC (flashed with the operating system) by booting another image from the SD card: that way, the eMMC will be unmounted. It is '''not recommended''' to resize eMMC while booted from eMMC! Resizing a currently mounted partition can have weird results. If you booted from the SD card, you can follow the above guidelines on how to resize from a computer. &lt;br /&gt;
&lt;br /&gt;
SD card: It is generally not possible to boot from eMMC to partition the unmounted SD card, because of the boot order - you would have to write the image to the empty SD card first, then resize partition, all without rebooting. It is also '''not recommended''' to resize the SD card while booted from SD card! Resizing a currently mounted partition can have weird results.&lt;br /&gt;
&lt;br /&gt;
== Reuse SD card for data storage on system booting from eMMC==&lt;br /&gt;
Once you have installed your release of choice to eMMC, you may wish to use an SD card for data storage. If you choose to re-use a card you have previously used to boot from, you will find your phone will not boot if you just reformat the card and insert it. This is because the Allwinner firmware in the PinePhone uses some (normally) unused space at the front of the SD card to store boot software, which you need to clear.&lt;br /&gt;
&lt;br /&gt;
This can be done as follows on any linux system:&lt;br /&gt;
 lsblk&lt;br /&gt;
to check the device of your SD card – as an example lets assume it is /dev/mmcblk0&lt;br /&gt;
then&lt;br /&gt;
 sudo dd if=/dev/zero of=/dev/&amp;lt;your_sd_card_device&amp;gt; bs=8k seek=1 count=4&lt;br /&gt;
will clear the relevant sectors of your card.&lt;br /&gt;
&lt;br /&gt;
== Web resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=7HMkU43P9hw Youtube video on how to flash OS images on the Pinephone (SD or eMMC) by Tech Pills]&lt;br /&gt;
* [https://www.youtube.com/watch?v=u65dofYFAPY Youtube video on How to install different OSes On the PinePhone plus an Mobian overview by Elatronion]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Getting_started&amp;diff=10781</id>
		<title>Getting started</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Getting_started&amp;diff=10781"/>
		<updated>2021-06-19T07:19:50Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Setting Up Your device - What You’ll Need to Get Started ==&lt;br /&gt;
&lt;br /&gt;
You will need the following to get started with using your PINE A64(+), SOPine/PINE A64-LTS, Pinebook or ROCK64 board:&lt;br /&gt;
* Windows / Linux PC or MAC with a MicroSD Card Reader and connection to the Internet.&lt;br /&gt;
* Power Supply&lt;br /&gt;
:: For PINE A64(+): Power Supply (PSU) and a micro usb cable. Please make sure to use a PSU rated at +5V @2A and a micro USB cable that is at least 26 AWG thick.&lt;br /&gt;
:: For SOPine/PINE A64-LTS: Power Supply (PSU) with 3.5mm OD/1.5mm ID barrel DC Jack. Please make sure to use a PSU rated at +5V @2A.&lt;br /&gt;
:: For Pinebook and ROCK64: Power Supply (PSU) with 3.5mm OD/1.5mm ID barrel DC Jack. Please make sure to use a PSU rated at +5V @3A.&lt;br /&gt;
* MicroSD card (8GB or higher capacity) rated 'class 10' or better.&lt;br /&gt;
* HDMI cable (unless you wish to run headless / without a monitor). On '''A64 Devices''' Android and Remix OS support 720p and 1080p, while Linux supports a [https://github.com/longsleep/sunxi-disp-tool#available-hdmi-output-names wider range of resolutions].&lt;br /&gt;
* Input device(s) such as: keyboard, mouse, remote, pointer, etc.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step Instructions for Flashing MicroSD Cards ==&lt;br /&gt;
&lt;br /&gt;
{{Note|'''Caution!''' Handle the Pine64 Single Board Computers' PCBs with care. Always hold bare boards by the edges and make sure to wear an anti-static wrist strap. Touching components on the front and back of the boards can result in an ESD discharge that may cause damage to the electronics. Avoid placing bare boards on materials such as carpets, plastics or other surfaces prone to electrostatic build-up}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Begin by imaging the OS of your choice'''&lt;br /&gt;
&lt;br /&gt;
The process of flashing PINE64 OS images to micro SD on your Windows, Linux or OSX device is the same for all devices. You will require a quality microSD card (8GB or greater; class 10 or faster). There are many [https://forum.pine64.org/showthread.php?tid=681 substandard and counterfeit cards] in circulation and even reputable vendors may unknowingly sell counterfeit microSD cards. Cards that do not meet the criteria outlined above are known to cause a variety of issues including, but not limited to, complete boot failure. There are ways of testing microSD cards prior to installing the operating system to make sure they are appropriate for use with your board. The main utility for checking microSD cards is  [https://www.softpedia.com/get/System/System-Miscellaneous/H2testw.shtml#download H2testw 1.4]; yet another alternative is [https://github.com/AltraMayor/f3/archive/v6.0.zip F3]. Yet another overview of various options [https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives-bought-from-ebay-with-h2testw/ Test and Detect Fake Cards]&lt;br /&gt;
&lt;br /&gt;
Please refer to the relevant section below for instructions on how to image your microSD card:&lt;br /&gt;
* [[#Imaging microSD on Windows 7/8/8.1/10|Imaging microSD on Windows 7/8/8.1/10]]&lt;br /&gt;
* [[#Imaging microSD on Apple OSX|Imaging microSD on Apple OSX]]&lt;br /&gt;
* [[#Imaging microSD on Linux|Imaging microSD on Linux]]&lt;br /&gt;
&lt;br /&gt;
Having successfully imaged your microSD card, insert it into the microSD slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Plug in the HDMI Cable, Ethernet Cable and Peripherals to your PINE64 SBC'''&lt;br /&gt;
&lt;br /&gt;
Unless you are planning on running your board headless (without a monitor / as a server) you should plug in all necessary peripherals, including the HDMI and Ethernet cable, prior to powering ON the board. Do note, depending on which OS image you are using, some peripherals may or may not work. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Apply Power to Your Board'''&lt;br /&gt;
&lt;br /&gt;
Once you have imaged your microSD and plugged everything in, you are ready to apply power to the PINE64 Single Board Computer. You'll need a good quality 5 Volt, 2 Amp PSU. Using a good quality PSU is very important as failing to meet the required specifications may prevent the board from booting correctly. A marginally higher PSU Voltage is acceptable (for instance, 5.1 volts - due to the nature of the micro usb connection, a 5.1v supply can help protect slightly against voltage drops which can cause undesirable results). However, a significantly higher voltage of 7 Volts or more will damage the PINE64 Single Board Computer and may render it inoperative.&lt;br /&gt;
&lt;br /&gt;
For PINE A64(+) board, if you are using a separate micro USB cable with your PSU, make sure that the cable has a low resistance rating. Cables with high resistance will cause improper function and the unit may not boot at all or only partially. The thicker the internal cabling, the better [https://voyager8.blogspot.co.uk/2013/04/how-to-choose-good-usb-data-and.html i.e. AWG (American Wire Gauge) 20 is better than AWG 28]. In General, '''power-only microUSB''' cables come with red colour USB header.&lt;br /&gt;
&lt;br /&gt;
Having completed the steps outlined above the PINE64 Single Board Computer will begin to boot. The onboard power-on LEDs will come on and Ethernet port LEDs will start to blink if you have an Ethernet cable plugged in. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Imaging microSD on Windows 7/8/8.1/10 ===&lt;br /&gt;
&lt;br /&gt;
You will need the following utilities to get started with imaging the OS of your choice onto your microSD card:&lt;br /&gt;
* A compression utility (used to unarchive the OS image). We recommend you use [https://www.7-zip.org/download.html 7zip].&lt;br /&gt;
* A disk image utility (used to flash the .img to your SD card). We recommend you use either the [https://etcher.io/ Etcher] or [https://sourceforge.net/projects/win32diskimager/ Win32Imager] utility.&lt;br /&gt;
&lt;br /&gt;
'''Optional for Allwinner A64 SoC based boards'''&lt;br /&gt;
* Phoenix Card image utility (used ONLY for phoenix card images). You can download it from [https://drive.google.com/file/d/0B0cEs0lxTtL3VmstaEFfbmU1NFk/view?usp=sharing here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Downloading and extracting OS image(s)'''&lt;br /&gt;
&lt;br /&gt;
You can find OS images for the respective devices in the [[Main_Page|device section]] on the main page. &lt;br /&gt;
Images designated ‘DD’ need to be flashed using Etcher or Win32imager, whilst images labelled ‘Phoenix Card Image’ require the Phoenix Card utility.&lt;br /&gt;
&lt;br /&gt;
Having downloaded the required OS image proceed to use 7zip to unarchive it by right-clicking the archive, and selecting ‘Extract All’. Upon completion, note the destination of where the .img file was extracted (‘Downloads’ folder by default). Once the process has completed, you can proceed to imaging the .img file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging the microSD card (DD)'''&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your laptop/USB card reader. You may require a SD → microSD converter, as most laptops and desktops only feature a full-size SD card reader. Once the microSD card is plugged into your computer, make sure to take note of the drive it has been assigned (the drive is assigned a letter, e.g. ‘F:’). You will need to remember the ‘letter’ it has been assigned when imaging the OS.&lt;br /&gt;
&lt;br /&gt;
* Launch Win32diskImager.exe or etcher.exe. You will be presented with a field titled ‘path’ and a drop down menu labeled ‘device’. Click the ‘path’, navigate to and select the OS image you extracted from the archive earlier. Next, from the drop-down menu select the drive your microSD has been assigned. {{warning|'''N.B.''' Pay close attention to the selected drive (remember your letter) – the imaging process will permanently erase and format the selected drive. If you choose the wrong drive all your data will be lost.}}&lt;br /&gt;
&lt;br /&gt;
* Having chosen the desired OS image and the correct driver press ‘write’. Once the image has been written to your microSD card you will receive a pop-up notification. Be sure to close the application and to eject/remove your SD card safely from Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging using Phoenix Card (applicable only to Allwinner A64 SoC based boards)'''&lt;br /&gt;
&lt;br /&gt;
On Windows, you can also use Phoenix Card (for detailed instructions click [[PhoenixCard|here]]). The Phoenix Card utility works ONLY with images designated as ‘Phoenix Card’ in the downloads section. To use Phoenix Card follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your laptop/USB card reader. You may require a SD → microSD converter, as most laptops and desktops only feature a full-size SD card reader. Once the microSD card is plugged into your computer, make sure to take note of the drive it has been assigned (the drive is assigned a letter, e.g. ‘F:’). You will need to remember the ‘letter’ it has been assigned when imaging the OS.&lt;br /&gt;
&lt;br /&gt;
* Launch phoenixcard.exe. You will be presented with a ‘disk’ drop-down menu and a field denoted as ‘.img File’. Click on ‘.img File’ and navigate to and select the OS image have downloaded and unarchived. Next, make sure to select the disk that your microSD card has been assigned. {{warning|'''N.B.''' Pay close attention to the selected drive (remember your letter) – the imaging process will permanently erase and format the selected drive. If you choose the wrong drive all your data will be lost.}}&lt;br /&gt;
&lt;br /&gt;
* Make sure to select ‘Startup!’ from the ‘Write mode’ window and click Burn. Once the image has been written to your microSD card you will receive a confirmation in the ‘option’ window. Be sure to close the application and to eject/remove your SD card safely from Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Imaging microSD on Apple OSX ===&lt;br /&gt;
&lt;br /&gt;
You will need the following utilities to get started with imaging the OS of your choice onto your microSD card:&lt;br /&gt;
* A compression Utility (used to unarchive the OS image). We recommend you use [https://www.7-zip.org/download.html 7Zip].&lt;br /&gt;
* A disk image utility (used to flash the .img to your SD card in GUI). We recommend you use [https://mac.softpedia.com/get/Utilities/ApplePi-Baker.shtml#download ApplePi Baker] or [https://etcher.io/ Etcher].&lt;br /&gt;
{{hint|'''N.B.''' Phoenix Card utility and images are NOT available on Apple OSX.}}&lt;br /&gt;
&lt;br /&gt;
'''Downloading and extracting OS image(s)'''&lt;br /&gt;
&lt;br /&gt;
You can find OS images for the respective devices in the [[Main_Page|device section]] on the main page. On OSX you can only use images designated as ‘DD’.&lt;br /&gt;
&lt;br /&gt;
Having downloaded the required OS image proceed to use 7zip to unarchive it by double clicking the archive, and selecting ‘Extract All’. Upon completion, note the destination where the .img file was extracted (‘Downloads’ folder by default). Once the process has completed, you can proceed to imaging the .img file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging the microSD card (GUI)'''&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your Mac laptop/USB card reader. You may require a SD → microSD converter, as Apple’s laptops and desktops only feature a full-size SD card reader. Once the microSD card is plugged into your computer it should appear in Finder / on your desktop.&lt;br /&gt;
&lt;br /&gt;
* Launch Apple-Pi Baker or the etcher utility. Upon startup the application it will ask for your password. When the application launches you will be presented with a field titled ‘IMG file’ and a path of the mounted microSD card (it will look something like this: ‘/dev/diskX 32.0Gb SD card’). Click the ‘IMG file’ button, navigate to and select the OS image you extracted from the archive earlier. Next, select the microSD from the window. {{warning|'''N.B.''' Pay close attention to the selected drive – the imaging process will permanently erase and format the selected drive. If you choose the wrong drive all your data will be lost.}}&lt;br /&gt;
&lt;br /&gt;
* Having chosen the desired OS image and the correct driver press ‘Restore Backup’. Once the image has been written to your microSD card you will receive a pop-up notification. Be sure to close the application and to eject/remove your SD card safely from your Mac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging from Terminal'''&lt;br /&gt;
&lt;br /&gt;
{{note|'''N.B.''' If you are not comfortable using the terminal, please use the GUI method outlined above instead.}}&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your Mac laptop/USB card reader. You may require a SD → microSD converter, as Apple’s laptops and desktops only feature a full-size SD card reader. Once the microSD card is plugged into your computer it should appear in Finder / on your desktop.&lt;br /&gt;
&lt;br /&gt;
* Open up your terminal and navigate to the directory where you unarchived your OS image.&lt;br /&gt;
&lt;br /&gt;
* Before you start writing to the card, you will have to identify your microSD card. Type: &amp;lt;code&amp;gt;diskutil list&amp;lt;/code&amp;gt; and note the output. The disk number should match the size of your SD card and will likely be using ‘Fdisk_partition_scheme’. Having identified the disk number execute the following commands (substitute diskX for your disk and name of image for pine64-image-name.img):&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;diskutil unmountDisk /dev/diskX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo dd if=pine64-image-name.img of=/dev/disk2 bs=1M&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wait patiently for the process to complete. Be sure to eject/remove your SD card safely from your Mac.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Imaging microSD on Linux ===&lt;br /&gt;
&lt;br /&gt;
You will need the following utilities to get started with imaging the OS of your choice onto your microSD card:&lt;br /&gt;
* A compression Utility (used to unarchive the OS image). We recommend you use [https://apps.kde.org/en/ark Ark].&lt;br /&gt;
* A disk image utility (used to flash the .img to your SD card in GUI). We recommend you use [https://etcher.io/ Etcher] or the [https://git.gnome.org/browse/gnome-disk-utility/ GUI Disks utility] that ships with most popular distros.&lt;br /&gt;
{{hint|'''N.B.''' Phoenix Card utility and images are NOT available on Linux.}}&lt;br /&gt;
&lt;br /&gt;
'''Downloading and extracting OS image(s)'''&lt;br /&gt;
&lt;br /&gt;
You can find OS images for the respective devices in the [[Main_Page|device section]] on the main page. On Linux you can only use images designated as ‘DD’.&lt;br /&gt;
&lt;br /&gt;
Having downloaded the required OS image proceed to use 7zip to unarchive it by double clicking the archive, and selecting ‘Extract All’. Upon completion, note the destination where the .img file was extracted (‘Downloads’ folder by default). Once the process has completed, you can proceed to imaging the .img file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging the microSD card (GUI)'''&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your Linux laptop/USB card reader. Once the microSD card is plugged into your computer it should appear in your File Manager / on your desktop.&lt;br /&gt;
&lt;br /&gt;
* Launch Disks or the etcher utility (This tutorial outlines how to use Disks, if you wish to learn how to use Etcher please visit [https://etcher.io/ their website]).&lt;br /&gt;
&lt;br /&gt;
* Upon launching Disks, you will be presented with all volumes visible to your computer. As a rule of thumb, your microSD card should be found at the bottom of listed volumes. Verify this by checking the size and mounting of the microSD card. {{warning|'''N.B.''' Pay close attention to the selected drive – the imaging process will permanently erase and format the selected drive. If you choose the wrong drive all your data will be lost.}}&lt;br /&gt;
&lt;br /&gt;
* Having selected your microSD card, click the cog menu in top right corner and choose the ‘Restore Disk Image’ option from the drop-down list. Navigate to and select the OS image you extracted from the archive earlier. Once you select it, you will be asked to enter your password and to confirm writing to the chosen volume (microSD card).&lt;br /&gt;
&lt;br /&gt;
* You will be given a predicted time, writing-speed and completion percentage. Once the image has been written to your microSD card you will receive a pop-up notification. Be sure to close the application and to eject/remove your SD card safely from your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Imaging from Terminal'''&lt;br /&gt;
&lt;br /&gt;
::{{note|'''N.B.''' If you are not comfortable using the terminal, please use the GUI method outlined above instead.}}&lt;br /&gt;
&lt;br /&gt;
* Insert your microSD card into your Linux laptop/USB card reader. Once the microSD card is plugged into your computer it should appear in Finder / on your desktop.&lt;br /&gt;
* Open up your terminal and navigate to the directory where you unarchived your OS image. e.g. &amp;lt;code&amp;gt;cd Download&amp;lt;/code&amp;gt;&lt;br /&gt;
* Before you start writing to the card, you will have to identify your microSD card.&lt;br /&gt;
&lt;br /&gt;
* Type: &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and pay attention to the listed disks. Disks will appear as ''/dev/mmcblk0 /dev/mmcblk1'' etc. &lt;br /&gt;
::{{note|'''Hint''': the drive you currently have booted from has the &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; at the end of the line. This is the wrong drive. Look at the drive that matches your microSD card’s size.}}&lt;br /&gt;
&lt;br /&gt;
* Now you are ready to write the image to the microSD card using this command: (replace the pine.img file with your image and mmcblkX with the correct device for the microSD card)&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo umount /dev/mmcblkX&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo dd if=pine.img of=/dev/mmcblkX bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Wait patiently for the process to complete.&lt;br /&gt;
* use the command &amp;lt;code&amp;gt;sync&amp;lt;/code&amp;gt; to ensure everything is written to the microSD card.&lt;br /&gt;
* The card is ready to boot &lt;br /&gt;
&lt;br /&gt;
(sometimes this process fails and your microSD card can't boot, one way of fixing this is just to repeat the same thing, you can also try a different microSD card)&lt;br /&gt;
&lt;br /&gt;
== Instructions to Flashing eMMC Modules ==&lt;br /&gt;
&lt;br /&gt;
All PINE64 devices - with the '''notable exception of the original Pine A64(+) SBC''' - support eMMC modules as an alternative boot and storage solution to micro SD cards.&lt;br /&gt;
An eMMC module can be purchased for your device(s) from the [https://pine64.com/?post_type=product PINE64 store]. The only PINE64 device that ships with an eMMC module by default is the Pinebook.&lt;br /&gt;
&lt;br /&gt;
The available modules come in three different capacities: 16Gb, 32Gb, 64Gb and 128Gb&lt;br /&gt;
&lt;br /&gt;
There are a few ways to flash eMMC modules with the desired OS image. The following sections are a summary of the processes involved in flashing the OS image of your choice to the eMMC module.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Flashing Using the USB-to-eMMC Adapter (Preferred Way) ===&lt;br /&gt;
&lt;br /&gt;
A USB-to-eMMC adapter is available from purchase from the [https://pine64.com/product/usb-adapter-for-emmc-module/ PINE64 Store] making it easy to mount the eMMC module as a volume in your Windows, Mac OS or Linux computer. The eMMC can hence be flashed directly from your computer with any image similarly to a micro SD card.&lt;br /&gt;
&lt;br /&gt;
'''This installation method works for all devices that support eMMC modules regardless of the chipset''' and it is therefore the preferred way of flashing OS images to eMMC. All available OS images for your device can be installed on the eMMC module this way. &lt;br /&gt;
&lt;br /&gt;
*This process of flashing an OS image to eMMC is '''literally identical to imaging micro SD cards''', so please read [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|Step-by-Step Instructions to Flashing Micro SD Cards]] before you begin. &lt;br /&gt;
&lt;br /&gt;
For this method you will need the following: &lt;br /&gt;
&lt;br /&gt;
*A Windows, Linux or Mac OS computer&lt;br /&gt;
*A PINE64 eMMC module&lt;br /&gt;
*The PINE64 USB-to-eMMC adapter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Flashing eMMC using the adapter'''&lt;br /&gt;
&lt;br /&gt;
*Insert the the eMMC module into the USB adaptor and plug it into your Windows, Linux or Mac OS computer. It should mount as a regular USB drive and show up in your file manager. &lt;br /&gt;
*If you are using Linux or Mac OS you can either use the dd terminal command or a GUI utility such as [https://etcher.io/ Etcher] to flash the chosen OS Image to eMMC. &lt;br /&gt;
*If you are using a Windows machine use [https://etcher.io/ Etcher] or [https://sourceforge.net/projects/win32diskimager/ Win32 Disk Imager] to flash the OS Image to the eMMC module.  &lt;br /&gt;
&lt;br /&gt;
Once the image has been flashed using your preferred method safely dismount the USB adaptor in your system and unplug it from your computer. Your eMMC is now ready to boot and can be inserted into the eMMC socket on your PINE64 device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Flashing to eMMC from a SD Boot ===&lt;br /&gt;
&lt;br /&gt;
Some of the available Linux images for Allwinner A64 devices recognise eMMC modules as mounted storage when the device is booted from a micro SD card. This is true for all recent releases of [https://github.com/ayufan-pine64/linux-build/releases ayufan's Linux images]. In result it is possible to flash an OS image to eMMC using the DD command in terminal or the Disks GUI utility included with the Mate desktop. &lt;br /&gt;
&lt;br /&gt;
There are '''two ways''' in which an OS image can be flashed from within a micro SD boot: &lt;br /&gt;
*Via a script called Pine64_install_to_eMMC.sh found in ''/usr/local/sbin''. This script will install an Ubuntu Mate OS installation (identical to the on running on the SD) to the eMMC module. To execute the script navigate to its location in the terminal and type &amp;lt;code&amp;gt;sudo ./Pine64_install_to_eMMC.sh&amp;lt;/code&amp;gt;. Follow the instructions. &lt;br /&gt;
&lt;br /&gt;
*By manually downloading and flashing a OS image for your device using DD or the Disk GUI. This way of flashing an OS image to the eMMC is identical to that used on a Linux computer (e.g. for flashing an OS image to a SD card). For more information on how the process works please see the detailed guide on [[NOOB#Imaging_microSD_on_Linux|imaging OS images to SD card on Linux]]. &lt;br /&gt;
&lt;br /&gt;
For the latter of the two methods here is a summary of the process: &lt;br /&gt;
*Flash an OS image which recognizes eMMC as mounted storage to a micro SD card. For details on how to flash a micro SD card see [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|section 3]] &lt;br /&gt;
*Insert both the micro SD and eMMC module into your device and power it on.&lt;br /&gt;
*Once the PINE64 device boots from micro SD, you cannot flash the contents of the micro SD card to the eMMC while you are running from the micro SD so you will actually use this session to download an OS image to flash to the eMMC. Depending on the distribution this may be the same image you just flashed to the micro SD card and booted from.&lt;br /&gt;
*Once the OS image downloads check in terminal or in Disks utility the eMMC's mounting location and unmount all but &amp;quot;/&amp;quot;. Example command to show disks and mounts:&lt;br /&gt;
::&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;$ lsblk&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
*Use the DD command or Disks utility to flash the downloaded image to the eMMC module. Note your output device may be mmcblk1 or mmcblk2, use the command above to verify the correct one. Example DD command:&lt;br /&gt;
::&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;$ xzcat imagename.img.xz | sudo dd of=/dev/mmcblk1 bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
*Once the flashing process is completed power down your device and remove the micro SD card. You should now be able to power your device back up and it will boot the image flashed to the eMMC module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Flashing to eMMC using FEL (Allwinner A64 Devices Only) ===&lt;br /&gt;
&lt;br /&gt;
Under particular circumstances it may prove difficult to rely on a SD card to flash an OS image to an Allwinner A64 device. In such instances OS images can be directly flashed by means of entering into FEL mode. FEL is a low-level subroutine in the BootROM, and the process of enabling FEL differs from one device to another. To learn more about FEL please refer to the [https://linux-sunxi.org/FEL SUNXI Wiki section] dedicated to the subject. &lt;br /&gt;
&lt;br /&gt;
The process of flashing via FEL is more complex than utilising a micro SD and is therefore '''better suited for proficient and advanced users'''.  &lt;br /&gt;
&lt;br /&gt;
For the process of flashing an image to the eMMC on a device in FEL mode you will need: &lt;br /&gt;
*A computer running Mac OS or Linux&lt;br /&gt;
*An OTG USB A-to-A cable &lt;br /&gt;
&lt;br /&gt;
To enter FEL you will need to: &lt;br /&gt;
*On the Pinebook, power down the Pinebook and remove the PSU, unscrew the bottom of the case and press down the FEL button on the PCB (REF). Plug in the OTG USB A-to-A cord to your computer and the OTG USB port on the Pinebook (on the right facing an open case). Reinsert the PSU cord and press the power button with the FEL button pressed down. Release the FEL button after 3 seconds. &lt;br /&gt;
*On the Pine A64(+) power down the board and remove the micro SD card and power cord. Plug in the OTG USB A-to-A cord to your computer and the OTG USB port on the Pine A64 (+) and SoPine (top port). Power on the device and immediately after insert a micro SD card [https://app.box.com/s/s3m7rb5zfe0jkwqhaiy1zytqq3436fqs with FEL code].&lt;br /&gt;
&lt;br /&gt;
You can check if your device entered FEL mode using ''lsusb'' command in terminal. It should be listed as a device on the USB Bus. &lt;br /&gt;
&lt;br /&gt;
The next step is to mount your device so that your computer recognizes the eMMC as mass storage (UMS). A script called boot-tools streamlining this process is available '''thanks to ayufan''' on [https://github.com/ayufan-pine64/boot-tools his github]. Follow his instructions and in terminal perform the following steps: &lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;git clone &amp;lt;nowiki&amp;gt;https://github.com/ayufan-pine64/boot-tools.git&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;cd boot-tools&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;make pinebook_ums&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;make pine64_ums&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once your device mounts as UMS it will appear in your file manager. In CLI you can check if the storage is listed using ''fdisk -l''.  &lt;br /&gt;
&lt;br /&gt;
This process of flashing an OS image to eMMC with the device in FEL mode and mounted as UMS is  '''literally identical to imaging micro SD cards''', so please read [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|Step-by-Step Instructions to Flashing Micro SD Cards]] and follow the procedure. You can use DD or Disks/ Disk Utility to flash the OS image directly to your device's eMMC. &lt;br /&gt;
&lt;br /&gt;
Once the flashing process is completed, power down your device, remove the A-to-A USB OTG cable and after reapply power to boot your device from eMMC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Flashing to eMMC using Rockchip Tools (Rock64 Only) ===&lt;br /&gt;
&lt;br /&gt;
Rockchip has a different boot hierarchy to Allwinner's devices making it much more difficult to flash OS images using the micro SD-to-eMMC scheme used on A64. There are, however, flashing tools that make it possible to flash directly to eMMC on a Rock64 in loader and MarkROM modes. &lt;br /&gt;
&lt;br /&gt;
To flash to the eMMC module using these tools you will need the following: &lt;br /&gt;
*A Windows, Mac OS or Linux computer&lt;br /&gt;
*An A-to-A USB cable &lt;br /&gt;
*The Rock64 board with the eMMC module inserted into the socket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Using Windows 7/8.1/10 ''' &lt;br /&gt;
You will need to download the [https://github.com/rockchip-linux/tools/tree/master/windows DriverAssistant aka Rockchip driver] as well as the [https://github.com/rockchip-linux/tools/tree/master/windows AndroidTool_Release] used for flashing OS images. Having completed the downloads extract both archives.The Rockchip driver needs to be installed prior to using the AndroidTool utility. &lt;br /&gt;
&lt;br /&gt;
Having installed the driver and flashing utility, follow these steps:&lt;br /&gt;
*Make sure that eMMC is inserted into the slot on the Rock64&lt;br /&gt;
*Place a jumper / short out the eMMC pins on the board (consult [https://files.pine64.org/doc/rock64/guide/ROCK64_Installing_Android_To_eMMC.pdf this PDF document] for more details.&lt;br /&gt;
*Insert one end of the A-to-A cable into your Windows PC and the other into your Rock64 OTG USB port (top)&lt;br /&gt;
*Inset the power cord into the Rock64&lt;br /&gt;
*Start AndroidTool; make sure that it reports 'Found One Maskrom Device' (if it does not recognise your device, please repeat previous steps)&lt;br /&gt;
*Select either the latest Stock Android build or ayufan's Android TV build with the suffic -update. Download and the extract the chosen image.  &lt;br /&gt;
*In AndroidTool press the firmware tab and navigate to where you extracted the OS image and select it. &lt;br /&gt;
*Press the upgrade tab. You will be prompted when the flashing process is completed. &lt;br /&gt;
*Remove the USB A-to-A cable, power off your board and power it on again to boot into eMMC. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Using Linux or Mac OS'''&lt;br /&gt;
&lt;br /&gt;
*Make sure that eMMC is inserted into the slot on the Rock64&lt;br /&gt;
*Download latest stable or pre-release (to be used at own risk) Android TV OS image from [https://github.com/ayufan-rock64/android-7.1/releases ayufan's github]. The image you wish to download is the one '''without a suffix'''; without -update or -raw in the OS image title. &lt;br /&gt;
*In terminal, download rkflashtool following instructions on [https://github.com/ayufan-rock64/android-7.1/blob/master/README.md ayufan's github]&lt;br /&gt;
*Extract the folder containing partitions of the OS image and place the script listed on ayufan's github in the folder&lt;br /&gt;
*Hold down the recovery button on the board&lt;br /&gt;
*Insert one end of the A-to-A cable into your Mac OS or Linux PC and the other into your Rock64 OTG USB port (top)&lt;br /&gt;
*Inset the power cord into the Rock64&lt;br /&gt;
*Check that your device is in loader mode by typing in the terminal &amp;lt;code&amp;gt;sudo rkflashtool n&amp;lt;/code&amp;gt;. If rkflashtool doesn't detect the Rock64 please repeat last 3 steps &lt;br /&gt;
*In terminal navigate to where you extracted the Android folder containing the OS partitions and the script and type &amp;lt;code&amp;gt;rkinstall&amp;lt;/code&amp;gt;; this will install the community Android TV build to eMMC. &lt;br /&gt;
*Remove the USB A-to-A cable, power off your board and power it on again to boot into eMMC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Flashing to eMMC Android 'Update' OS Images on Linux (Rock64 Only) ===&lt;br /&gt;
&lt;br /&gt;
It is possible to flash Android 'update' images to the Rock64 eMMC using a Linux PC. This process requires a tool called [https://www.haoyuelectronics.com/service/RK3066/tools/linux/Linux_Upgrade_Tool_v1.2.tar.gz Linux Upgrade Tool] and the full documentation of its functions can be found [https://www.hotmcu.com/wiki/Flashing_Firmware_Image_Files_Using_The_Rockchip_Tool#Using_Linux_Upgrade_Tool_to_flash_update.img here]. Make sure that you download v1.2 or newer, as older tools do not support the RK3328 used on the Rock64.   &lt;br /&gt;
&lt;br /&gt;
To flash the eMMC module using this method you will need the following: &lt;br /&gt;
*A Linux computer&lt;br /&gt;
*An A-to-A USB cable &lt;br /&gt;
*The Rock64 board with the eMMC module inserted into the socket&lt;br /&gt;
&lt;br /&gt;
Start by downloading an Android '''update''' image for the Rock64. Both PINE64 and Ayufan provide such images for the board - and they are clearly designated as such on both this WiKi's download section and on ayufan's github. For the purpose of this example, I'll use the ayufan's ATV community build: &lt;br /&gt;
&lt;br /&gt;
*Download latest stable or pre-release (to be used at own risk) Android TV OS image from [https://github.com/ayufan-rock64/android-7.1/releases ayufan's github]. The image you wish to download is the one '''with update suffix'''. You need to '''rename the downloaded image to update.img'''.&lt;br /&gt;
*Download the [https://www.haoyuelectronics.com/service/RK3066/tools/linux/Linux_Upgrade_Tool_v1.2.tar.gz Linux Upgrade Tool] to your Linux PC and unarchived it. &lt;br /&gt;
*Extract the archived update Android OS image somewhere where you will remember its path&lt;br /&gt;
*Hold down the recovery button on the board&lt;br /&gt;
*Insert one end of the A-to-A cable into your Mac OS or Linux PC and the other into your Rock64 OTG USB port (top)&lt;br /&gt;
*Inset the power cord into the Rock64&lt;br /&gt;
*In terminal, navigate to where you extracted Rockchip Update Tool and issue the following command substituting the correct path for where the Android Update OS Image is located:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo ./upgrade_tool uf /path/to/update.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Wait as the utility installs Android to eMMC on your Rock64. &lt;br /&gt;
*Remove the USB A-to-A cable, power off your board and power it on again to boot into eMMC.&lt;br /&gt;
&lt;br /&gt;
== Flashing u-boot to SPI Flash ==&lt;br /&gt;
&lt;br /&gt;
Some of PINE64 devices, such as the Rock64 and SOPine, are equipped with SPI Flash. This allows users to flash u-boot onto the SPI and boot from an external USB 2.0 or USB 3.0 SSD/HDD/thumb-drive, thereby forgoing use of eMMC or microSD card. &lt;br /&gt;
&lt;br /&gt;
To find out more about which images can used in conjunction for SPI booting please see [https://github.com/ayufan-rock64/ ayufan's github].&lt;br /&gt;
&lt;br /&gt;
Writing u-boot to SPI Flash can be achieved in two ways:&lt;br /&gt;
&lt;br /&gt;
=== Using a Stand-Alone Image to Write u-boot to SPI ===&lt;br /&gt;
This may be the simplest method of flashing u-boot to SPI. Download a dedicated image labelled '''u-boot-flash-spi.img.xz''' from [https://github.com/ayufan-rock64/linux-u-boot/releases ayufan's github] and flash it to a microSD card, the same as you would with any OS image (to learn how to flash OS images to microSD please follow steps outlined in [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|Section 3]].&lt;br /&gt;
&lt;br /&gt;
'''Having flashed the image follow these steps''': &lt;br /&gt;
&lt;br /&gt;
*Insert the SD into the ROCK64&lt;br /&gt;
*Remove all other peripherals from the board &lt;br /&gt;
*'''Make sure that the eMMC module is disconnected from the board'''&lt;br /&gt;
*Apply power to the ROCK64&lt;br /&gt;
*Wait (few seconds) until the the LEDs on the board will blink continually&lt;br /&gt;
*Power off the board.&lt;br /&gt;
&lt;br /&gt;
The board is now ready to boot from USB 2.0/3.0 storage.&lt;br /&gt;
&lt;br /&gt;
=== Using a Script on Linux OS Images ===&lt;br /&gt;
Most of recent (newer than 0.6.9) Linux OS images contain a script called '''rock64_write_spi_flash.sh''', which is found in ''/usr/local/sbin'' directory. To run the script you will first need to flash a Linux OS image to a micro SD card (to learn how to flash OS images to micro SD please following steps outlined in [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|Section 3]]). Before proceeding '''make sure that the eMMC module is disconnected''' from the board. Once you have booted into Linux on your PINE64 device all you have to do is run the aforementioned script using this command: &lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo ./rock64_write_spi_flash.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the script finishes its operation, power off your board and remove the microSD card.&lt;br /&gt;
The board is now ready to boot from USB 2.0/3.0 storage.&lt;br /&gt;
&lt;br /&gt;
=== Erasing and Rewriting SPI === &lt;br /&gt;
There are two ways of removing u-boot from SPI. You can either download '''u-boot-flash-spi.img.xz''' from [https://github.com/ayufan-rock64/linux-u-boot/releases ayufan's github] or use a script found on Linux OS images titled:'''rock64_erase_spi_flash.sh'''. Follow the instructions in the previous sub-sections for the chosen method of removing u-boot from SPI; the instructions are are identical, as the process of erasing u-boot is the exact opposite of flashing it. &lt;br /&gt;
&lt;br /&gt;
{{hint|'''N.B.''' You can also erase SPI manually.}}&lt;br /&gt;
To do so, you need to download mtd-utils. on Debian or Ubuntu follow these instructions:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo apt-get install mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;sudo flash_eraseall /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Booting an OS image from USB 2.0/3.0 Storage ===&lt;br /&gt;
To boot an OS image from USB 2.0/3.0 Storage such as a SSD/HDD or a thumbdrive you first need to have u-boot written to your SPI flash. Please follow the instructions in the previous sub-sections to learn how to write u-boot to SPI on your PINE64 device. &lt;br /&gt;
&lt;br /&gt;
Once you have u-boot on your SPI, the process of booting is very similar to booting from microSD or eMMC.&lt;br /&gt;
*Download one of the supported OS images for your PINE64 device&lt;br /&gt;
*Flash the OS image to your USB 2.0/USB 3.0 storage device (to learn how to flash OS images please following steps outlined in [[NOOB#Step-by-Step_Instructions_to_Flashing_MicroSD_Cards|Section 3]] The instructions are identical for all types of storage, including USB 2.0/USB 3.0 HDDs and thumb-drives.) &lt;br /&gt;
*Insert the USB storage device with the flashed OS image into one of the USB ports on your PINE64 device&lt;br /&gt;
*Apply power&lt;br /&gt;
&lt;br /&gt;
If you have followed all the steps correctly, the board should boot from your USB 2.0/3.0 storage device.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting Your Device ==&lt;br /&gt;
&lt;br /&gt;
A number of things can prevent the PINE64 board from booting up properly. The most common culprits of a failed boot are: (to find out more click [https://forum.pine64.org/showthread.php?tid=514 here])&lt;br /&gt;
&lt;br /&gt;
* Subpar or counterfeit microSD card&lt;br /&gt;
* Subpar Power Supply&lt;br /&gt;
* High resistance (thin) or a very long microUSB cable&lt;br /&gt;
* Failed imaging of the microSD card or eMMC module&lt;br /&gt;
&lt;br /&gt;
Make sure to have the newest version of the OS image your are running. On Allwinner A64 devices running Linux you can update the kernel and uboot using scripts located in the following directory: /usr/local/sbin&lt;br /&gt;
&lt;br /&gt;
* To navigate to the directory type (in terminal): &amp;lt;code&amp;gt;cd /usr/local/sbin&amp;lt;/code&amp;gt;&lt;br /&gt;
* You list all the available scripts by typing (in terminal): &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt;&lt;br /&gt;
* To run the script required update script run the following command: &amp;lt;code&amp;gt;sudo ./update_script.sh&amp;lt;/code&amp;gt; (substitute the relevant update script for &amp;lt;code&amp;gt;update_script&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
'''Troubleshooting Step by Step'''&lt;br /&gt;
&lt;br /&gt;
Follow these steps to determine the cause of your problem:&lt;br /&gt;
&lt;br /&gt;
* Check your PSU and microUSB cable ratings&lt;br /&gt;
* Download and image a base image of Linux&lt;br /&gt;
* Plug in power and Ethernet into your PINE64 device&lt;br /&gt;
* Watch Ethernet port LED activity&lt;br /&gt;
* Check your router for your device's IP&lt;br /&gt;
* Attempt to ssh into your device's from your computer&lt;br /&gt;
&lt;br /&gt;
If your PSU and microUSB meet the criteria, and you have correctly followed the instructions to image your card and power on the board, but you are not seeing any LED activity and cannot ssh into your device then either the imaging process failed (possibly due to a subpar microSD) OR the PSU / microUSB cable is/are faulty.&lt;br /&gt;
&lt;br /&gt;
If your PSU and microUSB meet the criteria, and you have correctly imaged the OS to your card and power on the board and your can ssh into your PINE A64(+) but get no video feed, then it's likely that the native resolution of your monitor/TV is not supported.&lt;br /&gt;
&lt;br /&gt;
If neither of the above mentioned scenarios fits the problem you are facing, please consult this thread (thanks to Ghost for compiling the list): https://forum.pine64.org/showthread.php?tid=680&lt;br /&gt;
&lt;br /&gt;
If you cannot find a solution to your problem you can submit a ticket at: https://support.pine64.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Upgrade_PineTime_to_InfiniTime_1.0.0&amp;diff=10780</id>
		<title>Upgrade PineTime to InfiniTime 1.0.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Upgrade_PineTime_to_InfiniTime_1.0.0&amp;diff=10780"/>
		<updated>2021-06-19T06:51:42Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category, formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|Page under construction, information subject to review and feedback.}}&lt;br /&gt;
&lt;br /&gt;
Congratulations on receiving your new PineTime!&lt;br /&gt;
&lt;br /&gt;
From the factory, it ships with InfiniTime 0.7.1, and an older bootloader. So now you're probably wondering exactly how on earth do you go about upgrading your watch to the latest and greatest version of InfiniTime - you know, that version you've seen all those great pictures, videos and reviews of. To those of us that are developing stuff for it, it's pretty easy and straightforward, but like with all technology, it is a bit tricky. &lt;br /&gt;
&lt;br /&gt;
{{warning|1=Some people ran into issues during the update process that would temporarily make their watch unusable (display frozen or blank). The only know workaround consists of waiting for the battery to drain completely and try again. With the display off, and battery fully charged, you can expect a wait of 5-7 days so it is best to not fully charge it. If it freezes with the display on, it will likely be flat by the end of the day. We've never heard of any PineTimes that were permanently bricked (were not recoverable), though. }} &lt;br /&gt;
&lt;br /&gt;
In a nutshell, you need to:&lt;br /&gt;
# Charge your watch, but '''not''' to 100% - keep it at approximately 50% - for the reason described above.&lt;br /&gt;
# Update InfiniTime&lt;br /&gt;
# Update the bootloader&lt;br /&gt;
# Install the recovery firmware&lt;br /&gt;
&lt;br /&gt;
= Update Process =&lt;br /&gt;
So how do you do this? Where do you start? Well, with a sealed PineTime, your only easy option is via Over The Air (OTA) Device Firmware Update (DFU), which is done via Bluetooth. There are a couple of different ways and apps you can use to do this. If you have an Android device, you can use [https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/ Gadgetbridge] or [https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp NRFConnect]. Otherwise, if your laptop or desktop computer has Bluetooth and runs Linux, you can use [https://github.com/alexr4535/siglo Siglo] or [https://github.com/piggz/harbour-amazfish Amazfish]. You can also use these applications on your Pinebook Pro or Pinephone if you happen to have those devices. &lt;br /&gt;
&lt;br /&gt;
The reason for installing the updates in the specified order is because newer versions of InfiniTime have a more robust Bluetooth update process, and since we're updating everything over Bluetooth, the fewer retries and failures from that you have the better. It will still sometimes disconnect mid update, meaning you'll need to try again, and possibly restart the watch a few times as well. And since the recovery firmware is new to the 1.0.0 version of the bootloader, it's best to update that last. &lt;br /&gt;
&lt;br /&gt;
[https://video.codingfield.com/videos/watch/831077c5-16f3-47b4-9b2b-c4bbfecc6529 This video] shows the bootloader and recovery firmware installation procedure.&lt;br /&gt;
&lt;br /&gt;
[https://video.codingfield.com/videos/watch/f7bffb3d-a6a1-43c4-8f01-f4aeff4adf9e This video] shows the bootloader installation and firmware update using Amazfish.&lt;br /&gt;
&lt;br /&gt;
You can also read a [https://github.com/JF002/pinetime-mcuboot-bootloader/blob/339224cf5ed21f4e8b2d22eaeab9869120f7f752/docs/howToUpdate.md detailed installation procedure in the documentation of the bootloader].&lt;br /&gt;
&lt;br /&gt;
== Update InfiniTime ==&lt;br /&gt;
To update the main InfiniTime app, you want to flash [https://github.com/JF002/InfiniTime/releases/download/1.0.0/pinetime-mcuboot-app-dfu-1.0.0.zip pinetime-mcuboot-app-dfu-1.0.0.zip].&lt;br /&gt;
&lt;br /&gt;
After updating InfiniTime, ensure that you validate the firmware to prevent it from being automatically reverted/rolled back if your watch is reset/restarted. To do this, swipe right to access the quick actions panel, press the gear/settings icon, swipe up once to show the second page, press on the 'Firmware' option and then on 'Validate'.&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/-5lwBd60k0Q Video showing validation process]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gadgetbridge ===&lt;br /&gt;
&lt;br /&gt;
# Connect your PineTime to GB&lt;br /&gt;
# Download the aforementioned file to your phone&lt;br /&gt;
# Find the file in your file manager&lt;br /&gt;
# 'Open With' Gadgetbridge F/W Installer (method varies by device) - on my phone, it is press and hold, select the file, and then choose 'open with app' from the more options menu&lt;br /&gt;
# Confirm that you wish to apply the update&lt;br /&gt;
# Wait for the update to complete&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/Azi0uh8UZvI Video showing how to start the update]&lt;br /&gt;
&lt;br /&gt;
=== NRFConnect ===&lt;br /&gt;
&lt;br /&gt;
# Download the aforementioned file to your phone.&lt;br /&gt;
# Open NRFConnect&lt;br /&gt;
# Scan for your device&lt;br /&gt;
# Connect to it&lt;br /&gt;
# Choose the DFU option at the top right of the screen&lt;br /&gt;
# Ensure the 'Distribution packet (ZIP)' option is selected, and press OK&lt;br /&gt;
# Select your previously downloaded file&lt;br /&gt;
# Wait for the update to complete&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/jnX7WwYDiDE Video showing how to start the update]&lt;br /&gt;
&lt;br /&gt;
=== Siglo ===&lt;br /&gt;
# If your device was not detected upon start, press &amp;quot;Rescan&amp;quot; to find it.&lt;br /&gt;
# Select the &amp;quot;1.0.0&amp;quot; tag&lt;br /&gt;
# Select the aforementioned file/asset.&lt;br /&gt;
# Select &amp;quot;Flash It!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Amazfish ===&lt;br /&gt;
# Run Amazfish (service + UI)&lt;br /&gt;
# Pair with you device:&lt;br /&gt;
## Unzip the DFU file to extract the .bin file.&lt;br /&gt;
## Click on &amp;quot;pair with watch&amp;quot; on the top&lt;br /&gt;
## Select &amp;quot;PineTime&amp;quot; (if your device is running InfiniTime 0.7.1 or lower) or &amp;quot;InfiniTime (if it's running InfiniTime 0.8+) and choose your device in the list&lt;br /&gt;
# Click on &amp;quot;Download file&amp;quot; on the top &lt;br /&gt;
# Click on &amp;quot;Choose file&amp;quot; and select the .bin file you extracted from the DFU file&lt;br /&gt;
# Click on &amp;quot;Send file&amp;quot;&lt;br /&gt;
# Wait for the update to complete.&lt;br /&gt;
&lt;br /&gt;
[https://video.codingfield.com/videos/watch/41cfcf5d-b0e6-4323-8056-b0a6682d1f25 See it in action!]&lt;br /&gt;
&lt;br /&gt;
== Update the bootloader ==&lt;br /&gt;
To update the bootloader, you want to flash [https://github.com/JF002/InfiniTime/releases/download/0.14.1/reloader-mcuboot.zip reloader-mcuboot.zip]. &lt;br /&gt;
Once the bootloader is updated, you should notice that the boot logo has changed. Previously, it was a green &amp;quot;PineTime&amp;quot; logo, and now it is a large pinecone that is progressively drawn in green.&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/fvHQ8ZeqnOo Video showing what the InfiniTime 1.0.0 bootloader looks like]&lt;br /&gt;
&lt;br /&gt;
=== Using Gadgetbridge ===&lt;br /&gt;
&lt;br /&gt;
Same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using NRFConnect ===&lt;br /&gt;
&lt;br /&gt;
Same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using Siglo ===&lt;br /&gt;
Same process as before, but select the &amp;quot;0.14.1&amp;quot; tag, and the file/asset for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using Amazfish ===&lt;br /&gt;
&lt;br /&gt;
You may need to re-pair with your device by selecting &amp;quot;InfiniTime&amp;quot; (since you've already upgraded to InfiniTime 1.0) in the device type list. Then follow the same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
== Install the recovery firmware ==&lt;br /&gt;
{{warning|1=Don't do this before updating the bootloader, otherwise your PineTime will freeze at the end of the process, and you will need to wait for the battery to go flat }} &lt;br /&gt;
&lt;br /&gt;
To install the recovery firmware, you want to flash [https://github.com/JF002/InfiniTime/releases/download/0.14.1/pinetime-mcuboot-recovery-loader-dfu-0.14.1.zip pinetime-mcuboot-recovery-loader-dfu-0.14.1.zip]. You will know when this is running when it shows an InfiniTime logo with a progress bar running across the bottom whilst it is installing the recovery firmware. &lt;br /&gt;
&lt;br /&gt;
=== Using Gadgetbridge ===&lt;br /&gt;
&lt;br /&gt;
Same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using NRFConnect ===&lt;br /&gt;
&lt;br /&gt;
Same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using Siglo ===&lt;br /&gt;
Same process as before, but with the file/asset for this step.&lt;br /&gt;
&lt;br /&gt;
=== Using Amazfish ===&lt;br /&gt;
&lt;br /&gt;
Same process as before, but with the file for this step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Guides and Videos =&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
Sometimes during the update process, the connection will drop, and the update will fail. Your PineTime isn't broken, most likely the Bluetooth link dropped for a moment, so just try again. Try rebooting your phone, if it keeps failing, try restarting the watch by holding the power button down for approximately 8 seconds. Try to '''avoid''' holding down the button with the screen off. Or try with another device, just in case there are compatibility issues. &lt;br /&gt;
&lt;br /&gt;
Version 1.0.0 of InfiniTime is merely the first version that was considered sufficiently feature-complete and stable enough for daily use. This isn't to say there aren't still bugs present ('cause there are!). So there are a few bugs still present in the update process and the bootloader. One unfortunate bug appears to be that sometimes when the watch tries to restart after an update, the bootloader locks up, and the watch won't turn on. In this case, you will need to wait until the watch battery goes flat, to force the watch to reset. This will most likely involve waiting for a week, and then when you put the watch on the charging cradle, it will power up and you should be right to try again.&lt;br /&gt;
&lt;br /&gt;
If you get stuck or have any questions, join us on your preferred [[Main_Page#Chat_Platforms|chat platform]] or the product [https://forum.pine64.org/forumdisplay.php?fid=134 forum]. There's usually someone available who can help, or will get back to you in a few hours.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineTime]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=U-Boot&amp;diff=10778</id>
		<title>U-Boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=U-Boot&amp;diff=10778"/>
		<updated>2021-06-19T06:31:42Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category, formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{hint|It is helpful to have a debugging serial cable for this.}}&lt;br /&gt;
&lt;br /&gt;
= Building uboot manually =&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
These instructions are written with a host Arch Linux desktop system in mind.&lt;br /&gt;
&lt;br /&gt;
This guide will be especially useful if you are looking to overclock the ram on your Pinephone following the information found [[Overclocking#DRAM|here]].&lt;br /&gt;
&lt;br /&gt;
You must have these packages installed: &amp;lt;code&amp;gt;dtc swig bc aarch64-linux-gnu-gcc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using a different system such as Ubuntu, there are plenty of cross compilation instructions available online with which you can grab the needed package names from, however you should be able to follow these instructions with these packages installed: &amp;lt;code&amp;gt;build-essentials bison flex swig gcc-aarch64-linux-gnu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compilation==&lt;br /&gt;
&lt;br /&gt;
{{hint| This guide is written with the Pinephone in mind. On other devices you will need to set a different platform variable and likely use a different uboot source with patches oriented towards your device.}}&lt;br /&gt;
&lt;br /&gt;
Note by default these instructions utilize all of your computers cores to compile thanks to the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$(nproc)&amp;lt;/code&amp;gt; parameters. If you wish to only use one core to compile, or change the number of cores used for example to only two cores, then you can either completely remove the &amp;lt;code&amp;gt;-j$(nproc)&amp;lt;/code&amp;gt; parameter from the make commands, or just take off &amp;lt;code&amp;gt;$(nproc)&amp;lt;/code&amp;gt; and add the number of threads you want used in it's place: &amp;lt;code&amp;gt;-j4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, You need to compile ATF (Arm Trusted Firmware):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 git clone https://github.com/crust-firmware/arm-trusted-firmware/&lt;br /&gt;
 cd arm-trusted-firmware&lt;br /&gt;
 export CROSS_COMPILE=aarch64-linux-gnu-&lt;br /&gt;
 export ARCH=arm64&lt;br /&gt;
 make PLAT=sun50i_a64 -j$(nproc) bl31&lt;br /&gt;
 cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After ATF is compiled clone u-boot and copy the bl31.bin file into the u-boot directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.com/pine64-org/u-boot.git&lt;br /&gt;
cd arm-trusted-firmware&lt;br /&gt;
cp build/sun50i_a64/release/bl31.bin ../u-boot/&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{hint| You cannot build [[crust]] if you do not have the or1k musl toolchain installed. This toolchain is not usually availible in distribution repositories and will have to be manually installed to the system. The following text will show a simple way to install the toolchain.}}&lt;br /&gt;
&lt;br /&gt;
Download the toolchain's archive: https://musl.cc/or1k-linux-musl-cross.tgz&lt;br /&gt;
&lt;br /&gt;
Extract the compressed archive: &amp;lt;code&amp;gt;tar zxvf or1k-linux-musl-cross.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Move the extracted archive to wherever you would like to install the toolchain to. In these instructions it will simply be installed to the users documents folder.&lt;br /&gt;
&lt;br /&gt;
The final step is to edit your &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; and add the following to the end:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Path for or1k toolchain&lt;br /&gt;
export PATH=&amp;quot;$PATH:/home/USER/Documents/or1k-linux-musl-cross/bin/&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you've completed that you can close out the terminal and reopen it and proceed to the following instructions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/crust-firmware/crust&lt;br /&gt;
cd crust&lt;br /&gt;
export CROSS_COMPILE=or1k-linux-musl-&lt;br /&gt;
make pinephone_defconfig&lt;br /&gt;
make -j$(nproc) scp&lt;br /&gt;
cp /build/scp/scp.bin ../u-boot/&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{hint| If you do not wish to have [[crust]] in your uboot build, then you can skip exporting SCP}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 cd u-boot/&lt;br /&gt;
 git checkout crust&lt;br /&gt;
 export CROSS_COMPILE=aarch64-linux-gnu-&lt;br /&gt;
 export BL31=bl31.bin&lt;br /&gt;
 export ARCH=arm64&lt;br /&gt;
 export SCP=scp.bin&lt;br /&gt;
 make distclean&lt;br /&gt;
 make pinephone_defconfig&lt;br /&gt;
 make all -j$(nproc)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Uboot installation ==&lt;br /&gt;
&lt;br /&gt;
Once successfully compiled you can proceed to flash the device&lt;br /&gt;
{{warning|1= Replace [CHANGE THIS] with the location of your SD card and make sure you are using the proper location. Failure to do so can result in data loss.}}&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/[CHANGE THIS] bs=1024 seek=8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
{{hint|If you are compiling uboot in order to overclock your DRAM you can check if it was successful by reading the values of /sys/kernel/debug/clk/clk_summary}}&lt;br /&gt;
&lt;br /&gt;
=Pboot multi-bootloader=&lt;br /&gt;
&lt;br /&gt;
One of the smallest and fastest pinephone bootloaders, it was developed by Ondrej Jirman with the ability of booting multiple distros on the pinephone in mind.&lt;br /&gt;
&lt;br /&gt;
More information can be found [https://xnux.eu/p-boot/ here]&lt;br /&gt;
&lt;br /&gt;
= External Links =&lt;br /&gt;
[https://linux-sunxi.org/Mainline_U-Boot Sunxi Uboot Wiki]&lt;br /&gt;
&lt;br /&gt;
[https://raw.githubusercontent.com/u-boot/u-boot/master/board/sunxi/README.sunxi64 Uboot build instructions]&lt;br /&gt;
&lt;br /&gt;
[https://musl.cc/or1k-linux-musl-cross.tgz or1k toolchain download]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]][[Category:Guide]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Category:Guide&amp;diff=10768</id>
		<title>Category:Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Category:Guide&amp;diff=10768"/>
		<updated>2021-06-19T05:14:30Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:ROCKPro64v21REAR.jpg&amp;diff=10766</id>
		<title>File:ROCKPro64v21REAR.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:ROCKPro64v21REAR.jpg&amp;diff=10766"/>
		<updated>2021-06-19T01:31:21Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi-res picture of v2.1 rear&lt;br /&gt;
&lt;br /&gt;
[[Category:ROCKPro64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:ROCKPro64v21FRONT.jpg&amp;diff=10765</id>
		<title>File:ROCKPro64v21FRONT.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:ROCKPro64v21FRONT.jpg&amp;diff=10765"/>
		<updated>2021-06-19T01:31:08Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi-res top view of v2.1&lt;br /&gt;
&lt;br /&gt;
[[Category:ROCKPro64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:ROCKPro64_annotated.jpg&amp;diff=10764</id>
		<title>File:ROCKPro64 annotated.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:ROCKPro64_annotated.jpg&amp;diff=10764"/>
		<updated>2021-06-19T01:30:50Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the 3rd version of the annotated RockPro64 photo. I added it here as the updates of the old version don't appear but the old version is still shown instead.&lt;br /&gt;
&lt;br /&gt;
[[Category:ROCKPro64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:NASCaseMain.png&amp;diff=10763</id>
		<title>File:NASCaseMain.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:NASCaseMain.png&amp;diff=10763"/>
		<updated>2021-06-19T01:30:19Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ROCKPro64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-front-plate-removal.jpg&amp;diff=10762</id>
		<title>File:PinPower-Desktop-front-plate-removal.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-front-plate-removal.jpg&amp;diff=10762"/>
		<updated>2021-06-19T01:19:51Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-Display-front.jpg&amp;diff=10761</id>
		<title>File:PinPower-Desktop-Display-front.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-Display-front.jpg&amp;diff=10761"/>
		<updated>2021-06-19T01:19:38Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-Display-back.jpg&amp;diff=10760</id>
		<title>File:PinPower-Desktop-Display-back.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-Display-back.jpg&amp;diff=10760"/>
		<updated>2021-06-19T01:19:17Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-PCB-top.jpg&amp;diff=10759</id>
		<title>File:PinPower-Desktop-PCB-top.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-PCB-top.jpg&amp;diff=10759"/>
		<updated>2021-06-19T01:19:04Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: Category:PinePower&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-PCB-bottom.jpg&amp;diff=10758</id>
		<title>File:PinPower-Desktop-PCB-bottom.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-PCB-bottom.jpg&amp;diff=10758"/>
		<updated>2021-06-19T01:18:50Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-wireless-charger.jpg&amp;diff=10757</id>
		<title>File:PinPower-Desktop-wireless-charger.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinPower-Desktop-wireless-charger.jpg&amp;diff=10757"/>
		<updated>2021-06-19T01:18:38Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinePower-Desktop-2.jpg&amp;diff=10756</id>
		<title>File:PinePower-Desktop-2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinePower-Desktop-2.jpg&amp;diff=10756"/>
		<updated>2021-06-19T01:18:26Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinePower_Charger_65W.jpeg&amp;diff=10755</id>
		<title>File:PinePower Charger 65W.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinePower_Charger_65W.jpeg&amp;diff=10755"/>
		<updated>2021-06-19T01:18:07Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Category:PinePower&amp;diff=10754</id>
		<title>Category:PinePower</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Category:PinePower&amp;diff=10754"/>
		<updated>2021-06-19T01:17:42Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePower&amp;diff=10753</id>
		<title>PinePower</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePower&amp;diff=10753"/>
		<updated>2021-06-19T01:17:06Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|1=PAGE UNDER CONSTRUCTION, INFO SUBJECT TO CHANGE}}&lt;br /&gt;
&lt;br /&gt;
== PinePower 65W GaN Charger ==&lt;br /&gt;
[[File:PinePower_Charger_65W.jpeg|400px|thumb|right|PinePower 65W render]]&lt;br /&gt;
A small and compact palm size 65W wall socket power adapter. It features 2 USB-C ports and 1 USB-A port charger. [https://en.wikipedia.org/wiki/Gallium_nitride Gallium Nitride] technology ensures a small and light charger with high charging efficiency. It has a retractable US plug.&lt;br /&gt;
===General specifications===&lt;br /&gt;
Body&lt;br /&gt;
*Dimensions: 74.8mm x 36.6mm x 32mm&lt;br /&gt;
*Weight: 130 grams&lt;br /&gt;
*Build: Plastic&lt;br /&gt;
*Color: Black&lt;br /&gt;
&lt;br /&gt;
Power&lt;br /&gt;
*Input:  AC 100-240V 50/60Hz 1.5A Max&lt;br /&gt;
*Output: 65W&lt;br /&gt;
*Power switch&lt;br /&gt;
&lt;br /&gt;
Connections&lt;br /&gt;
* 240Vac input US plug, adapters for AU, EU, and UK,&lt;br /&gt;
* 1x USB-A&lt;br /&gt;
* 2x USB-C&lt;br /&gt;
&lt;br /&gt;
=== Power specifications ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Output&lt;br /&gt;
! Max output power&lt;br /&gt;
! Power ranges PD&lt;br /&gt;
! Power ranges QC&lt;br /&gt;
! Power ranges PPS&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Single USB-C1 or C2&lt;br /&gt;
| 65W&lt;br /&gt;
| 5V3A, 9V3A, 12V3A, 15V3A, 20V3.5A&lt;br /&gt;
| -&lt;br /&gt;
| 3.3-11V5A&lt;br /&gt;
|-&lt;br /&gt;
| Single USB-A&lt;br /&gt;
| 65W&lt;br /&gt;
| -&lt;br /&gt;
| QC3.0 4.5V5A, 5V4.5A, 9V3A, 12V3A, 20V3A&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|USB-C1 &amp;amp; &lt;br /&gt;
USB-C2 combined&lt;br /&gt;
| &lt;br /&gt;
*45W&lt;br /&gt;
*18W&lt;br /&gt;
| &lt;br /&gt;
*5V3A, 9V3A, 12V3A, 15V3A&lt;br /&gt;
*5V3A, 9V2A, 12V1.5A&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| USB-C1 &amp;amp;&lt;br /&gt;
USB-A combined&lt;br /&gt;
| &lt;br /&gt;
*45W&lt;br /&gt;
*18W&lt;br /&gt;
|&lt;br /&gt;
*5V3A, 9V3A, 12V3A, 15V3A&lt;br /&gt;
*-&lt;br /&gt;
|&lt;br /&gt;
*-&lt;br /&gt;
*5V3A, 9V2A, 12V1.5A&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|USB-C1 &amp;amp;&lt;br /&gt;
USB-C2 + USB-A combined&lt;br /&gt;
|&lt;br /&gt;
*45W&lt;br /&gt;
*15W&lt;br /&gt;
|&lt;br /&gt;
*5V3A, 9V3A, 12V3A, 15V3A&lt;br /&gt;
*5V3A&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Internals===&lt;br /&gt;
''TBA''&lt;br /&gt;
&lt;br /&gt;
== PinePower 120W Desktop Power Supply ==&lt;br /&gt;
[[File:PinePower-Desktop-2.jpg|400px|thumb|right|PinePower Desktop 120W render]]&lt;br /&gt;
A 120W desktop power adapter. It features 1 USB-C port and 4 USB-A port. The 120W output is not per port, but total output power. This is calculated by combining the 65W USB-C, 3x15W USB-A and the 18W USB-A QC, making a total of 128W. The only difference between the US and EU edition is the supplied power cable. Every port, with exception of the wireless Q-charger, has a display, portraying the output voltage and amps. The display back light can be turned on and off by capacitive touch button, located on the top left side of the unit.&lt;br /&gt;
===General specifications===&lt;br /&gt;
Body&lt;br /&gt;
*Dimensions: 123mm x 115mm x 48mm&lt;br /&gt;
*Weight: 543 grams&lt;br /&gt;
*Build: Plastic&lt;br /&gt;
*Color: Black&lt;br /&gt;
&lt;br /&gt;
Display&lt;br /&gt;
*Individual port voltage status display&lt;br /&gt;
*Individual port current status display&lt;br /&gt;
*Display turn off switch&lt;br /&gt;
&lt;br /&gt;
Power&lt;br /&gt;
*Input:  AC 100-240V 50/60Hz ?A Max&lt;br /&gt;
*Output: 120W&lt;br /&gt;
*Power switch&lt;br /&gt;
&lt;br /&gt;
Connections&lt;br /&gt;
* 240Vac input either US or EU plug is supplied&lt;br /&gt;
* 4x USB-A&lt;br /&gt;
* 1x USB-C&lt;br /&gt;
&lt;br /&gt;
=== Power specifications ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Output&lt;br /&gt;
! Protocol&lt;br /&gt;
! Version&lt;br /&gt;
! Max output power&lt;br /&gt;
! Power ranges&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| USB-C&lt;br /&gt;
| [https://en.wikipedia.org/wiki/USB_hardware#USB_Power_Delivery_(USB_PD) PD]&lt;br /&gt;
| ?&lt;br /&gt;
| 65W&lt;br /&gt;
| 5V3A, 9V3A, 12V3A, 15V3A, 20V3.25A&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| USB-A&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Quick_Charge QC]&lt;br /&gt;
| 3.1&lt;br /&gt;
| 18W&lt;br /&gt;
| 5V3A, 9V2A, 12V1.5A&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| USB-A&lt;br /&gt;
| USB&lt;br /&gt;
| ?&lt;br /&gt;
| 15W&lt;br /&gt;
| 5V3A&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Wireless charger&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Qi_(standard) Qi]&lt;br /&gt;
| 1.2&lt;br /&gt;
| 10W&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Internals===&lt;br /&gt;
&lt;br /&gt;
The power unit is not made to be disassembled, do so at your own risk. The front plate is secured with 4 tabs, that can be disengaged with a screwdriver. The complete assembly can be slid out, but do mind the same tab in the casing. The power button at the back of the case has a plug that can be disconnected from the main PCB. The wireless charging PCB has to be de-soldered, or forcefully removed from the inner casing, as it is glued to the top of the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; heights=&amp;quot;180&amp;quot;&amp;gt;&lt;br /&gt;
File:PinPower-Desktop-front-plate-removal.jpg | (Removal of the front plate)&lt;br /&gt;
File:PinPower-Desktop-Display-front.jpg       | (Front view display PCB)&lt;br /&gt;
File:PinPower-Desktop-Display-back.jpg        | (Back side display PCB)&lt;br /&gt;
File:PinPower-Desktop-PCB-top.jpg             | (Top side main PCB)&lt;br /&gt;
File:PinPower-Desktop-PCB-bottom.jpg          | (Bottom view main PCB)&lt;br /&gt;
File:PinPower-Desktop-wireless-charger.jpg    | (Wireless charger)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some remarks:&lt;br /&gt;
*This main PCB is marked as XR SEMI v1.1&lt;br /&gt;
*Two unmarked packages, control the display. &lt;br /&gt;
*An antenna is connected on the display PCB, lining up with the 'lamp' symbol. This is the capacitive touch button to control the display back light.&lt;br /&gt;
*The 65W PD USB-C port is controlled by a [http://www.hynetek.com/product/pdController/HUSB339/document/HUSB339_DS_EN_V1.2.pdf HUSB339] controller, paired with a GOFORD G16 MOSFET.&lt;br /&gt;
*The other ports have a [http://www.lshchip.com/pdf/Deep-pool/NDP1360KC_EN_Rev1.1.pdf NDP1360KC] as final power converter.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://www.pine64.org/2020/12/15/december-update-the-longest-one-yet/ Pine blog, containing news about the PinePower products]&lt;br /&gt;
*[https://pine64.com/product/pinepower-65w-gan-2c1a-charger-with-international-plugs/ PinePower 65W on the official Pine store]&lt;br /&gt;
*[https://pine64.com/product/pinepower-120w-desktop-power-supply-eu-version/ 120W EU version on the official Pine store]&lt;br /&gt;
*[https://pine64.com/product/pinepower-120w-desktop-power-supply-us-version/ PinePower 120W EU version on the official Pine store]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePower]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinecilTipSets.jpg&amp;diff=10752</id>
		<title>File:PinecilTipSets.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinecilTipSets.jpg&amp;diff=10752"/>
		<updated>2021-06-19T01:08:16Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil_Exploded_Diagram_ver_0.9.png&amp;diff=10751</id>
		<title>File:Pinecil Exploded Diagram ver 0.9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil_Exploded_Diagram_ver_0.9.png&amp;diff=10751"/>
		<updated>2021-06-19T01:07:41Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:PinecilPrototype.jpg&amp;diff=10750</id>
		<title>File:PinecilPrototype.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:PinecilPrototype.jpg&amp;diff=10750"/>
		<updated>2021-06-19T01:07:20Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil-bb2-01.jpg&amp;diff=10749</id>
		<title>File:Pinecil-bb2-01.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil-bb2-01.jpg&amp;diff=10749"/>
		<updated>2021-06-19T01:06:45Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil-Case-Red-1.jpg&amp;diff=10748</id>
		<title>File:Pinecil-Case-Red-1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil-Case-Red-1.jpg&amp;diff=10748"/>
		<updated>2021-06-19T01:06:27Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Red Pinecil Casing from Pine64 store&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{subst:Unknown_copyright}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil-bb2-01_rotate.jpg&amp;diff=10747</id>
		<title>File:Pinecil-bb2-01 rotate.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil-bb2-01_rotate.jpg&amp;diff=10747"/>
		<updated>2021-06-19T01:05:56Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Pinecil in package, rotated&lt;br /&gt;
&lt;br /&gt;
[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil_breakout_bottom.jpg&amp;diff=10746</id>
		<title>File:Pinecil breakout bottom.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil_breakout_bottom.jpg&amp;diff=10746"/>
		<updated>2021-06-19T01:05:30Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Bottom view of Pinecil breakout board&lt;br /&gt;
&lt;br /&gt;
[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil_breakout_top.jpg&amp;diff=10745</id>
		<title>File:Pinecil breakout top.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil_breakout_top.jpg&amp;diff=10745"/>
		<updated>2021-06-19T01:04:39Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Top view of Pinecil breakout board&lt;br /&gt;
&lt;br /&gt;
[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Pinecil-breakout-board-02.jpg&amp;diff=10744</id>
		<title>File:Pinecil-breakout-board-02.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Pinecil-breakout-board-02.jpg&amp;diff=10744"/>
		<updated>2021-06-19T01:04:05Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Pinecil]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:RK3566_icon.png&amp;diff=10734</id>
		<title>File:RK3566 icon.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:RK3566_icon.png&amp;diff=10734"/>
		<updated>2021-06-17T21:42:45Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Rk35-blobs.tar.gz&amp;diff=10733</id>
		<title>File:Rk35-blobs.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Rk35-blobs.tar.gz&amp;diff=10733"/>
		<updated>2021-06-17T21:41:26Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: categories, linkfix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
The directory rk/rkbin/bin/rk35 extracted from the [[Quartz64#Android SDK]] hosted at https://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz, uploaded, so that devs that only want a booting system without all the Android stuff can avoid downloading the 80GB SDK blob.&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Category:Rockchip_RK3566&amp;diff=10732</id>
		<title>Category:Rockchip RK3566</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Category:Rockchip_RK3566&amp;diff=10732"/>
		<updated>2021-06-17T21:38:34Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=10731</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=10731"/>
		<updated>2021-06-17T21:37:46Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the current status of software support for the [[Quartz64]] single-board computer, and provides links to resources to help prospective contributors get started. Information is kept current on a best-effort basis as various patches get accepted into the kernel.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Upstreaming Status ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable plainrowheaders&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Function&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Component&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Upstream Mesa&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Linux Staging&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Not in ffmpeg&amp;lt;sup&amp;gt;[https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=2898]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro-vpu&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Speculative status on this also being hantro, can't find rk35* in drivers/staging/media/&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting&lt;br /&gt;
| &amp;lt;code&amp;gt;snd-soc-rockchip-i2s?&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-devicetree/20210601140145.GH543307@dell/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | u-boot&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Waiting on ATF sources&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|Early rk3568 dts in review&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot;| Gigabit Ethernet&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210421203409.40717-4-ezequiel@collabora.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/netdev/net-next/c/48e8c6f1612b]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | IOMMU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=488139]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GPIO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=489333]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | pinctrl&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal Regulation&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210421200445.32977-1-ezequiel@collabora.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PCIe&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210506023448.169146-1-xxm@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Management&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=for-next&amp;amp;id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Voltage Control&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20210527082453.1447484-3-jay.xu@rock-chips.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs a driver&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
The following sections give an overview over the current status of different parts of the board. Some parts are waiting on a driver to be written or ported, others only need various adjustments.&lt;br /&gt;
&lt;br /&gt;
General performance is poor, this is likely due to the [https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture AHB bus] running slow, and may require some major rework of the clock layout to get to acceptable speeds.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
* eMMC&lt;br /&gt;
* SDMMC0 (SD cards)&lt;br /&gt;
* GMAC (Gigabit Ethernet)&lt;br /&gt;
* USB 2.0&lt;br /&gt;
* SATA 2&lt;br /&gt;
* SATA 3&lt;br /&gt;
* UART&lt;br /&gt;
** UART 0 (Pi-bus)&lt;br /&gt;
** UART 1 (Bluetooth)&lt;br /&gt;
** UART 2 (Pi-bus, debug)&lt;br /&gt;
* Video Decode&lt;br /&gt;
** VP8&lt;br /&gt;
&lt;br /&gt;
=== Partially Working ===&lt;br /&gt;
&lt;br /&gt;
* PCI-Express Controller &amp;amp;mdash; everything but devices that need cache coherency (e.g. dGPUs) should work&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; at 2.0 speeds only, appears to be due to a PHY configuration issue&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works but is not yet exposed to the Pi-bus&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* Nothing!&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* GPU &amp;amp;mdash; Need a VOP-v2 DRM driver to get display output&lt;br /&gt;
* Battery&lt;br /&gt;
* Audio &amp;amp;mdash; Needs I2S driver&lt;br /&gt;
* E-Paper&lt;br /&gt;
* SPI &amp;amp;mdash; Needs a driver&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* BSP based development effort for SPL/U-Boot and Linux&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp&lt;br /&gt;
* Image CI pipeline aimed at developers&lt;br /&gt;
** https://gitlab.com/pgwipeout/quartz64_ci/&lt;br /&gt;
* Rockchip U-Boot&lt;br /&gt;
** https://github.com/rockchip-linux/u-boot&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Rockchip-SoC Patchwork Page&lt;br /&gt;
** https://patchwork.kernel.org/project/linux-rockchip/list/&lt;br /&gt;
* Rockchip Kernel Mailing List Archive&lt;br /&gt;
** https://lore.kernel.org/linux-rockchip/&lt;br /&gt;
&lt;br /&gt;
== Board/SoC Documentation ==&lt;br /&gt;
=== Booting ===&lt;br /&gt;
==== Boot Order ====&lt;br /&gt;
The RK3566 boot ROM will search for a valid ID BLOCK in the following order on the support boot media:&lt;br /&gt;
&lt;br /&gt;
* SPI NOR flash&lt;br /&gt;
* SPI NAND flash&lt;br /&gt;
* eMMC&lt;br /&gt;
* SD-Card&lt;br /&gt;
&lt;br /&gt;
... if this fails, the boot ROM will initialize the USB0 port and wait for a connection from the Rockchip&lt;br /&gt;
flash/boot tools.&lt;br /&gt;
&lt;br /&gt;
==== Bootloader Flashing ====&lt;br /&gt;
&lt;br /&gt;
As per pgwipeout's [https://gitlab.com/pine64-org/quartz-bsp/u-boot/-/commit/12d102b86813378af08b086f3b9c13ed8010754c commit message]:&lt;br /&gt;
* Make a partition named &amp;lt;code&amp;gt;uboot&amp;lt;/code&amp;gt; as partition number 1 at 8 MiB to 16 MiB&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=idblock.bin of=/dev/''&amp;lt;mmc/sd&amp;gt;'' seek=64&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dd if=uboot.img of=/dev/''&amp;lt;mmc/sd&amp;gt;''1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== BSP Image Layout ====&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]][[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Category:Quartz64&amp;diff=10730</id>
		<title>Category:Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Category:Quartz64&amp;diff=10730"/>
		<updated>2021-06-17T21:27:21Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PinePhone_Software_Releases&amp;diff=10714</id>
		<title>PinePhone Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PinePhone_Software_Releases&amp;diff=10714"/>
		<updated>2021-06-13T19:40:58Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: borrow logos nix and nemo from another page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of all available releases for the [[PinePhone]] as well as links to other resources.&lt;br /&gt;
&lt;br /&gt;
See [[PinePhone Installation Instructions]] on how to install the operating systems. However, if your phone came preloaded with software, Please see [[PinePhone Updating Instructions]]&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Some releases may not have a good setup for the backlight at low brightness. If configured too low the backlight shuts down completely, but the screen is still displayed and usable in bright front-light.}}&lt;br /&gt;
&lt;br /&gt;
= Software Releases =&lt;br /&gt;
&lt;br /&gt;
This is a list of OSes that specifically support the PinePhone, but as support is included in Mainline Linux, in principle any ARM Linux OS can be used, if possible required patches are included.&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ARM ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Archlinux-logo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Unofficial) Arch Linux ARM with choice of Phosh UI or barebones, currently being maintained by the [https://danctnix.org/ DanctNIX] community (GitHub [https://github.com/DanctNIX/danctnix 1] [https://github.com/dreemurrs-embedded 2]).&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: https://github.com/dreemurrs-embedded/Pine64-Arch/releases&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
alarm/123456&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
Most of the things now works, there are some minor issues with [[crust]].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
Feel free to send us [https://github.com/dreemurrs-embedded/Pine64-Arch/pulls pull requests] and report [https://github.com/dreemurrs-embedded/Pine64-Arch/issues issues] on [https://github.com/dreemurrs-embedded/Pine64-Arch GitHub].&lt;br /&gt;
&lt;br /&gt;
== ExpidusOS ==&lt;br /&gt;
&lt;br /&gt;
A fork of Void Linux with a custom fork of XFCE as the default desktop environment, developed by [https://midstall.com/ Midstall Software].&lt;br /&gt;
&lt;br /&gt;
* [https://expidusos.com ExpidusOS official website]&lt;br /&gt;
* [https://wiki.expidusos.com/index.php/Main_Page ExpidusOS Wiki]&lt;br /&gt;
* [https://discord.gg/GVfBF2w Midstall Software Discord server]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Check the [https://expidusos.com/download download page] for that latest version, or the [https://build.expidusos.com/ image file list] for all versions, look for the file name that starts with &amp;quot;pinephone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
expidus/expidus&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
The ExpidusOS Wiki has a page detailing [https://wiki.expidusos.com/index.php/Device:PinePhone supported features].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
GitHub: https://github.com/ExpidusOS&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Fedora-logo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An (unofficial) vanilla Fedora rawhide build for aarch64 with megi's kernel and [https://copr.fedorainfracloud.org/coprs/njha/mobile/packages/ some additional packages] to tie it all together. It aims to eventually be an upstream part of the Fedora project, rather than a phone-specific distribution.&lt;br /&gt;
&lt;br /&gt;
See [https://forum.pine64.org/showthread.php?tid=9347 this thread in the forum].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nikhiljha/pp-fedora-sdsetup/releases/ flashable images] or [https://github.com/nikhiljha/pp-fedora-sdsetup/ build scripts]&lt;br /&gt;
&lt;br /&gt;
There is also an FTP server with full a full Fedora 34 workstation build with phosh: ftp://pine.warpspeed.dk/nightly/pinephone/ (Mount this with something like Nautilus)&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
pine/123456&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
WiFi, Bluetooth, SMS, Data, Calls all work!&lt;br /&gt;
&lt;br /&gt;
There are still a few bugs though, and [https://xnux.eu/devices/pine64-pinephone.html#toc-feature-driver-support-matrix some features don't have driver support yet] on any PinePhone distribution. &lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
Please send your bug reports to [https://github.com/nikhiljha/pp-fedora-sdsetup/issues the project's issue tracker]. Be sure to include logs if applicable! Send us merge requests on [https://github.com/nikhiljha/pp-fedora-sdsetup/ Github].&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:GentooLogo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are unofficial Gentoo overlays with ebuilds for the PinePhone. There are no images - you'll be building it yourself, picking which kernel, bootloader and desktop environment you want to use.&lt;br /&gt;
You will be using the [https://wiki.gentoo.org/wiki/Project:ARM64 arm64] version of Gentoo. &lt;br /&gt;
&lt;br /&gt;
'''Documentation'''&lt;br /&gt;
&lt;br /&gt;
https://stealthgun.tweakblogs.net/blog/19336/gentoo-on-a-pinephone&lt;br /&gt;
&lt;br /&gt;
https://wiki.gentoo.org/wiki/User:Dr41nU/PinePhone&lt;br /&gt;
&lt;br /&gt;
https://wiki.gentoo.org/wiki/PinePhone (incomplete)&lt;br /&gt;
&lt;br /&gt;
'''Overlay locations'''&lt;br /&gt;
&lt;br /&gt;
https://gitlab.com/bingch/gentoo-overlay/&lt;br /&gt;
&lt;br /&gt;
https://github.com/stealthgun/gjdwebserver-overlay/&lt;br /&gt;
&lt;br /&gt;
== GloDroid ==&lt;br /&gt;
&lt;br /&gt;
{{warning|Available images are outdated and do not reflect the state of the current developments.}}&lt;br /&gt;
&lt;br /&gt;
A fully open source port of Android to the PinePhone&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
https://github.com/GloDroid/glodroid_manifest/releases&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
Works: WiFi, screen dimming, touchscreen and charging work.&lt;br /&gt;
Don't work: Bluetooth, Telephony, GPS&lt;br /&gt;
&lt;br /&gt;
== LuneOS ==&lt;br /&gt;
&lt;br /&gt;
LuneOS is a open source mobile operating system based on [https://www.webosose.org/ webOS Open Source Edition]([https://github.com/webosose GitHub], previously known as [https://github.com/openwebos Open webOS]) by LG, comes with [https://webos-ports.org/wiki/Luna_Next Luna Next] UI, currently developed by [https://www.webos-ports.org/wiki/Main_Page WebOS Ports] community.&lt;br /&gt;
&lt;br /&gt;
* [https://webos-ports.org/wiki/Pinephone_Info WebOS-Ports Pinephone Wiki page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[http://build.webos-ports.org/luneos-testing/images/pinephone/ LuneOS test image for PinePhone]&lt;br /&gt;
&lt;br /&gt;
Tofe recommends using bmaptool, which is way faster than dd, and can decompress images on-the-fly.&lt;br /&gt;
&lt;br /&gt;
Syntax is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bmaptool copy [from] [to]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;bmaptool copy http://build.webos-ports.org/luneos-testing/images/pinephone/luneos-dev-image-pinephone-testing-0-140.rootfs.wic.gz /dev/mmcblk0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.wic file can be treated as .img file when flashing. You may rename .wic file to .img when using GUI tools that require .img files.&lt;br /&gt;
&lt;br /&gt;
== Maemo Leste ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Maemoleste-logo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Maemo Maemo] is a trimmed-down version of Debian for mobile devices, originally a collaboration between Nokia and many open source projects (the [http://maemo.org/intro/ Maemo community]) before Nokia abandoned it. The community now takes full responsibility in developing fully open source Maemo for a variety of mobile devices. &lt;br /&gt;
&lt;br /&gt;
The new version Maemo 7 &amp;quot;Leste&amp;quot; is an ARM64 port of [https://devuan.org/ Devuan] (Debian without systemd) and runs the mainline Linux kernel. The default user interface stack is [https://en.wikipedia.org/wiki/Hildon Hildon], [https://en.wikipedia.org/wiki/X.Org_Server Xorg], [https://en.wikipedia.org/wiki/Matchbox_(window_manager) Matchbox WM], and [https://en.wikipedia.org/wiki/GTK GTK]. The current version is Devuan Ascii (Debian Stretch) and they are working on an upgrade to Devuan Beowulf (Debian Buster) as well as simultaneous support for both Devuan and Debian. In addition to the main repository, they [https://maemo-leste.github.io/maemo-leste-repositories-and-community-packages.html announced] a [https://github.com/maemo-leste-extras/bugtracker community repository]. To keep updated they use automation in their package maintenance with [https://github.com/maemo-leste/jenkins-integration jenkins] (similar to [https://www.debian.org/devel/buildd/ debian's buildd]). Porting packages to Maemo Leste is basically a simple matter of porting to arm64 version of Debian/Devuan, which benefits both projects.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on [https://leste.maemo.org/Main_Page the Maemo Leste wiki], or follow [https://maemo-leste.github.io/ announcements on their website], and check out [https://leste.maemo.org/Leste_FAQ Frequently Asked Questions]. &lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[http://maedevu.maemo.org/images/pinephone/ Maemo Leste test builds]. There is also an [https://github.com/maemo-leste/image-builder image builder], see their wiki for instructions on how to [https://leste.maemo.org/Image_Builder build a custom image].&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
root/toor&lt;br /&gt;
&lt;br /&gt;
You may use &amp;quot;sudo&amp;quot; directly.&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
For current status and workarounds please read their [https://leste.maemo.org/PinePhone PinePhone wiki page], and update as necessary (make sure to notify them of new issues by leaving a report on the project's  Github page, see below).&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
Most discussion occurs at &amp;lt;i&amp;gt;#maemo-leste&amp;lt;/i&amp;gt; on &amp;lt;i&amp;gt;irc.libera.chat&amp;lt;/i&amp;gt;. The Maemo website also has an [https://talk.maemo.org/showthread.php?p=1565822 ongoing forum thread] for feedback.&lt;br /&gt;
&lt;br /&gt;
All other contact information is listed on the [https://leste.maemo.org/Main_Page main page] of the Maemo wiki. You should [https://github.com/maemo-leste/bugtracker/issues submit bug reports] on github. To track known issues, you may use these search terms: [https://github.com/maemo-leste/bugtracker/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aissue+is%3Aopen+pinephone pinephone], [https://github.com/maemo-leste/bugtracker/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aissue+is%3Aopen+pine64 pine64]. Learn about [https://leste.maemo.org/Development development], [https://leste.maemo.org/Development/Porting_Packages porting packages], [https://leste.maemo.org/Development/Building_Packages building packages], [https://leste.maemo.org/Development/Tasks todo list], and general info on [https://wiki.debian.org/HowToPackageForDebian how to package for Debian]. Some tasks have funding available.&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Manjaro-logo.svg|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manjaro is a user-friendly Linux distribution based on the independently developed Arch operating system with the Plasma Mobile desktop environment.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
*Phosh: [https://github.com/manjaro-pinephone/phosh Stable] / [https://github.com/manjaro-pinephone/phosh-dev Dev]&lt;br /&gt;
*Plasma Mobile: [https://github.com/manjaro-pinephone/plasma-mobile Stable] / [https://github.com/manjaro-pinephone/plasma-mobile-dev Dev]&lt;br /&gt;
*Lomiri: [https://github.com/manjaro-pinephone/lomiri-dev Dev]&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
manjaro/123456&lt;br /&gt;
&lt;br /&gt;
root/root&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: The Phosh image the boot will load at a TTY login prompt for multiple minutes at the first boot.}}&lt;br /&gt;
&lt;br /&gt;
See Manjaro's release announcements on their forum.&lt;br /&gt;
&lt;br /&gt;
Recent ones: [https://forum.manjaro.org/t/manjaro-arm-beta8-with-phosh-pinephone/62260 Phosh], [https://forum.manjaro.org/t/manjaro-arm-beta4-with-plasma-mobile-pinephone/62363 Plasma] and [https://forum.manjaro.org/t/manjaro-arm-alpha3-with-lomiri-pinephone/49923 Lomiri].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
See the end of the [https://forum.manjaro.org/t/manjaro-arm-beta7-with-phosh-pinephone/58901 announcement].&lt;br /&gt;
&lt;br /&gt;
== Mobian ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Debian-logo.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An unofficial Debian build for ARM64 running with the Phosh user interface (developed by Purism, Phosh uses Wayland instead of Xorg). The base system is pure Debian, with only the GUI applications and a few others (ModemManager, WiFi chip firmware) being built from modified sources (as well as the kernel and u-boot). Current version is Debian Bullseye.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://images.mobian-project.org/pinephone/nightly/ Nightly] / [https://images.mobian-project.org/pinephone/installer/ Installer] / [https://images.mobian-project.org/pinephone/ Stable]&lt;br /&gt;
&lt;br /&gt;
Don't forget to extract the image before installing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ gzip -d Downloads/mobian-pinephone-*.img.gz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.mobian-project.org/doku.php?id=install project page] for specific installation instructions.&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
mobian/1234&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
See [https://gitlab.com/mobian1/mobian-recipes/-/blob/master/README.md the project's README file] or [https://wiki.mobian-project.org/doku.php?id=pinephone the wiki]for most up to date status.&lt;br /&gt;
&lt;br /&gt;
Check [https://gitlab.com/groups/mobian1/-/issues bug tracker] for known issues. Questions? Ask on our [https://forum.pine64.org/showthread.php?tid=9016 thread].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
It is recommended that you log your bug reports in [https://gitlab.com/mobian1/issues the project's issue tracker]. As a general rule, issues with third-party apps (even the default ones) should be reported upstream. A Mobian issue would be related to getting the hardware to work on the PinePhone, but if unsure where the issue should be reported just open a ticket or ask. Feel free to pick an open issue to work on, or send a merge request on [https://gitlab.com/mobian1 Gitlab].&lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
&lt;br /&gt;
See [[Mobian for PinePhone]] or [https://wiki.mobian-project.org/doku.php?id=start the wiki] for additional information regarding screen resolution, USB networking, WiFi hotspot, Chatty and the repository.&lt;br /&gt;
&lt;br /&gt;
== Multi-boot demo image ==&lt;br /&gt;
&lt;br /&gt;
{{Warning| This is an demo image for testing different OSes before installing a regular image. It is highly discouraged attempting to use the image productively. The kernel is shared across the different OSes and is not being updated.}}&lt;br /&gt;
&lt;br /&gt;
The purpose of this image is for users to easily try many of the above Linux distributions, without having to figure out how to flash them individually and juggle with many microSD cards.&lt;br /&gt;
&lt;br /&gt;
* More information can be found at: https://xnux.eu/p-boot-demo/&lt;br /&gt;
* Git repo: https://megous.com/git/pinephone-multi-boot/&lt;br /&gt;
* [https://forum.pine64.org/showthread.php?tid=11347 Discussion on the forum]&lt;br /&gt;
&lt;br /&gt;
== Nemo Mobile ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:nemo_mobile.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
Nemo Mobile is the open source build of Sailfish OS with a open source UI called [http://nemomobile.net/glacier-home/ Glacier] ([https://wiki.merproject.org/wiki/Nemo/Glacier Mer Wiki]), now [http://nemomobile.net/pages/Hello_manjaro/ based on Manjaro]. See their website [https://nemomobile.net/ Nemo Mobile UX team] and [https://wiki.merproject.org/wiki/Nemo Mer Wiki page].&lt;br /&gt;
&lt;br /&gt;
You can either install Nemo on any device that already runs Sailfish, or flash a prebuilt image to SD card/emmc on the PinePhone to install.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: See their website for the newest release and installation guides.}}&lt;br /&gt;
&lt;br /&gt;
Prebuilt images:&lt;br /&gt;
&lt;br /&gt;
First devel image for Manjaro (April 1, 2021):&lt;br /&gt;
&lt;br /&gt;
* Offical blog post: [https://nemomobile.net/pages/Hello_manjaro/ First devel image for manjaro]&lt;br /&gt;
* Image locations:&lt;br /&gt;
** devel: https://img.nemomobile.net/devel/&lt;br /&gt;
** ?: https://img.nemomobile.net/2021.05/&lt;br /&gt;
* Packages: https://img.nemomobile.net/manjaro/05.2020/stable/&lt;br /&gt;
&lt;br /&gt;
Nemo with Glacier UX v0.8 (April 27, 2020):&lt;br /&gt;
&lt;br /&gt;
* Offical blog post: [https://nemomobile.net/pages/Nemo_For_pinephone/ Nemo for PinePhone v0.8]&lt;br /&gt;
* rootfs image: https://yadi.sk/d/VAbtKV-Hnql60g&lt;br /&gt;
* 2GB sdcard image: https://yadi.sk/d/8oSZp-frGidscw&lt;br /&gt;
&lt;br /&gt;
Install Nemo on Sailfish:&lt;br /&gt;
&lt;br /&gt;
Install Sailfish on your PP first (follow instructions on the [[PinePhone_Software_Releases#Sailfish_OS|Sailfish]] section on this page).&lt;br /&gt;
&lt;br /&gt;
Enable developer mode. In the terminal, run as root (`devel-su`):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssu ar nemo-devel-ux http://repo.merproject.org/obs/home:/neochapay:/nemo-ux/sailfish_latest_armv7hl/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pkcon refresh &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then install the nemo-specific Glacier packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pkcon install lipstick-glacier-home-qt5 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If necessary, reboot.&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
For the newer devel image based on Manjaro, [https://twitter.com/neochapay/status/1374029467526500355 Wi-Fi and Bluetooth works].&lt;br /&gt;
&lt;br /&gt;
For the older Nemo with Glacier UX v0.8, voicecalls, sound and cameras do not work by default, see its blog post and GitHub repo readme.&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
For the Nemo Mobile UX itself:&lt;br /&gt;
* GitHub issues: https://github.com/nemomobile-ux/main/issues&lt;br /&gt;
&lt;br /&gt;
For hardware:&lt;br /&gt;
* GitHub issues: https://github.com/neochapay/nemo-device-dont_be_evil/issues&lt;br /&gt;
&lt;br /&gt;
== NixOS ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:nixos.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
NixOS support is handled through the Mobile NixOS project.&lt;br /&gt;
&lt;br /&gt;
* [https://mobile.nixos.org/ Project home page]&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/NixOS/mobile-nixos Source code repository]&lt;br /&gt;
&lt;br /&gt;
There is no pre-built complete image. For now users are expected to follow the instructions in the [https://mobile.nixos.org/getting-started.html Getting Started page], and on [https://mobile.nixos.org/devices/pine64-pinephone-braveheart.html the device's page].&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
This information may change, but currently it boots, it's as compatible as the Android-based devices are with Mobile NixOS. It even supports a bit more since it can use WiFi.&lt;br /&gt;
&lt;br /&gt;
Support for all of the hardware will be coming, this project is a breadth-first work, where the work spans multiple devices in parallel.&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
On [https://github.com/NixOS/mobile-nixos/issues the project's repository]. Please specify that you are using a PinePhone when reporting issues. Details about contributions and donations are on the [https://nixos.org/nixos/community.html NixOS website].&lt;br /&gt;
&lt;br /&gt;
== OpenMandriva Lx ==&lt;br /&gt;
{{Hint| Note: This image is solely for testing purposes.}}&lt;br /&gt;
&lt;br /&gt;
OpenMandriva Lx with Plasma Mobile as UI.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
The official image can be found [https://sourceforge.net/projects/openmandriva/files/release/4.2/RC/Pinephone/ here]. See [https://www.openmandriva.org/en/news/article/openmandriva-lx-4-2-rc-available-for-testing here] for the announcement.&lt;br /&gt;
&lt;br /&gt;
== openSUSE ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[Image:SLEM-OS-logo.png|100px|link=https://www.opensuse.org/]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our images use the same [https://en.opensuse.org/Portal:Tumbleweed openSUSE Tumbleweed] base as our desktop images, except what needs to be changed for the PinePhone. The images include &amp;lt;i&amp;gt;zypper&amp;lt;/i&amp;gt; (RPM) as the default package manager and have access to virtually the same (open source) software as our desktop repositories, thanks to the [https://en.opensuse.org/Portal:Factory Factory] ports. Using [https://en.opensuse.org/SDB:DNF dnf] is possible, if preferred.&lt;br /&gt;
&lt;br /&gt;
'''Download links'''&lt;br /&gt;
&lt;br /&gt;
* [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz Phosh] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz.sha256 SHA-256] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PHOSH-pinephone.aarch64.raw.xz.sha256.asc SHA-256 Signature]&lt;br /&gt;
* [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz Plasma Mobile] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz.sha256 SHA-256] / [https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images/openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz.sha256.asc SHA-256 Signature]&lt;br /&gt;
&lt;br /&gt;
To verify the images you need to import [https://build.opensuse.org/projects/devel:ARM:Factory:Contrib:PinePhone/public_key our GPG key]. Keep on mind that the first boot may stay on black screen for about a minute - consequent boots should be faster.&lt;br /&gt;
&lt;br /&gt;
You can find install instructions at [https://en.opensuse.org/HCL:PinePhone#Installing_openSUSE_in_a_Pinephone this section] in the openSUSE Wiki.&lt;br /&gt;
&lt;br /&gt;
'''Username/Password'''&lt;br /&gt;
&lt;br /&gt;
The login credentials are pine/1234 and root/linux. Change (or disable) the root password once you are set up.&lt;br /&gt;
&lt;br /&gt;
'''What works and what does not work'''&lt;br /&gt;
&lt;br /&gt;
You can find all information about the releases of the project [https://gitlab.com/slem.os/slem.os/-/blob/master/CHANGELOG.md here].&lt;br /&gt;
Detailed information, tips and troubleshooting suggestions are also provided at [https://en.opensuse.org/HCL:PinePhone the openSUSE Wiki].&lt;br /&gt;
You will also find information in our wiki on how to report issues (Contributing section).&lt;br /&gt;
&lt;br /&gt;
== postmarketOS ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:PostmarketOS-logo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postmarketOS extends [https://www.alpinelinux.org/ Alpine Linux] to run on smartphones and other mobile devices.&lt;br /&gt;
It offers various user interfaces (Phosh, Plasma Mobile, Sxmo, Plasma Desktop, Gnome 3, Kodi, XFCE4, ...).&lt;br /&gt;
&lt;br /&gt;
As of writing, official images are provided with Phosh, Plasma Mobile and Sxmo. The official images come in two flavors, either as demo image to try out postmarketOS, or with the installer.&lt;br /&gt;
&lt;br /&gt;
When using the installer images (recommended), it is possible to:&lt;br /&gt;
* encrypt your installation&lt;br /&gt;
* install from the SD card to eMMC&lt;br /&gt;
&lt;br /&gt;
Power users may also create their own image with the distribution's install and development tool &amp;lt;code&amp;gt;pmbootstrap&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Please read the detailed [https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Installation installation instructions] in the wiki.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
* [https://postmarketos.org/download/ Download page]&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Installation Flashing instructions]&lt;br /&gt;
&lt;br /&gt;
'''Username/password'''&lt;br /&gt;
&lt;br /&gt;
user/147147&lt;br /&gt;
&lt;br /&gt;
This is for demo images only - when using the installer images or building an image with pmbootstrap, you set your own username and password. The Phosh and Plasma Mobile lock screens require your password, but they only present a numeric keyboard, so you should use '''only''' numbers in your password.&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
See the [https://gitlab.com/postmarketOS/pmaports/-/issues?label_name%5B%5D=device-pine64-pinephone issue tracker].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/postmarketOS/pmaports/-/issues?label_name%5B%5D=device-pine64-pinephone postmarketOS issue tracker] for PinePhone support. See [https://wiki.postmarketos.org/wiki/Contributing postmarketOS wiki] for options to contribute.&lt;br /&gt;
&lt;br /&gt;
== PureOS ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Pureos.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|This project is no longer under development and has been abandoned.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|There is no prebuilt image, you'll need a Linux environment and build the image yourself.}}&lt;br /&gt;
&lt;br /&gt;
[https://www.pureos.net/ PureOS] is a user friendly, secure and freedom respecting GNU/Linux distribution based on Debian Buster and GNOME developed by the Purism community.&lt;br /&gt;
&lt;br /&gt;
* [https://tracker.pureos.net/w/ PureOS Wiki], no PinePhone page there&lt;br /&gt;
* Mobile-optimized apps list from the [https://tracker.pureos.net/w/pureos/mobile_optimized_apps/ Software Center in PureOS] and [https://tracker.pureos.net/w/pureos/3rd-party_mobile_optimized_apps/ 3rd party repos]&lt;br /&gt;
* [https://github.com/rufferson/pureos-pinephone current PinePhone PureOS repo], A script to convert Librem5 PureOS to PinePhone Pure-OS&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Use [https://raw.githubusercontent.com/rufferson/pureos-pinephone/master/build_image.sh the convert script] to download and build the image from u-boot, PinePhone linux kernel and Librem5 PureOS.&lt;br /&gt;
&lt;br /&gt;
Also see:&lt;br /&gt;
* [https://forums.puri.sm/t/successful-installation-of-pureos-on-pinephone/8741/12 Successful installation of PureOS on PinePhone - PureOS - Purism community]&lt;br /&gt;
* The PureOS section of [https://www.ruff.mobi/go/mobi/pine.html PinePhone page] on ruff.mobi&lt;br /&gt;
* An [https://gitlab.com/a-wai/debos-pinephone archived repo] for PureOS on PinePhone&lt;br /&gt;
* A [https://mozzwald.com/pp/ file list] with [https://mozzwald.com/pp/pureos-pinephone-build-instructions.txt pureos pinephone build instructions] on mozzwald.com&lt;br /&gt;
&lt;br /&gt;
== Sailfish OS ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Sailfish_logo.png|150px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sailfishos.org/ Sailfish OS] is a Linux-based operating system based on open source projects such as [https://wiki.merproject.org/wiki/Main_Page Mer], and a closed source UI based on [https://sailfishos.org/wiki/Lipstick Lipstick].&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.merproject.org/wiki/Adaptations/PinePhone64 PinePhone Wiki Page] on Mer Wiki, for both Nemo Mobile and Sailfish OS.&lt;br /&gt;
* [https://gitlab.com/pinephone-sailfish-os/linux-kernel/ Linux kernel config repo]&lt;br /&gt;
* [https://gitlab.com/sailfishos-porters-ci/dont_be_evil-ci/ Sailfish OS repo]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
'''Flashing script'''&lt;br /&gt;
&lt;br /&gt;
The Sailfish OS image is built on Gitlab CI. The latest image can be installed using the [https://raw.githubusercontent.com/sailfish-on-dontbeevil/flash-it/master/flash-it.sh flashing script].&lt;br /&gt;
&lt;br /&gt;
The script downloads the image and bootloader from the CI, extracts everything and burns it onto the SD card. Note: The script will format and erase the SD card!&lt;br /&gt;
&lt;br /&gt;
Instructions:&lt;br /&gt;
# Download the flashing script&lt;br /&gt;
# Insert a microSD card in your device&lt;br /&gt;
# Make the script executable: &amp;lt;code&amp;gt;chmod +x flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Verify that you have the &amp;lt;code&amp;gt;bsdtar&amp;lt;/code&amp;gt; package installed&lt;br /&gt;
# Execute it: &amp;lt;code&amp;gt;./flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Follow the instructions. Some commands in the script require root permissions (for example: mounting and flashing the SD card).&lt;br /&gt;
&lt;br /&gt;
* When asked where to flash, type 'raw' and it will build the image on your computer. Otherwise define the path /dev/....  to flash to card or internal emmc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
Set PIN on initialization.&lt;br /&gt;
&lt;br /&gt;
* Sometimes the first run stalls before the tutorial. Reboot and it will start from setting the security pin.&lt;br /&gt;
* The homescreen may be locked unless you boot with a sim card inserted. An old expired sim will do. '''If you do not have a SIM card on hands, do NOT set a security code on first boot.'''&lt;br /&gt;
* When a screen with a loading circle is displayed, just left/right swipe it away.&lt;br /&gt;
* If you're not familiar with Sailfish OS, pay attention to the tutorial - the interface works great, but is not immediately obvious. If you are familiar with it, you can skip the tutorial by touching all 4 corners starting top left.&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.merproject.org/wiki/Adaptations/PinePhone64#Hardware_Support Hardware Support section] on the Mer Wiki's PinePhone Page.&lt;br /&gt;
&lt;br /&gt;
There is a limited selection of apps available from the Jolla store, the vast majority are hosted on openrepos.net. If the Storeman app for openrepos is not preinstalled, download the RPM and click to install.&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
See the [https://wiki.merproject.org/wiki/Adaptations/PinePhone64#Installation Installation section] on the Mer Wiki's PinePhone Page for compile, build and development.&lt;br /&gt;
&lt;br /&gt;
Git repo links are at the top of this OS section. other repos that may be helpful:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/sailfish-on-dontbeevil GitHub project page]&lt;br /&gt;
* [https://github.com/sailfish-on-dontbeevil/flash-it the repo of the flash-it.sh flashing script]&lt;br /&gt;
* [https://build.merproject.org/project/show/nemo:devel:hw:pine:dontbeevil Mer Open Build Service page] ([https://forum.sailfishos.org/t/changes-needed-to-merge-the-project-names-to-sailfish-os/1672 Mer is being assimilated into Sailfish OS] and [https://forum.sailfishos.org/t/obs-shut-down-and-next-steps/1814 OBS is shutting down], also see [https://specs.openstack.org/openstack/fuel-specs/specs/7.0/replace-obs.html OpenStack is replacing OBS with another build system based on Jenkins], if it's related, even OBS come back under Sailfish OS, it will be different.)&lt;br /&gt;
&lt;br /&gt;
See the [https://sailfishos.org/wiki/Collaborative_Development#Reporting_issues Sailfish OS wiki] for links to their forum, as well as info required when reporting an issue. See the [https://sailfishos.org/wiki/SailfishOS Sailfish OS wiki main page] for options to contribute to Sailfish OS.&lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
&lt;br /&gt;
OTA is supported: &amp;lt;code&amp;gt;zypper refresh &amp;amp;&amp;amp; zypper update&amp;lt;/code&amp;gt; as root (&amp;lt;code&amp;gt;devel-su&amp;lt;/code&amp;gt; to get root access). Things that need reflash are bootloader specific at the moment. If improvements like [[crust]] or changes of partition layout are added, then you need to reflash.&lt;br /&gt;
&lt;br /&gt;
== SkiffOS ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:SkiffOS-Icon-1.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minimal in-memory cross-compiled OS optimized for hosting multiple in parallel Docker containers.&lt;br /&gt;
&lt;br /&gt;
Provides the reliability of firmware with the ease-of-use of package managers.&lt;br /&gt;
&lt;br /&gt;
Upgrade over-the-air via a simple rsync script, or copying 3 files.&lt;br /&gt;
&lt;br /&gt;
Uses the [http://buildroot.org Buildroot] cross-compilation tool for support for all Pine64 boards.&lt;br /&gt;
&lt;br /&gt;
Use configuration packages to configure distro:&lt;br /&gt;
* core/pinephone_neon: KDE Neon via Ubuntu repositories&lt;br /&gt;
* core/pinephone_nixos: Nixos Mobile&lt;br /&gt;
* core/pinephone_gentoo: Gentoo with Link-time Optimization &amp;amp; KDE Mobile or Phosh&lt;br /&gt;
* core/pinephone_ubports: Ubuntu Ports for PinePhone&lt;br /&gt;
* core/pinephone_manjaro_kde: Manjaro for PinePhone: KDE variant&lt;br /&gt;
* core/pinephone_manjaro_phosh: Manjaro for PinePhone: Phosh variant&lt;br /&gt;
* core/pinephone_manjaro_lomiri: Manjaro for PinePhone: Lomiri variant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The boot-up OS is upgraded independently from the containers.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
The repository and instructions can be found [https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/phone here].&lt;br /&gt;
&lt;br /&gt;
== Sxmo ==&lt;br /&gt;
&lt;br /&gt;
A collection of Suckless programs to create a mobile UI. Based on postmarketOS&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Sxmo images can be found [https://images.postmarketos.org/bpo/ here] (in the &amp;lt;i&amp;gt;/pine64-pinephone/sxmo/&amp;lt;/i&amp;gt; sections respectively).&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
user/147147&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
All the contributing information is [https://git.sr.ht/~mil/sxmo-docs/tree/master/CONTRIBUTING.md here].&lt;br /&gt;
&lt;br /&gt;
== Ubuntu Touch ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Ubports-logo.png|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A Mobile Version of the Ubuntu Operating System made and maintained by the UBports Community.&lt;br /&gt;
&lt;br /&gt;
Ubuntu touch is a mobile version of Ubuntu developed by the UBports community. Installation instructions can be found on [https://gitlab.com/ubports/community-ports/pinephone#how-do-i-install-ubuntu-touch-on-my-pinephone the UBports PinePhone project]. There is also a [https://github.com/goddard/pinephone/ script] to download the latest image and flash to your PinePhone. In the future, Ubuntu Touch will be able to be installed onto the PinePhone with the [https://devices.ubuntu-touch.io/installer UBports installer] GUI tool.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/ubports/community-ports/pinephone#how-do-i-install-ubuntu-touch-on-my-pinephone UBports PinePhone project]&lt;br /&gt;
&lt;br /&gt;
'''username/password'''&lt;br /&gt;
&lt;br /&gt;
Set up during boot&lt;br /&gt;
&lt;br /&gt;
'''What works, what does not work'''&lt;br /&gt;
&lt;br /&gt;
Scroll down to the bottom of [https://gitlab.com/ubports/community-ports/pinephone this page].&lt;br /&gt;
&lt;br /&gt;
'''How to contribute and report defects'''&lt;br /&gt;
&lt;br /&gt;
See [https://gitlab.com/ubports/community-ports/pinephone UBports gitlab page]. See [https://ubports.com/foundation/sponsors UBports website] for how to donate.&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
&lt;br /&gt;
There are software tools, that can be booted on the PinePhone.&lt;br /&gt;
&lt;br /&gt;
== JumpDrive ==&lt;br /&gt;
&lt;br /&gt;
JumpDrive can be used to flash the eMMC (and the microSD card), see [[PinePhone Installation Instructions#Using JumpDrive]].&lt;br /&gt;
&lt;br /&gt;
See https://github.com/dreemurrs-embedded/Jumpdrive/releases for the latest image. Make sure to download the &amp;quot;PinePhone&amp;quot; image and to unpack the archive before flashing.&lt;br /&gt;
&lt;br /&gt;
= Factory Test OS =&lt;br /&gt;
On the Braveheart model there was a postmarketOS based basic Factory Test OS pre-installed on the eMMC. The developer Martijn Braam from postmarketOS has improved the functionality of the image considerably later. Since the 20200501 version, it is able to test all the hardware. It also includes functionality to install a new OS to the eMMC when using with an test image that includes that OS image. The downloadable image just does the hardware tests. Do not flash eMMC to test your device, just dd it to microSD and test from there. New versions are distributed as part of the postmarketOS distribution.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
[https://images.postmarketos.org/pinephone/ Software Images] (download the latest one that is marked pine-pinephone-YYYYMMDD-factorytestX.img.xz)&lt;br /&gt;
[https://gitlab.com/MartijnBraam/factorytest Git repo]&lt;br /&gt;
[https://gitlab.com/MartijnBraam/factorytest/-/blob/master/README.rst Documentation]&lt;br /&gt;
&lt;br /&gt;
== Factory-loaded OS builds ==&lt;br /&gt;
&lt;br /&gt;
These are different operating system builds that was preloaded in the factory with testing utility.&lt;br /&gt;
&lt;br /&gt;
Download the build, extract the image and dd it to the microSD and then insert it into the phone. Power up the PinePhone, perform and complete the test routine, then apply the build from microSD card to eMMC.&lt;br /&gt;
&lt;br /&gt;
dd the image on a 8 GB microSD card or larger.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! OS&lt;br /&gt;
! Download&lt;br /&gt;
! File Size&lt;br /&gt;
! MD5&lt;br /&gt;
|-&lt;br /&gt;
| Beta Edition&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/BetaEdition/pine64-pinephone-plamo-beta-factorytest.img.xz Direct download from pine64.org]&lt;br /&gt;
| 1.78GB&lt;br /&gt;
| f16bce93504a52217540ac886863a418&lt;br /&gt;
|-&lt;br /&gt;
| Mobian&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/Mobian/pine64-pinephone-20201207-factorytest-mobian.img.xz Direct download from pine64.org]&lt;br /&gt;
| 1.41GB&lt;br /&gt;
| 015be381ff4e650a7fca6d4eaa90d63d&lt;br /&gt;
|-&lt;br /&gt;
| KDE&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/KDE/pine64-pinephone-20201208-factorytest-kde.img.xz Direct download from pine64.org]&lt;br /&gt;
| 2.28GB&lt;br /&gt;
| 32979ff17b5ec4d358ce99f1aff0c77c&lt;br /&gt;
|-&lt;br /&gt;
| Manjaro&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/Manjaro/pine64-pinephone-20201013-manjaro-stable-20201018-factory56.img.xz Direct download from pine64.org]&lt;br /&gt;
| 1.04GB&lt;br /&gt;
| 4edfd4dceaefdd32a3417c1727161c29&lt;br /&gt;
|-&lt;br /&gt;
| postmarketOS&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/PostMarketOS/pine64-pinephone-20200726-phosh-v20.05-factory.img.xz Direct download from pine64.org]&lt;br /&gt;
| 517MB&lt;br /&gt;
| 244093be2f6d728fcbd1d29114607727&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu Touch&lt;br /&gt;
| [https://files.pine64.org/os/PinePhone/UBPorts/PinePhone-flasher-ubuntu-7b.img.gz Direct download from pine64.org]&lt;br /&gt;
| 1.05GB&lt;br /&gt;
| 2d7f5271e7a281db8f1b1219bedbe131&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Installing other ARM64 distributions =&lt;br /&gt;
&lt;br /&gt;
{{Warning|Distributions not on this page may not even boot after you follow this section. In the best case, they will be barely usable. This is more for fun, or if you would like to port a new distribution to the PinePhone.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|'''Note:''' This section uses megi's kernel releases, and not the official ones from Pine64. While it is possible to use the official (and in the future, mainline) kernel, megi provides binary releases, which makes it very easy.}}&lt;br /&gt;
&lt;br /&gt;
If you would like to see specific commands for how to complete these steps, see:&lt;br /&gt;
* https://github.com/nikhiljha/pp-fedora-sdsetup (an example for Fedora) or&lt;br /&gt;
* https://xnux.eu/howtos/install-arch-linux-arm.html (an example for Arch Linux).&lt;br /&gt;
&lt;br /&gt;
General step:&lt;br /&gt;
&lt;br /&gt;
# Create a boot (from 4 MB to about 252 MB) and root (from the end of boot to the end of the card) filesystem on the SD card.&lt;br /&gt;
# Format the boot partition with vfat, and the root partition with a supported filesystem like ext4 or f2fs.&lt;br /&gt;
# Extract the root filesystem from your distribution's ARM image into the root filesystem on the SD card. Do not copy the partition, copy the files (in archive mode: like &amp;lt;code&amp;gt;rsync -ar&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt; to match your partitions.&lt;br /&gt;
# Grab megi's kernel from https://xff.cz/kernels/&lt;br /&gt;
# Follow the README instructions, which involves copying the kernel modules into the SD card rootfs, and writing u-boot and the bootloader.&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
Community&lt;br /&gt;
* [[Main_Page#Community_and_Support|Links to the community services]]&lt;br /&gt;
&lt;br /&gt;
Hardware information&lt;br /&gt;
* [[PinePhone|General PinePhone hardware info]] in this Pine64 wiki&lt;br /&gt;
* Details specific to the Braveheart Edition: [[PinePhone_v1.1_-_Braveheart|PinePhone 1.1 Braveheart hardware details]]&lt;br /&gt;
* Details specific to the Community Edition: [[PinePhone_v1.2|PinePhone 1.2 hardware details]]&lt;br /&gt;
* The postmarketOS wiki has a detailed page on the PinePhone hardware [https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone) here] and the preceding devkit [https://wiki.postmarketos.org/wiki/PINE64_Don%27t_be_evil_devkit_(pine64-dontbeevil) here]&lt;br /&gt;
&lt;br /&gt;
Other software information&lt;br /&gt;
* [https://linux-sunxi.org/Main_Page sunxi community wiki]&lt;br /&gt;
* [https://xnux.eu/devices/pine64-pinephone.html megi's feature/driver support matrix]&lt;br /&gt;
* [https://megous.com/dl/tmp/README.bootui megi bootUI notes (for dualbooting/multibooting)] see demonstration [https://www.youtube.com/watch?v=ZL1GREqoqx8 on YouTube]&lt;br /&gt;
* [https://github.com/ayufan-pine64/boot-tools ayufan boot tools]&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* [https://pine64.com/?post_type=product Pine64 shop]&lt;br /&gt;
* [https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/ Pine64 blog on blobs]&lt;br /&gt;
* [https://tuxphones.com/yet-another-librem-5-and-pinephone-linux-smartphone-comparison/ Martijn Braam Librem 5 comparison, especially covering openness/blobs]&lt;br /&gt;
* [https://fam-ribbers.com/2019/12/28/State-of-Linux-on-mobile-and-common-misconceptions.html Bart Ribbers blog on Linux distributions and desktop environments on mobile devices]&lt;br /&gt;
* [https://www.jeffgeerling.com/blog/2019/a2-class-microsd-cards-offer-no-better-performance-raspberry-pi Jeff Geerling on testing microSD cards]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&amp;diff=10713</id>
		<title>Project Don't be evil</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&amp;diff=10713"/>
		<updated>2021-06-13T19:35:35Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: uploaded and embedded logos -- Software entries should probably point to phone software page now?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Project &amp;quot;Don't be evil&amp;quot; - Phase 2 of PINE64 Smartphone &amp;quot;PinePhone&amp;quot; Development Kit  =&lt;br /&gt;
&lt;br /&gt;
Project Don't be evil is an actual smartphone developer kit for the PINE64 Smartphone dubbed &amp;quot;PinePhone&amp;quot;. It is used in the early stages of development as a starting point for affiliated projects. &lt;br /&gt;
PinePhone development has been broken down into three distinct phases: &lt;br /&gt;
* First phase - Project Anakin &lt;br /&gt;
* Second phase - purpose-built development kit code named &amp;quot;Don't be evil&amp;quot; and introduced at FOSDEM 2019 &lt;br /&gt;
* Lastly, the third phase which is the PinePhone itself - scheduled to be prototype released in Q3 2019 and BTO batch released with mobile OS parents in Q4 2019 (pending on software development).&lt;br /&gt;
&lt;br /&gt;
[[Image:Qee3ovj.jpg|200px]]&lt;br /&gt;
[[Image:Qsud2Gt.jpg|200px]]&lt;br /&gt;
[[Image:Martijnpocket.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
= Project Don't be evil, Baseboard and SOPine Module Information, and Schematics =&lt;br /&gt;
* Baseboard Dimensions: 165mm x 76mm x 19.5mm&lt;br /&gt;
* Input Power: DC 5V @ 2A, 3.7V Li-Ion battery connector, USB type-C connector&lt;br /&gt;
* Baseboard Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit%20Board%20Structure.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Structure]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit-SCH%20Ver%201.1.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.1 Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone%20Dev%20Kit%20Ver%201.1_PCB.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.1 PCB Artwork]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit-SCH%20Ver%201.2.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.2 Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone%20Dev%20Kit%20Ver%201.2_PCB.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.2 PCB Artwork]&lt;br /&gt;
* SOPine Module Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/SOPINE-A64/SOPINE-A64-Schematic-ver-0.9.pdf SOPine Module Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/SOPINE-A64/SOPINE-A64-Pin-Assignments-ver-1.0.pdf SOPine Module Pin Assignment ver 1.0]&lt;br /&gt;
* Wifi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/A64-DB-WIFI-BT-REV%20B.pdf PINE A64 Wifi/BT Module Schematic]&lt;br /&gt;
* [https://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdf PINE A64 Pi-2/Eular/Ext Bus/Wifi Bus Connector Pin Assignment (Updated 15/Feb/2016)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SoC and Memory Specification =&lt;br /&gt;
* Based on Allwinner A64/R18&lt;br /&gt;
** '''R18 and A64 are identical SoC but R18 committed for 10 years supply by vendor.''' &lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:Allwinner_A64.jpg]] [[File:Allwinner_R18.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CPU Architecture ==&lt;br /&gt;
* [https://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php Quad-core ARM Cortex-A53 Processor@1152Mhz]&lt;br /&gt;
* A power-efficient ARM v8 architecture&lt;br /&gt;
* 64 and 32bit execution states for scalable high performance&lt;br /&gt;
* Support NEON Advanced SIMD (Single Instruction Multiple Data) instruction for acceleration of media and signal processing function&lt;br /&gt;
* Support Large Physical Address Extensions(LPAE)&lt;br /&gt;
* VFPv4 Floating Point Unit&lt;br /&gt;
* 32KB L1 Instruction cache and 32KB L1 Data cache&lt;br /&gt;
* 512KB L2 cache&lt;br /&gt;
&lt;br /&gt;
== GPU Architecture ==&lt;br /&gt;
* [https://www.arm.com/products/multimedia/mali-gpu/ultra-low-power/mali-400.php ARM Mali400MP2 Dual-core GPU]&lt;br /&gt;
* Support OpenGL ES 2.0 and OpenVG 1.1 standard&lt;br /&gt;
&lt;br /&gt;
== System Memory ==&lt;br /&gt;
* RAM Memory Variants: 2GB LPDDR3.&lt;br /&gt;
* Storage Memory: SPI Flash and optional eMMC module from 16GB up to 64GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Allwinner A64/R18 SoC information:&lt;br /&gt;
** '''R18 and A64 are identical SoC but R18 committed for 10 years supply by vendor.''' &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/Allwinner-R18-Brief%20Sheet.pdf Allwinner R18 SoC Brief Introduction]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf Allwinner A64/R18 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/R18 SoC User Manual V1.0 (Official Release Version)]&lt;br /&gt;
* X-Powers AXP803 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf AXP803 PMIC Datasheet]&lt;br /&gt;
* LPDDR3 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AWL3A1632_mobile_lpddr3_1600Mbps.pdf Allwinner LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/FORESEE%20178ball%2012x11.5%20LPDDR3%2016G%20Spec%20V1.0-1228.pdf Foresee LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/K4E6E304EE-EGCE.pdf Samsung LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/LPDDR3%20178ball%208Gb_H9CCNNN8JTALAR_Rev1.0.pdf Hynix LPDDR3 Datasheet]&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf SanDisk eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/H26M64003DQR%20Datasheet.pdf Hynix eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/FORESEE_eMMC_NCEMBSF9-xxG%20SPEC%20A0%2020150730.pdf Foresee eMMC Datasheet]&lt;br /&gt;
* SPI NOR Flash information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]&lt;br /&gt;
* '''Project Don't be evil module/component related information:'''&lt;br /&gt;
** 2MPixel front CMOS Camera module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC20355Mp-module_for_pinephone_devkit.pdf 2MP CMOS Image Sensor Module Drawing]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC2035%20Product%20Brief.pdf GalaxyCore GC2035 2MP CMOS Image Sensor Product Brief]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC2035%20DataSheet.pdf GalaxyCore GC2035 2MP CMOS Image Sensor Datasheet]&lt;br /&gt;
** 5MPixel Rear CMOS Camera module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/ATK-OV5640-5Mp-module_for_pinephone_devkit.pdf 5MP CMOS Image Sensor Module Drawing]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OmniVision OV5640 5MP CMOS Image Sensor Datasheet]&lt;br /&gt;
*** [https://www.arducam.com/downloads/modules/OV5640/OV5640_Software_app_note_parallel.pdf OmniVision OV5640 5MP CMOS Image Sensor Software Application Note]&lt;br /&gt;
** LCD Touch Screen Panel information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/XBD572-IPS-HI010A%20SPEC.pdf 5.7&amp;quot; 1440x720 IPS LCD Panel Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/JD9365D_DS_Preliminary_V0.01_20170427.pdf fiti JD9365D LCD Controller Datasheet]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/XBD572-IPS-HI010A%20SPEC.pdf 5.7&amp;quot; Front Panel Touch Screen Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/FT6336GU_Upgrade_Spec_Ver1.0.pdf FocalTech FT6336GU Front Panel Touch Screen Specification]&lt;br /&gt;
** Lithium Battery information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/ncr18650b.pdf Panasonic NCR18650B 3350mAH Lithium Ion Battery Specification]&lt;br /&gt;
** Ethernet PHY information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf Realtek RTL8211 10/100/1000M Ethernet Transceiver]&lt;br /&gt;
** Wifi/BT module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf Realtek RTL8723BS WiFi with BT SDIO]&lt;br /&gt;
** LTE module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_LTE_Specification_V1.4.pdf Quectel EC25 LTE Module Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EG25-G_LTE_Specification_V1.1_Preliminary_20180522%20(002).pdf Quectel EG25-G LTE Module Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25&amp;amp;EC21_QuecCell_AT_Commands_Manual_V1.1.pdf Quectel EC25 LTE Module AT Cammands Set Manual]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_Hardware_Design_V1.3.pdf Quectel EC25 LTE Module Hardware Design Guide]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_Reference_Design_Rev.D_20161111.pdf Quectel EC25 LTE Module Reference Design Guide]&lt;br /&gt;
** Sensors:&lt;br /&gt;
*** [https://www.st.com/en/mems-and-sensors/lis3mdl.html ST LIS3MDL 3-axis Magnetomater 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;
&lt;br /&gt;
&lt;br /&gt;
= Software and OS Image Downloads =&lt;br /&gt;
&lt;br /&gt;
== Postmarket OS Early Alpha test build [microSD Boot] ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:postmarketos.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* Suitable for PinePhone &amp;quot;Don't Be Evil&amp;quot; Dev Kit version 1.1 and version 1.2&lt;br /&gt;
* There are two type of LCD panels. For long touch screen cable, please use the build with inverted wording.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://images.postmarketos.org/pinephone/ Direct download from postmarketOS image site]&lt;br /&gt;
** [https://wiki.postmarketos.org/wiki/Pine_Don%27t_be_evil_devkit_(pine-dontbeevil) postmarketOS PinePhone &amp;quot;Don't Be Evil&amp;quot; dev kit wiki site]&lt;br /&gt;
&lt;br /&gt;
== UBPorts mainline build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:ubports.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* [https://ci.ubports.com/job/rootfs-pinephone/ UBPorts Jenkins for PinePhone]&lt;br /&gt;
&lt;br /&gt;
The link above seems to be broken, if so try this:&lt;br /&gt;
[https://ci.ubports.com/job/rootfs/job/rootfs-pinephone/ Jenkins Project rootfs-pinephone]&lt;br /&gt;
&lt;br /&gt;
== KDE Plasma Mobile build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:plasma_mobile.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
== Sailfish OS build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:sailfishos.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
The Sailfish OS image is build on Gitlab CI, the latest image can be installed using our [https://raw.githubusercontent.com/sailfish-on-dontbeevil/flash-it/master/flash-it.sh flashing script] written in Bash.&lt;br /&gt;
&lt;br /&gt;
The script downloads the image and bootloader from our CI, extracts everything and burns it onto the SD card.&lt;br /&gt;
&lt;br /&gt;
'''Instructions:'''&lt;br /&gt;
&lt;br /&gt;
1. Download the flashing script&lt;br /&gt;
&lt;br /&gt;
2. Insert a microSD card in your device&lt;br /&gt;
&lt;br /&gt;
3. Make the script executable: &amp;lt;code&amp;gt;chmod +x flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Execute it: &amp;lt;code&amp;gt;./flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Follow the instructions. Some commands in the script require root permissions (for example: mounting and flashing the SD card).&lt;br /&gt;
&lt;br /&gt;
'''Note''': The script will format and flash the SD card, make sure that you don't have any important data on the SD card!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Maemo Leste build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:maemo_leste.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* Works on dev kit versions 1.1 and 1.2 &lt;br /&gt;
* DD image to a micro SD (8GB+) or eMMC &lt;br /&gt;
** [https://maedevu.maemo.org/images/pinephone-dontbeevil/ Maemo Leste test builds download]&lt;br /&gt;
&lt;br /&gt;
== NixOS build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:nixos.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
== LuneOS build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:luneos.jpg|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* [https://build.webos-ports.org/luneos-testing/images/pinephone/ LuneOS test image for PinePhone and thanks to Tofe]&lt;br /&gt;
* Tofe recommends using bmaptool ; for example &amp;quot;bmaptool copy https://build.webos-ports.org/luneos-testing/images/pinephone/luneos-dev-image-pinephone-testing-0-15.rootfs.wic.gz /dev/mmcblk0&amp;quot; &lt;br /&gt;
&lt;br /&gt;
== Nemo Mobile build ==&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:nemo_mobile.png|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
= Mali-400 64-bit Driver =&lt;br /&gt;
&lt;br /&gt;
== Mali-400 64-bit Driver [20171220] ==&lt;br /&gt;
* [[Mali_Driver|Mali 64-bit X11 and Wayland Driver Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Links to Build Sources of OS Images ==&lt;br /&gt;
* [https://linux-sunxi.org/Linux_mainlining_effort#Status_Matrix A64 mainline status matrix chart]&lt;br /&gt;
&lt;br /&gt;
'''Some these OS images labelled as &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;beta or nightly builds&amp;lt;/span&amp;gt; which means they are only fit for testing purposes&lt;br /&gt;
&lt;br /&gt;
'''These images should be &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;used at your own risk&amp;lt;/span&amp;gt; and are not fit for normal use'''&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/anarsoul/linux-build/releases/latest Arch Linux XFCE]&lt;br /&gt;
* [https://www.stdin.xyz/downloads/people/longsleep/pine64-images/ longsleep BSP Linux]&lt;br /&gt;
* [https://github.com/ayufan-pine64/linux-build/releases/latest/ ayufan Linux]&lt;br /&gt;
&lt;br /&gt;
= Errata for ver1.1 and ver1.2 board =&lt;br /&gt;
&lt;br /&gt;
'''1. Please DON'T insert micro SIM card to dev kit board micro SIM card slot, the SIM data, VPP, and GND signal have been misplaced. A miciPCIe adapter with sim card holder 9shown as below photo) will be provide to developers to correct this mistake.'''&lt;br /&gt;
&lt;br /&gt;
[[File:MiniPCIe_with_sim_slot_adapter.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. The PinePhone dev kit doesn't charge due to VBUS on SOPine module is not connected. Please connect R9688 solder pads with 0 ohm resistor or using thin wire bridge up the solder pads. Location shows as below:'''&lt;br /&gt;
&lt;br /&gt;
[[File:PinePhone_VBUS_charging_small.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. The SOPINE's SPI NOR flash storage and the devkit's camera flash (heh) share the same GPIO pins. The flash storage may not be used.'''&lt;br /&gt;
&lt;br /&gt;
[[File:SOPINE-SPI-Flash.png|200px]] [[File:Pinephone-1.1-flash-schematic.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. On the camera flash GPIO conflict, the new assignment of GPIO PB3 pin for SGM3140 FLASH_EN and GPIP PD7 for FLASH_TRIGOUT. Please note that PD7 is also LCD_ID pin which may not be used.'''&lt;br /&gt;
&lt;br /&gt;
[[File:GPIO_PB3_location.jpg|200px]]&lt;br /&gt;
GPIO PB3 location&lt;br /&gt;
&lt;br /&gt;
[[File:U54_SGM3140_FLASH_EN pin location.jpg|200px]]&lt;br /&gt;
U54 SGM3140 FLASH_EN pin location&lt;br /&gt;
&lt;br /&gt;
[[File:Flash_GPIO_Reassigned.jpg|200px]]&lt;br /&gt;
Flash GPIOs Reassigned wiring&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://linux-sunxi.org/Pine64#Manufacturer_images Linux Sunxi Wiki page on PINE A64]&lt;br /&gt;
* [https://github.com/apritzel/pine64 Linux Image created by Andre Przywara]&lt;br /&gt;
* [https://github.com/longsleep/build-pine64-image PINE64 Linux build scripts, tools and instructions by Longsleep]&lt;br /&gt;
* [https://www.stdin.xyz/downloads/people/longsleep/pine64-images/ PINE64 Linux image by Longsleep]&lt;br /&gt;
* [https://softwarebakery.com/shrinking-images-on-linux Shrinking images on Linux by FrozenCow]&lt;br /&gt;
* [https://osmocom.org/projects/quectel-modems/wiki/EC25/24 Quectel EC-25 LTE module open source information]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]] [[Category:Allwinner A64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Plasma_mobile.png&amp;diff=10709</id>
		<title>File:Plasma mobile.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Plasma_mobile.png&amp;diff=10709"/>
		<updated>2021-06-13T19:23:52Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: source: https://files.pine64.org/sw/pine64_installer/json/plasma_mobile.png

from page: https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
source: https://files.pine64.org/sw/pine64_installer/json/plasma_mobile.png&lt;br /&gt;
&lt;br /&gt;
from page: https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{subst:Unknown_copyright}}&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=File:Nemo_mobile.png&amp;diff=10706</id>
		<title>File:Nemo mobile.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=File:Nemo_mobile.png&amp;diff=10706"/>
		<updated>2021-06-13T19:13:48Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: source: https://files.pine64.org/sw/pine64_installer/json/nemo_mobile.png

from page: https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
source: https://files.pine64.org/sw/pine64_installer/json/nemo_mobile.png&lt;br /&gt;
&lt;br /&gt;
from page: https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{subst:Unknown_copyright}}&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&amp;diff=10702</id>
		<title>Project Don't be evil</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Project_Don%27t_be_evil&amp;diff=10702"/>
		<updated>2021-06-12T21:51:00Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x1), imgs 500 to 200px&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Project &amp;quot;Don't be evil&amp;quot; - Phase 2 of PINE64 Smartphone &amp;quot;PinePhone&amp;quot; Development Kit  =&lt;br /&gt;
&lt;br /&gt;
Project Don't be evil is an actual smartphone developer kit for the PINE64 Smartphone dubbed &amp;quot;PinePhone&amp;quot;. It is used in the early stages of development as a starting point for affiliated projects. &lt;br /&gt;
PinePhone development has been broken down into three distinct phases: &lt;br /&gt;
* First phase - Project Anakin &lt;br /&gt;
* Second phase - purpose-built development kit code named &amp;quot;Don't be evil&amp;quot; and introduced at FOSDEM 2019 &lt;br /&gt;
* Lastly, the third phase which is the PinePhone itself - scheduled to be prototype released in Q3 2019 and BTO batch released with mobile OS parents in Q4 2019 (pending on software development).&lt;br /&gt;
&lt;br /&gt;
[[Image:Qee3ovj.jpg|200px]]&lt;br /&gt;
[[Image:Qsud2Gt.jpg|200px]]&lt;br /&gt;
[[Image:Martijnpocket.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
= Project Don't be evil, Baseboard and SOPine Module Information, and Schematics =&lt;br /&gt;
* Baseboard Dimensions: 165mm x 76mm x 19.5mm&lt;br /&gt;
* Input Power: DC 5V @ 2A, 3.7V Li-Ion battery connector, USB type-C connector&lt;br /&gt;
* Baseboard Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit%20Board%20Structure.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Structure]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit-SCH%20Ver%201.1.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.1 Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone%20Dev%20Kit%20Ver%201.1_PCB.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.1 PCB Artwork]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone-devkit-SCH%20Ver%201.2.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.2 Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/PinePhone/Pinephone%20Dev%20Kit%20Ver%201.2_PCB.pdf &amp;quot;Don't Be Evil&amp;quot; PinePhone Dev kit Baseboard Ver 1.2 PCB Artwork]&lt;br /&gt;
* SOPine Module Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/SOPINE-A64/SOPINE-A64-Schematic-ver-0.9.pdf SOPine Module Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/SOPINE-A64/SOPINE-A64-Pin-Assignments-ver-1.0.pdf SOPine Module Pin Assignment ver 1.0]&lt;br /&gt;
* Wifi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/A64-DB-WIFI-BT-REV%20B.pdf PINE A64 Wifi/BT Module Schematic]&lt;br /&gt;
* [https://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdf PINE A64 Pi-2/Eular/Ext Bus/Wifi Bus Connector Pin Assignment (Updated 15/Feb/2016)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SoC and Memory Specification =&lt;br /&gt;
* Based on Allwinner A64/R18&lt;br /&gt;
** '''R18 and A64 are identical SoC but R18 committed for 10 years supply by vendor.''' &lt;br /&gt;
[[File:Allwinner_A64.jpg]] [[File:Allwinner_R18.png]]&lt;br /&gt;
&lt;br /&gt;
== CPU Architecture ==&lt;br /&gt;
* [https://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php Quad-core ARM Cortex-A53 Processor@1152Mhz]&lt;br /&gt;
* A power-efficient ARM v8 architecture&lt;br /&gt;
* 64 and 32bit execution states for scalable high performance&lt;br /&gt;
* Support NEON Advanced SIMD (Single Instruction Multiple Data) instruction for acceleration of media and signal processing function&lt;br /&gt;
* Support Large Physical Address Extensions(LPAE)&lt;br /&gt;
* VFPv4 Floating Point Unit&lt;br /&gt;
* 32KB L1 Instruction cache and 32KB L1 Data cache&lt;br /&gt;
* 512KB L2 cache&lt;br /&gt;
&lt;br /&gt;
== GPU Architecture ==&lt;br /&gt;
* [https://www.arm.com/products/multimedia/mali-gpu/ultra-low-power/mali-400.php ARM Mali400MP2 Dual-core GPU]&lt;br /&gt;
* Support OpenGL ES 2.0 and OpenVG 1.1 standard&lt;br /&gt;
&lt;br /&gt;
== System Memory ==&lt;br /&gt;
* RAM Memory Variants: 2GB LPDDR3.&lt;br /&gt;
* Storage Memory: SPI Flash and optional eMMC module from 16GB up to 64GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Allwinner A64/R18 SoC information:&lt;br /&gt;
** '''R18 and A64 are identical SoC but R18 committed for 10 years supply by vendor.''' &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/Allwinner-R18-Brief%20Sheet.pdf Allwinner R18 SoC Brief Introduction]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf Allwinner A64/R18 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/R18 SoC User Manual V1.0 (Official Release Version)]&lt;br /&gt;
* X-Powers AXP803 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf AXP803 PMIC Datasheet]&lt;br /&gt;
* LPDDR3 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/AWL3A1632_mobile_lpddr3_1600Mbps.pdf Allwinner LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/FORESEE%20178ball%2012x11.5%20LPDDR3%2016G%20Spec%20V1.0-1228.pdf Foresee LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/K4E6E304EE-EGCE.pdf Samsung LPDDR3 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/LPDDR3%20178ball%208Gb_H9CCNNN8JTALAR_Rev1.0.pdf Hynix LPDDR3 Datasheet]&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf SanDisk eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/H26M64003DQR%20Datasheet.pdf Hynix eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/FORESEE_eMMC_NCEMBSF9-xxG%20SPEC%20A0%2020150730.pdf Foresee eMMC Datasheet]&lt;br /&gt;
* SPI NOR Flash information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]&lt;br /&gt;
* '''Project Don't be evil module/component related information:'''&lt;br /&gt;
** 2MPixel front CMOS Camera module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC20355Mp-module_for_pinephone_devkit.pdf 2MP CMOS Image Sensor Module Drawing]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC2035%20Product%20Brief.pdf GalaxyCore GC2035 2MP CMOS Image Sensor Product Brief]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/GC2035%20DataSheet.pdf GalaxyCore GC2035 2MP CMOS Image Sensor Datasheet]&lt;br /&gt;
** 5MPixel Rear CMOS Camera module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/ATK-OV5640-5Mp-module_for_pinephone_devkit.pdf 5MP CMOS Image Sensor Module Drawing]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OmniVision OV5640 5MP CMOS Image Sensor Datasheet]&lt;br /&gt;
*** [https://www.arducam.com/downloads/modules/OV5640/OV5640_Software_app_note_parallel.pdf OmniVision OV5640 5MP CMOS Image Sensor Software Application Note]&lt;br /&gt;
** LCD Touch Screen Panel information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/XBD572-IPS-HI010A%20SPEC.pdf 5.7&amp;quot; 1440x720 IPS LCD Panel Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/JD9365D_DS_Preliminary_V0.01_20170427.pdf fiti JD9365D LCD Controller Datasheet]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/XBD572-IPS-HI010A%20SPEC.pdf 5.7&amp;quot; Front Panel Touch Screen Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/FT6336GU_Upgrade_Spec_Ver1.0.pdf FocalTech FT6336GU Front Panel Touch Screen Specification]&lt;br /&gt;
** Lithium Battery information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pinephone/ncr18650b.pdf Panasonic NCR18650B 3350mAH Lithium Ion Battery Specification]&lt;br /&gt;
** Ethernet PHY information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf Realtek RTL8211 10/100/1000M Ethernet Transceiver]&lt;br /&gt;
** Wifi/BT module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf Realtek RTL8723BS WiFi with BT SDIO]&lt;br /&gt;
** LTE module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_LTE_Specification_V1.4.pdf Quectel EC25 LTE Module Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EG25-G_LTE_Specification_V1.1_Preliminary_20180522%20(002).pdf Quectel EG25-G LTE Module Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25&amp;amp;EC21_QuecCell_AT_Commands_Manual_V1.1.pdf Quectel EC25 LTE Module AT Cammands Set Manual]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_Hardware_Design_V1.3.pdf Quectel EC25 LTE Module Hardware Design Guide]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/project_anakin/LTE_module/Quectel_EC25_Reference_Design_Rev.D_20161111.pdf Quectel EC25 LTE Module Reference Design Guide]&lt;br /&gt;
** Sensors:&lt;br /&gt;
*** [https://www.st.com/en/mems-and-sensors/lis3mdl.html ST LIS3MDL 3-axis Magnetomater 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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software and OS Image Downloads =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/postmarketos.png&lt;br /&gt;
&lt;br /&gt;
== Postmarket OS Early Alpha test build [microSD Boot] ==&lt;br /&gt;
* Suitable for PinePhone &amp;quot;Don't Be Evil&amp;quot; Dev Kit version 1.1 and version 1.2&lt;br /&gt;
* There are two type of LCD panels. For long touch screen cable, please use the build with inverted wording.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://images.postmarketos.org/pinephone/ Direct download from postmarketOS image site]&lt;br /&gt;
** [https://wiki.postmarketos.org/wiki/Pine_Don%27t_be_evil_devkit_(pine-dontbeevil) postmarketOS PinePhone &amp;quot;Don't Be Evil&amp;quot; dev kit wiki site]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/ubports.png&lt;br /&gt;
&lt;br /&gt;
== UBPorts mainline build ==&lt;br /&gt;
* [https://ci.ubports.com/job/rootfs-pinephone/ UBPorts Jenkins for PinePhone]&lt;br /&gt;
&lt;br /&gt;
The link above seems to be broken, if so try this:&lt;br /&gt;
[https://ci.ubports.com/job/rootfs/job/rootfs-pinephone/ Jenkins Project rootfs-pinephone]&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/plasma_mobile.png&lt;br /&gt;
&lt;br /&gt;
== KDE Plasma Mobile build ==&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/sailfishos.png&lt;br /&gt;
&lt;br /&gt;
== Sailfish OS build ==&lt;br /&gt;
&lt;br /&gt;
The Sailfish OS image is build on Gitlab CI, the latest image can be installed using our [https://raw.githubusercontent.com/sailfish-on-dontbeevil/flash-it/master/flash-it.sh flashing script] written in Bash.&lt;br /&gt;
&lt;br /&gt;
The script downloads the image and bootloader from our CI, extracts everything and burns it onto the SD card.&lt;br /&gt;
&lt;br /&gt;
'''Instructions:'''&lt;br /&gt;
&lt;br /&gt;
1. Download the flashing script&lt;br /&gt;
&lt;br /&gt;
2. Insert a microSD card in your device&lt;br /&gt;
&lt;br /&gt;
3. Make the script executable: &amp;lt;code&amp;gt;chmod +x flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Execute it: &amp;lt;code&amp;gt;./flash-it.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Follow the instructions. Some commands in the script require root permissions (for example: mounting and flashing the SD card).&lt;br /&gt;
&lt;br /&gt;
'''Note''': The script will format and flash the SD card, make sure that you don't have any important data on the SD card!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/maemo_leste.png&lt;br /&gt;
&lt;br /&gt;
== Maemo Leste build ==&lt;br /&gt;
* Works on dev kit versions 1.1 and 1.2 &lt;br /&gt;
* DD image to a micro SD (8GB+) or eMMC &lt;br /&gt;
** [https://maedevu.maemo.org/images/pinephone-dontbeevil/ Maemo Leste test builds download]&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/nixos.png&lt;br /&gt;
&lt;br /&gt;
== NixOS build ==&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/luneos.jpg&lt;br /&gt;
&lt;br /&gt;
== LuneOS build ==&lt;br /&gt;
* [https://build.webos-ports.org/luneos-testing/images/pinephone/ LuneOS test image for PinePhone and thanks to Tofe]&lt;br /&gt;
* Tofe recommends using bmaptool ; for example &amp;quot;bmaptool copy https://build.webos-ports.org/luneos-testing/images/pinephone/luneos-dev-image-pinephone-testing-0-15.rootfs.wic.gz /dev/mmcblk0&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://files.pine64.org/sw/pine64_installer/json/nemo_mobile.png&lt;br /&gt;
&lt;br /&gt;
== Nemo Mobile build ==&lt;br /&gt;
* Not Yet Ready *&lt;br /&gt;
&lt;br /&gt;
= Mali-400 64-bit Driver =&lt;br /&gt;
&lt;br /&gt;
== Mali-400 64-bit Driver [20171220] ==&lt;br /&gt;
* [[Mali_Driver|Mali 64-bit X11 and Wayland Driver Download]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quick Links to Build Sources of OS Images ==&lt;br /&gt;
&lt;br /&gt;
* [https://linux-sunxi.org/Linux_mainlining_effort#Status_Matrix A64 mainline status matrix chart]&lt;br /&gt;
&lt;br /&gt;
'''Some these OS images labelled as &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;beta or nightly builds&amp;lt;/span&amp;gt; which means they are only fit for testing purposes&lt;br /&gt;
&lt;br /&gt;
'''These images should be &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;used at your own risk&amp;lt;/span&amp;gt; and are not fit for normal use'''&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/anarsoul/linux-build/releases/latest Arch Linux XFCE]&lt;br /&gt;
* [https://www.stdin.xyz/downloads/people/longsleep/pine64-images/ longsleep BSP Linux]&lt;br /&gt;
* [https://github.com/ayufan-pine64/linux-build/releases/latest/ ayufan Linux]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Errata for ver1.1 and ver1.2 board =&lt;br /&gt;
&lt;br /&gt;
'''1. Please DON'T insert micro SIM card to dev kit board micro SIM card slot, the SIM data, VPP, and GND signal have been misplaced. A miciPCIe adapter with sim card holder 9shown as below photo) will be provide to developers to correct this mistake.'''&lt;br /&gt;
&lt;br /&gt;
[[File:MiniPCIe_with_sim_slot_adapter.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. The PinePhone dev kit doesn't charge due to VBUS on SOPine module is not connected. Please connect R9688 solder pads with 0 ohm resistor or using thin wire bridge up the solder pads. Location shows as below:'''&lt;br /&gt;
&lt;br /&gt;
[[File:PinePhone_VBUS_charging_small.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. The SOPINE's SPI NOR flash storage and the devkit's camera flash (heh) share the same GPIO pins. The flash storage may not be used.'''&lt;br /&gt;
&lt;br /&gt;
[[File:SOPINE-SPI-Flash.png]] [[File:Pinephone-1.1-flash-schematic.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4. On the camera flash GPIO conflict, the new assignment of GPIO PB3 pin for SGM3140 FLASH_EN and GPIP PD7 for FLASH_TRIGOUT. Please note that PD7 is also LCD_ID pin which may not be used.'''&lt;br /&gt;
&lt;br /&gt;
[[File:GPIO_PB3_location.jpg|200px]]&lt;br /&gt;
GPIO PB3 location&lt;br /&gt;
&lt;br /&gt;
[[File:U54_SGM3140_FLASH_EN pin location.jpg|200px]]&lt;br /&gt;
U54 SGM3140 FLASH_EN pin location&lt;br /&gt;
&lt;br /&gt;
[[File:Flash_GPIO_Reassigned.jpg|200px]]&lt;br /&gt;
Flash GPIOs Reassigned wiring&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://linux-sunxi.org/Pine64#Manufacturer_images Linux Sunxi Wiki page on PINE A64]&lt;br /&gt;
* [https://github.com/apritzel/pine64 Linux Image created by Andre Przywara]&lt;br /&gt;
* [https://github.com/longsleep/build-pine64-image PINE64 Linux build scripts, tools and instructions by Longsleep]&lt;br /&gt;
* [https://www.stdin.xyz/downloads/people/longsleep/pine64-images/ PINE64 Linux image by Longsleep]&lt;br /&gt;
* [https://softwarebakery.com/shrinking-images-on-linux Shrinking images on Linux by FrozenCow]&lt;br /&gt;
* [https://osmocom.org/projects/quectel-modems/wiki/EC25/24 Quectel EC-25 LTE module open source information]&lt;br /&gt;
&lt;br /&gt;
[[Category:PinePhone]] [[Category:Allwinner A64]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PineCube&amp;diff=10701</id>
		<title>PineCube</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PineCube&amp;diff=10701"/>
		<updated>2021-06-12T21:49:24Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{under construction}}&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
* '''Dimensions:''' 55mm x 51mm x 51.5mm&lt;br /&gt;
* '''Weight:''' 55g&lt;br /&gt;
* '''Storage:'''&lt;br /&gt;
** MicroSD slot, bootable&lt;br /&gt;
** 128Mb SPI Nor Flash, bootable&lt;br /&gt;
* '''Cameras:''' OV5640, 5Mpx &lt;br /&gt;
* '''CPU:''' Allwinner(Sochip) ARM Cortex-A7 MPCore, 800MHz&lt;br /&gt;
* '''RAM:''' 128MB DDR3&lt;br /&gt;
* '''I/O:'''&lt;br /&gt;
** 10/100Mbps Ethernet with passive PoE (''4-18V!'')&lt;br /&gt;
** USB 2.0 A host&lt;br /&gt;
** 26 pins GPIO port&lt;br /&gt;
*** 2x 3.3V Ouptut&lt;br /&gt;
*** 2x 5V Output&lt;br /&gt;
*** 1x I2C&lt;br /&gt;
*** 2x UART&lt;br /&gt;
*** 2x PWM&lt;br /&gt;
*** 1x SPI&lt;br /&gt;
*** 1x eMMC/SDIO/SD (8-bit)&lt;br /&gt;
*** 6x Interrupts&lt;br /&gt;
*** '''Note: Interfaces are multiplexed, so they can't be all used at same time'''&lt;br /&gt;
** Internal microphone&lt;br /&gt;
* '''Network:'''&lt;br /&gt;
** WiFi&lt;br /&gt;
* '''Screen:''' optional 4.5&amp;quot; RGB LCD screen&lt;br /&gt;
* '''Misc. features:''' &lt;br /&gt;
** Volume and home buttons&lt;br /&gt;
** Speakers and Microphone&lt;br /&gt;
* '''Power DC in:'''&lt;br /&gt;
** 5V 1A from MicroUSB Port or GPIO port&lt;br /&gt;
** 4V-18V from Ethernet passive PoE&lt;br /&gt;
* '''Battery:''' optional 950-1600mAh model: 903048 Lithium Polymer Ion Battery Pack, can be purchase at [https://www.amazon.com/AKZYTUE-1200mAh-Battery-Rechargeable-Connector/dp/B07TWHHCNK/ Amazon.com]&lt;br /&gt;
&lt;br /&gt;
== PineCube board information, schematics and certifications ==&lt;br /&gt;
* PineCube mainboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20MainBoard%20Schematic%20ver%201.0-20200727.pdf PineCube mainboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube faceboard schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20FaceBoard%20Schematic%20ver%201.0-20200727.pdf PineCube faceboard Released Schematic ver 1.0]&lt;br /&gt;
* PineCube certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-FCC-SDOC%20certification%20S20072502302001.pdf PineCube FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-CE-EMC%20certification%20S20072502301001.pdf PineCube CE RED Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PineCube-ROHS%20Test%20Report.pdf PineCube ROHS Test Report]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Datasheets for components and peripherals ==&lt;br /&gt;
* Allwinner (Sochip) S3 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/S3_Datasheet_V1.1-20180123.pdf Sochip S3 SoC Data Sheet V1.1]&lt;br /&gt;
&lt;br /&gt;
* X-Powers AXP209 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/AXP209_Datasheet_v1.0en.pdf AXP209 PMIC datasheet]&lt;br /&gt;
&lt;br /&gt;
* CMOS camera module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/CH-5A-DV-V2.0%20Specification.pdf PineCube Camera Module Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf OV5640 5MP CMOS Image Sensor SoC datasheet]&lt;br /&gt;
&lt;br /&gt;
* LCD touch screen panel information:&lt;br /&gt;
&lt;br /&gt;
* Lithium battery information:&lt;br /&gt;
&lt;br /&gt;
* WiFi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinecube/rtl8189es.pdf RTL8189ES specification]&lt;br /&gt;
&lt;br /&gt;
* GPIO Header Pinout: ([[:File:PineCube_GPIO.pdf|PDF]], [https://pine64.gami.ee/pinecube/gpio-pinout.html HTML]) (Pin1 is marked on the board by a white dot on the PCB)&lt;br /&gt;
[[File:PineCube_GPIO_Pinout.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Case information:&lt;br /&gt;
** [https://files.pine64.org/doc/PineCube/PineCube%20Case%203D.zip PineCube ( china not open source file)  3D file]&lt;br /&gt;
** [https://drive.google.com/file/d/1MDNxnPL2kuYGC4Y4qf9J6YPYZF15KnN7/view?usp=sharing Quick and dirty STL conversion (beta) by doodlebro. Prints and fits at 0.25mm layer height.]&lt;br /&gt;
&lt;br /&gt;
[[File:PineCube_Case-1.jpg|400px]]  [[File:PineCube_Case-2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
&lt;br /&gt;
=== Mainlining Efforts ===&lt;br /&gt;
&lt;br /&gt;
Please note:&lt;br /&gt;
&lt;br /&gt;
* this list is most likely not complete&lt;br /&gt;
* no review of functionality is done here, it only serves as a collection of efforts&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Linux kernel&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| Devicetree Entry Pinecube&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1241&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
| Correction for AXP209 driver&lt;br /&gt;
| https://lkml.org/lkml/2020/9/22/1243&lt;br /&gt;
| 5.9&lt;br /&gt;
|-&lt;br /&gt;
| Additional Fixes for AXP209 driver&lt;br /&gt;
| https://lore.kernel.org/lkml/20201031182137.1879521-8-contact@paulk.fr/&lt;br /&gt;
| tdb (5.11?)&lt;br /&gt;
|-&lt;br /&gt;
| Device Tree Fixes&lt;br /&gt;
| https://lore.kernel.org/lkml/20201003234842.1121077-1-icenowy@aosc.io/&lt;br /&gt;
| 5.10&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|U-boot&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Link&lt;br /&gt;
| Available in version&lt;br /&gt;
|-&lt;br /&gt;
| PineCube Board Support&lt;br /&gt;
| https://patchwork.ozlabs.org/project/uboot/list/?series=210044&lt;br /&gt;
| expected in v2021.01&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Buildroot&lt;br /&gt;
|-&lt;br /&gt;
| No known mainlining efforts yet&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NixOS ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/danielfullmer/pinecube-nixos danielfullmer's Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
[https://elimo.io Elimo Engineering] integrated support for the PineCube into Buildroot.&lt;br /&gt;
&lt;br /&gt;
This has not been merged into upstream Buildroot yet, but you can find the repo on [https://github.com/elimo-engineering/buildroot Elimo's GitHub account] and build instructions in the [https://github.com/elimo-engineering/buildroot/tree/pine64/pinecube/board/pine64/pinecube board support directory] readme.&lt;br /&gt;
The most important thing that this provides is support for the S3's DDR3 in u-boot. Unfortunately mainline u-boot does not have that yet, but the u-boot patches from [https://github.com/danielfullmer/pinecube-nixos Daniel Fullmer's NixOS repo] were easy enough to use on buildroot.&lt;br /&gt;
This should get you a functional system that boots to a console on UART0. It's pretty fast too, getting there in 1.5 seconds from u-boot to login prompt.&lt;br /&gt;
&lt;br /&gt;
=== Armbian ===&lt;br /&gt;
&lt;br /&gt;
The only Armbian release with support for Ethernet and the camera module is the Ubuntu Groovy release. The Ubuntu Groovy release is an experimental, automatically generated release and it appears to support additional hardware from the other Armbian releases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Armbian Build Image with motion [microSD Boot] [20201222] ====&lt;br /&gt;
* Armbian Ubuntu Focal build for the Pinecube with the motion (detection) package preinstalled.&lt;br /&gt;
* There are 2 ways to interact with the OS:&lt;br /&gt;
** Scan for the the device IP (with hostname pinecube)&lt;br /&gt;
** Use the PINE64 USB SERIAL CONSOLE/PROGRAMMER to login to the serial console, then check for assigned IP&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org//os/PineCube/armbian/Armbian_21.02.0-trunk_Pinecube_focal_dev_5.10.0.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (XZip file): 61e5a6d3ab0f74ce8367c97b7f8cbb7b&lt;br /&gt;
*** File Size: 328MGB&lt;br /&gt;
&lt;br /&gt;
[https://gist.github.com/Icenowy/ff68f6e4ba8231380d3a295226e63fb3 GitHub gist] for the userpatch which pre-installs and configures the motion (detection) package. &lt;br /&gt;
&lt;br /&gt;
Armbian Builds for PineCube are [https://www.armbian.com/pinecube/ available for download], once again thanks to [https://github.com/armbian/build/pull/2364/files the work] of Icenowy Zheng.&lt;br /&gt;
Although [https://www.armbian.com/download/?device_support=No+official+support+(CSC) not officially supported] it enables the usage of Debian and Ubuntu.&lt;br /&gt;
&lt;br /&gt;
A serial console can be established with 152008N1 (no hardware flow control). Login credentials are as usual in Armbian (login: root, password: 1234).&lt;br /&gt;
&lt;br /&gt;
Motion daemon can be enabled using systemctl (With root) &amp;lt;code&amp;gt;systemctl enable motion&amp;lt;/code&amp;gt;. Then just reboot.&lt;br /&gt;
&lt;br /&gt;
==== Serial connection using screen and the woodpecker USB serial device ====&lt;br /&gt;
&lt;br /&gt;
First connect the woodpecker USB serial device to the PineCube. Pin 1 on the PineCube has a small white dot on the PCB - this should be directly next to the microusb power connection. Attach the GND pin on the woodpecker to pin 6 (GND) on the PineCube, TXD from the woodpecker to pin 10 (UART_RXD) on the PineCube, and RXD from the woodpecker to pin 8 (UART_TXD) on the PineCube.&lt;br /&gt;
&lt;br /&gt;
On the host system which has the woodpecker USB serial device attached, it is possible to run screen and to communicate directly with the PineCube:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;screen /dev/ttyUSB0 115200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Serial connection using screen and Arduino Uno ====&lt;br /&gt;
&lt;br /&gt;
You can use the Arduino Uno or other Arduino boards as a USB serial device.&lt;br /&gt;
&lt;br /&gt;
First you must either remove the microcontroller from it's socket, or if your Arduino board does not allow this, then you can use wires to jump RESET (RST) and GND to isolate the SOC.&lt;br /&gt;
&lt;br /&gt;
After this you can either use the Arduino IDE and it's Serial monitor after selecting your &amp;lt;code&amp;gt;/dev/ttyACMx&amp;lt;/code&amp;gt; Arduino device, or screen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;screen /dev/ttyACM0 115200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ArduinoSerialPinecube.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==== Serial connection using pinephone/pinebook pro serial debugging cable ====&lt;br /&gt;
&lt;br /&gt;
You can use the [https://wiki.pine64.org/wiki/PinePhone#Serial_console serial console] USB cable for pinephone and pinebook pro at the [https://pine64.com/product/pinebook-pinephone-pinetab-serial-console/ store]. With a [https://www.amazon.com/3-5mm-Stereo-Female-terminal-connector/dp/B077XPSKQD female terminal block] wire using breadboard wire into the GPIO block at the following locations in a &amp;quot;null modem&amp;quot; configuration with transmit and receive crossed between your computer and the pinecube:&lt;br /&gt;
&lt;br /&gt;
 S - Ground (to pin 9)&lt;br /&gt;
 R - Transmit (to pin 8)&lt;br /&gt;
 T - Receive (to pin 10)&lt;br /&gt;
&lt;br /&gt;
From Linux you can access the console of the pinecube using the screen command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;screen /dev/ttyUSB0 115200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Basic bandwidth tests with iperf3 ====&lt;br /&gt;
&lt;br /&gt;
Install armbian-config:&lt;br /&gt;
&amp;lt;code&amp;gt;apt install armbian-config&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable iperf3 through the menu in armbian-config:&lt;br /&gt;
&amp;lt;code&amp;gt;armbian-config&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On a test computer on the same network segment run iperf3 as a client:&lt;br /&gt;
&amp;lt;code&amp;gt;iperf3 -c pinecube -t 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same test computer, run iperf3 in the reverse direction:&lt;br /&gt;
&amp;lt;code&amp;gt;iperf3 -c pinecube -t 60 -R&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Performance results ===&lt;br /&gt;
&lt;br /&gt;
==== Wireless network performance ====&lt;br /&gt;
The performance results reflect using the wireless network. The link speed was 72.2Mb/s using 2.462Ghz wireless. Running sixty second iperf3 tests: the observed throughput varies between 28-50Mb/s to a host on the same network segment. The testing host is connected to an Ethernet switch which is also connected to a wireless bridge. The wireless network uses WPA2 and the PineCube is connected to this wireless network bridge.&lt;br /&gt;
&lt;br /&gt;
Client rate for sixty seconds:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.00  sec   293 MBytes  41.0 Mbits/sec    1             sender&lt;br /&gt;
 [  5]   0.00-60.01  sec   291 MBytes  40.7 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Client rate with -R for sixty seconds:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.85  sec   263 MBytes  36.2 Mbits/sec    3             sender&lt;br /&gt;
 [  5]   0.00-60.00  sec   259 MBytes  36.1 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
Using WireGuard to protect the traffic between the PineCube and the test system, the performance characteristics change only slightly.&lt;br /&gt;
&lt;br /&gt;
Client rate for sixty seconds with WireGuard:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.00  sec   230 MBytes  32.1 Mbits/sec    0             sender&lt;br /&gt;
 [  5]   0.00-60.09  sec   229 MBytes  32.0 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
Client rate with -R for sixty seconds with WireGuard:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.14  sec   246 MBytes  34.3 Mbits/sec    7             sender&lt;br /&gt;
 [  5]   0.00-60.00  sec   245 MBytes  34.2 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
====== Wired network performance ======&lt;br /&gt;
&lt;br /&gt;
The Ethernet network does not work in the current Ubuntu Focal Armbian image or the Ubuntu Groovy Armbian image.&lt;br /&gt;
&lt;br /&gt;
The performance results reflect using the Ethernet network. The link speed was 100Mb/s using a 1000Mb/s prosumer switch. Running sixty second iperf3 tests: the observed throughput varies between 92-102Mb/s to a host on the same network segment. The testing host is connected to the same Ethernet switch which is also connected to the PineCube.&lt;br /&gt;
&lt;br /&gt;
Client rate for sixty seconds:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.00  sec   675 MBytes  94.4 Mbits/sec    0             sender&lt;br /&gt;
 [  5]   0.00-60.01  sec   673 MBytes  94.0 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
Client rate with -R for sixty seconds:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.00  sec   673 MBytes  94.1 Mbits/sec    0             sender&lt;br /&gt;
 [  5]   0.00-60.00  sec   673 MBytes  94.1 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
Using WireGuard to protect the traffic between the PineCube and the test system, the performance characteristics change only slightly.&lt;br /&gt;
&lt;br /&gt;
Client rate for sixty seconds with WireGuard:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.00  sec   510 MBytes  71.2 Mbits/sec    0             sender&lt;br /&gt;
 [  5]   0.00-60.01  sec   509 MBytes  71.1 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
Client rate with -R for sixty seconds with WireGuard:&lt;br /&gt;
&lt;br /&gt;
 [ ID] Interval           Transfer     Bitrate         Retr&lt;br /&gt;
 [  5]   0.00-60.01  sec   642 MBytes  89.8 Mbits/sec    0             sender&lt;br /&gt;
 [  5]   0.00-60.00  sec   641 MBytes  89.7 Mbits/sec                  receiver&lt;br /&gt;
&lt;br /&gt;
== Streaming the camera to the network ==&lt;br /&gt;
&lt;br /&gt;
In this section we document a variety of ways to stream video to the network from the PineCube. Unless specified otherwise, all of these examples have been tested on Ubuntu groovy (20.10). See [https://github.com/ioerror/pinecube this small project for the pinecube] for easy to use programs tuned for the PineCube.&lt;br /&gt;
&lt;br /&gt;
In the examples which use h264, we are currently encoding using the x264 library which is not very fast on this CPU. The SoC in the PineCube does have a hardware h264 encoder, which the authors of these examples have so far not tried to use. It appears that https://github.com/gtalusan/gst-plugin-cedar might provide easy access to it, however. Please update this wiki if you find out how to use the hardware encoder!&lt;br /&gt;
&lt;br /&gt;
=== gstreamer: h264 HLS ===&lt;br /&gt;
&lt;br /&gt;
HLS (HTTP Live Streaming) has the advantage that it is easy to play in any modern web browser, including Android and iPhone devices, and that it is easy to put an HTTP caching proxy in front of it to scale to many viewers. It has the disadvantages of adding (at minimum) several seconds of latency, and of requiring an h264 encoder (which we have in hardware, but haven't figured out how to use yet, so, we're stuck with the slow software one).&lt;br /&gt;
&lt;br /&gt;
HLS segments a video stream into small chunks which are stored as .ts (MPEG Transport Stream) files, and (re)writes a playlist.m3u8 file which clients constantly refresh to discover which .ts files they should download. We use a tmpfs file system to avoid needing to write these files to the sdcard in the PineCube. Besides the program which writes the .ts and .m3u8 files (gst-launch-1.0, in our case), we'll also need a very basic web page in tmpfs and a webserver to serve the files.&lt;br /&gt;
&lt;br /&gt;
Create an hls directory to be shared in the existing tmpfs file system that is mounted at /dev/shm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /dev/shm/hls/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create an index.html and optionally a favicon.ico or even a set of icons, and then put the files into the /dev/shm/hls directory. An example index.html that works is available in the Getting Started section of the [https://github.com/video-dev/hls.js/#getting-started README] for [https://github.com/video-dev/hls.js/ hls.js]. We recommend downloading the hls.js file and editing the example index.html to serve your local copy of it instead of fetching it from a CDN. This file provides HLS playback capabilities in browsers which don't natively support it (which is most browsers aside from the iPhone).&lt;br /&gt;
&lt;br /&gt;
In one terminal, run the camera capture pipeline:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd /dev/shm/hls/ &amp;amp;&amp;amp; &lt;br /&gt;
media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:UYVY8_2X8/240x320@1/15]' &amp;amp;&amp;amp; &lt;br /&gt;
gst-launch-1.0 v4l2src ! video/x-raw,width=320,height=240,format=UYVY,framerate=15/1 ! decodebin ! videoconvert ! video/x-raw,format=I420 ! clockoverlay ! timeoverlay valignment=bottom ! x264enc speed-preset=ultrafast tune=zerolatency ! mpegtsmux ! hlssink target-duration=1 playlist-length=2 max-files=3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively it is possible to capture at a higher resolution:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:UYVY8_2X8/1920x1080@1/15]'&lt;br /&gt;
cd /dev/shm/hls/ &amp;amp;&amp;amp; gst-launch-1.0 v4l2src ! video/x-raw,width=1920,height=1080,format=UYVY,framerate=15/1 ! decodebin ! videoconvert ! video/x-raw,format=I420 ! clockoverlay ! timeoverlay valignment=bottom ! x264enc speed-preset=ultrafast tune=zerolatency ! mpegtsmux ! hlssink target-duration=1 playlist-length=2 max-files=3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In another, run a simple single threaded webserver which will serve html, javascript, and HLS to web clients:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd /dev/shm/hls/ &amp;amp;&amp;amp; python3 -m http.server&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternately, install a more efficient web server (&amp;lt;code&amp;gt;apt install nginx&amp;lt;/code&amp;gt;) and set the server root for the default configuration to be /dev/shm/hls. This will run on port 80 rather than the python3 server which defaults to port 8000.&lt;br /&gt;
&lt;br /&gt;
It should be possible to view the HLS stream directly in a web browser by visiting [http://pinecube:8000/ http://pinecube:8000/] if pinecube is the correct hostname and the name correctly resolves.&lt;br /&gt;
&lt;br /&gt;
You can also view the HLS stream with VLC: &amp;lt;code&amp;gt;vlc http://pinecube:8000/playlist.m3u8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or with gst-play-1.0: &amp;lt;code&amp;gt;gst-play-1.0 http://pinecube:8000/playlist.m3u8&amp;lt;/code&amp;gt; (or with mpv, ffplay, etc)&lt;br /&gt;
&lt;br /&gt;
To find out about other options you can configure in the &amp;lt;code&amp;gt;hlssink&amp;lt;/code&amp;gt; gstreamer element, you can run &amp;lt;code&amp;gt;gst-inspect-1.0 hlssink&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
It is worth noting here that the &amp;lt;code&amp;gt;hlssink&amp;lt;/code&amp;gt; element in GStreamer is not widely used in production environments. It is handy for testing, but for real-world free-software HLS live streaming deployments the standard tool today (January 2021) is nginx's RTMP module which can be used with ffmpeg to produce &amp;quot;adaptive streams&amp;quot; which are reencoded at varying quality levels. You can send data to an nginx-rtmp server from a gstreamer pipeline using the &amp;lt;code&amp;gt;rtmpsink&amp;lt;/code&amp;gt; element. It is also worth noting that gstreamer has a new &amp;lt;code&amp;gt;hlssink2&amp;lt;/code&amp;gt; element which we have not tested; perhaps in the future it will even have a webserver!&lt;br /&gt;
&lt;br /&gt;
=== v4l2rtspserver: h264 RTSP ===&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&lt;br /&gt;
 apt install -y cmake gstreamer1.0-plugins-bad gstreamer1.0-tools \&lt;br /&gt;
 gstreamer1.0-plugins-good v4l-utils gstreamer1.0-alsa alsa-utils libpango1.0-0 \&lt;br /&gt;
 libpango1.0-dev gstreamer1.0-plugins-base gstreamer1.0-x x264 \&lt;br /&gt;
 gstreamer1.0-plugins-{good,bad,ugly} liblivemedia-dev liblog4cpp5-dev \&lt;br /&gt;
 libasound2-dev vlc libssl-dev iotop libasound2-dev  liblog4cpp5-dev \&lt;br /&gt;
 liblivemedia-dev autoconf automake libtool v4l2loopback-dkms liblog4cpp5-dev \&lt;br /&gt;
 libvpx-dev libx264-dev libjpeg-dev libx265-dev linux-headers-dev-sunxi;&lt;br /&gt;
&lt;br /&gt;
Install kernel source and build v4l2loopback module:&lt;br /&gt;
&lt;br /&gt;
  apt install linux-source-5.11.3-dev-sunxi64  #Adjust kernel version number to match current installation with &amp;quot;uname -r&amp;quot;&lt;br /&gt;
  cd /usr/src/v4l2loopback-0.12.3; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; depmod -a&lt;br /&gt;
&lt;br /&gt;
Build required v4l2 software:&lt;br /&gt;
&lt;br /&gt;
 git clone --recursive https://github.com/mpromonet/v4l2tools &amp;amp;&amp;amp; cd v4l2tools &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install;&lt;br /&gt;
 git clone --recursive https://github.com/mpromonet/v4l2rtspserver &amp;amp;&amp;amp; cd v4l2rtspserver &amp;amp;&amp;amp; cmake -D LIVE555URL=https://download.videolan.org/pub/contrib/live555/live.2020.08.19.tar.gz . &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install;&lt;br /&gt;
&lt;br /&gt;
Running the camera:&lt;br /&gt;
 media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:UYVY8_2X8/640x480@1/30]';&lt;br /&gt;
 modprobe v4l2loopback video_nr=10 debug=2;&lt;br /&gt;
 v4l2compress -fH264  -w -vv /dev/video0 /dev/video10 &amp;amp;&lt;br /&gt;
 v4l2rtspserver -v -S -W 640 -H 480 -F 10 -b /usr/local/share/v4l2rtspserver/ /dev/video10&lt;br /&gt;
&lt;br /&gt;
Note that you might get an error when running media-ctl indicating that the resource is busy. This could be because of the motion program that runs on the stock OS installation. Check and kill any running /usr/bin/motion processes before running the above steps.&lt;br /&gt;
&lt;br /&gt;
The v4l2compress/v4l2rtspserver method of streaming the camera uses around ~45-50% of the CPU for compression of the stream into H264 (640x480@7fps) and around 1-2% of the CPU for serving the HLS stream. Total system RAM used is roughly 64MB and the load average is ~0.4-~0.5 when idle, and ~0.51-~0.60 with one HLS client streaming the camera.&lt;br /&gt;
&lt;br /&gt;
You'll probably see about a 2-3s lag with this approach, possibly due to the H264 compression and the lack of hardware acceleration at the moment.&lt;br /&gt;
&lt;br /&gt;
=== gstreamer: JPEG RTSP ===&lt;br /&gt;
&lt;br /&gt;
GStreamer's RTSP server isn't an element you can use with gst-launch, but rather a library. We failed to build its example program, so instead used this very small 3rd party tool which is based on it: https://github.com/sfalexrog/gst-rtsp-launch/&lt;br /&gt;
&lt;br /&gt;
After building gst-rtsp-launch (which is relatively simple on Ubuntu groovy; just &amp;lt;code&amp;gt;apt install libgstreamer1.0-dev libgstrtspserver-1.0-dev&amp;lt;/code&amp;gt; first), you can read JPEG data directly from the camera and stream it via RTSP: &amp;lt;code&amp;gt;media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:JPEG_1X8/1280x720]' &amp;amp;&amp;amp; gst-rtsp-launch 'v4l2src ! image/jpeg,width=1280,height=720 ! rtpjpegpay name=pay0'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This stream can be played using &amp;lt;code&amp;gt;vlc rtsp://pinecube.local:8554/video&amp;lt;/code&amp;gt; or mpv, ffmpeg, gst-play-1.0, etc. If you increase the resolution to 1920x1080, mpv and gst-play can still play it, but VLC will complain &amp;lt;code&amp;gt;The total received frame size exceeds the client's buffer size (2000000).  73602 bytes of trailing data will be dropped!&amp;lt;/code&amp;gt; if you don't tell it to increase its buffer size with &amp;lt;code&amp;gt;--rtsp-frame-buffer-size=300000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== gstreamer: h264 RTSP ===&lt;br /&gt;
&lt;br /&gt;
Left as an exercise to the reader (please update the wiki). Hint: involves bits from the HLS and the JPEG RTSP examples above, but needs a &amp;lt;code&amp;gt;rtph264pay name=pay0&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
=== gstreamer: JPEG RTP UDP ===&lt;br /&gt;
&lt;br /&gt;
Configure camera: &amp;lt;code&amp;gt;media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:JPEG_1X8/1920x1080]'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Transmit with: &amp;lt;code&amp;gt;gst-launch-1.0 v4l2src ! image/jpeg,width=1920,height=1080 ! rtpjpegpay name=pay0 ! udpsink host=$client_ip port=8000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Receive with: &amp;lt;code&amp;gt;gst-launch-1.0 udpsrc port=8000 !  application/x-rtp, encoding-name=JPEG,payload=26 !  rtpjpegdepay !  jpegdec !  autovideosink&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the sender must specify the recipient's IP address in place of &amp;lt;code&amp;gt;$client_ip&amp;lt;/code&amp;gt;; this can actually be a multicast address allowing for many receivers! (You'll need to specify a valid multicast address in the receivers' pipeline also; see &amp;lt;code&amp;gt;gst-inspect-1.0 udpsrc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;gst-inspect-1.0 udpsink&amp;lt;/code&amp;gt; for details.)&lt;br /&gt;
&lt;br /&gt;
=== gstreamer: JPEG RTP TCP ===&lt;br /&gt;
&lt;br /&gt;
Configure camera: &amp;lt;code&amp;gt;media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:JPEG_1X8/1920x1080]'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Transmit with: &amp;lt;code&amp;gt;gst-launch-1.0 v4l2src ! image/jpeg,width=1920,height=1080 ! rtpjpegpay name=pay0 ! rtpstreampay ! tcpserversink host=0.0.0.0 port=1234&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Receive with: &amp;lt;code&amp;gt;gst-launch-1.0 tcpclientsrc host=pinecube.local port=1234 ! application/x-rtp-stream,encoding-name=JPEG ! rtpstreamdepay ! application/x-rtp, media=video, encoding-name=JPEG ! rtpjpegdepay !  jpegdec !  autovideosink&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gstreamer and socat: MJPEG HTTP server ===&lt;br /&gt;
&lt;br /&gt;
This rather ridiculous method uses bash, socat, and gstreamer to implement an HTTP-ish server which will serve your video as an MJPEG stream which is playable in browsers.&lt;br /&gt;
&lt;br /&gt;
This approach has the advantage of being relatively low latency (under a second), browser-compatible, and not needing to reencode anything on the CPU (it gets JPEG data from the camera itself). Compared to HLS, it has the disadvantages that MJPEG requires more bandwidth than h264 for similar quality, pause and seek are not possible, stalled connections cannot jump ahead when they are unstalled, and, in the case of this primitive implementation, it only supports one viewer at a time. (Though, really, the RTSP examples on this page perform very poorly with multiple viewers, so...)&lt;br /&gt;
&lt;br /&gt;
Gstreamer can almost do this by itself, as it has a multipartmux element which produces the headers which precede each frame. But sadly, despite various forum posts lamenting the lack of one over the last 12+ years, as of the end of the 50th year of the UNIX era (aka 2020), somehow nobody has yet gotten a webserver element merged in to gstreamer (which is necessary to produce the HTTP response, which is required for browsers other than firefox to play it). So, here is an absolutely minimal &amp;quot;webserver&amp;quot; which will get MJPEG displaying in a (single) browser.&lt;br /&gt;
&lt;br /&gt;
Create a file called &amp;lt;code&amp;gt;mjpeg-response.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:JPEG_1X8/1920x1080]'&lt;br /&gt;
 b=&amp;quot;--duct_tape_boundary&amp;quot;&lt;br /&gt;
 echo -en &amp;quot;HTTP/1.1 200 OK\r\nContent-type: multipart/x-mixed-replace;boundary=$b\r\n\r\n&amp;quot;&lt;br /&gt;
 gst-launch-1.0 v4l2src ! image/jpeg,width=1920,height=1080 ! multipartmux boundary=$b ! fdsink fd=2 2&amp;gt;&amp;amp;1 &amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
Make it executable: &amp;lt;code&amp;gt;chmod +x mjpeg-response.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the server: &amp;lt;code&amp;gt;socat TCP-LISTEN:8080,reuseaddr,fork EXEC:./mjpeg-response.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And browse to http://pinecube.local:8080/ in your browser.&lt;br /&gt;
&lt;br /&gt;
=== virtual web camera: gstreamer, mjpeg, udp rtp unicast ===&lt;br /&gt;
&lt;br /&gt;
It's possible to set up the pinecube as a virtual camera video device (Video 4 Linux) so that you can use it with video conferencing software, such as Jitsi Meet. Note that this has fairly minimal (&amp;lt;1s) lag when tested on a wired 1Gb ethernet network connection and the frame rate is passable. MJPEG is very wasteful in terms of network resources, so this is something to keep in mind. The following instructions assume Debian Linux (Bullseye) as your desktop machine, but could work with other Linux OSes too. It's possible that someday a similar system could work with Mac OS X provided that someone writes a gstreamer plugin that exposes a Mac OS Core Media DAL device as a virtual webcam, like they did [https://github.com/johnboiles/obs-mac-virtualcam here] for OBS.&lt;br /&gt;
&lt;br /&gt;
First, you will need to set up the pinecube with gstreamer much like the above gstreamer, but in 1280x720 resolution. Also, you will be streaming to the desktop machine using UDP, with IP address represented by $desktop below at UDP port 8000.&lt;br /&gt;
&lt;br /&gt;
 media-ctl --set-v4l2 '&amp;quot;ov5640 1-003c&amp;quot;:0[fmt:JPEG_1X8/1280x720]'&lt;br /&gt;
 gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! rtpjpegpay name=pay0 ! udpsink host=$desktop port=8000&lt;br /&gt;
&lt;br /&gt;
On your desktop machine, you will need to install the gstreamer suite and the special v4l2loopback kernel module to bring the mjpeg stream to the Video 4 Linux device /dev/video10.&lt;br /&gt;
&lt;br /&gt;
 sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly v4l2loopback-dkms&lt;br /&gt;
 sudo modprobe v4l2loopback video_nr=10 max_buffers=32 exclusive_caps=1 # Creates /dev/video10 as a virtual v4l2 device, allocates increased buffers and exposes exclusive capabilities for chromium to find the video device&lt;br /&gt;
 gst-launch-1.0 udpsrc port=8000 ! application/x-rtp, encoding-name=JPEG,payload=26,framerate=30/1 ! rtpjpegdepay ! jpegdec ! video/x-raw, format=I420, width=1280, height=720 ! autovideoconvert ! v4l2sink device=/dev/video10&lt;br /&gt;
&lt;br /&gt;
The most common error found when launching the gstreamer pipeline above is the following error message, which seems to happen when the [https://github.com/umlaeute/v4l2loopback/issues/174 max_buffers aren't set] on the v4l2loopback module (see above), or if there is a v4l client (vlc, chromium) already connected to /dev/video10 when starting the pipeline. There does seem to be a small level of instability in this stack that could be improved.&lt;br /&gt;
&lt;br /&gt;
 gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:&lt;br /&gt;
 streaming stopped, reason not-negotiated (-4)&lt;br /&gt;
&lt;br /&gt;
Now that you have /dev/video10 hooked into the gstreamer pipeline you can then connect to it using VLC. VLC is a good local test that things are working. You can view the stream like this. Note that you could do the same thing with mpv/ffmpeg, but there are [https://www.raspberrypi.org/forums/viewtopic.php?t=270023 problems] currently.&lt;br /&gt;
&lt;br /&gt;
 vlc v4l2:///dev/video10&lt;br /&gt;
&lt;br /&gt;
Be sure to disconnect vlc before trying to use the virtual web camera with chromium. Launch chromium and go to a web conference like [https://meet.jit.si jitsi]. When it prompts you for the camera pick the &amp;quot;Dummy Video Device...&amp;quot; and it should be much like what you see in vlc. Note that firefox isn't really working at this moment and the symptoms appear very similar to the problem with mpv/ffmpeg mentioned above, ie. when they connect to the camera they show only the first frame and then drop. It's unclear whether the bug is in gstreamer, v4l, or ffmpeg (or somewhere in these instructions).&lt;br /&gt;
&lt;br /&gt;
== Debugging camera issues with the gstreamer pipeline ==&lt;br /&gt;
&lt;br /&gt;
If the camera does not appear to work, it is possible to change the &amp;lt;code&amp;gt;v4l2src&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;videotestsrc&amp;lt;/code&amp;gt; and the gstreamer pipeline will produce a synthetic test image without using the camera hardware.&lt;br /&gt;
&lt;br /&gt;
If the camera is only sensor noise lines over a black or white image, the camera may be in a broken state. When in that state, the following kernel messages were observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ 1703.577304] alloc_contig_range: [46100, 464f5) PFNs busy&lt;br /&gt;
[ 1703.578570] alloc_contig_range: [46200, 465f5) PFNs busy&lt;br /&gt;
[ 1703.596924] alloc_contig_range: [46300, 466f5) PFNs busy&lt;br /&gt;
[ 1703.598060] alloc_contig_range: [46400, 467f5) PFNs busy&lt;br /&gt;
[ 1703.600480] alloc_contig_range: [46400, 468f5) PFNs busy&lt;br /&gt;
[ 1703.601654] alloc_contig_range: [46600, 469f5) PFNs busy&lt;br /&gt;
[ 1703.619165] alloc_contig_range: [46100, 464f5) PFNs busy&lt;br /&gt;
[ 1703.619528] alloc_contig_range: [46200, 465f5) PFNs busy&lt;br /&gt;
[ 1703.619857] alloc_contig_range: [46300, 466f5) PFNs busy&lt;br /&gt;
[ 1703.641156] alloc_contig_range: [46100, 464f5) PFNs busy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Camera Adjustments ==&lt;br /&gt;
&lt;br /&gt;
=== Low light mode ===&lt;br /&gt;
&lt;br /&gt;
To get imagery in low-light conditions you can turn on the infrared LED's to light up the dark area and also enable the IR cut filter using the commands below. Note that these were performed on Armbian using the instructions from here [https://github.com/danielfullmer/pinecube-nixos#enablingdisabling-ir-cut-filter].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Run these as root&lt;br /&gt;
&lt;br /&gt;
# Turn on the IR LED lights (note that you can see a faint red glow from them when it's low light)&lt;br /&gt;
# Turn them off with echo 1 instead&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/leds/pine64\:ir\:led1/brightness&lt;br /&gt;
# echo 0 &amp;gt; /sys/class/leds/pine64\:ir\:led2/brightness&lt;br /&gt;
&lt;br /&gt;
# Export gpio, set direction&lt;br /&gt;
# echo 45 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
# echo out &amp;gt; /sys/class/gpio/gpio45/direction&lt;br /&gt;
&lt;br /&gt;
# Enable IR cut filter (note that you can hear the switching noise)&lt;br /&gt;
# Disable with echo 0 instead&lt;br /&gt;
# echo 1 &amp;gt; /sys/class/gpio/gpio45/value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
==== Stock Linux ====&lt;br /&gt;
* [https://files.pine64.org/SDK/PineCube/PineCube%20Stock%20BSP-SDK%20ver1.0.7z Direct Download from pine64.org]&lt;br /&gt;
** MD5 (7zip file): efac108dc98efa0a1f5e77660ba375f8&lt;br /&gt;
** File Size: 3.50GB&lt;br /&gt;
===== How to compile =====&lt;br /&gt;
&lt;br /&gt;
You can either setup a machine for the build environment, or use a Vagrant virtual machine provided by [https://elimo.io Elimo Engineering]&lt;br /&gt;
&lt;br /&gt;
====== On a dedicated machine ======&lt;br /&gt;
&lt;br /&gt;
Recommended system requirements:&lt;br /&gt;
* OS: (L)Ubuntu 16.04&lt;br /&gt;
* CPU: 64-bit based&lt;br /&gt;
* Memory: 8 GB or higher&lt;br /&gt;
* Disk: 15 GB free hard disk space&lt;br /&gt;
&lt;br /&gt;
'''Install required packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip-full git make u-boot-tools libxml2-utils bison build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Install older Make 3.82 and Java JDK 6'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd /tmp&lt;br /&gt;
wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz&lt;br /&gt;
tar xfv make-3.82.tar.gz&lt;br /&gt;
cd make-3.82&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo apt purge -y make&lt;br /&gt;
sudo ./make install&lt;br /&gt;
cd ..&lt;br /&gt;
# Please, download jdk-6u45-linux-x64.bin from https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html (requires free login)&lt;br /&gt;
chmod +x jdk-6u45-linux-x64.bin &lt;br /&gt;
./jdk-6u45-linux-x64.bin &lt;br /&gt;
sudo mkdir /opt/java/&lt;br /&gt;
sudo mv jdk1.6.0_45/ /opt/java/&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.6.0_45/bin/javac 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_45/bin/java 1&lt;br /&gt;
sudo update-alternatives --install /usr/bin/javaws javaws /opt/java/jdk1.6.0_45/bin/javaws 1&lt;br /&gt;
sudo update-alternatives --config javac&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
sudo update-alternatives --config javaws&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Unpack SDK and then compile and pack the image'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
7z x 'PineCube Stock BSP-SDK ver1.0.7z'&lt;br /&gt;
mv 'PineCube Stock BSP-SDK ver1.0' pinecube-sdk&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Using Vagrant ======&lt;br /&gt;
&lt;br /&gt;
You can avoid setting up your machine and just use Vagrant to spin up a development environment in a VM.&lt;br /&gt;
&lt;br /&gt;
Just clone the [https://github.com/elimo-engineering/pinecube-sdk-vagrant Elimo Engineering repo] and follow the instructions in the [https://github.com/elimo-engineering/pinecube-sdk-vagrant/blob/main/README.md readme file]&lt;br /&gt;
&lt;br /&gt;
After spinning up the VM, you just need to run the build:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinecube-sdk/camdroid&lt;br /&gt;
source build/envsetup.sh&lt;br /&gt;
lunch&lt;br /&gt;
mklichee&lt;br /&gt;
make -j3&lt;br /&gt;
pack&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Community Projects ==&lt;br /&gt;
&lt;br /&gt;
Share your project with a PineCube here!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineCube]] [[Category:Allwinner(Sochip) S3]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=SOEDGE&amp;diff=10700</id>
		<title>SOEDGE</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=SOEDGE&amp;diff=10700"/>
		<updated>2021-06-12T21:45:17Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SOEdge is a 3TOPS compute module that can be paired with the SOPine base board or USB 3.0 and PCIe adapters for development. It can connect to a SBC, such as the ROCKPro64 or a regular PC. &lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
=== SOEdge Software Release ===&lt;br /&gt;
&lt;br /&gt;
The SOEdge software releases can be found in the article [[SOEdge Software Release]].&lt;br /&gt;
&lt;br /&gt;
== Accessories Step-by-Step Guides ==&lt;br /&gt;
Under [[Accessories_Step_by_Step_Guides|'Guides for model A baseboard accessories']] you can find instructions and guides concerning:&lt;br /&gt;
* Enclosures&lt;br /&gt;
* Bluetooth and WiFi module&lt;br /&gt;
* Real Time Clock (RTC) battery&lt;br /&gt;
* Real Time Clock (RTC) battery holder&lt;br /&gt;
* First and third party cases&lt;br /&gt;
* Featured 3D printed cases (and more)&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK18_Series/2019/0529/989.html Rockchip RK1808]&lt;br /&gt;
[[File:RK1808_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a35 Dual-core ARM Cortex-A35 Processor@1600-2000Mhz]&lt;br /&gt;
* A power-efficient ARM 64-Bit Armv8-A architecture&lt;br /&gt;
* AArch32 for full backward compatibility with Armv7&lt;br /&gt;
* Support NEON Advanced SIMD (Single Instruction Multiple Data) instruction for acceleration of media and signal processing function&lt;br /&gt;
* Support Large Physical Address Extensions(LPAE)&lt;br /&gt;
* VFPv4 Floating Point Unit&lt;br /&gt;
* 32KB L1 Instruction cache and 32KB L1 Data cache&lt;br /&gt;
* AArch64 for 64-bit support and new architectural features&lt;br /&gt;
* TrustZone security technology&lt;br /&gt;
* Neon Advanced SIMD&lt;br /&gt;
* DSP and SIMD extensions&lt;br /&gt;
* VFPv4 Floating point&lt;br /&gt;
* Hardware virtualization support&lt;br /&gt;
* 128KB L2 cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Neural Process Unit NPU Capability ===&lt;br /&gt;
* [https://www.verisilicon.com/en/IPPortfolio/VivanteNPUIP NPU IP from Verisilicon Vivante]&lt;br /&gt;
* Support max 1920 Int8 MAC operation per cycle&lt;br /&gt;
* Support max192 Int16 MAC operation per cycle&lt;br /&gt;
* Support max 64 FP16 MAC operation per cycle&lt;br /&gt;
* 512KB internal buffer&lt;br /&gt;
* One isolated voltage domain to support DVFS&lt;br /&gt;
* [https://github.com/VeriSilicon/acuity-models Acuity models Github]&lt;br /&gt;
&lt;br /&gt;
[[File:Vivante_Acuity_SDK.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 2GB DDR4.&lt;br /&gt;
* Storage Memory: 128Mb SPI Flash and optional eMMC module from 16GB up to 128GB&lt;br /&gt;
&lt;br /&gt;
== SOEdge Baseboard Features ==&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* 10/100/1000Mbps Etherne&lt;br /&gt;
* WiFi 802.11 b/g/n with Bluetooth 4.0 (optional)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, support SDHC and SDXC, storage up to 256GB&lt;br /&gt;
* USB -	2 USB2.0 Host port&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1080P&lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header&lt;br /&gt;
* PCIe 2x open ended slot&lt;br /&gt;
&lt;br /&gt;
== SOEdge Module and Baseboard Information, Schematics, and Certifications ==&lt;br /&gt;
* Model &amp;quot;A&amp;quot; Baseboard Dimensions: 133mm x 80mm x 19mm&lt;br /&gt;
* Input Power: DC 12V @ 3A 5.5OD/2.1ID Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* SOEdge Module Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEdge-Schematic-v2.0-190919.pdf SOEdge Module ver 2.0 20190919 Schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SoEdge-PCB-placement-v2.0-topplace.pdf SOEdge Module ver 2.0 20190919 PCB Component Placement Top PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SoEdge-PCB-placement-v2.0-bottomplace.pdf SOEdge Module ver 2.0 20190919 PCB Component Placement Bottom PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SoEdge-PCB-placement-v2.0-topplace.dxf SOEdge Module ver 2.0 20190919 PCB Component Placement Top Drawing file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SoEdge-PCB-placement-v2.0-bottomplace.dxf SOEdge Module ver 2.0 20190919 PCB Component Placement Bottom Drawing file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEdge%20Pin%20Assignments%20ver%201.00.xlsx SOEdge Module Pin Assignment ver 1.0 in Excel format(includes comparison chart to SOPine)]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEdge%20Pin%20Assignments%20ver%201.00.ods SOEdge Module Pin Assignment ver 1.0 in Open Document format(includes comparison chart to SOPine)]&lt;br /&gt;
* SOEdge Model &amp;quot;A&amp;quot; Baseboard Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEDGE_MODEL_A_BASEBOARD_Schematic-20210223.pdf SOEdge Model &amp;quot;A&amp;quot; Baseboard Schematic 20210223 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEDGE_MODEL_A_BASEBOARD_PCB-TOP-20210223.pdf SOEdge Model &amp;quot;A&amp;quot; Baseboard 20210223 PCB Component Placement Top PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEDGE_MODEL_A_BASEBOARD_PCB-BOT-20210223.pdf SOEdge Model &amp;quot;A&amp;quot; Baseboard 20210223 PCB Component Placement Bottom PDF file]&lt;br /&gt;
* SOEdge Neural AI Stick Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/SOEdge/SOEdge%20Neural%20AI%20Stick%20Schematic_V10.pdf SOEdge Neural AI Stick PDF file]&lt;br /&gt;
* SOEdge/SOPine/PINE A64 Wifi/BT module Schematic&lt;br /&gt;
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/A64-DB-WIFI-BT-REV%20B.pdf PINE A64 Wifi/BT Module Schematic]&lt;br /&gt;
* SOEdge module together with model &amp;quot;A&amp;quot; baseboard Certification:&lt;br /&gt;
** Disclaimer: Please note that SOEdge module is not a &amp;quot;final&amp;quot; product and in general certification is not necessary. However, SOEdge module still submits the mpdel A baseboard for FCC, CE, and ROHS certifications and obtain the certificates to prove that can pass the testing. Please note, a final commercial product needs to perform its own testing and obtain its own certificate.&lt;br /&gt;
** Not yet available&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK1808 SoC information:&lt;br /&gt;
** [http://opensource.rock-chips.com/images/4/43/Rockchip_RK1808_Datasheet_V1.2_20190527.pdf Rockchip RK1808 ver 1.2 datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/SOEdge/Rockchip%20RK1808%20TRM%20Part1%20V1.2--20190826%20open%20source.pdf Rockchip TK1808 Technical Reference Manual Part 1]&lt;br /&gt;
* Rockchip RK809 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://rockchip.fr/RK809%20datasheet%20V1.01.pdf Rockchip RK809 PMIC Datasheet]&lt;br /&gt;
* DDR4 information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/SOEdge/Micron%208Gb_DDR4_SDRAM.pdf Micron DDR4 Datasheet]&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]&lt;br /&gt;
* SPI NOR Flash information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]&lt;br /&gt;
* '''SOEdge Related:'''&lt;br /&gt;
** LCD Touch Screen Panel information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/FY07024DI26A30-D_feiyang_LCD_panel.pdf 7.0&amp;quot; 1200x600 TFT-LCD Panel Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/HK70DR2459-PG-V01.pdf Touch Panel Specification]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/GT911%20Capacitive%20Touch%20Controller%20Datasheet.pdf GOODiX GT911 5-Point Capacitive Touch Controller Datasheet]&lt;br /&gt;
** Ethernet PHY information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf Realtek RTL8211 10/100/1000M Ethernet Transceiver for SOEdge model A baseboard]&lt;br /&gt;
** Wifi/BT module information:&lt;br /&gt;
*** [https://files.pine64.org/doc/Pine%20A64%20Schematic/A64-DB-WIFI-BT-REV%20B.pdf SOEdge/SOPine/PINE A64 Wifi/BT Module Schematic]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf Realtek RTL8723BS WiFi with BT SDIO]&lt;br /&gt;
** Enclosure information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/case/playbox_enclosure_20160426.stp Playbox Enclosure 3D file]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/case/ABS_enclosure_20160426.stp ABS Enclosure 3D file]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/case/pine64%20Die%20Cast%20casing-final.jpg Outdoor Aluminum Cast Dust-proof IP67 Enclosure Drawing]&lt;br /&gt;
** Connector information:&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/ePH.pdf 2.0mm PH Type connector specification use in Lithium Battery (VBAT) port and RTC Battery port]&lt;br /&gt;
*** [https://files.pine64.org/doc/datasheet/pine64/0.5FPC%20Front%20Open%20Connector%20H=1.5.pdf 0.5mm Pitch cover type FPC connector specification use in DSI port, TP port and CSI port]&lt;br /&gt;
&lt;br /&gt;
== SOEdge/SOPine Cluster Board Resource ==&lt;br /&gt;
* Cluster board is an hardware open source project and will be available at PINE64 store on late January 2018. &lt;br /&gt;
* Please note that this project is not &amp;quot;OSH&amp;quot; compliance.:&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/PINE64%20CLUSTER%20BOARD_2_2.DSN Clusterboard version 2.2 Schematic Capture source file]&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/PINE64%20CLUSTER%20BOARD_2_2_Schematic.pdf Clusterboard version 2.2 Schematic Capture PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/PINE64%20CLUSTER%20BOARD_2_2.brd Clusterboard version 2.2 PCB Job source file]&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/PINE64%20CLUSTER%20BOARD%20V2.2-gerber.rar Clusterboard version 2.2 PCB Gerber file]&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/PINE64%20CLUSTER%20BOARD_2_2_PCB.pdf Clusterboard version 2.2 PCB Layout PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/clusterboard/clusterboard_20pins_header.jpg Clusterboard 20pins header definition]&lt;br /&gt;
** [https://myhub.autodesk360.com/ue2b2f72e/g/shares/SH56a43QTfd62c1cd96840f4ec37c60bcf12 Clusterboard 3D drawing in Fusion360]&lt;br /&gt;
** [https://myhub.autodesk360.com/ue2b2f72e/g/shares/SH56a43QTfd62c1cd968cd6bc203ac753401?viewState=NoIgbgDAdAjCA0ICGBmARgEwGZIOwGMBaDFADgFNCAWfAJi2o1IFZDmlTSIA2DW8-FTQgAukA Clusterboard PDF drawing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux Image Releases =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stock BSP ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux ver 1.1 Build from SDK ===&lt;br /&gt;
* Please unzip first and then using Rockchip tool to flash in&lt;br /&gt;
* [https://wiki.pine64.org/index.php/NOOB#Flashing_to_eMMC_using_Rockchip_Tools_.28Rock64_Only.29 Guide to flashing eMMC using Rockchip Tools]&lt;br /&gt;
** [http://files.pine64.org/os/SOEdge/stock/SOEdge_linux_v1.1.img.gz download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): a6629f997ae2cae7d9d5324c4e942deda9&lt;br /&gt;
** File Size: 119MB&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux ver 1.1 Build as USB Stick application from SDK ===&lt;br /&gt;
* Please unzip first and then using Rockchip tool to flash in&lt;br /&gt;
* [https://wiki.pine64.org/index.php/NOOB#Flashing_to_eMMC_using_Rockchip_Tools_.28Rock64_Only.29 Guide to flashing eMMC using Rockchip Tools]&lt;br /&gt;
** [http://files.pine64.org/os/SOEdge/stock/SOEdge_linux_usb_compute_stick.img.gz download from pine64.org]&lt;br /&gt;
** MD5 (GZip file): af6ac45995f7ddd9343a7052efffaf30&lt;br /&gt;
** File Size: 47MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Factory Test Build ==&lt;br /&gt;
&lt;br /&gt;
* Factory Test Build by Gamiee&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC Module and above)&lt;br /&gt;
** [http://files.pine64.org/os/SOEdge/gamiee/update-soedge-factory-test-2021-03-23.img.gz download from pine64.org]&lt;br /&gt;
** MD5 (GZip file): b3d09933734eaaebb34c357b73f5c69e&lt;br /&gt;
** File Size: 119MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux BSP SDK =&lt;br /&gt;
&lt;br /&gt;
== Linux BSP Kernel ver 1.1 ==&lt;br /&gt;
* [http://files.pine64.org/SDK/SOEdge/SOEdge_RK-BSP_SDK_v1.1.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): a66c92e52824762d7c0a63400d6342ea&lt;br /&gt;
** File Size: 13.55GB&lt;br /&gt;
&lt;br /&gt;
== Linux BSP Kernel ver 1.1 as USB Stick application ==&lt;br /&gt;
* [http://files.pine64.org/SDK/SOEdge/SOEdge_RK-BSP_USB_Dongle_SDK_v1.1.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 46f12441e8c35c06184681f355c89651&lt;br /&gt;
** File Size: 9.65GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Resources ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:SOPine]] [[Category:Rockchip RK1808]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Software_Releases&amp;diff=10699</id>
		<title>Pinebook Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Software_Releases&amp;diff=10699"/>
		<updated>2021-06-12T21:44:42Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x3)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux Image Releases =&lt;br /&gt;
&lt;br /&gt;
'''Special thanks to Sunxi community, ayufan, and longsleep for their contributions'''&lt;br /&gt;
&lt;br /&gt;
Below you will find useful links to various resources and forum threads:&lt;br /&gt;
* [https://linux-sunxi.org/Pine_Pinebook Sunxi Pinebook Page]&lt;br /&gt;
&lt;br /&gt;
==Manjaro ARM==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Manjaro KDE ARM Community Build Image [microSD / eMMC Boot]  ===&lt;br /&gt;
* [https://osdn.net/projects/manjaro-arm/storage/pinebook/kde-plasma/ Direct download from osdn.net]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro MATE ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://osdn.net/projects/manjaro-arm/storage/pinebook/mate/ Direct download from osdn.net]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro XFCE ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://osdn.net/projects/manjaro-arm/storage/pinebook/xfce/ Direct download from osdn.net]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro I3 ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://osdn.net/projects/manjaro-arm/storage/pinebook/i3/ Direct download from osdn.net]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro SWAY ARM Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://osdn.net/projects/manjaro-arm/storage/pinebook/sway/ Direct download from osdn.net]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster [microSD / eMMC Boot] ===&lt;br /&gt;
* Armbian provides a build system and images for Debian/Xenial with BSP kernel and mainline kernel&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://dl.armbian.com/pinebook-a64/Buster_legacy_desktop Pinebook Armbian download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-a64/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal XFCE Desktop [microSD / eMMC Boot]  ===&lt;br /&gt;
* Armbian provides a build system and images for Debian/Xenial with BSP kernel and mainline kernel&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://dl.armbian.com/pinebook-a64/Focal_legacy_desktop Pinebook Armbian download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-a64/ site].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KALI ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== KALI Build Image by Defensive Security [microSD / eMMC Boot] [2020.2] ===&lt;br /&gt;
* To learn more, please visit the official [https://www.offensive-security.com/kali-linux-arm-images/#2536677610546-d94f090d-c5ea KALI by Defensive Security website]&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://images.kali.org/arm-images/kali-linux-2020.4-pinebook.img.xz Direct download from Defensive Security]&lt;br /&gt;
*** MD5 (XZ file): 7E3643730D2D287A3726B641A6DA177C&lt;br /&gt;
*** File Size: 686MB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: kali&lt;br /&gt;
** password: kali&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AOSC ==&lt;br /&gt;
[[File:aosc.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* AOSC using LZ4 compression algorithm, please visit the [https://github.com/lz4/lz4 LZ4 github site] for utility&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module.&lt;br /&gt;
* 8GB microSD card and above or 16GB eMMC module and above&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
=== AOSC KDE Community Build Image [microSD / eMMC Boot]  ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/kde/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC GNOME Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/gnome/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC MATE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/mate/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC XFCE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/xfce/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
=== AOSC LXDE Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* [https://releases.aosc.io/os-arm64/sunxi64/lxde/pinebook/ Direct download from AOSC]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KDE Neon Image ==&lt;br /&gt;
[[File:kde_neon.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== KDE Neon Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
&lt;br /&gt;
** [https://files.kde.org/neon/images/pinebook-remix-nonfree/useredition/ Direct download latest release build from KDE Neon Pinebook and 1080P Pinebook]&lt;br /&gt;
* Login with&lt;br /&gt;
** username: live&lt;br /&gt;
** password: live&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KDE Neon Community Build Image [microSD / eMMC Boot] ===&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
* For 14.1' and 11.6&amp;quot; Pinebook, please choose &amp;quot;neon-pinebook-remix-useredition-202xxxxx-1500-arm64.img.gz&amp;quot;&lt;br /&gt;
* For 1080P 11.6&amp;quot; Pinebook, please choose &amp;quot;neon-pinebook-remix-useredition-202xxxxx-1500-arm64-1080p.img.gz&amp;quot;&lt;br /&gt;
** [https://files.kde.org/neon/images/pinebook-remix-nonfree/useredition/ Direct download latest release build from KDE Neon 1080P Pinebook]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Q4OS Community Build Image [microSD Boot] ===&lt;br /&gt;
* Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'&lt;br /&gt;
* To learn more please visit the [https://forum.pine64.org/showthread.php?tid=4506 forum] or official [https://q4os.org/index.html Q4OS website]&lt;br /&gt;
* DD image for 14.1&amp;quot; and 11.6&amp;quot; Pinebook (8GB microSD card and above)&lt;br /&gt;
** [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge and look for q4os-x.x-pinebook.xx.zip]&lt;br /&gt;
* DD image for 1080P 11.6&amp;quot; Pinebook (for 8GB microSD card and above)&lt;br /&gt;
** [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge and look for q4os-x.x-pinebook1080p.xx.zip]&lt;br /&gt;
* login with:&lt;br /&gt;
** username: adminq&lt;br /&gt;
** password: adminq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DietPi ==&lt;br /&gt;
[[File:dietpi.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* DietPi is a '''lightweight''', yet '''easy to setup''' and '''feature-rich''' Linux distribution, based on '''Debian'''.&lt;br /&gt;
* To find out more about DietPi, please visit the [https://dietpi.com/docs/ official documentation].&lt;br /&gt;
* Discuss the Pinebook build on the [https://forum.pine64.org/showthread.php?tid=12512 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB micro SD card and above)&lt;br /&gt;
** [https://dietpi.com/downloads/images/DietPi_Pinebook-ARMv8-Buster.7z Direct download from dietpi.com]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username: '''root'''&lt;br /&gt;
** Password: '''dietpi'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
[[File:slackware.jpg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Slackware is a very old, interesting, convenient and easy distribution.&lt;br /&gt;
* Visit the project's website here (https://fail.pp.ua)&lt;br /&gt;
* You can follow the ongoing discussion about Slackware on the PINE64 forum (https://forum.pine64.org/showthread.php?tid=9439)&lt;br /&gt;
* The Slackware build using LRZ compression algorithm, please visit the [https://github.com/ckolivas/lrzip lrunzip github site] for utility&lt;br /&gt;
&lt;br /&gt;
=== Slackware Aarch64 Miniroot Community Build Image [microSD Boot] ===&lt;br /&gt;
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://3space.xyz/pineslarm/ Direct download from developer KRT site and look for slarm64-current-aarch64-base-rootfs-xxxxxxxx-x.x.xx-pinebook-build-xxxxxxxx.img.lrz]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username : root&lt;br /&gt;
** Password : password&lt;br /&gt;
&lt;br /&gt;
=== Slackware Aarch64 XFCE Community Build Image [microSD Boot] ===&lt;br /&gt;
* Only work on 1080P 11.6&amp;quot; Pinebook, not applicable to 14.1&amp;quot; and 11.6&amp;quot; Pinebook.&lt;br /&gt;
* System with a graphical shell&lt;br /&gt;
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://3space.xyz/pineslarm/ Direct download from developer KRT site and look for slarm64-current-aarch64-xfce-rootfs-xxxxxxxx-x.x.xx-pinebook-build-xxxxxxxx.img.lrz]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username : root&lt;br /&gt;
** Password : password&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Netrunner [No Longer Maintained] ==&lt;br /&gt;
[[File:netrunner.jpg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Netrunner [20180417] [microSD Boot] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* You can visit the Netrunner website [https://www.netrunner.com/netrunner-for-pinebook/ here]&lt;br /&gt;
* DD image:&lt;br /&gt;
** [https://sourceforge.net/projects/netrunneros/files/netrunner-arm/pinebook/ Direct download from sourceforge.net]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RISC_OS [No Longer Maintained] ==&lt;br /&gt;
[[File:RISC_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== RISC OS Community Build Image [microSD Boot] [19.02] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* To learn more about RISC OS please visit [https://www.riscosopen.org/ RISC OS website] &lt;br /&gt;
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https:///files.pine64.org/os/Pinebook/RISCOS/pine14_riscos_1GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4BE5698516FAF8420AEA34A422C20991&lt;br /&gt;
*** size: 50MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= BSD Image Releases =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== NetBSD Community Build Image [microSD Boot] ===&lt;br /&gt;
* To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page] &lt;br /&gt;
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://www.invisible.ca/arm/ Direct download latest release build from NetBSD by select 64bit - Pinebook]&lt;br /&gt;
** size: 345MB&lt;br /&gt;
* Console and SSH default login:&lt;br /&gt;
** username: root&lt;br /&gt;
** password: [none]&lt;br /&gt;
* Instructions concerning enabling SSH can be found [https://www.netbsd.org/docs/guide/en/chap-boot.html#chap-boot-ssh here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== OpenBSD 6.6-snapshot, Community Build Image (FVWM2 WM) ===&lt;br /&gt;
* To learn more about OpenBSD please visit [https://www.openbsd.org OpenBSD main page]&lt;br /&gt;
* DD image to microSD card or eMMC module (at least 8GB). Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** https://www.dropbox.com/s/79hpdpehrbbk984/pinebook-2019-11-04.img.tgz.sha256?dl=0 (sha256)&lt;br /&gt;
** https://www.dropbox.com/s/yas1glfvvucb9a0/pinebook-2019-11-04.img.tgz?dl=0 (image)&lt;br /&gt;
** compressed size: 3.6GB&lt;br /&gt;
* Console and SSH default login:&lt;br /&gt;
** username: pine64&lt;br /&gt;
** username: pine64&lt;br /&gt;
** root password: pine64&lt;br /&gt;
* If you need more information please ping: https://forum.pine64.org/member.php?action=profile&amp;amp;uid=12423&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Android Image Releases =&lt;br /&gt;
&lt;br /&gt;
== Android 7.x [No Longer Maintained] ==&lt;br /&gt;
[[File:android_7.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Android 7.1 Community Build Image [microSD Boot] by ayufan ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6' Pinebook.&lt;br /&gt;
* Special thanks to ayufan, Icenowy, lennyraposo, longsleep, lukasz, tkaiser, Xalius and PINE64 community contributors&lt;br /&gt;
* Please use good random IO access performance microSD card such as Samsung EVO when try out Android 7.1&lt;br /&gt;
* DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://github.com/ayufan-pine64/android-7.1/releases/latest Direct download latest release build from ayufan github and look for android-7.1-pine-a64-pinebook-x.x.x-xx.img.gz]&lt;br /&gt;
* Please allows some time (around 5 minutes) for the initialization process on 1st boot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android 6.x eMMC ==&lt;br /&gt;
[[File:android_6.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 14.1&amp;quot; and 11.6&amp;quot; Pinebook [microSD to eMMC] [20170605] ===&lt;br /&gt;
* Rootable build, online update (OTA) only work when the build still not root&lt;br /&gt;
* LCD resolution is 1366 x 768&lt;br /&gt;
* Rooted DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/android/android-ver6.0.1-rooted-20170605-pinebook-sd2emmc-lpddr3.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): C99BF459C6724BA73F12C532E87A8BA5&lt;br /&gt;
*** File Size: 776MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 1080P 11.6&amp;quot; Pinebook [microSD to eMMC] [20181001] ===&lt;br /&gt;
* Rootable build&lt;br /&gt;
* LCD resolution is 1920 x1080&lt;br /&gt;
* Rooted DD image (advise 4GB microSD card and above):&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/android/android-ver6.0.1-rooted-20181001-1080P-pinebook-sd2emmc-lpddr3.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): E433A148CEBD743EADE6CAA765331A4B&lt;br /&gt;
*** File Size: 595MB&lt;br /&gt;
&lt;br /&gt;
=== Android 6.0.1 Stock Image for 1080P 11.6&amp;quot; Pinebook [microSD boot] [20181001] ===&lt;br /&gt;
* Rootable build&lt;br /&gt;
* LCD resolution is 1920 x1080&lt;br /&gt;
* Please use high performance microSD card for Android boot which request frequent random read access. &lt;br /&gt;
* Please ignore warning message regarding SD corrupted on home screen upper left corner&lt;br /&gt;
* DD images:&lt;br /&gt;
** For 8GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): CD27DF6083E6A4A5E7C8B986EB92FAA7&lt;br /&gt;
**** File Size: 553MB&lt;br /&gt;
** For 16GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 1376AAE8382E96FD7B45B0998A5CD6E9&lt;br /&gt;
**** File Size: 703MB&lt;br /&gt;
** For 32GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): B54E7F323B316750654E385B078AEC58&lt;br /&gt;
**** File Size: 867MB&lt;br /&gt;
** For 64GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/Pinebook/android/android-rooted-ver6.0.1-20181001-1080P-pinebook-sdboot-lpddr3-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): C8DBC6293EB51E58F91E27364C8C587D&lt;br /&gt;
**** File Size: 734MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== /e/ [No Longer Maintained] ==&lt;br /&gt;
[[File:e.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== /e/OS Community Build Image p [microSD and eMMC Boot] [20190926] ===&lt;br /&gt;
* Only work on 1080P 11.6&amp;quot; Pinebook, not applicable to 14.1&amp;quot; and 11.6&amp;quot; Pinebook.&lt;br /&gt;
* To learn more about /e/OS, please visit the [https://e.foundation/ official website]&lt;br /&gt;
* Please check out [https://medium.com/@edevelopers.blog/e-os-ports-for-the-pinebook-and-pinephone-596139c76479 this article] on the Pinebook /e/ build.&lt;br /&gt;
* For thread diiscussion please visit the [https://forum.pine64.org/showthread.php?tid=7954 PINE64 forum]&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/e/e-n-pinebook_20190926.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4DC46A4E3ED2B47F4830E96DFCBBC6D8&lt;br /&gt;
*** File Size: 685MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bliss OS [No Longer Maintained] ==&lt;br /&gt;
[[File:bliss_os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Bliss OS [20170919] [microSD Boot] ===&lt;br /&gt;
* Only work on 14.1&amp;quot; and 11.6&amp;quot; Pinebook, not applicable to 1080P 11.6&amp;quot; Pinebook.&lt;br /&gt;
* An Open-Source OS, based on Android, for phones, tablets &amp;amp; PCs.&lt;br /&gt;
* Multi-Windows Android Build&lt;br /&gt;
* You can visit the Bliss OS website [https://blissroms.com/ here]&lt;br /&gt;
* DD image:&lt;br /&gt;
** [https://files.pine64.org/os/Pinebook/Bliss/Bliss-Pinebook_09.19.17_01.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 6B5BC28D69D575BA5448AD8081A0D356&lt;br /&gt;
*** File Size: 943MB&lt;br /&gt;
* Use the Taskbar launcher for Desktop mode UI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux BSP SDK =&lt;br /&gt;
== Linux BSP [4.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver4.0/A64-BSP-4.0.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 802D7C92D27177CBD17567359F9845A7&lt;br /&gt;
** File Size: 4.67GB&lt;br /&gt;
&lt;br /&gt;
== Linux BSP [3.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver3.0/A64-BSP-3.0.tgz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 898ACF446851DF3BE7B643F62CE3CE84&lt;br /&gt;
** File Size: 4.18GB&lt;br /&gt;
&lt;br /&gt;
== Linux BSP [2.0], kernel [v3.10], with GPL compliance header ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver2.0/A64-BSP-2.0-GPL.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 2EE11C9AED246C17995493F213A6A6DA&lt;br /&gt;
** File Size: 6.41GB&lt;br /&gt;
&lt;br /&gt;
= Android SDK =&lt;br /&gt;
== Android Oreo [v8.1] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver4.0/A64-Android-8.1-SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-Gzip file): 7E73672FE84F8CD099264D640E107EA3&lt;br /&gt;
** File Size: 28.87.95GB&lt;br /&gt;
&lt;br /&gt;
== Android Nougat [v7.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver3.0/A64-Android-7.0-SDK.tgz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 5D23D65BC1AA32B9048F62A4176BD9B3&lt;br /&gt;
** File Size: 22.60GB&lt;br /&gt;
&lt;br /&gt;
== Android Marshmallow [v6.0] ==&lt;br /&gt;
* [https://files.pine64.org/os/sdk/A64-ver2.0/A64-Android-6.0-SDK.zip Direct Download from pine64.org]&lt;br /&gt;
** MD5 (Zip file): 12362D0B63EBF29FC363A50A942346D5&lt;br /&gt;
** File Size: 12.17GB&lt;br /&gt;
&lt;br /&gt;
= Mali-400 64-bit Driver =&lt;br /&gt;
== Mali-400 64-bit Driver [20160622] ==&lt;br /&gt;
* [[Mali_Driver|Mali 64-bit Driver Download]]&lt;br /&gt;
&lt;br /&gt;
= Other Tools =&lt;br /&gt;
* [https://drive.google.com/file/d/0B0cEs0lxTtL3VmstaEFfbmU1NFk/view?usp=sharing Allwinner PhoenixCard Bootable SD-Card Creator]&lt;br /&gt;
* [https://chinagadgetsreviews.com/download-dragonface-latest-version-v-2-2-5.html Allwinner DragonFace V2.2.5 software that will let you edit and modify A64 Android Build PhoenixCard image]&lt;br /&gt;
** [https://mega.nz/#!QxEjmaKB!S5nsVnzXVZg5aJ6qLtPOx1yJDPlbl0Vs4iV9VliRpE8 Direct download at Mega]&lt;br /&gt;
&lt;br /&gt;
= Checking microSD Card Performance and whether it is Counterfeit =&lt;br /&gt;
* [https://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/comment-page-3/#comment-9861 H2testw 1.4 – Gold Standard In Detecting USB Counterfeit Drives]&lt;br /&gt;
* [https://oss.digirati.com.br/f3/ F3 - an alternative to h2testw]&lt;br /&gt;
This will help you to determine if the SD-Card is Counterfeit Drive or not&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=PINE_H64&amp;diff=10698</id>
		<title>PINE H64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=PINE_H64&amp;diff=10698"/>
		<updated>2021-06-12T21:43:09Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x8)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''PINE H64''' is a Single Board Computer by Pine64. It is powered by an Allwinner “H6” Quad-Core ARM Cortex A53 64-Bit Processor with a MALI T-722 GPU. The PINE H64 is equipped with up to 3GB of LPDDR3 PC-1600 system memory and 128Mbit of SPI boot Flash. There is also an optional eMMC module (up to 128GB) and a microSD slot for booting. The board is equipped with an onboard 802.11n Wifi/BT chipset, one USB 3.0 host port, two USB 2.0 host ports, Gigabit Ethernet, a PI-2 GPIO bus, an Euler GPIO bus as well as many other peripheral device interfaces such as UART, SPI, and I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C.&lt;br /&gt;
&lt;br /&gt;
== PINE H64 Model ==&lt;br /&gt;
&lt;br /&gt;
There are two types of PINE H64 models:&lt;br /&gt;
&lt;br /&gt;
Click on the model A photo to access the model A main page. &lt;br /&gt;
&lt;br /&gt;
For model B, stay on the current page.&lt;br /&gt;
&lt;br /&gt;
* [[PINE H64 Model-A Main Page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PINE H64 Model B Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
= Linux Image Releases =&lt;br /&gt;
&lt;br /&gt;
== Armbian==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster for XFCE Desktop Usage ===&lt;br /&gt;
* Armbian provides a mainline kernel build images for Debian Buster&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC module and above)&lt;br /&gt;
** [https://dl.armbian.com/pineh64/Buster_current_desktop Armbian's PINE H64 Debian Buster download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pine-h64/ site]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster for Server and Light Desktop Usage ===&lt;br /&gt;
* Armbian provides a mainline kernel build images for Debian Buster&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC Module and above)&lt;br /&gt;
** [https://dl.armbian.com/pineh64/Buster_current Armbian's PINE H64 Debian Buster download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pine-h64/ site]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Bionic for Server and Light Desktop Usage ===&lt;br /&gt;
* Armbian provides a mainline kernel build images for Ubuntu Bionic&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC module and above)&lt;br /&gt;
** [https://dl.armbian.com/pineh64/Bionic_current Armbian's PINE H64 Ubuntu Bionic download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pine-h64/ site]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal for Server and Light Desktop Usage ===&lt;br /&gt;
* Armbian provides a mainline kernel build images for Ubuntu Focal&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC module and above)&lt;br /&gt;
** [https://dl.armbian.com/pineh64/Focal_current Armbian's PINE H64 Ubuntu Focal download site]&lt;br /&gt;
* To find out more about Armbian and available options please visit their [https://www.armbian.com/pine64/ site]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AOSC ==&lt;br /&gt;
[[File:aosc.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== AOSC Community Build Image with Mate Desktop [microSD Boot] [20190708] ===&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* Known issue: no audio sound output.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/pine-h64/model-B/AOSC/sun50i-h6-pine-h64_sunxi64-mate_2019-07-08.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 7A6EC6A088BA75E4F4BEF884EA93EE6C&lt;br /&gt;
*** File Size: 3.47GB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
&lt;br /&gt;
=== AOSC Community Build Image with Mate Desktop [eMMC Boot] [20180709] ===&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* Known issue: no audio sound output.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/pine-h64/model-B/AOSC/sun50i-h6-pine-h64_sunxi64-mate_2019-07-09_mmc2.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): FFEA20480A305A644D2C4CB52DC43046&lt;br /&gt;
*** File Size: 3.49GB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
&lt;br /&gt;
=== AOSC Community Build Image with Mate Desktop [microSD Boot] [20190218] ===&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* Known issue: no audio sound output.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/pine-h64/model-B/AOSC/sun50i-h6-pine-h64_sunxi64-mate_2019-02-18.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 0274E1011BA58A45CB2B2104CEBD23AA&lt;br /&gt;
*** File Size: 2.63GB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
&lt;br /&gt;
=== AOSC Community Build Image with Mate Desktop [eMMC Boot] [20180216] ===&lt;br /&gt;
* To learn more about AOSC, please visit the official [https://aosc.io/ AOSC website]&lt;br /&gt;
* Known issue: no audio sound output.&lt;br /&gt;
* DD image (for 8GB microSD card and above)&lt;br /&gt;
** [https://files.pine64.org/os/pine-h64/model-B/AOSC/sun50i-h6-pine-h64_sunxi64-mate_2019-02-16_mmc2.img.xz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 34F3F6813EF00FAF49B1C2A1562EE39D&lt;br /&gt;
*** File Size: 2.63GB&lt;br /&gt;
* Login with&lt;br /&gt;
** username: aosc&lt;br /&gt;
** password: anthon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Installing and using from Manjaro x64 repositories:&lt;br /&gt;
::In your Desktop Environment use the Package Manager and search for '''manjaro-arm-tools''' and install.&lt;br /&gt;
::Or in the Terminal use '''sudo pacman -S manjaro-arm-tools''' to install the package.&lt;br /&gt;
::Then in the Terminal use '''sudo buildarmimg -d pine-h64 -e &amp;lt;your-favourite-de&amp;gt;''', but change &amp;lt;your favorite DE&amp;gt; to one from the list of supported DE's:&lt;br /&gt;
:::* minimal&lt;br /&gt;
:::* lxqt&lt;br /&gt;
:::* kde-plasma&lt;br /&gt;
:::* mate&lt;br /&gt;
:::* xfce&lt;br /&gt;
:::* i3&lt;br /&gt;
:::* sway&lt;br /&gt;
:::* gnome (experimental)&lt;br /&gt;
:::* plasma-mobile (experimental)&lt;br /&gt;
:::* phosh (experimental)&lt;br /&gt;
:::* cubocore (not complete yet)&lt;br /&gt;
:::* server (not complete yet, unmaintained)&lt;br /&gt;
* To find out more about Manjaro-Arm-Tools and available options please visit their [https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-tools site]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DietPi ==&lt;br /&gt;
[[File:dietpi.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* DietPi is a '''lightweight''', yet '''easy to setup''' and '''feature-rich''' Linux distribution, based on '''Debian'''.&lt;br /&gt;
* To find out more about DietPi, please visit the [https://dietpi.com/docs/ official documentation].&lt;br /&gt;
* Discuss the PINE H64 build on the [https://forum.pine64.org/showthread.php?tid=12531 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB micro SD card and above)&lt;br /&gt;
** [https://dietpi.com/downloads/images/DietPi_PINEH64-ARMv8-Buster.7z Direct download from dietpi.com]&lt;br /&gt;
* Login with&lt;br /&gt;
** Username: '''root'''&lt;br /&gt;
** Password: '''dietpi'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LibreELEC (KODI) ==&lt;br /&gt;
[[File:libreelec.jpg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Nightly Build Image [microSD and eMMC Boot] ===&lt;br /&gt;
* DD image to microSD card and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://test.libreelec.tv/ Pine A64+ build direct download from Libreelec nightly build site and look for LibreELEC-H6.arm-9.80-nightly-xxxxxxxx-xxxxxxx-pine-h64-model-b.img.gz]&lt;br /&gt;
** FEATURES:&lt;br /&gt;
*** mainline kernel &amp;amp; U-Boot&lt;br /&gt;
*** latest Kodi&lt;br /&gt;
*** HDMI CEC&lt;br /&gt;
*** multi channel HDMI audio (correct audio output must be selected)&lt;br /&gt;
*** IR receiver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= BSD Image Releases =&lt;br /&gt;
&lt;br /&gt;
== NetBSD ==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== NetBSD Community Build Image [microSD Boot] ===&lt;br /&gt;
* To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page] &lt;br /&gt;
* DD image to microSD card or eMMC module. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
** [https://www.invisible.ca/arm/ Direct download latest release build from NetBSD by select PINE H64]&lt;br /&gt;
** size: 345MB&lt;br /&gt;
* Console and SSH default login:&lt;br /&gt;
** username: root&lt;br /&gt;
** password: [none]&lt;br /&gt;
* Instructions concerning enabling SSH can be found [https://www.netbsd.org/docs/guide/en/chap-boot.html#chap-boot-ssh here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Android Image Releases =&lt;br /&gt;
&lt;br /&gt;
== Android 9.0 ==&lt;br /&gt;
[[File:android_9.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 9.0 microSD Card to eMMC 20190523] ===&lt;br /&gt;
* DD image to microSD card, install eMMC module, plug in microSD card into slot and boot.&lt;br /&gt;
** After power ON the box for 2-3 second, it will start writing the new image to the eMMC with progress bar. Once finished upload to eMMC, take out microSD card and reboot.&lt;br /&gt;
* Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* Support 4K HDR playeback&lt;br /&gt;
* non rooted version&lt;br /&gt;
* PINE64 IR mapping not yet implemented&lt;br /&gt;
* Please allow 10-15 minutes boot up time on first time for initialization&lt;br /&gt;
* DD images:&lt;br /&gt;
** Using 8GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_dd_20190523_stock_android_9.0-sd2emmc.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 3B18BA6C82BF3E0020D0B54E9520755E&lt;br /&gt;
**** File Size: 1.21GB&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 9.0 microSD and eMMC Boot 20190523] ===&lt;br /&gt;
* Support 4K HDR playeback&lt;br /&gt;
* Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* non rooted version&lt;br /&gt;
* PINE64 IR mapping not yet implemented&lt;br /&gt;
* Please allow 20-25 minutes boot up time on first time for initialization&lt;br /&gt;
* DD images:&lt;br /&gt;
** For 8GB microSD Card or eMMC module&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_dd_20190523_stock_android_9.0-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): D2244B9FDD5100A4687C16C4A8034884&lt;br /&gt;
**** File Size: 1.05GB&lt;br /&gt;
** Using 16GB microSD Card or eMMC module&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_dd_20190523_stock_android_9.0-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 9AC957ED7B71BA37A363098F6F15C32C&lt;br /&gt;
**** File Size: 1.30GB&lt;br /&gt;
** Using 32GB microSD Card oe eMMC module&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_dd_20190523_stock_android_9.0-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 18BE1EDA248EDDAF35B80195954097A8&lt;br /&gt;
**** File Size: 1.28GB&lt;br /&gt;
** Using 64GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_dd_20190523_stock_android_9.0-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 49EEEBFDEC0337A47879EBE9439F4937&lt;br /&gt;
**** File Size: 1.02GB&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 9.0 Phoenix Card image 20190523] ===&lt;br /&gt;
* Only use Phoenixcard method as last resort option&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/android/PhoenixCard4_1_3.zip Phoenixcard ver 4.1.3 utility direct download from pine64.org]&lt;br /&gt;
* Select &amp;quot;Start up&amp;quot; as option for SD Card boot&lt;br /&gt;
* Select &amp;quot;Product&amp;quot; as option for &amp;quot;SD Card to eMMC&amp;quot; method&lt;br /&gt;
* non rooted version&lt;br /&gt;
* PINE64 IR mapping not yet implemented&lt;br /&gt;
* Please allow 10-15 minutes boot up time on first time for initialization&lt;br /&gt;
* This process may not everytime build up successfully&lt;br /&gt;
** Using 4GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/PINE_H64B_20190523_stock_android_9.0-PhoenixCard.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (Gzip file): B0202A03C189897DEAFCC178B5829BEF&lt;br /&gt;
**** File Size: 389MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android 7.x ==&lt;br /&gt;
[[File:android_7.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 7.0 microSD Card Boot 20190115] ===&lt;br /&gt;
* Support 4K HDR playeback&lt;br /&gt;
* Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* Please allow 10-15 minutes boot up time on first time for initialization&lt;br /&gt;
* DD images:&lt;br /&gt;
** For 8GB microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-sdboot-8G.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 12110D73CA7ADE749C948D63499B2AE3&lt;br /&gt;
**** File Size: 417MB&lt;br /&gt;
** Using 16GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-sdboot-16G.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): FE6DB577CE6D54D3DDF25FD6CB9A8839&lt;br /&gt;
**** File Size: 426MB&lt;br /&gt;
** Using 32GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-sdboot-32G.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 8E37374D87FFDB5BC6D08635A168A152&lt;br /&gt;
**** File Size: 444MB&lt;br /&gt;
** Using 64GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-sdboot-64G.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): BA29EBCE85A71C408F6AB9FD3EA23885&lt;br /&gt;
**** File Size: 482MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 7.0 microSD Card to eMMC 20190115] ===&lt;br /&gt;
* DD image to microSD card, install eMMC module, plug in muicroSD vard into slot and boot. &lt;br /&gt;
** After power ON the box for 2-3 second, it will start writing the new image to the eMMC with progress bar. Once finished upload to eMMC, take out microSD card and reboot.&lt;br /&gt;
* Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* Support 4K HDR playeback&lt;br /&gt;
* Please allow 10-15 minutes boot up time on first time for initialization&lt;br /&gt;
* DD images:&lt;br /&gt;
** Using 4GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-sd2emmc.img.gz Direct download from pine64.org]&lt;br /&gt;
**** MD5 (GZip file): 61133A2967BDD2806F6AD2E144DD06AB&lt;br /&gt;
**** File Size: 414MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Stock Android 7.0 Phoenix Card image 20190115] ===&lt;br /&gt;
* Only use Phoenixcard method as last resort option&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/android/PhoenixCard4_1_3.zip Phoenixcard ver 4.1.3 utility direct download from pine64.org]&lt;br /&gt;
* Select &amp;quot;Start up&amp;quot; as option for SD Card boot&lt;br /&gt;
* Select &amp;quot;Product&amp;quot; as option for &amp;quot;SD Card to eMMC&amp;quot; method&lt;br /&gt;
* Please allow 10-15 minutes boot up time on first time for initialization&lt;br /&gt;
* This process may not everytime build up successfully&lt;br /&gt;
** Using 4GB or above microSD Card&lt;br /&gt;
*** [https://files.pine64.org/os/pine-h64/model-B/Android/android-ver7.0-pine-h64b-20190115-phoenixcard.img Direct download from pine64.org]&lt;br /&gt;
**** MD5 (IMG file): 679E5F1A0F772B9F750E4139C8B025F0&lt;br /&gt;
**** File Size: 822MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
* Based on Allwinner H6&lt;br /&gt;
[[File:Allwinner_H64.png]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php Quad-core ARM Cortex-A53 Processor@1488Mhz]&lt;br /&gt;
* A power-efficient ARM v8 architecture&lt;br /&gt;
* 64 and 32bit execution states for scalable high performance&lt;br /&gt;
* Trustzone technology supported&lt;br /&gt;
* Support NEON Advanced SIMD (Single Instruction Multiple Data) instruction for acceleration of media and signal processing function&lt;br /&gt;
* Support Large Physical Address Extensions(LPAE)&lt;br /&gt;
* VFPv4 Floating Point Unit&lt;br /&gt;
* 32KB L1 Instruction cache and 32KB L1 Data cache&lt;br /&gt;
* 512KB L2 cache&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t720-gpu ARM Mali T-720MP2 Dual-core GPU]&lt;br /&gt;
* Supports OpenGL ES 3.1/3.0/2.0/1.1, OpenCL 1.2/1.1&lt;br /&gt;
* Supports ATSC (Adaptive Scalable Texture Compression)&lt;br /&gt;
* Supports FAST(4x)FSAA, IO Coherency &lt;br /&gt;
* Floating point operation greater than 70 GFLOPS&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 1GB, 2GB, and 3GB LPDDR3.&lt;br /&gt;
* Storage Memory: PINE H64 boards have built-in 128Mb SPI Flash memory, use '''bootable eMMC module''', '''bootable microSD Cards''' or USB attached storage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Board Features ==&lt;br /&gt;
&lt;br /&gt;
=== Video ===&lt;br /&gt;
* Digital Video 4KP60 (Type A - full)&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* 10/100/1000Mbps Ethernet&lt;br /&gt;
* WiFi 802.11 b/g/n/ac with Bluetooth 4.0/4.1&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, support SDHC and SDXC, storage up to 256GB&lt;br /&gt;
* USB -	1 USB3.0 Host port and 2 USB2.0 Host port&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pine H64 Model B Board Information, Schematics and Certifications ==&lt;br /&gt;
* Board Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A, 3.5mm OD/ 1.35mm ID DC jack connector&lt;br /&gt;
&lt;br /&gt;
* [https://files.pine64.org/doc/Pine%20H64/Pine%20H64%20model%20B%20Port%20Assignment%20rev2.0.pdf PINE H64 Model B Pi-2 Bus Connector Pin Assignment]&lt;br /&gt;
&lt;br /&gt;
* PINE H64 Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/Pine%20H64/PINE-H6-model-B-20181212-schematic.pdf PINE H64 Model B 1GB/2GB/3GB Rev 1.2 Board Schematic]&lt;br /&gt;
&lt;br /&gt;
* PINE H64 Model B Certification:&lt;br /&gt;
** Disclaimer: Please note that PINE64 SBC is not a &amp;quot;final&amp;quot; product and in general certification is not necessary. However, PINE64 still submits the SBC for FCC, CE, and ROHS certifications and obtain the certificates to prove that the SBC board can pass the testing. Please note, a final commercial product needs to perform its own testing and obtain its own certificate.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PINE-H64B%20FCC%20S19041102001001%20Certificate.pdf PINE-H64 Model-B FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/PINE-H64B%20CE-EMC%20S19041102001001%20Certificate.pdf PINE-H64 Model-B CE Certificate]]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Allwinner H6 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine-h64/Allwinner-H6-Brief_V1.0.pdf Allwinner H6 SoC Brief Introduction]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine-h64/Allwinner_H6%20V200_Datasheet_V1.1.pdf Allwinner H6 SoC Data Sheet V1.1 (Official Released Version)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine-h64/Allwinner_H6%20V200_User_Manual_V1.1.pdf Allwinner H6 SoC User Manual V1.0 (Official Release Version)]&lt;br /&gt;
* X-Powers AXP805 PMU (Power Management Unit) information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine-h64/AXP805_Datasheet_V1.0_en.pdf X-Powers AXP805 Data Sheet V1.0 (Official Release Version)]&lt;br /&gt;
* LPDDR3 (178 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/H9CCNNNCLTMLAR(Rev1.2).pdf Hynix LPDDR3 Datasheet V1.2]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/K4E8E324EB-EGCF000_DRAM_178F_11x11.5_Ver.1.00.00.pdf Samsung LPDDR3 Datasheet V1.00.00]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/SPECTEK_178B_32GB_V91M_MOBILE_LPDDR3.pdf Spectek LPDDR3 Datasheet]&lt;br /&gt;
* eMMC information:&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]&lt;br /&gt;
** [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/E-00517%20FORESEE_eMMC_NCEMAM8B-16G%20SPEC.pdf 16GB Foresee eMMC Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 32GB/64GB/128GB SanDisk eMMC Datasheet]&lt;br /&gt;
* SPI NOR Flash information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf GigaDevice 128Mb SPI Flash Datasheet]&lt;br /&gt;
* Ethernet PHY information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf Realtek RTL8211 10/100/1000M Ethernet Transceiver for PINE H64 Board]&lt;br /&gt;
* Wifi/BT module information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf Realtek RTL8723BS WiFi with BT SDIO]&lt;br /&gt;
* Remote control button mapping&lt;br /&gt;
** [https://files.pine64.org/doc/Pine%20A64%20Schematic/remote-wit-logo.jpg Official Remote Control for the PINE H64 Button Mapping]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Mali-T720 driver =&lt;br /&gt;
&lt;br /&gt;
Here is a good DRM powerpoint presentation by Free Electron: https://free-electrons.com/pub/conferences/2017/kr/ripard-drm/ripard-drm.pdf&lt;br /&gt;
&lt;br /&gt;
Here is the DRM video presentation by Free Electron: https://www.youtube.com/watch?v=LbDOCJcDRoo&lt;br /&gt;
&lt;br /&gt;
== 32-bit Wayland MALI Driver: ==&lt;br /&gt;
** [https://files.pine64.org/doc/MALI/MALI%20EULA.pdf MALI EULA document]&lt;br /&gt;
** [https://files.pine64.org/SDK/PINE-H64/mali-t720-r18p0-01rel0-um-016-linux-opengles-release-wayland-server-gbm-composer-arm32-glibc.tar.bz2 MALI-T720 32-bit server binary driver and binary download]&lt;br /&gt;
*** MD5: F2186A4CAE505A76E0758735886FE682&lt;br /&gt;
*** File Size: 3.4MB&lt;br /&gt;
** [https://files.pine64.org/SDK/PINE-H64/mali-t720-r18p0-01rel0-um-016-linux-opengles-release-wayland-client-gbm-composer-arm32-glibc.tar.bz2 MALI-T720 32-bit client binary driver and binary download]&lt;br /&gt;
*** MD5: F316A78AFABE87E69C8F816D18F15D68&lt;br /&gt;
*** File Size: 3.4MB&lt;br /&gt;
&lt;br /&gt;
== 64-bit Wayland MALI Driver: ==&lt;br /&gt;
** [https://files.pine64.org/doc/MALI/MALI%20EULA.pdf MALI EULA document]&lt;br /&gt;
** [https://files.pine64.org/SDK/PINE-H64/mali-t720-r18p0-01rel0-um-018-linux-opengles-release-wayland-server-gbm-composer-arm64-glibc.tar.bz2 MALI-T720 64-bit server binary driver and binary download]&lt;br /&gt;
*** MD5: 13CC8DCB7CF068D80DFC16281E95E9D7&lt;br /&gt;
*** File Size: 5.0MB&lt;br /&gt;
** [https://files.pine64.org/SDK/PINE-H64/mali-t720-r18p0-01rel0-um-018-linux-opengles-release-wayland-client-gbm-composer-arm64-glibc.tar.bz2 MALI-T720 64-bit client binary driver and binary download]&lt;br /&gt;
*** MD5: 951BAD6ED66D4CB904CFE0D65F2855E8&lt;br /&gt;
*** File Size: 5.0MB&lt;br /&gt;
&lt;br /&gt;
= Linux BSP SDK =&lt;br /&gt;
&lt;br /&gt;
== Linux BSP Kernel 4.9 ==&lt;br /&gt;
* [https://files.pine64.org/SDK/PINE-H64/PINE%20H64B%20BSP%204.9%20lichee.tar.xz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-XZ file): 06B675B1C217D4CC6A21FF320DA250C1&lt;br /&gt;
** File Size: 5.04GB&lt;br /&gt;
&lt;br /&gt;
= Android SDK =&lt;br /&gt;
&lt;br /&gt;
== Android Pie 9.0 SDK version 1.0 ==&lt;br /&gt;
* [https://files.pine64.org/SDK/PINE-H64/PINE%20H64B%20android%209.0.tar.xz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-XZ file): 734B4DBB03CAF82A4E955F7E83DE0C65&lt;br /&gt;
** File Size: 29.14GB&lt;br /&gt;
&lt;br /&gt;
== Other Resources ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Pine H64]] [[Category:Allwinner H6]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=SOEDGE_Software_Releases&amp;diff=10697</id>
		<title>SOEDGE Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=SOEDGE_Software_Releases&amp;diff=10697"/>
		<updated>2021-06-12T21:41:47Z</updated>

		<summary type="html">&lt;p&gt;JerseyDevil: micoSD to microSD (x1)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux Image Releases =&lt;br /&gt;
== BSP ==&lt;br /&gt;
=== Full BSP Linux image ver 1.1 ===&lt;br /&gt;
&lt;br /&gt;
* This is full image version can be apply to model A baseboard&lt;br /&gt;
* DD image (for 8GB microSD card or eMMC Module and above)&lt;br /&gt;
* [https://files.pine64.org//os/SOEdge/stock/SOEdge_linux_v1.1.img.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (GZip file): 636ebeb66d6d0fc0929397d541b0ce83&lt;br /&gt;
** File Size: 119MB&lt;br /&gt;
&lt;br /&gt;
=== Neural AI Stick Linux image ver 1.1 ===&lt;br /&gt;
&lt;br /&gt;
* This is USB 3.0 Neural AI Stick image version&lt;br /&gt;
* DD image (for 8GB eMMC Module and above)&lt;br /&gt;
* [https://files.pine64.org//os/SOEdge/stock/SOEdge_linux_usb_compute_stick.img.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (GZip file): 6fddf73a34ea2a1cb6f36be673567b5f&lt;br /&gt;
** File Size: 47MB&lt;br /&gt;
&lt;br /&gt;
= Linux BSP SDK =&lt;br /&gt;
&lt;br /&gt;
== Full BSP SDK ver 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* [https://files.pine64.org/SDK/SOEdge/SOEdge_RK-BSP_SDK_v1.1.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): a66c92e52824762d7c0a63400d6342ea&lt;br /&gt;
** File Size: 13.55GB&lt;br /&gt;
&lt;br /&gt;
== Neural AI Stick BSP SDK ver 1.1 ==&lt;br /&gt;
&lt;br /&gt;
* [https://files.pine64.org/SDK/SOEdge/SOEdge_RK-BSP_USB_Dongle_SDK_v1.1.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 46f12441e8c35c06184681f355c89651&lt;br /&gt;
** File Size: 9.65GB&lt;br /&gt;
&lt;br /&gt;
[[Category:SOPine]]&lt;/div&gt;</summary>
		<author><name>JerseyDevil</name></author>
	</entry>
</feed>