<?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=CameronNemo</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=CameronNemo"/>
	<link rel="alternate" type="text/html" href="https://wiki.pine64.org/wiki/Special:Contributions/CameronNemo"/>
	<updated>2026-04-17T01:58:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=QuartzPro64_Development&amp;diff=21136</id>
		<title>QuartzPro64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=QuartzPro64_Development&amp;diff=21136"/>
		<updated>2023-11-13T20:46:20Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Storage */ fix grammatical error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Quartzpro64_whole_board_top_resized.jpeg|250px|thumb|right|The QuartzPro64 development board, front side]]&lt;br /&gt;
[[File:BoardBackSide.jpg|250px|thumb|right|Back side of the board]]&lt;br /&gt;
&lt;br /&gt;
A '''QuartzPro64 Development''' Wiki page before a '''QuartzPro64''' Wiki page? It's more likely than you think!&lt;br /&gt;
&lt;br /&gt;
This page will be used for both documenting the current development efforts and the board in general, as we don't know yet how a generally available QuartzPro64 will look like so documenting the dev board is probably best left to the development page.&lt;br /&gt;
&lt;br /&gt;
== Obtaining a Development Board ==&lt;br /&gt;
&lt;br /&gt;
Register for a preorder: [https://preorder.pine64.org/#/quartzpro64 https://preorder.pine64.org/#/quartzpro64]&lt;br /&gt;
&lt;br /&gt;
== Upstreaming Status ==&lt;br /&gt;
&lt;br /&gt;
* Upstream Linux kernel DT: https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dts&lt;br /&gt;
* Upstream U-Boot DT: https://github.com/u-boot/u-boot/blob/master/arch/arm/dts/rk3588-quartzpro64-u-boot.dtsi&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;VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Collabora said they'll work on this. The video output IP on the RK3588 should mostly be the same as the one on the RK356x, but the chip specific stuff will need to be integrated into the vop2 driver.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Video Input&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;rk_hdmirx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Huge 3600 line driver, but generally seems to be in good condition&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;panfrost&amp;lt;/code&amp;gt;&lt;br /&gt;
| Collabora said they'll work on this. New architecture, reportedly needs many changes to the kernel component of Panfrost.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;4&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p60 H.263/MPEG-4, MPEG-1 and MPEG-2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Nobody is known to be working on this for now. VDPU346 handling 8K60 H.265, H.264, VP9 and AVS&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] is doing a little work on this. VDPU720 handling JPEG&lt;br /&gt;
|-&lt;br /&gt;
| 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=721724]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;hantro&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Collabora is working on this. VDPU981 handling 4K60 AV1&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Encode &lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Driver already exists, only minor changes needed.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU580&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU580&lt;br /&gt;
| &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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.2&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c619bd4268ff9895760dab303b4eb15ed3d0f7e9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;es8388&amp;lt;/code&amp;gt; CODEC&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CRU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;clk-rk3588&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.2&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f1c506d152ff235ad621d3c25d061cb16da67214]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | MMC&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;sdhci-of-dwcmshc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bbbd8872825310b14bc6e04250d2cb5edcd55edb]&amp;lt;/sup&amp;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;
| &amp;lt;code&amp;gt;pinctrl-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc33eba11c5919199f3d13dc53571cc7bf19d7d]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-gpio&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc165ba48aaf7d792e99d0c7e4b12e9625bc73e3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3x-i2c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Should be the same as RK3399, just needs devicetree work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spi&amp;lt;/code&amp;gt;&lt;br /&gt;
| Should be the same as previous SoCs, just needs devicetree work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | PMU&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=687286]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk806&amp;lt;/code&amp;gt;&lt;br /&gt;
| Talks over SPI&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Regulators&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;rk860&amp;lt;/code&amp;gt;&lt;br /&gt;
| Talks over I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | GMAC&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;dwmac-rk&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f2b60a0ec2826e5a2b2a1ddf68994a868dccbc1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Power Domains&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6541b424ce1dda616d3946e839f015c984df7a99]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CAN&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;rockchip_canfd&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not broken out on the QuartzPro64, so we probably won't be the ones porting it&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPDIF TX&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|May need porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Genuinely just needs the compatible string added, I think, otherwise we're all good. Not broken out on QuartzPro64 dev board&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPDIF RX&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;rockchip-spdifrx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not broken out on QuartzPro64 dev board&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:#F99; text-align:center;&amp;quot;|May need porting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-dw-pcie&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream driver and upstream are quite different, look into how much work actually needs doing. Seems to be the same controller as rk3568 so maybe none?&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs porting/writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rknpu&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&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=749871]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;phy-rockchip-inno-usb2&amp;lt;/code&amp;gt;&lt;br /&gt;
| There's probably more to USB 2 than just the PHY but this is what I found for now&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 3.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|?&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SATA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;ahci-dwc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Just needs the compatible added to the bindings, done in [https://patchwork.kernel.org/project/linux-rockchip/list/?series=749876]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Thermal&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=687619]&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; | Wifi &amp;amp; Bluetooth&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|?&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | HWRNG&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;rockchip-rng&amp;lt;/code&amp;gt;&lt;br /&gt;
| The code &amp;amp; DT work is easy to port &amp;amp; working&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RTC&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;hym8563&amp;lt;/code&amp;gt;&lt;br /&gt;
| Should only need DT work (see [https://patchwork.kernel.org/project/linux-rockchip/list/?series=736799 here] for an example)&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | OTP&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=744118]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-otp&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SARADC&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=748188]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip_saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Quartzpro64_soc_and_ram_resized.jpeg|200px|thumb|right|The SoC and RAM packages]]&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
* RK3588 SoC (8 cores: 4x A76@2.4GHz + 4x A55@1.8GHz)&lt;br /&gt;
* Mali G610MC4 GPU (4x Valhalla cores)&lt;br /&gt;
* 16 GB LPDDR4X (SK hynix)&lt;br /&gt;
* 64 GB eMMC (Foresee, soldered)&lt;br /&gt;
* 1x USB-C (with video-alt mode)&lt;br /&gt;
* 1x USB-C (FTDI debug UART, FT232RL)&lt;br /&gt;
* 1x USB 3.0&lt;br /&gt;
* 2x USB 2.0&lt;br /&gt;
* 1x HDMI in&lt;br /&gt;
* 2x HDMI out&lt;br /&gt;
* 1x PCIe 3.0 slot (open-ended)&lt;br /&gt;
* 1x SD / TF card slot&lt;br /&gt;
* 2x SATA ports&lt;br /&gt;
* 2x Gigabit ethernet (1x from SoC, 1x on PCIe, RTL8211F, RTL8111HS)&lt;br /&gt;
* 1x WiFi &amp;amp; BT Module (AMPAK Tech AP6275PR3)&lt;br /&gt;
* 2x SMA Antenna&lt;br /&gt;
* 2x MIPI DPHY&lt;br /&gt;
* 1x MIPI D/C PHY&lt;br /&gt;
* 1x MIPI CSI&lt;br /&gt;
* 1x PWM Fan header (4 pins)&lt;br /&gt;
* 1x RTC battery socket (CR1220, 3V, see [[#Documentation|QuartzPro64 board schematics PDF]], page 21)&lt;br /&gt;
* 1x MIC (soldered)&lt;br /&gt;
* 1x audio output 3.5mm jack&lt;br /&gt;
* Power in via DC 12V&lt;br /&gt;
&lt;br /&gt;
=== Cooler ===&lt;br /&gt;
&lt;br /&gt;
The board comes with two cooler mounts, a 4-hole mount that appears to be spaced 55x55mm apart, and the ~60mm diagonal &amp;quot;northbridge heatsink&amp;quot; mount the ROCKPro64 and Quartz64 Model A uses.&lt;br /&gt;
&lt;br /&gt;
RK3588 is slightly (&amp;lt;1mm?) taller than the DRAM chips, use a thick enough thermal pad instead of thermal compound.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
Plug in the USB-C port labelled &amp;quot;&amp;lt;tt&amp;gt;DEBUG PORT&amp;lt;/tt&amp;gt;&amp;quot; on the QP64 board to another computer with a USB-A-to-C cable.&lt;br /&gt;
&lt;br /&gt;
It will show up as a FT232 USB Serial adapter in &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
[...]&lt;br /&gt;
Bus 005 Device 027: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Baud rate is 1.5 mbauds or 1500000.&lt;br /&gt;
&lt;br /&gt;
Ensure you have the driver module loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# modprobe ftdi_sio&lt;br /&gt;
# lsmod | grep ftdi_sio&lt;br /&gt;
ftdi_sio               61440  0&lt;br /&gt;
usbserial              53248  1 ftdi_sio&lt;br /&gt;
usbcore               290816  7 ftdi_sio,usbserial,xhci_hcd,usbhid,usbkbd,usbmouse,xhci_pci&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the above is not working, check the required driver is supported by your kernel, using one of the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep FTDI_SIO /proc/config.gz&lt;br /&gt;
CONFIG_USB_SERIAL_FTDI_SIO=m&lt;br /&gt;
$ grep FTDI_SIO &amp;quot;/boot/config-$(uname -r)&amp;quot;&lt;br /&gt;
CONFIG_USB_SERIAL_FTDI_SIO=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; command, you should see something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[24784.535804] usb 5-3: new full-speed USB device number 3 using xhci_hcd&lt;br /&gt;
[24784.710714] usb 5-3: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00&lt;br /&gt;
[24784.710723] usb 5-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3&lt;br /&gt;
[24784.710725] usb 5-3: Product: FT232R USB UART&lt;br /&gt;
[24784.710727] usb 5-3: Manufacturer: FTDI&lt;br /&gt;
[24784.710728] usb 5-3: SerialNumber: A10LLO86&lt;br /&gt;
[24784.723858] usbcore: registered new interface driver usbserial_generic&lt;br /&gt;
[24784.723865] usbserial: USB Serial support registered for generic&lt;br /&gt;
[24784.725286] usbcore: registered new interface driver ftdi_sio&lt;br /&gt;
[24784.725295] usbserial: USB Serial support registered for FTDI USB Serial Device&lt;br /&gt;
[24784.725348] ftdi_sio 5-3:1.0: FTDI USB Serial Device converter detected&lt;br /&gt;
[24784.725368] usb 5-3: Detected FT232RL&lt;br /&gt;
[24784.731685] usb 5-3: FTDI USB Serial Device converter now attached to ttyUSB0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can get console output from the QP64 with, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mounting Holes ===&lt;br /&gt;
&lt;br /&gt;
Mounting holes are 3&amp;amp;nbsp;mm in diameter, so standard standoffs can be used, preferably the 2.5&amp;amp;nbsp;mm variant.  See also the PCB layout PDF files, linked in the [https://wiki.pine64.org/wiki/QuartzPro64_Development#Documentation Documentation] section.&lt;br /&gt;
&lt;br /&gt;
The height from the bottom of the PCB to the top of the USB ports as the tallest components is 18&amp;amp;nbsp;mm, which can be used as a data point for selecting the suitable standoff length to place some acrylic top cover over the board.  However, that doesn't account for the heatsink that needs to be mounted on the RK3588 SoC, for which a suitable rectangular hole can be cut in the top cover.&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
&lt;br /&gt;
[[File:Quartzpro64_emmc_resized.jpeg|200px|thumb|right|The eMMC on the dev board]]&lt;br /&gt;
&lt;br /&gt;
* Soldered 64GB FORESEE eMMC chip, which comes pre-flashed with some Android build&lt;br /&gt;
* One microSD card slot&lt;br /&gt;
* Two SATA 3.0 ports (standard Molex power connector is not populated)&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
&lt;br /&gt;
[[File:Power_and_switch.jpg|100px|thumb|right|Power switch &amp;amp; barrel connector]]&lt;br /&gt;
&lt;br /&gt;
You can provide power to the board via the 12V barrel connector, it's 5.5mm OD/2.1mm ID barrel 'coaxial' type &amp;quot;M&amp;quot; centre-positive, the ROCKPro64 5A power supply from the PINE64 store will work. (TODO: add alternative ways).&lt;br /&gt;
&lt;br /&gt;
There is a hardware flip switch to power up / down the board.&lt;br /&gt;
&lt;br /&gt;
=== PMU ===&lt;br /&gt;
&lt;br /&gt;
[[File:Quartzpro64_pmu.jpeg|100px|thumb|right|The PMU]]&lt;br /&gt;
&lt;br /&gt;
2x RK806-2, not RK808 compatible. It's a dual PMU configuration where one PMU is a subordinate of the other.&lt;br /&gt;
&lt;br /&gt;
Verify this once we have access to SDK sources.&lt;br /&gt;
&lt;br /&gt;
=== Ethernet ===&lt;br /&gt;
&lt;br /&gt;
The RGMII ethernet port (near the SDCARD socket) is working if you use neg2led's linux-quartz64 repo.&lt;br /&gt;
&lt;br /&gt;
The other port (near the sound jack) is hooked to the SoC via PCIe and is currently reported working (on the matrix channel) with latest neggles kernel.&lt;br /&gt;
&lt;br /&gt;
== Boot ==&lt;br /&gt;
&lt;br /&gt;
The board can boot from the following interfaces:&lt;br /&gt;
* SPI&lt;br /&gt;
* eMMC&lt;br /&gt;
* SD/MMC&lt;br /&gt;
&lt;br /&gt;
TODO: in which priority / order are those boot options tried ?&lt;br /&gt;
&lt;br /&gt;
== Recovery ==&lt;br /&gt;
&lt;br /&gt;
In the case you erase the eMMC and are unable to boot the board, you can use rkdeveloptool to recover the board. While you can use the [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool Pine64 Fork], it is recommended to use [https://gitlab.com/cypheon/rkdeveloptool/-/tree/main?ref_type=heads cypheon's Fork] until some Pending PRs are merged in to [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool/-/merge_requests?scope=all&amp;amp;state=opened&amp;amp;author_username=cypheon resolve issues] with larger files. This is important when working with the larger 64GB eMMC on the QuartzPro64.&lt;br /&gt;
&lt;br /&gt;
With rkdeveloptool installed, you will also need the rk3588_spl from rockchip to init the memory/flash when in maskrom mode. This can be downloaded from the [https://github.com/rockchip-linux/rkbin/blob/master/bin/rk35/rk3588_spl_v1.12.bin rockchip-linux/rkbin repo].&lt;br /&gt;
&lt;br /&gt;
Entering maskrom can be done in a variety of ways:&lt;br /&gt;
&lt;br /&gt;
* Hold the maskrom button (little white button labelled &amp;quot;MASKROM&amp;quot; next to SATA socket) during powerup, OR&lt;br /&gt;
* Enter rockusb mode, and execute &amp;quot;rkdeveloptool reboot-maskrom&amp;quot;.&lt;br /&gt;
* Bork your eMMC and SD devices (how? erase?), in which case bootup will fallback to maskrom.&lt;br /&gt;
&lt;br /&gt;
=== Dumping the eMMC ===&lt;br /&gt;
&lt;br /&gt;
Boot the device into maskrom mode, and then verify rkdeveloptool can see the board. &lt;br /&gt;
 '''# rkdeveloptool list'''&lt;br /&gt;
 DevNo=1	Vid=0x2207,Pid=0x350b,LocationID=503	Maskrom&lt;br /&gt;
&lt;br /&gt;
Once the board shows up, load the rk3588_spl you downloaded earlier, and verify that the eMMC can be seen.&lt;br /&gt;
 '''# rkdeveloptool boot ./rk3588_spl_loader_v1.08.111.bin'''&lt;br /&gt;
 Downloading bootloader succeeded.&lt;br /&gt;
 '''# rkdeveloptool read-flash-info'''&lt;br /&gt;
 Flash Info:&lt;br /&gt;
 	Manufacturer: SAMSUNG, value=00&lt;br /&gt;
 	Flash Size: 59000 MB&lt;br /&gt;
 	Flash Size: 120832000 Sectors&lt;br /&gt;
 	Block Size: 512 KB&lt;br /&gt;
 	Page Size: 2 KB&lt;br /&gt;
 	ECC Bits: 0&lt;br /&gt;
 	Access Time: 40&lt;br /&gt;
 	Flash CS: Flash&amp;lt;0&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now dump the eMMC using the read command. Note that first you have to calculate the eMMC size, which can be done using the output from the previous flash info command. You need to take the sector count, and times it by the sector size, to get the total number of bytes. So in the above example, 120832000*512 so the total flash size is 61865984000.&lt;br /&gt;
&lt;br /&gt;
Using the calculated size, you can now dump the eMMC. Please note this will take 1-2 minutes.&lt;br /&gt;
 '''# rkdeveloptool read 0x0 61865984000 ./quartzpro64_emmc_dump.bin'''&lt;br /&gt;
 Read LBA to file (0%)&lt;br /&gt;
 ...&lt;br /&gt;
 Read LBA to file (100%)&lt;br /&gt;
&lt;br /&gt;
You now have a full dump of the entire eMMC (SHA256 62cb4ae8d02aeacccf231fa1d00087cdc74b599790a274569305693aa205318d). Note that you can also use the list-partitions and read-partition commands to dump specific partitions, but this only shows GPT partitions on the eMMC. Because of this, it will NOT include the spl_loader found in the first 4MB of the eMMC!&lt;br /&gt;
&lt;br /&gt;
=== Flasing the eMMC ===&lt;br /&gt;
&lt;br /&gt;
Boot the device into maskrom mode, and then verify rkdeveloptool can see the board. &lt;br /&gt;
 '''# rkdeveloptool list'''&lt;br /&gt;
 DevNo=1	Vid=0x2207,Pid=0x350b,LocationID=503	Maskrom&lt;br /&gt;
&lt;br /&gt;
Once the board shows up, load the rk3588_spl you downloaded earlier, and verify that the eMMC can be seen.&lt;br /&gt;
 '''# rkdeveloptool boot ./rk3588_spl_loader_v1.08.111.bin'''&lt;br /&gt;
 Downloading bootloader succeeded.&lt;br /&gt;
 '''# rkdeveloptool read-flash-info'''&lt;br /&gt;
 Flash Info:&lt;br /&gt;
 	Manufacturer: SAMSUNG, value=00&lt;br /&gt;
 	Flash Size: 59000 MB&lt;br /&gt;
 	Flash Size: 120832000 Sectors&lt;br /&gt;
 	Block Size: 512 KB&lt;br /&gt;
 	Page Size: 2 KB&lt;br /&gt;
 	ECC Bits: 0&lt;br /&gt;
 	Access Time: 40&lt;br /&gt;
 	Flash CS: Flash&amp;lt;0&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now flash the device using either the write command, or write-partition command, depending on what you are trying to do. If you are looking to restore the entire eMMC from a backup you made, you would use the command below to accomplish this.&lt;br /&gt;
 '''rkdeveloptool write 0 ./quartzpro64_emmc_dump.bin'''&lt;br /&gt;
&lt;br /&gt;
== Immediate TODOs ==&lt;br /&gt;
&lt;br /&gt;
=== Enable cpufreq Stuff ===&lt;br /&gt;
&lt;br /&gt;
Current neggles kernel has the CPU at 1.2 GHz, apparently SRE has patches to enable cpufreq? (see below, in [[QuartzPro64_Development#Kernel|Resources]])&lt;br /&gt;
&lt;br /&gt;
=== Add RK3588 Support To VOP2 ===&lt;br /&gt;
&lt;br /&gt;
VOP2 IP on the RK3588 is very similar to the one on the RK356x, but it still needs platform specific code added.&lt;br /&gt;
&lt;br /&gt;
== Ways To Do Things ==&lt;br /&gt;
&lt;br /&gt;
=== Using rkdeveloptool ===&lt;br /&gt;
&lt;br /&gt;
Use the [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool PINE64 fork of rkdeveloptool].&lt;br /&gt;
&lt;br /&gt;
Connect a USB-C cable to the &amp;quot;DEBUG PORT&amp;quot; USB-C port, and a second to the &amp;quot;DOWNLOAD&amp;quot; USB-C port. '''Cable direction for the latter matters, so if it doesn't show up after entering download mode, try rotating the USB-C connector to the other side!'''&lt;br /&gt;
&lt;br /&gt;
To enter rockusb mode, interrupt the boot by holding the &amp;quot;V+/REC&amp;quot; on-board button or mashing Ctrl+C very quickly on the serial comms, then type &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 $ rkdeveloptool list&lt;br /&gt;
&lt;br /&gt;
should now show you the device somewhat like this:&lt;br /&gt;
&lt;br /&gt;
 '''$ rkdeveloptool list'''&lt;br /&gt;
 DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=204    Loader&lt;br /&gt;
&lt;br /&gt;
{{Template:note|'''Note:''' If you receive an error about being unable to create the comms object in the following steps, make sure you have the udev rules installed with [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool/-/merge_requests/19 CounterPillow's RK3588 device id patch], install them to &amp;lt;code&amp;gt;/etc/udev/rules.d/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;udevadm control --reload&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now, we can e.g. show the partitions on the eMMC:&lt;br /&gt;
&lt;br /&gt;
 '''$ rkdeveloptool list-partitions'''&lt;br /&gt;
 #   LBA start (sectors)  LBA end (sectors)  Size (bytes)       Name                &lt;br /&gt;
 00                 8192              16383       4194304       security&lt;br /&gt;
 01                16384              24575       4194304       uboot&lt;br /&gt;
 02                24576              32767       4194304       trust&lt;br /&gt;
 03                32768              40959       4194304       misc&lt;br /&gt;
 04                40960              49151       4194304       dtbo&lt;br /&gt;
 05                49152              51199       1048576       vbmeta&lt;br /&gt;
 06                51200             133119      41943040       boot&lt;br /&gt;
 07               133120             329727     100663296       recovery&lt;br /&gt;
 08               329728            1116159     402653184       backup&lt;br /&gt;
 09              1116160            1902591     402653184       cache&lt;br /&gt;
 10              1902592            1935359      16777216       metadata&lt;br /&gt;
 11              1935360            1937407       1048576       baseparameter&lt;br /&gt;
 12              1937408            8310783    3263168512       super&lt;br /&gt;
 13              8310784          120831935   57610829824       userdata&lt;br /&gt;
&lt;br /&gt;
You can now use &amp;lt;code&amp;gt;rkdeveloptool write-partition partitionname yourfile&amp;lt;/code&amp;gt; to overwrite one of the eMMC partitions.&lt;br /&gt;
&lt;br /&gt;
=== U-Boot + Kernel On SD, RootFS On eMMC ===&lt;br /&gt;
&lt;br /&gt;
This is the setup [[User:CounterPillow]] currently uses. In short, you'll need a vendor U-Boot on your SD card, with a boot partition on it that contains your &amp;lt;tt&amp;gt;extlinux.conf&amp;lt;/tt&amp;gt;, device tree and kernel.&lt;br /&gt;
&lt;br /&gt;
==== Setting Up The SD Card ====&lt;br /&gt;
&lt;br /&gt;
Assuming your SD card is &amp;lt;tt&amp;gt;/dev/sdX&amp;lt;/tt&amp;gt;, partition as e.g. follows:&lt;br /&gt;
&lt;br /&gt;
 # parted -s /dev/sdX mklabel gpt&lt;br /&gt;
 # parted -s /dev/sdX mkpart loader 64s 8MiB&lt;br /&gt;
 # parted -s /dev/sdX mkpart uboot 8MiB 16MiB&lt;br /&gt;
 # parted -s /dev/sdX mkpart env 16MiB 32MiB&lt;br /&gt;
 # parted -s /dev/sdX mkpart efi fat32 32MiB 544MiB    # increase size as you wish&lt;br /&gt;
 # parted -s /dev/sdX set 4 boot on&lt;br /&gt;
&lt;br /&gt;
Flash SPL and u-boot:&lt;br /&gt;
 # dd if=rk3588_spl_loader_v1.06.109.bin of=/dev/sdX1&lt;br /&gt;
 # dd if=uboot.img of=/dev/sdX2&lt;br /&gt;
&lt;br /&gt;
Then make the filesystem:&lt;br /&gt;
 # mkfs.vfat -n &amp;quot;efi&amp;quot; /dev/sdX4&lt;br /&gt;
&lt;br /&gt;
Mount it to e.g. &amp;lt;tt&amp;gt;/mnt/sdcardboot&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 # mount /dev/sda4 /mnt/sdcardboot&lt;br /&gt;
&lt;br /&gt;
Put the following in &amp;lt;tt&amp;gt;/mnt/sdcardboot/extlinux/extlinux.conf&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 default l0&lt;br /&gt;
 menu title QuartzPro64 Boot Menu&lt;br /&gt;
 prompt 0&lt;br /&gt;
 timeout 50&lt;br /&gt;
 &lt;br /&gt;
 label l0&lt;br /&gt;
 menu label Boot Jank Kernel SDMMC&lt;br /&gt;
 linux /jank&lt;br /&gt;
 fdt /dtbs/rockchip/rk3588-evb1-v10.dtb&lt;br /&gt;
 append earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000n8 root=/dev/mmcblk0p14 rw rootwait&lt;br /&gt;
&lt;br /&gt;
Copy your kernel to &amp;lt;tt&amp;gt;/mnt/sdcardboot/jank&amp;lt;/tt&amp;gt; and your DTB to &amp;lt;tt&amp;gt;/mnt/sdcardboot/dtbs/rockchip/rk3588-evb1-v10.dtb&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Unmount it, we're done with the SD card.&lt;br /&gt;
&lt;br /&gt;
==== Creating The Root File System ====&lt;br /&gt;
&lt;br /&gt;
First, allocate a file the size of your desired root partition (larger sizes will take longer to transfer, don't make the same mistakes as CounterPillow did), here we choose 16G:&lt;br /&gt;
 $ fallocate -l 16G rootpart.bin&lt;br /&gt;
&lt;br /&gt;
then, make the filesystem on it. CounterPillow went for ext4 because nobody has ever been fired for using ext4:&lt;br /&gt;
 $ mkfs.ext4 rootpart.bin&lt;br /&gt;
&lt;br /&gt;
Cool, now mount it:&lt;br /&gt;
 # mount rootpart.bin /mnt/emmc-root&lt;br /&gt;
&lt;br /&gt;
Now we'll download the Arch Linux ARM generic rootfs tarball and go to town:&lt;br /&gt;
 $ wget -N http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz{,.sig}&lt;br /&gt;
 $ curl 'https://keyserver.ubuntu.com/pks/lookup?op=get&amp;amp;search=0x68b3537f39a313b3e574d06777193f152bdbe6a6' | gpg --import=-    # in case you're lacking the key&lt;br /&gt;
 $ gpg --verify ArchLinuxARM-aarch64-latest.tar.gz.sig    # don't you dare skip this&lt;br /&gt;
 # bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/emmc-root    # notice that this is run as root&lt;br /&gt;
&lt;br /&gt;
Then we just need to edit fstab. Get the UUID (not PARTUUID) from lsblk:&lt;br /&gt;
 $ lsblk -o NAME,SIZE,MOUNTPOINTS,UUID&lt;br /&gt;
&lt;br /&gt;
and put it in &amp;lt;tt&amp;gt;/mnt/emmc-root/etc/fstab&amp;lt;/tt&amp;gt; as follows:&lt;br /&gt;
 UUID=''root-uuid-here''  /       ext4    defaults        0       1&lt;br /&gt;
&lt;br /&gt;
Unmount &amp;lt;tt&amp;gt;/mnt/emmc-root&amp;lt;/tt&amp;gt;, we're done with it.&lt;br /&gt;
&lt;br /&gt;
==== Flashing The Root File System With RockUSB ====&lt;br /&gt;
&lt;br /&gt;
{{Template:warning|This '''will''' destroy whatever data is on that userdata partition. But you're here to run Linux, not Android, right?}}&lt;br /&gt;
&lt;br /&gt;
Plug one USB-C cable into the debug UART port, the other into the download port. Yes you will need two USB-C cables (or A-to-C cables) for this, get over it.&lt;br /&gt;
&lt;br /&gt;
Plug in your board, reset it while hammering Ctrl+c on the debug UART until you get into a u-boot command line. Now enter the &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
If your device doesn't show up in &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rkdeveloptool list&amp;lt;/code&amp;gt; command, pull out the download USB-C plug, rotate it axially by 180 Euler degrees, and plug it back in.&lt;br /&gt;
&lt;br /&gt;
Next, flash the partition. Depending on the size of it, this can take over an hour:&lt;br /&gt;
 $ rkdeveloptool write-partition userdata rootpart.bin&lt;br /&gt;
&lt;br /&gt;
==== Booting ====&lt;br /&gt;
&lt;br /&gt;
Unplug the download USB-C cable once done.&lt;br /&gt;
&lt;br /&gt;
Put the SD card in the board. Reset it. You can now boot and your rootfs on eMMC will be mounted and contains an ALARM userland.&lt;br /&gt;
&lt;br /&gt;
To update kernels or the device tree, just shut down the board, take out the SD card, write a new kernel or dtb to it, and plug it back in. No more need for rkdeveloptool, yay.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
* [http://lists.infradead.org/pipermail/linux-rockchip/ The linux-rockchip mailing list archives]&lt;br /&gt;
* [https://patchwork.kernel.org/project/linux-rockchip/list/ linux-rockchip patchwork]&lt;br /&gt;
* [https://github.com/neg2led/linux-quartz64 neggles / neg2led's mainline kernel repository with patches picked from the mailing list]&lt;br /&gt;
* [https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git/log/?h=rk3588 Sebastian Reichel's (SRE) rk3588 branch]&lt;br /&gt;
* [https://github.com/rockchip-linux/kernel Rockchip BSP kernel tree]&lt;br /&gt;
* [https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux Collabora RK3588 integration branch]&lt;br /&gt;
* [https://gitlab.collabora.com/hardware-enablement/rockchip-3588/notes-for-rockchip-3588/-/blob/main/mainline-status.md Collabora Mainline Status Table]&lt;br /&gt;
* [https://github.com/radxa/kernel/tree/stable-5.10-rock5 Radxa kernel tree, for reference, a lot is happening here]&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* The quartz64 and quartz-dev channels on the PINE64 chats (bridged IRC, Matrix, Discord and Telegram)&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool PINE64 rkdeveloptool fork]&lt;br /&gt;
* [https://github.com/CounterPillow/uboot-qp64 CounterPillow's uboot-qp64 repository], used with [https://github.com/rockchip-linux/rkbin/ the official rkbin repository]&lt;br /&gt;
* [https://opensource.rock-chips.com/wiki_Main_Page Rockchip OpenSource wiki]&lt;br /&gt;
* [https://github.com/collabora/rockchiprs rockchiprs] (rkdeveloptool replacement written in Rust)&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
The documentation for the QuartzPro64 board and most of the documentation for the chips it uses hasn't been publicly released yet, but if you do own a QuartzPro64 board, [[User:CounterPillow|CounterPillow]] or [[User:Dsimic|dsimic]] will happily provide the documentation to you for the research or development purposes, if you ask them in the PINE64 [[Main Page#Chat Platforms|chat channels]]. We've got the following documents, some of which can also be found elsewhere on the Internet rather easily:&lt;br /&gt;
&lt;br /&gt;
* RK3588 datasheet&lt;br /&gt;
* RK3588 technical reference manual (TRM), parts 1 and 2&lt;br /&gt;
* RK3588 hardware design guide, machine translated to English from Chinese, and the original version in Chinese&lt;br /&gt;
* RK860 datasheet, including register descriptions&lt;br /&gt;
* RK806 datasheet, including register descriptions&lt;br /&gt;
* [https://devzone.pine64.org/uploads/d392f228-d53b-11ec-9ab8-fe0395c0c83d/9fee695f-39a4-4858-a58a-c91b86d4fa2c/QuartzPro64-DevBoard-Schematic-V1.0_20220216.pdf QuartzPro64 schematics]&lt;br /&gt;
* [https://devzone.pine64.org/uploads/d392f228-d53b-11ec-9ab8-fe0395c0c83d/cf368836-966e-4c3c-9e0d-04a82a705d45/QuartzPro64-DevBoard-PCB-V1.0_20220216_topplace.pdf QuartzPro64 PCB top layout]&lt;br /&gt;
* [https://devzone.pine64.org/uploads/d392f228-d53b-11ec-9ab8-fe0395c0c83d/ec260213-d4f7-4c61-ad1f-40ee7b7b7a35/QuartzPro64-DevBoard-PCB-V1.0_20220216_bottomplace.pdf QuartzPro64 PCB bottom layout]&lt;br /&gt;
* [https://datasheet.lcsc.com/lcsc/2203311530_AMPAK-Tech-AP6275PR3_C2984106.pdf AMPAK AP6275PR3 (WiFi + BT module) datasheet]&lt;br /&gt;
* AMPAK AP6275P (WiFi + BT module) datasheet&lt;br /&gt;
&lt;br /&gt;
[[Category:Rockchip RK3588]]&lt;br /&gt;
[[Category:QuartzPro64]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=21135</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=21135"/>
		<updated>2023-11-13T20:43:08Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: remove weird space thingy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Quartz64modelb.png|400px|thumb|right|The Quartz64 Model B]]&lt;br /&gt;
&lt;br /&gt;
The '''Quartz64''' is the most recent Single Board Computer offering from PINE64, with Model A initially released in June of 2021 and Model B in May of 2022. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open-ended slot (model A) or M.2 slot (model B) using a single Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 is available in two LPDDR4 system memory options: 4GB and 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software releases ==&lt;br /&gt;
&lt;br /&gt;
Under [[Quartz64 Software Releases]] you will find a complete list of currently supported operating system images, which work with the Quartz64, as well as other related software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
=== Flashing the device ===&lt;br /&gt;
&lt;br /&gt;
Natively the board only supports booting the platform firmware from SPI, the eMMC or a microSD card, see [[#Boot order|boot order]]. The platform firmware loaded from there (U-Boot, EDK2, ...) may then allow loading kernels from additional storage mediums or even the network, and they will have their own boot order.&lt;br /&gt;
&lt;br /&gt;
The board can be booted by flashing your chosen operating system to a microSD card using another device and inserting the microSD card into the Quartz64, see the article [[Getting started]]. Flashing the eMMC is possible by booting an operating system from the microSD card and overwriting the eMMC from within the booted operating system, or by using [https://pine64.com/product/usb-adapter-for-emmc-module/ the USB eMMC adapter].&lt;br /&gt;
&lt;br /&gt;
=== Boot order ===&lt;br /&gt;
&lt;br /&gt;
The hardware boot order of the Quartz64 is:&lt;br /&gt;
&lt;br /&gt;
# SPI NOR flash&lt;br /&gt;
# SPI NAND flash&lt;br /&gt;
# eMMC&lt;br /&gt;
# microSD card&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
* [https://www.cnx-software.com/2020/12/01/rockchip-rk3568-processor-to-power-edge-computing-and-nvr-applications 22nm process, believed to be FD-SOI]&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
&lt;br /&gt;
* RAM Memory Variants: 2GB (SOQuartz only), 4GB, 8GB LPDDR4.&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
* 10/100/1000Mbps Ethernet&lt;br /&gt;
** Easily sustains &amp;gt;910 Mbit/s in a &amp;lt;code&amp;gt;--bidir&amp;lt;/code&amp;gt; (i.e. sending and receiving at the same time) iperf3 TCP test.&lt;br /&gt;
* Wi-Fi 802.11 b/g/n/ac with Bluetooth 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port) (removed in newer revisions due to electrical signalling issues it caused)&lt;br /&gt;
* optional eMMC module from 8GB up to 128GB&lt;br /&gt;
* 64 Mbit (8 MByte) SPI flash (Model B only), part number '''25Q64DWZPIG''' in the schematic&lt;br /&gt;
&lt;br /&gt;
==== eMMC Speeds ====&lt;br /&gt;
&lt;br /&gt;
On a 64 GB eMMC module:&lt;br /&gt;
&lt;br /&gt;
  $ sudo hdparm -tT /dev/mmcblk1 &lt;br /&gt;
  &lt;br /&gt;
  /dev/mmcblk1:&lt;br /&gt;
   Timing cached reads:   2368 MB in  2.00 seconds = 1184.46 MB/sec&lt;br /&gt;
   Timing buffered disk reads: 452 MB in  3.01 seconds = 149.98 MB/sec&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wi-Fi/BT Module Header - SDIO 3.0 and UART on model A, built-in Wi-Fi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
** On Model A, the slot provides 10W of power for the 3.3V supply and however much power your 12V input power supply provides on the 12V supply&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability).&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are using the same I/O lines, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [[File:Quartz64_model-A_schematic_v1.0_20201215.pdf|the board schematics]].&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model B) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&lt;br /&gt;
&lt;br /&gt;
Interesting alternate pin configurations are listed in [brackets].&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SDA_M0]'' GPIO1_A0_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SCL_M0]'' GPIO1_A1_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_C4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CS0_M1]'' GPIO3_A1_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A3_3V3 ''[I2S3_SCLK_M0]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2S3_MCLK_M0]'' GPIO3_A2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B0_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B2_3V3 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C5_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 21&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 22&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C1_3V3 ''[SPI1_MOSI_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 23&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 24&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_C6_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 25&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 26&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_D1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C4_SDA_M0&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 27&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 28&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| I2C4_SCL_M0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 29&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 30&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 31&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 32&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C2_3V3 ''[SPI1_MISO_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CLK_M1]'' GPIO3_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 33&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 34&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2S3_LRCK_M0]'' GPIO3_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 35&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 36&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A7_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPDIF_TX_M0]'' GPIO1_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 37&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 38&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A6_3V3 ''[I2S3_SDI_M0]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 39&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 40&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A5_3V3 ''[I2S3_SDO_M0]''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Source: Page 24 of [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board Information, Schematics, and Certifications ==&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Model &amp;quot;A&amp;quot; Baseboard Dimensions: 133mm x 80mm x 19mm&lt;br /&gt;
&lt;br /&gt;
Input Power: DC 12V @ 3A 5.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
Certifications:&lt;br /&gt;
&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 submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
* [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
* [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
&lt;br /&gt;
Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic ver 1.3 20220124 PDF file]&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Quartz64_model-B_PCB_Components_Placement-V1.2_20211014.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
* Please note that v1.2 and V1.3 schematic and component placement are identical, just some component value changed.&lt;br /&gt;
* Note: Model B uses a Molex PicoBlade compatible connector for the RTC battery. The Pine64 Backup Battery Holders come with a JST PH type connector. To use the Pine64 RTC Backup Battery Holder, the connector on the battery holder will need to be modified with a PicoBlade type connector.&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
&lt;br /&gt;
Rockchip RK3566 SoC information:&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
* [https://opensource.rock-chips.com/images/2/26/Rockchip_RK3568_TRM_Part1_V1.3-20220930P.PDF Rockchip RK3566 and RK3568 TRM (Technical Reference Manual)]&lt;br /&gt;
&lt;br /&gt;
Rockchip PMU (Power Management Unit) Information:&lt;br /&gt;
* [https://www.rockchip.fr/RK817%20datasheet%20V1.01.pdf Rockchip RK817 ver 1.01 datasheet for Quartz64 model A]&lt;br /&gt;
* [https://www.rockchip.fr/RK809%20datasheet%20V1.01.pdf Rockchip RK809 ver 1.01 datasheet for Quartz64 model B and SOQuartz]&lt;br /&gt;
&lt;br /&gt;
LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
* [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 Datasheet]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
E-ink Panel information:&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
* [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&lt;br /&gt;
* [https://files.pine64.org/doc/datasheet/PineNote/TI%20PMU-TPS651851.pdf TPS65185x PMIC for E-Ink Enabled Electronic Paper Display Datasheet]&lt;br /&gt;
&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; 1024x600 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;
&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;
&lt;br /&gt;
Wi-Fi/BT module info:&lt;br /&gt;
* [https://files.pine64.org/doc/datasheet/rockpro64/AW-CM256SM_DS_DF_V1.9_STD.pdf Azurewave CM256SM 11AC Wi-Fi + Bluetooth5.0 Datasheet]&lt;br /&gt;
&lt;br /&gt;
IR LED:&lt;br /&gt;
* [https://media.digikey.com/pdf/Data%20Sheets/Everlight%20PDFs/IRM-36xx_Series.pdf IRM-3638 Datasheet]&lt;br /&gt;
&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;
* [https://www.printables.com/model/269572-pine-quartz-64-a-full-case 3D Printable Enclosure for Model A]&lt;br /&gt;
* [https://www.printables.com/model/269575-pine-quartz-64-a-open-frame Open Frame for Model A]&lt;br /&gt;
&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 (Model A)]&lt;br /&gt;
* [https://www.molex.com/pdm_docs/sd/533980271_sd.pdf 1.25mm Picoblade Type connector specification used in RTC Battery port (Model B)]&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;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== Enclosures ==&lt;br /&gt;
&lt;br /&gt;
Note: Please expand this section with more cases known to work.&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
All enclosures that fit the ROCKPro64 should fit the Quartz64 Model &amp;quot;A&amp;quot;, as the I/O has been laid out the same on purpose.&lt;br /&gt;
&lt;br /&gt;
* [[Model A Acrylic Open Enclosure]] - but see the troubleshooting section below.&lt;br /&gt;
* [[Quartz64 Premium Aluminium Case|RockPro64 Premium Aluminium Case]]&lt;br /&gt;
* [[ROCKPro64#3D printable ITX mounting brackets]] (Not an enclosure but allows to mount the board in an ATX/ITX case)&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[Model B Acrylic Open Enclosure]]&lt;br /&gt;
* the ROCK64 aluminium enclosure '''does not''' work, as the DC input jack is placed differently&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur. '''This affects model A only'''&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work, because if the generic PHY driver is built in it will bind to the PHY first, unless you include the motorcomm module in your initramfs.&lt;br /&gt;
&lt;br /&gt;
Note: Starting with [https://salsa.debian.org/kernel-team/linux/-/merge_requests/551 Debian's &amp;lt;code&amp;gt;6.1~rc3-1~exp1&amp;lt;/code&amp;gt; kernel] the module is included, but set to &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; and I (Diederik) have verified that it gets included in the initramfs and '''works''' on Model-A and Model-B with the [[Quartz64#Plebian]] images.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the [[Model A Acrylic Open Enclosure]]. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimeters.&lt;br /&gt;
&lt;br /&gt;
[[File:Quartz64-audio-jack-spacer-issue.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
=== No GPU Acceleration with Debian &amp;quot;Bullseye&amp;quot; Userland ===&lt;br /&gt;
&lt;br /&gt;
Debian Bullseye ships a Mesa version that is too old to contain the required patches for the RK356x SoC's GPU. Upgrade to Bookworm.&lt;br /&gt;
&lt;br /&gt;
=== Wireless Connectivity Doesn't Work ===&lt;br /&gt;
&lt;br /&gt;
ROCKPro64 wireless module may have CYW43455 or CYW43456 chips on board (not sure if this is the same for Quartz64 model B). Both chips are supported by &amp;lt;code&amp;gt;brcmfmac&amp;lt;/code&amp;gt; Wi-Fi driver and &amp;lt;code&amp;gt;btbcm&amp;lt;/code&amp;gt; Bluetooth driver. &lt;br /&gt;
&lt;br /&gt;
For CYW43455 drivers attempt to load &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43455-sdio.bin&amp;lt;/code&amp;gt; for Wi-Fi and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C0.hcd&amp;lt;/code&amp;gt; for Bluetooth. Corresponding firmware files for CYW43456 are &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43456-sdio.bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C5.hcd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On Manjaro firmware files for both Bluetooth and Wi-Fi on CYW43456 on are provided by &amp;lt;code&amp;gt;ap6256-firmware&amp;lt;/code&amp;gt; package (&amp;lt;code&amp;gt;pacman -S ap6256-firmware&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
However for CYW43455 wi-fi firmware is in the &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package and bluetooth is in the &amp;lt;code&amp;gt;firmware-raspberrypi&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;pacman -S linux-firmware firmware-raspberrypi&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package is missing device specific symlinks for quartz64-a. To create them execute:&lt;br /&gt;
&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.bin /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.bin&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.AW-CM256SM.txt /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.txt &lt;br /&gt;
&lt;br /&gt;
As of 2022-10-19 device tree in mainline kernel for Quartz64 model A has wrong configuration for the Bluetooth driver. [https://patchwork.kernel.org/project/linux-rockchip/patch/20220926125350.64783-1-leo@nabam.net/ Patch] is submitted to the LKML and accepted and included upstream in 6.1-rc7. It's possible to modify dtb file provided by the current kernel using device tree compiler to enable Bluetooth or perform &amp;lt;code&amp;gt;make dtbs&amp;lt;/code&amp;gt; in the patched kernel tree to get updated dtb file (&amp;lt;code&amp;gt;arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dtb&amp;lt;/code&amp;gt;). Issue manifests itself with following errors in `dmesg`:&lt;br /&gt;
&lt;br /&gt;
  command 0x0c03 tx timeout&lt;br /&gt;
  Bluetooth: hci0: BCM: Reset failed (-110)&lt;br /&gt;
&lt;br /&gt;
== How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Connect Debug UART ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to get debug output is to connect a 3.3V 1.5mbaud capable UART adapter to the board.&lt;br /&gt;
&lt;br /&gt;
To connect it, connect the ground lead to pin 6, and the RX/TX leads to pins 8 and 10 (consider swapping them if you get no output, things are often mislabeled). These pins are &amp;quot;UART2&amp;quot; in the above GPIO table.&lt;br /&gt;
&lt;br /&gt;
Open a serial terminal at 1500000 bauds, e.g.&lt;br /&gt;
&lt;br /&gt;
 $ picocom -b 1500000 /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
=== Disable Heartbeat LED (Linux) ===&lt;br /&gt;
&lt;br /&gt;
The flashing LED is called the &amp;quot;heartbeat LED&amp;quot;, it blinks in a heart rhythm like fashion once the kernel is running. To disable it, you can run&lt;br /&gt;
&lt;br /&gt;
 # echo none &amp;gt; /sys/class/leds/user-led/trigger&lt;br /&gt;
&lt;br /&gt;
On model A LED device is called &amp;quot;diy-led&amp;quot;, not &amp;quot;user-led&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On a system with systemd, you can do this as soon as the system is ready to be logged in with a systemd unit like this:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Turn off heartbeat LED&lt;br /&gt;
 Wants=multi-user.target&lt;br /&gt;
 After=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=simple&lt;br /&gt;
 ExecStart=sh -c 'echo none &amp;gt; /sys/class/leds/user-led/trigger'&lt;br /&gt;
&lt;br /&gt;
Place it in ''/etc/systemd/system/user-led.service'', and run&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # systemctl enable user-led.service&lt;br /&gt;
&lt;br /&gt;
Upon rebooting, you will now notice that the heartbeat LED will blink during boot-up, but stops blinking as soon as the multi-user target is reached (i.e. the user can log in).&lt;br /&gt;
&lt;br /&gt;
=== SATA on model A ===&lt;br /&gt;
&lt;br /&gt;
On model A USB 3.0 and SATA ports are using the same I/O line and can't be used simultaneously. By default USB 3.0 is enabled in Linux device tree and SATA is disabled. FDT modifications are required to turn SATA on. &lt;br /&gt;
&lt;br /&gt;
Following script is tested on Manjaro but should work on the other distributions with minimal changes. Device tree compiler package usually provides fdtput command (on Manjaro run: &amp;lt;code&amp;gt;pacman -S dtc&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/dtbs/rockchip/rk3566-quartz64-a.dtb /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /usb@fd000000 status disabled&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /sata@fc400000 status okay&lt;br /&gt;
 # sed -i 's#^FDT /dtbs/rockchip/rk3566-quartz64-a.dtb$#FDT /dtbs/rockchip/rk3566-quartz64-a-sata.dtb#' /boot/extlinux/extlinux.conf&lt;br /&gt;
 # systemctl reboot&lt;br /&gt;
&lt;br /&gt;
=== Using a PCF8574 on Model A ===&lt;br /&gt;
&lt;br /&gt;
See [[Quartz64 Model A using a PCF8574]].&lt;br /&gt;
&lt;br /&gt;
=== Using a battery on Model A ===&lt;br /&gt;
&lt;br /&gt;
See [[Quartz64 Model A Using a battery]].&lt;br /&gt;
&lt;br /&gt;
=== Connecting a MIPI-DSI display ===&lt;br /&gt;
&lt;br /&gt;
See [[Quartz64 connecting a MIPI-DSI display]].&lt;br /&gt;
&lt;br /&gt;
=== Building Mainline U-Boot ===&lt;br /&gt;
&lt;br /&gt;
See [[Quartz64 Building U-Boot]].&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions ==&lt;br /&gt;
&lt;br /&gt;
=== Do I Need A Fan/What Heatsink Do I Need? ===&lt;br /&gt;
&lt;br /&gt;
You don't need a fan. The [https://pine64.com/product/rockpro64-20mm-mid-profile-heatsink/ 20mm medium heatsink for Model A is plenty enough]. For Model B, the [https://pine64.com/product/small-fan-type-heatsink/ fan type heatsink] will do fine.&lt;br /&gt;
&lt;br /&gt;
=== Can This Run A Minecraft Server? ===&lt;br /&gt;
&lt;br /&gt;
Yes! Sort of. Testing on an 8GB Model A with PaperMC, [[User:CounterPillow]] was able to out-row world generation in a boat with just one player online, but aside from the slow world gen (which can be pre-generated) the server handled things like TNT explosions and mobs fine. It'll probably do okay with 1-3 players.&lt;br /&gt;
&lt;br /&gt;
=== Do I Need The 5A Power Supply For Model A? ===&lt;br /&gt;
&lt;br /&gt;
You only need the 5A power supply for Model A if you plan on connecting hard disk drives to the 12V header on the board.&lt;br /&gt;
&lt;br /&gt;
=== How Much Power Does It Consume? ===&lt;br /&gt;
&lt;br /&gt;
For Model B, it's &amp;lt;2W in idle (powertop tunables not set), and &amp;lt;5W under full CPU load (&amp;lt;code&amp;gt;stress-ng -c4&amp;lt;/code&amp;gt;). Model A will be similar as it's the same SoC.&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]] [[Category:Rockchip RK3566]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=20525</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=20525"/>
		<updated>2023-08-14T04:38:54Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Upstreaming Status */&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/e18d9b093006d8abd53e1ce13c0d5a8d0fcd5f64]&amp;lt;/sup&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based. Mainline as of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/6f1ae821a6c4aa9d5b8f437b27ec86fb569219fd]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|Merged&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[#Mainline_U-Boot_Work|See below]]. Quartz64 and SOQuartz as of v2023.10-rc2&amp;lt;sup&amp;gt;[https://source.denx.de/u-boot/u-boot/-/commit/4e619e8d4fd68095bc665a78f2651d8e478a4534]&amp;lt;/sup&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;gp7101&amp;lt;/code&amp;gt;&lt;br /&gt;
| Someone should write a pwm driver for it so we can then use pwm-fan&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/29c99fb085ad53e6d5504d1f8d32e6673b9b3a2c]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK and [https://github.com/dieselnutjob/kernel-rk3566/tree/linux-4.19.210/drivers/rknpu open source kernel module rknpu]. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | TRNG&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=699813]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rng&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Wi-Fi&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;bes2600&amp;lt;/code&amp;gt;&lt;br /&gt;
| A downstream driver is available but it makes use of some custom Rockchip interfaces and is designed for older kernels, plans are being made to port it to DKMS.&lt;br /&gt;
| PineTab 2&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;brcmfmac&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
** H.264&lt;br /&gt;
* Video Encode&lt;br /&gt;
** JPEG (it's pretty bad)&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 (applies to Model A only) &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* RGA &amp;amp;mdash; only works with memory &amp;amp;le; 4 GiB, because Rockchip didn't make the address registers larger. Oopsie.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
I (liamur) [https://github.com/liamhays/rk3566-mcu did some investigation] into the MCU and found that it is disabled by TF-A on suspend, and doesn't reside in a low-power part of the RK3566 anyway. It does however have access to most of the chip and could be used as (for example) a real-time coprocessor.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
We currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Mainline U-Boot contains good enough support for the RK3566 SoC used on the Quartz64 as of v2023.07 and have support for Quartz64 and SOQuartz as of v2023.10-rc2. Drivers for [https://patchwork.ozlabs.org/cover/1817577/ ethernet GMAC] and [https://patchwork.ozlabs.org/patch/1817295/ Motorcomm PHY] have been submitted for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that could be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet PHY for Model A, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REALTEK_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet PHY for Model B&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_I2C_RK3X&amp;lt;/code&amp;gt;&lt;br /&gt;
** I2C support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=20086</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=20086"/>
		<updated>2023-07-14T17:49:37Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Linux Kernel Config Options */ dsi and charger were merged, and do not need patches&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/e18d9b093006d8abd53e1ce13c0d5a8d0fcd5f64]&amp;lt;/sup&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based. Mainline as of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/6f1ae821a6c4aa9d5b8f437b27ec86fb569219fd]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|In progress&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Quartz64_Development#Mainline_U-Boot_Work|See below]]&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;gp7101&amp;lt;/code&amp;gt;&lt;br /&gt;
| Someone should write a pwm driver for it so we can then use pwm-fan&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/linus/29c99fb085ad53e6d5504d1f8d32e6673b9b3a2c]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | TRNG&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=699813]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rng&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Wi-Fi&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;bes2600&amp;lt;/code&amp;gt;&lt;br /&gt;
| A downstream driver is available but it makes use of some custom Rockchip interfaces and is designed for older kernels, plans are being made to port it to DKMS.&lt;br /&gt;
| PineTab 2&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;brcmfmac&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
** H.264&lt;br /&gt;
* Video Encode&lt;br /&gt;
** JPEG (it's pretty bad)&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 (applies to Model A only) &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* RGA &amp;amp;mdash; only works with memory &amp;amp;le; 4 GiB, because Rockchip didn't make the address registers larger. Oopsie.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
We currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Mainline U-Boot contains good enough support for the RK3566 SoC used on the Quartz64 as of v2023.07, patches are still in review for e.g. PCIe/NVMe/AHCI support.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Bring the kernel's Quartz64 DTSes into the tree (CounterPillow did this [https://github.com/CounterPillow/u-boot-quartz64/commits/mainline-ish-2 in his tree], Kwiboo refined this [https://github.com/Kwiboo/u-boot-rockchip/commits/rk3568-2023.07 in his tree])&lt;br /&gt;
* Write &amp;lt;code&amp;gt;defconfig&amp;lt;/code&amp;gt;s based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt; (CounterPillow did this [https://github.com/CounterPillow/u-boot-quartz64/commits/mainline-ish-2 in his tree], Kwiboo refined this [https://github.com/Kwiboo/u-boot-rockchip/commits/rk3568-2023.07 in his tree])&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking&lt;br /&gt;
** Only needed for Model A, RTL8211 on Model B is already supported in mainline u-boot&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet PHY for Model A, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REALTEK_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet PHY for Model B&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_I2C_RK3X&amp;lt;/code&amp;gt;&lt;br /&gt;
** I2C support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=15245</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=15245"/>
		<updated>2022-12-29T07:07:41Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Correct kernel version merged&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e18d9b093006d8abd53e1ce13c0d5a8d0fcd5f64]&amp;lt;/sup&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based. Mainline as of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6f1ae821a6c4aa9d5b8f437b27ec86fb569219fd]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|In progress&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Quartz64_Development#Mainline_U-Boot_Work|See below]]&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29c99fb085ad53e6d5504d1f8d32e6673b9b3a2c]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | TRNG&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=694733&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rng&amp;lt;/code&amp;gt;&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
** H.264&lt;br /&gt;
* Video Encode&lt;br /&gt;
** JPEG (it's pretty bad)&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 (applies to Model A only) &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* RGA &amp;amp;mdash; only works with memory &amp;amp;le; 4 GiB, because Rockchip didn't make the address registers larger. Oopsie.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
=== OS Images ===&lt;br /&gt;
&lt;br /&gt;
We need a '''Debian-based''' OS image with a packaged '''mainline kernel''' that's updated through a repository for SOQuartz and Quartz64 Model B. Other distribution userlands are welcome as well, but a lot of users are looking for Debian or Ubuntu. Do keep in mind that it'll probably have to be Bookworm due to the mesa GPU support stuff.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=15244</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=15244"/>
		<updated>2022-12-29T07:03:47Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: DSI was merged&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.2&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e18d9b093006d8abd53e1ce13c0d5a8d0fcd5f64]&amp;lt;/sup&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based. Mainline as of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6f1ae821a6c4aa9d5b8f437b27ec86fb569219fd]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|In progress&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Quartz64_Development#Mainline_U-Boot_Work|See below]]&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29c99fb085ad53e6d5504d1f8d32e6673b9b3a2c]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | TRNG&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=694733&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rng&amp;lt;/code&amp;gt;&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
** H.264&lt;br /&gt;
* Video Encode&lt;br /&gt;
** JPEG (it's pretty bad)&lt;br /&gt;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 (applies to Model A only) &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* RGA &amp;amp;mdash; only works with memory &amp;amp;le; 4 GiB, because Rockchip didn't make the address registers larger. Oopsie.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
=== OS Images ===&lt;br /&gt;
&lt;br /&gt;
We need a '''Debian-based''' OS image with a packaged '''mainline kernel''' that's updated through a repository for SOQuartz and Quartz64 Model B. Other distribution userlands are welcome as well, but a lot of users are looking for Debian or Ubuntu. Do keep in mind that it'll probably have to be Bookworm due to the mesa GPU support stuff.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User_talk:Vincele&amp;diff=14756</id>
		<title>User talk:Vincele</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User_talk:Vincele&amp;diff=14756"/>
		<updated>2022-11-21T20:01:22Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Add PBP void section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Void Linux PBP===&lt;br /&gt;
&lt;br /&gt;
Hey, I know installing Void Linux on the PBP is not quite straightforward or documented. Thanks for trying to help with that. I am a little concerned about recommending users manage their own kernels, however. Just want to steer users toward the more automated and supportable options out there. Hopefully you feel that is valuable. Thanks, and well wishes!&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14755</id>
		<title>Pinebook Pro Installing Void Linux ARM</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14755"/>
		<updated>2022-11-21T19:59:32Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Make sure to steer people toward the official solutions, or at least mention their existence.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This guide is a Work In Progress; no warranty is implied.&lt;br /&gt;
This installation method is not officially recommended (or discouraged) by the Void Linux project.&lt;br /&gt;
This guide is for experienced Linux users.}}&lt;br /&gt;
&lt;br /&gt;
This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.&lt;br /&gt;
&lt;br /&gt;
Only the steps that are different are listed here. Be careful, the numbering of the sections is not the same.&lt;br /&gt;
&lt;br /&gt;
==Installing the root filesystem==&lt;br /&gt;
&lt;br /&gt;
=== Downloading and verifying the rootfs tarball ===&lt;br /&gt;
&lt;br /&gt;
You can go to the Void linux [https://voidlinux.org/download/ download page], select the &amp;quot;arm&amp;quot; tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.&lt;br /&gt;
How to check integrity of the downloaded file is explained on the same page.&lt;br /&gt;
&lt;br /&gt;
Or use the following instructions (on debian):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/void-aarch64-musl-ROOTFS-20221001.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/sha256sum.{txt,sig}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://github.com/void-linux/void-packages/raw/master/srcpkgs/void-release-keys/files/void-release-20221001.pub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 $ signify-openbsd -V -p void-release-20221001.pub -x sha256sum.sig -m sha256sum.txt&lt;br /&gt;
 Signature Verified&lt;br /&gt;
 $ sha256sum -c --ignore-missing sha256sum.txt&lt;br /&gt;
 void-aarch64-musl-ROOTFS-20221001.tar.xz: OK&lt;br /&gt;
&lt;br /&gt;
=== Extracting and configuring the root filesystem ===&lt;br /&gt;
==== Extracting the root filesystem ====&lt;br /&gt;
 # tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt&lt;br /&gt;
&lt;br /&gt;
==== Kernel ====&lt;br /&gt;
&lt;br /&gt;
The Void linux rootfs tarball does not contain a kernel, however  the '''pinebookpro-kernel''' package can be installed from the Void Linux repos. Alternatively, one can (cross) build a kernel themselves. Skip this section if you would rather install the package.&lt;br /&gt;
&lt;br /&gt;
===== Cross-compiling a mainline kernel suitable for the Pinebook Pro =====&lt;br /&gt;
We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.&lt;br /&gt;
&lt;br /&gt;
This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
 $ cd linux&lt;br /&gt;
 $ wget -O .config https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/linux-postmarketos-rockchip/config-postmarketos-rockchip.aarch64&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 oldconfig&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(grep -c '^processor' /proc/cpuinfo)&lt;br /&gt;
&lt;br /&gt;
===== Installing the newly built kernel, modules &amp;amp; DTB files =====&lt;br /&gt;
&lt;br /&gt;
 $ KVER=&amp;quot;$(make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 kernelrelease)&amp;quot;&lt;br /&gt;
 $ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 modules_install dtbs_install \&lt;br /&gt;
 		INSTALL_MOD_STRIP=1 \&lt;br /&gt;
 		INSTALL_MOD_PATH=/mnt \&lt;br /&gt;
 		INSTALL_DTBS_PATH=/mnt/boot/dtbs&lt;br /&gt;
 $ sudo cp arch/arm64/boot/Image &amp;quot;/mnt/boot/Image-${KVER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Configuring a login agent on the serial console ====&lt;br /&gt;
 # cp -R /mnt/etc/sv/agetty-ttyS0 /mnt/etc/sv/agetty-ttyS2&lt;br /&gt;
 # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default&lt;br /&gt;
&lt;br /&gt;
==== Creating extlinux.conf ====&lt;br /&gt;
&lt;br /&gt;
Note: if using the official PBP kernel package, it is also recommended to use the '''u-boot-menu''' package, which automatically regenerates the extlinux.conf file on kernel upgrades. In that case, you will not need to follow the below instructions.&lt;br /&gt;
&lt;br /&gt;
The following borrows from [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-pine64-pinebookpro/extlinux.conf PostmarketOS u-boot configuration for the kernel command-line parameters].&lt;br /&gt;
&lt;br /&gt;
We force the serial console to 115200 bauds (from the default 1.5M bauds), so that it is the same as tow-boot's.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /mnt/boot/extlinux&lt;br /&gt;
 # cat &amp;lt;&amp;lt;EOF &amp;gt; /mnt/boot/extlinux/extlinux.conf&lt;br /&gt;
 default l0&lt;br /&gt;
 menu title Pinebook Pro Boot Menu&lt;br /&gt;
 prompt 0&lt;br /&gt;
 timeout 50&lt;br /&gt;
 &lt;br /&gt;
 label l0&lt;br /&gt;
 menu label Boot Kernel on SD&lt;br /&gt;
 linux /Image-${KVER}&lt;br /&gt;
 fdt /dtbs/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 append console=tty0 console=ttyS2,115200n8 coherent_pool=1M pcie_aspm.policy=performance video=HDMI-A-1:1920x1080@60 video=eDP-1:1920x1080@60 rw rootwait root=/dev/mmcblk1p3&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== Finalizing ===&lt;br /&gt;
&lt;br /&gt;
Now you can umount the partition(s) and boot the Pinebook Pro with Void Linux.&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14753</id>
		<title>Pinebook Pro Installing Void Linux ARM</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14753"/>
		<updated>2022-11-21T19:16:03Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This guide is a Work In Progress; no warranty is implied.&lt;br /&gt;
This installation method is not officially recommended (or discouraged) by the Void Linux project.&lt;br /&gt;
This guide is for experienced Linux users.}}&lt;br /&gt;
&lt;br /&gt;
This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.&lt;br /&gt;
&lt;br /&gt;
Only the steps that are different are listed here. Be careful, the numbering of the sections is not the same.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and verifying the rootfs tarball ===&lt;br /&gt;
&lt;br /&gt;
You can go to the Void linux [https://voidlinux.org/download/ download page], select the &amp;quot;arm&amp;quot; tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.&lt;br /&gt;
How to check integrity of the downloaded file is explained on the same page.&lt;br /&gt;
&lt;br /&gt;
Or use the following instructions (on debian):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/void-aarch64-musl-ROOTFS-20221001.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/sha256sum.{txt,sig}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://github.com/void-linux/void-packages/raw/master/srcpkgs/void-release-keys/files/void-release-20221001.pub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 $ signify-openbsd -V -p void-release-20221001.pub -x sha256sum.sig -m sha256sum.txt&lt;br /&gt;
 Signature Verified&lt;br /&gt;
 $ sha256sum -c --ignore-missing sha256sum.txt&lt;br /&gt;
 void-aarch64-musl-ROOTFS-20221001.tar.xz: OK&lt;br /&gt;
&lt;br /&gt;
=== Extracting and configuring the root filesystem ===&lt;br /&gt;
==== Extracting the root filesystem ====&lt;br /&gt;
 # tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt&lt;br /&gt;
&lt;br /&gt;
==== Configuring a login agent on the serial console ====&lt;br /&gt;
 # cp -R /mnt/etc/sv/agetty-ttyS0 /mnt/etc/sv/agetty-ttyS2&lt;br /&gt;
 # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
The Void linux rootfs tarball does not contain a kernel, however  the '''pinebookpro-kernel''' package can be installed the Void Linux repos. Alternatively, one can (cross) build a kernel themselves.&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling a mainline kernel suitable for the Pinebook Pro ===&lt;br /&gt;
We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.&lt;br /&gt;
&lt;br /&gt;
This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
 $ cd linux&lt;br /&gt;
 $ wget -O .config https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/linux-postmarketos-rockchip/config-postmarketos-rockchip.aarch64&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 oldconfig&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(grep -c '^processor' /proc/cpuinfo)&lt;br /&gt;
&lt;br /&gt;
=== Installing the newly built kernel, modules &amp;amp; DTB files ===&lt;br /&gt;
&lt;br /&gt;
 $ KVER=&amp;quot;$(make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 kernelrelease)&amp;quot;&lt;br /&gt;
 $ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 modules_install dtbs_install \&lt;br /&gt;
 		INSTALL_MOD_STRIP=1 \&lt;br /&gt;
 		INSTALL_MOD_PATH=/mnt \&lt;br /&gt;
 		INSTALL_DTBS_PATH=/mnt/boot/dtbs&lt;br /&gt;
 $ sudo cp arch/arm64/boot/Image &amp;quot;/mnt/boot/Image-${KVER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuring tow-boot with extlinux.conf===&lt;br /&gt;
The following borrows from [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-pine64-pinebookpro/extlinux.conf PostmarketOS u-boot configuration for the kernel command-line parameters].&lt;br /&gt;
&lt;br /&gt;
We force the serial console to 115200 bauds (from the default 1.5M bauds), so that it is the same as tow-boot's.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /mnt/boot/extlinux&lt;br /&gt;
 # cat &amp;lt;&amp;lt;EOF &amp;gt; /mnt/boot/extlinux/extlinux.conf&lt;br /&gt;
 default l0&lt;br /&gt;
 menu title Pinebook Pro Boot Menu&lt;br /&gt;
 prompt 0&lt;br /&gt;
 timeout 50&lt;br /&gt;
 &lt;br /&gt;
 label l0&lt;br /&gt;
 menu label Boot Kernel on SD&lt;br /&gt;
 linux /Image-${KVER}&lt;br /&gt;
 fdt /dtbs/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 append console=tty0 console=ttyS2,115200n8 coherent_pool=1M pcie_aspm.policy=performance video=HDMI-A-1:1920x1080@60 video=eDP-1:1920x1080@60 rw rootwait root=/dev/mmcblk1p3&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== Finalizing ===&lt;br /&gt;
Now you can umount the partition(s) and boot the Pinebook Pro with Void Linux.&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14752</id>
		<title>Pinebook Pro Installing Void Linux ARM</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14752"/>
		<updated>2022-11-21T19:15:40Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Kernel */ Note that there is already a Void Linux kernel package, so building your own kernel is optional&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This guide is a Work In Progress; no warranty is implied.&lt;br /&gt;
This installation method is not officially recommended (or discouraged) by the Void Linux project.&lt;br /&gt;
This guide is for experienced Linux users.}}&lt;br /&gt;
&lt;br /&gt;
This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.&lt;br /&gt;
&lt;br /&gt;
Only the steps that are different are listed here. Be careful, the numbering of the sections is not the same.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and verifying the rootfs tarball ===&lt;br /&gt;
&lt;br /&gt;
You can go to the Void linux [https://voidlinux.org/download/ download page], select the &amp;quot;arm&amp;quot; tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.&lt;br /&gt;
How to check integrity of the downloaded file is explained on the same page.&lt;br /&gt;
&lt;br /&gt;
Or use the following instructions (on debian):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/void-aarch64-musl-ROOTFS-20221001.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/sha256sum.{txt,sig}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://github.com/void-linux/void-packages/raw/master/srcpkgs/void-release-keys/files/void-release-20221001.pub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 $ signify-openbsd -V -p void-release-20221001.pub -x sha256sum.sig -m sha256sum.txt&lt;br /&gt;
 Signature Verified&lt;br /&gt;
 $ sha256sum -c --ignore-missing sha256sum.txt&lt;br /&gt;
 void-aarch64-musl-ROOTFS-20221001.tar.xz: OK&lt;br /&gt;
&lt;br /&gt;
=== Extracting and configuring the root filesystem ===&lt;br /&gt;
==== Extracting the root filesystem ====&lt;br /&gt;
 # tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt&lt;br /&gt;
&lt;br /&gt;
==== Configuring a login agent on the serial console ====&lt;br /&gt;
 # cp -R /mnt/etc/sv/agetty-ttyS0 /mnt/etc/sv/agetty-ttyS2&lt;br /&gt;
 # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
The Void linux rootfs tarball does not contain a kernel, however there is the '''pinebookpro-kernel''' package that can be installed the Void Linux repos. Alternatively, one can (cross) build a kernel themselves.&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling a mainline kernel suitable for the Pinebook Pro ===&lt;br /&gt;
We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.&lt;br /&gt;
&lt;br /&gt;
This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
 $ cd linux&lt;br /&gt;
 $ wget -O .config https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/linux-postmarketos-rockchip/config-postmarketos-rockchip.aarch64&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 oldconfig&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(grep -c '^processor' /proc/cpuinfo)&lt;br /&gt;
&lt;br /&gt;
=== Installing the newly built kernel, modules &amp;amp; DTB files ===&lt;br /&gt;
&lt;br /&gt;
 $ KVER=&amp;quot;$(make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 kernelrelease)&amp;quot;&lt;br /&gt;
 $ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 modules_install dtbs_install \&lt;br /&gt;
 		INSTALL_MOD_STRIP=1 \&lt;br /&gt;
 		INSTALL_MOD_PATH=/mnt \&lt;br /&gt;
 		INSTALL_DTBS_PATH=/mnt/boot/dtbs&lt;br /&gt;
 $ sudo cp arch/arm64/boot/Image &amp;quot;/mnt/boot/Image-${KVER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuring tow-boot with extlinux.conf===&lt;br /&gt;
The following borrows from [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-pine64-pinebookpro/extlinux.conf PostmarketOS u-boot configuration for the kernel command-line parameters].&lt;br /&gt;
&lt;br /&gt;
We force the serial console to 115200 bauds (from the default 1.5M bauds), so that it is the same as tow-boot's.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /mnt/boot/extlinux&lt;br /&gt;
 # cat &amp;lt;&amp;lt;EOF &amp;gt; /mnt/boot/extlinux/extlinux.conf&lt;br /&gt;
 default l0&lt;br /&gt;
 menu title Pinebook Pro Boot Menu&lt;br /&gt;
 prompt 0&lt;br /&gt;
 timeout 50&lt;br /&gt;
 &lt;br /&gt;
 label l0&lt;br /&gt;
 menu label Boot Kernel on SD&lt;br /&gt;
 linux /Image-${KVER}&lt;br /&gt;
 fdt /dtbs/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 append console=tty0 console=ttyS2,115200n8 coherent_pool=1M pcie_aspm.policy=performance video=HDMI-A-1:1920x1080@60 video=eDP-1:1920x1080@60 rw rootwait root=/dev/mmcblk1p3&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== Finalizing ===&lt;br /&gt;
Now you can umount the partition(s) and boot the Pinebook Pro with Void Linux.&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14751</id>
		<title>Pinebook Pro Installing Void Linux ARM</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Installing_Void_Linux_ARM&amp;diff=14751"/>
		<updated>2022-11-21T19:08:54Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Update warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This guide is a Work In Progress; no warranty is implied.&lt;br /&gt;
This installation method is not officially recommended (or discouraged) by the Void Linux project.&lt;br /&gt;
This guide is for experienced Linux users.}}&lt;br /&gt;
&lt;br /&gt;
This will not be a complete guide, as it borrows heavily on [[Installing Arch Linux ARM On The Pinebook Pro]], so read it first then come back here.&lt;br /&gt;
&lt;br /&gt;
Only the steps that are different are listed here. Be careful, the numbering of the sections is not the same.&lt;br /&gt;
&lt;br /&gt;
=== Downloading and verifying the rootfs tarball ===&lt;br /&gt;
&lt;br /&gt;
You can go to the Void linux [https://voidlinux.org/download/ download page], select the &amp;quot;arm&amp;quot; tab, and choose one of the aarch64 rootfs tarballs, either glibc or musl.&lt;br /&gt;
How to check integrity of the downloaded file is explained on the same page.&lt;br /&gt;
&lt;br /&gt;
Or use the following instructions (on debian):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/void-aarch64-musl-ROOTFS-20221001.tar.xz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://repo-default.voidlinux.org/live/current/sha256sum.{txt,sig}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ wget https://github.com/void-linux/void-packages/raw/master/srcpkgs/void-release-keys/files/void-release-20221001.pub&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 $ signify-openbsd -V -p void-release-20221001.pub -x sha256sum.sig -m sha256sum.txt&lt;br /&gt;
 Signature Verified&lt;br /&gt;
 $ sha256sum -c --ignore-missing sha256sum.txt&lt;br /&gt;
 void-aarch64-musl-ROOTFS-20221001.tar.xz: OK&lt;br /&gt;
&lt;br /&gt;
=== Extracting and configuring the root filesystem ===&lt;br /&gt;
==== Extracting the root filesystem ====&lt;br /&gt;
 # tar -xpf void-aarch64-musl-ROOTFS-20221001.tar.xz -C /mnt&lt;br /&gt;
&lt;br /&gt;
==== Configuring a login agent on the serial console ====&lt;br /&gt;
 # cp -R /mnt/etc/sv/agetty-ttyS0 /mnt/etc/sv/agetty-ttyS2&lt;br /&gt;
 # ln -sf /etc/sv/agetty-ttyS2 /mnt/etc/runit/runsvdir/default&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
The Void linux rootfs tarball does not contain a kernel. We'll cross-build one ourselves.&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling a mainline kernel suitable for the Pinebook Pro ===&lt;br /&gt;
We'll use the PostmarketOS kernel configuration and boot parameters, because they are working properly, and are sufficiently up-to-date. This is done from an x86_64 computer.&lt;br /&gt;
&lt;br /&gt;
This has been tested with PMOS configuration for 6.0.2 and kernel 6.1.0-rc5+. No initramfs was needed to boot the OS.&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git&lt;br /&gt;
 $ cd linux&lt;br /&gt;
 $ wget -O .config https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/linux-postmarketos-rockchip/config-postmarketos-rockchip.aarch64&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 oldconfig&lt;br /&gt;
 $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(grep -c '^processor' /proc/cpuinfo)&lt;br /&gt;
&lt;br /&gt;
=== Installing the newly built kernel, modules &amp;amp; DTB files ===&lt;br /&gt;
&lt;br /&gt;
 $ KVER=&amp;quot;$(make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 kernelrelease)&amp;quot;&lt;br /&gt;
 $ sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j1 modules_install dtbs_install \&lt;br /&gt;
 		INSTALL_MOD_STRIP=1 \&lt;br /&gt;
 		INSTALL_MOD_PATH=/mnt \&lt;br /&gt;
 		INSTALL_DTBS_PATH=/mnt/boot/dtbs&lt;br /&gt;
 $ sudo cp arch/arm64/boot/Image &amp;quot;/mnt/boot/Image-${KVER}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuring tow-boot with extlinux.conf===&lt;br /&gt;
The following borrows from [https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/community/device-pine64-pinebookpro/extlinux.conf PostmarketOS u-boot configuration for the kernel command-line parameters].&lt;br /&gt;
&lt;br /&gt;
We force the serial console to 115200 bauds (from the default 1.5M bauds), so that it is the same as tow-boot's.&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /mnt/boot/extlinux&lt;br /&gt;
 # cat &amp;lt;&amp;lt;EOF &amp;gt; /mnt/boot/extlinux/extlinux.conf&lt;br /&gt;
 default l0&lt;br /&gt;
 menu title Pinebook Pro Boot Menu&lt;br /&gt;
 prompt 0&lt;br /&gt;
 timeout 50&lt;br /&gt;
 &lt;br /&gt;
 label l0&lt;br /&gt;
 menu label Boot Kernel on SD&lt;br /&gt;
 linux /Image-${KVER}&lt;br /&gt;
 fdt /dtbs/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 append console=tty0 console=ttyS2,115200n8 coherent_pool=1M pcie_aspm.policy=performance video=HDMI-A-1:1920x1080@60 video=eDP-1:1920x1080@60 rw rootwait root=/dev/mmcblk1p3&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== Finalizing ===&lt;br /&gt;
Now you can umount the partition(s) and boot the Pinebook Pro with Void Linux.&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=14673</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=14673"/>
		<updated>2022-11-14T01:19:21Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Quartz64modelb.png|400px|thumb|right|The Quartz64 Model B]]&lt;br /&gt;
&lt;br /&gt;
The '''Quartz64''' is the most recent Single Board Computer offering from PINE64, with Model A initially released in June of 2021 and Model B in May of 2022. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open ended slot (model A) or m.2 (model B) using one Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 has three LPDDR4 system memory options: 2GB, 4GB or 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software releases ==&lt;br /&gt;
&lt;br /&gt;
{{warning|Software for the Quartz64 is still early in development, and therefore currently lacks features such as the ability to produce video output. You are strongly encouraged to procure a 3.3V UART serial adapter capable of running at 1.5 mbauds, such as [https://pine64.com/product/serial-console-woodpecker-edition/ the woodpecker] if you want to use a Quartz64 at this stage.}}&lt;br /&gt;
{{note|'''Note:''' OS images are provided by the community, not by PINE64. Most community projects currently aim at getting mainline Linux running on the board, not some vendor provided kernel that will never be receiving updates. A mainline-first approach allows for the boards to continue receiving important updates, such as security updates, for years to come, as well as have higher quality code in the kernel as it underwent independent review, but does mean that not all aspects of the hardware work right out of the gate.}}&lt;br /&gt;
&lt;br /&gt;
=== Armbian ===&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Armbian is a base operating system platform for single board computers&lt;br /&gt;
&lt;br /&gt;
* Lightweight Debian or Ubuntu based Linux distribution specialised for ARM development boards&lt;br /&gt;
* Each system is compiled, assembled and optimised by [https://github.com/armbian/build Armbian Build Tools]&lt;br /&gt;
* It has powerful build and software development tools to make custom builds&lt;br /&gt;
&lt;br /&gt;
Download [https://github.com/armbian/build/releases/ latest, as fresh as possible, upon code change, images]&lt;br /&gt;
&lt;br /&gt;
Support on Armbian forums https://forum.armbian.com/forum/96-upcoming-hardware-wip/&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;
Manjaro ARM is a user friendly rolling release distribution, based on Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-a-images/releases Images for Model A on GitHub]&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-b-images/releases Images for Model B on GitHub]&lt;br /&gt;
&lt;br /&gt;
Most of the hardware support is already available in the mainline kernel. If some devices doesn't work it is possible to swap to the linux-quartz64 kernel &amp;lt;code&amp;gt;pacman -S linux-quartz64&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Following desktop options available:&lt;br /&gt;
* Gnome&lt;br /&gt;
* KDE Plasma&lt;br /&gt;
* Mate&lt;br /&gt;
* Sway&lt;br /&gt;
* XFCE&lt;br /&gt;
as well as minimal image without desktop.&lt;br /&gt;
&lt;br /&gt;
=== pgwipeout's Quartz64 CI ===&lt;br /&gt;
&lt;br /&gt;
pgwipeout provides continuously rebuilt set of images for Quartz64 devices which includes a Debian installer and a buildroot rescue environment. It is aimed at advanced users who generally know their way around a Linux system, and as a baseline for whether something is working or not. Works on both SD cards and eMMC, uses pgwipeout's patched kernel. Kernels aren't auto-updated on the installed system, so the user manually has to do this by mounting the actual correct boot partition.&lt;br /&gt;
&lt;br /&gt;
'''Download:''' https://gitlab.com/pgwipeout/quartz64_ci/-/pipelines (Click the three dots on the right, download the merge-job archive.)&lt;br /&gt;
&lt;br /&gt;
For Quartz64 Model A, flash &amp;lt;tt&amp;gt;rk3566-quartz64-a.dtb.img.xz&amp;lt;/tt&amp;gt;. On Linux, you can for example do this as follows, assuming your target device is &amp;lt;tt&amp;gt;/dev/sdX&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 sudo -i; xzcat /path/to/rk3566-quartz64-a.dtb.img.xz &amp;gt; /dev/sdX&lt;br /&gt;
&lt;br /&gt;
For Quartz64 Model B, use &amp;lt;tt&amp;gt;rk3566-quartz64-b.dtb.img.xz&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
For line by line instructions to boot Quartz64 CI on a microSD card and use it to install Debian onto an eMMC follow these instructions https://wiki.pine64.org/wiki/Installing_Debian_on_the_Quartz64&lt;br /&gt;
&lt;br /&gt;
=== DietPi ===&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:dietpi.png|center|100px]]&amp;lt;/div&amp;gt;&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 Quartz64 build(s) on the [https://forum.pine64.org/showthread.php?tid=17601 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB or above micro SD card or eMMC)&lt;br /&gt;
** Quartz64 Model A: [https://dietpi.com/downloads/images/DietPi_Quartz64A-ARMv8-Bullseye.7z Direct download from dietpi.com]&lt;br /&gt;
** Quartz64 Model B: [https://dietpi.com/downloads/images/DietPi_Quartz64B-ARMv8-Bullseye.7z Direct download from dietpi.com]&lt;br /&gt;
** SOQuartz: [https://dietpi.com/downloads/images/DietPi_SOQuartz-ARMv8-Bullseye.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;
=== Arch Linux ARM (Unofficial) ===&lt;br /&gt;
&lt;br /&gt;
See [[Installing Arch Linux ARM On The Quartz64]] for detailed instructions.&lt;br /&gt;
&lt;br /&gt;
=== Tianocore EDK II port by jmcneill ===&lt;br /&gt;
&lt;br /&gt;
This (as of 2021-12-30) is a work in progress to enable UEFI enabled systems, and is able to bring up SD, eMMC, USB, PCIe with SATA and NVMe, HDMI, thermal sensors, TRNG, as well as general Cortex A-55 features.  Known to work with NetBSD -current, and the ESXi Arm fling version 1.8.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jaredmcneill/quartz64_uefi jmcneill's Quartz64 UEFI Github]&lt;br /&gt;
&lt;br /&gt;
The sdcard image should be written to an microSD card and installed.  Currently, using this card also for the OS may be problematic.&lt;br /&gt;
&lt;br /&gt;
=== NetBSD ===&lt;br /&gt;
&lt;br /&gt;
NetBSD relies upon the UEFI support in Tianocore.  Before NetBSD 10 is released, the latest version of NetBSD-current should be used:&lt;br /&gt;
&lt;br /&gt;
* [http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/ NetBSD daily builds top level] from inside here, navigate to a date, and inside the images/ subdirectory are installable images. Use the one called &amp;quot;NetBSD-&amp;lt;version&amp;gt;-evbarm-aarch64-install.img.gz&amp;quot;.  This image can be written to a supported device, such as the eMMC interface, any USB storage device, NVMe, and PCIe AHCI SATA are all supported with builds after 2022-01-15.&lt;br /&gt;
&lt;br /&gt;
* Currently this can not be shared with the EDK2 port, ie, microSD for EDK2 and some other media for NetBSD.&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
* [https://www.cnx-software.com/2020/12/01/rockchip-rk3568-processor-to-power-edge-computing-and-nvr-applications 22nm process, believed to be FD-SOI]&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 2GB (SOQuartz only), 4GB, 8GB LPDDR4.&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 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port)&lt;br /&gt;
* optional eMMC module from 8GB up to 128GB&lt;br /&gt;
* 64 Mbit (8 MByte) SPI flash (Model B only), part number &amp;lt;tt&amp;gt;25Q64DWZPIG&amp;lt;/tt&amp;gt; in the schematic&lt;br /&gt;
&lt;br /&gt;
==== eMMC Speeds ====&lt;br /&gt;
&lt;br /&gt;
On a 64 GB eMMC module:&lt;br /&gt;
&lt;br /&gt;
  $ sudo hdparm -tT /dev/mmcblk1 &lt;br /&gt;
  &lt;br /&gt;
  /dev/mmcblk1:&lt;br /&gt;
   Timing cached reads:   2368 MB in  2.00 seconds = 1184.46 MB/sec&lt;br /&gt;
   Timing buffered disk reads: 452 MB in  3.01 seconds = 149.98 MB/sec&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART on model A, build in Wifi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
** On Model A, the slot provides 10W of power for the 3.3V supply and however much power your 12V input power supply provides on the 12V supply&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability).&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are using the same I/O lines, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [https://wiki.pine64.org/images/3/31/Quartz64_model-A_schematic_v1.0_20201215.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model B) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&lt;br /&gt;
&lt;br /&gt;
Interesting alternate pin configurations are listed in [brackets].&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SDA_M0]'' GPIO1_A0_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SCL_M0]'' GPIO1_A1_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_C4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CS0_M1]'' GPIO3_A1_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A3_3V3 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_A2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B0_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B2_3V3 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C5_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 21&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 22&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C1_3V3 ''[SPI1_MOSI_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 23&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 24&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_C6_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 25&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 26&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_D1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C4_SDA_M0&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 27&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 28&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| I2C4_SCL_M0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 29&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 30&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 31&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 32&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C2_3V3 ''[SPI1_MISO_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CLK_M1]'' GPIO3_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 33&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 34&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 35&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 36&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A7_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPDIF_TX_M0]'' GPIO1_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 37&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 38&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A6_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 39&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 40&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A5_3V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Source: Page 24 of [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board Information, Schematics, and Certifications ==&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&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.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Certifications:&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 submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic ver 1.3 20220124 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-B_PCB_Components_Placement-V1.2_20211014.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
* Please note that v1.2 and V1.3 schematic and component placement are identical, just some component value changed.&lt;br /&gt;
&lt;br /&gt;
* Note: Model B uses a Molex PicoBlade compatible connector for the RTC battery. The Pine64 Backup Battery Holders come with a JST PH type connector. To use the Pine64 RTC Backup Battery Holder, the connector on the battery holder will need to be modified with a PicoBlade type connector.&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3566 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/2/26/Rockchip_RK3568_TRM_Part1_V1.3-20220930P.PDF Rockchip RK3566 and RK3568 TRM (Technical Reference Manual)]&lt;br /&gt;
* Rockchip PMU (Power Management Unit) Information:&lt;br /&gt;
** [https://www.rockchip.fr/RK817%20datasheet%20V1.01.pdf Rockchip RK817 ver 1.01 datasheet for Quartz64 model A]&lt;br /&gt;
** [https://www.rockchip.fr/RK809%20datasheet%20V1.01.pdf Rockchip RK809 ver 1.01 datasheet for Quartz64 model B and SOQuartz]&lt;br /&gt;
* LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 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;
* E-ink Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PineNote/TI%20PMU-TPS651851.pdf TPS65185x PMIC for E-Ink Enabled Electronic Paper Display Datasheet]&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]&lt;br /&gt;
* WiFi/BT module info:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/AW-CM256SM_DS_DF_V1.9_STD.pdf Azurewave CM256SM 11AC WiFi + Bluetooth5.0 Datasheet]&lt;br /&gt;
* IR LED:&lt;br /&gt;
** [https://media.digikey.com/pdf/Data%20Sheets/Everlight%20PDFs/IRM-36xx_Series.pdf IRM-3638 Datasheet]&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;
** [https://www.printables.com/model/269572-pine-quartz-64-a-full-case 3D Printable Enclosure for Model A]&lt;br /&gt;
** [https://www.printables.com/model/269575-pine-quartz-64-a-open-frame Open Frame for Model A]&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 (Model A)]&lt;br /&gt;
** [https://www.molex.com/pdm_docs/sd/533980271_sd.pdf 1.25mm Picoblade Type connector specification used in RTC Battery port (Model B)]&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;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== BSP Linux SDK ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux SDK ver 4.19 for Quartz64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_BSP%20Linux.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 24554419aec29700add97167a3a4c9ed&lt;br /&gt;
** File Size: 32.67.00GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android SDK ==&lt;br /&gt;
&lt;br /&gt;
=== Android 11 SDK for Quartz64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 77c2ff57ea3372fb04da7fb49e17d12b&lt;br /&gt;
** File Size: 79.00GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 Production Test Build for Quartz64 model A SBC ===&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Stock Image [eMMC Boot] using DD method [20210604] ====&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
* DD image for 8GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): e4365753e584d9fce1b8f10f095eede6&lt;br /&gt;
*** File Size: 819MB&lt;br /&gt;
* DD image for 16GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 491c5f7744b0ca0b74ae76e607051836&lt;br /&gt;
*** File Size: 1.10GB&lt;br /&gt;
* DD image for 32GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 47a6f0cdac8bad06cb920743849a8894&lt;br /&gt;
*** File Size: 846MB&lt;br /&gt;
* DD image for 64GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4e2fed6f5db0d55afdc8a142fc0c4fe1&lt;br /&gt;
*** File Size: 884MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Production Test Build for Quartz64 model A SBC [eMMC Boot] using ROCKChip tools method [20210604] ====&lt;br /&gt;
* Please unzip first and then using [https://files.pine64.org/os/Quartz64//android/RKDevTool_Release_v2.84.zip Rockchip Android tool ver 2.84] to flash in&lt;br /&gt;
* For Windows OS environment, please install the [https://files.pine64.org/os/Quartz64/android/DriverAssitant_v5.1.1.zip DriverAssistant v5.11] driver first &lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* The OTG port located at top USB 2.0 port on top of USB 3.0 port, needs USB type A to type A cable.&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_20210604_stock_android11_emmcboot.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 800f867fdd0d1b2bd7822c156b6067e3&lt;br /&gt;
*** File Size: 812MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 eink SDK for Quartz64 model A SBC  ===&lt;br /&gt;
* The is the Android SDK build for 10.3&amp;quot; eink panel on Quartz64 model A SBC. &lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_eink.android11_SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 293a550584298de4fb95ceae18103672&lt;br /&gt;
** File Size: 72.88GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enclosures ==&lt;br /&gt;
&lt;br /&gt;
(Please expand this section with more cases known to work.)&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
All enclosures that fit the ROCKPro64 should fit the Quartz64 Model &amp;quot;A&amp;quot;, as the I/O has been laid out the same on purpose.&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Model A&amp;quot; Acrylic Open Enclosure]] - but see the troubleshooting section below.&lt;br /&gt;
* [[ROCKPro64 ABS Enclosure]]&lt;br /&gt;
* [[Quartz64PremiumAluminiumCase|RockPro64 Premium Aluminium Case]]&lt;br /&gt;
* [[ROCKPro64#3D_printable_ITX_mounting_brackets]] (Not an enclosure but allows to mount the board in an ATX/ITX case)&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Model B&amp;quot; Acrylic Open Enclosure]]&lt;br /&gt;
* the ROCK64 aluminium enclosure '''does not''' work, as the DC input jack is placed differently&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur.&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work, because if the generic PHY driver is built in it will bind to the PHY first, unless you include the motorcomm module in your initramfs.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the [[&amp;quot;Model A&amp;quot; Acrylic Open Enclosure]]. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimetres.&lt;br /&gt;
&lt;br /&gt;
[[File:Quartz64-audio-jack-spacer-issue.jpg]]&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
=== No GPU Acceleration with Debian &amp;quot;Bullseye&amp;quot; Userland ===&lt;br /&gt;
&lt;br /&gt;
Debian Bullseye ships a Mesa version that is too old to contain the required patches for the RK356x SoC's GPU. You can (at your own risk) [https://wiki.debian.org/DebianTesting use the current Debian Testing version ], called &amp;quot;Bookworm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Wireless Connectivity Doesn't Work ===&lt;br /&gt;
&lt;br /&gt;
ROCKPro64 wireless module may have CYW43455 or CYW43456 chips on board (not sure if this is the same for Quartz64 model B). Both chips are supported by &amp;lt;code&amp;gt;brcmfmac&amp;lt;/code&amp;gt; wi-fi driver and &amp;lt;code&amp;gt;btbcm&amp;lt;/code&amp;gt; bluetooth driver. &lt;br /&gt;
&lt;br /&gt;
For CYW43455 drivers attempt to load &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43455-sdio.bin&amp;lt;/code&amp;gt; for wi-fi and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C0.hcd&amp;lt;/code&amp;gt; for bluetooth. Corresponding firmware files for CYW43456 are &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43456-sdio.bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C5.hcd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On Manjaro firmware files for both bluetooth and wi-fi on CYW43456 on are provided by &amp;lt;code&amp;gt;ap6256-firmware&amp;lt;/code&amp;gt; package (&amp;lt;code&amp;gt;pacman -S ap6256-firmware&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
However for CYW43455 wi-fi firmware is in the &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package and bluetooth is in the &amp;lt;code&amp;gt;firmware-raspberrypi&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;pacman -S linux-firmware firmware-raspberrypi&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package is missing device specific symlinks for quartz64-a. To create them execute:&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.bin /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.bin&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.AW-CM256SM.txt /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.txt &lt;br /&gt;
&lt;br /&gt;
As of 2022-10-19 device tree in mainline kernel for Quartz64 model A has wrong configuration for the bluetooth driver. [https://patchwork.kernel.org/project/linux-rockchip/patch/20220926125350.64783-1-leo@nabam.net/ Patch] is submitted to the LKML. It's possible to modify dtb file provided by the current kernel using device tree compiler to enable bluetooth or perform &amp;lt;code&amp;gt;make dtbs&amp;lt;/code&amp;gt; in the patched kernel tree to get updated dtb file (&amp;lt;code&amp;gt;arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dtb&amp;lt;/code&amp;gt;). Issue manifests itself with following errors in `dmesg`:&lt;br /&gt;
&lt;br /&gt;
  command 0x0c03 tx timeout&lt;br /&gt;
  Bluetooth: hci0: BCM: Reset failed (-110)&lt;br /&gt;
&lt;br /&gt;
== How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Connect Debug UART ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to get debug output is to connect a 3.3V 1.5mbaud capable UART adapter to the board.&lt;br /&gt;
&lt;br /&gt;
To connect it, connect the ground lead to pin 6, and the RX/TX leads to pins 8 and 10 (consider swapping them if you get no output, things are often mislabelled). These pins are &amp;quot;UART2&amp;quot; in the above GPIO table.&lt;br /&gt;
&lt;br /&gt;
Open a serial terminal at 1500000 bauds, e.g.&lt;br /&gt;
&lt;br /&gt;
 $ picocom -b 1500000 /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
=== Disable Heartbeat LED (Linux) ===&lt;br /&gt;
&lt;br /&gt;
The flashing LED is called the &amp;quot;heartbeat LED&amp;quot;, it blinks in a heart rhythm like fashion once the kernel is running. To disable it, you can run&lt;br /&gt;
&lt;br /&gt;
 # echo none &amp;gt; /sys/class/leds/user-led/trigger&lt;br /&gt;
&lt;br /&gt;
On model A LED device is called &amp;quot;diy-led&amp;quot;, not &amp;quot;user-led&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On a system with systemd, you can do this as soon as the system is ready to be logged in with a systemd unit like this:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Turn off heartbeat LED&lt;br /&gt;
 Wants=multi-user.target&lt;br /&gt;
 After=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=simple&lt;br /&gt;
 ExecStart=sh -c 'echo none &amp;gt; /sys/class/leds/user-led/trigger'&lt;br /&gt;
&lt;br /&gt;
Place it in &amp;lt;tt&amp;gt;/etc/systemd/system/user-led.service&amp;lt;/tt&amp;gt;, and run&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # systemctl enable user-led.service&lt;br /&gt;
&lt;br /&gt;
Upon rebooting, you will now notice that the heartbeat LED will blink during boot-up, but stops blinking as soon as the multi-user target is reached (i.e. the user can log in).&lt;br /&gt;
&lt;br /&gt;
=== SATA on model A ===&lt;br /&gt;
&lt;br /&gt;
On model A USB 3.0 and SATA ports are using the same I/O line and can't be used simultaneously. By default USB 3.0 is enabled in linux device tree and SATA is disabled. FDT modifications are required to turn SATA on. &lt;br /&gt;
&lt;br /&gt;
Following script is tested on Monjaro but should work on the other distros with minimal changes. Device tree compiler package usually provides fdtput command (on Manjaro run: &amp;lt;code&amp;gt; pacman -S dtc&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/dtbs/rockchip/rk3566-quartz64-a.dtb /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /usb@fd000000 status disabled&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /sata@fc400000 status okay&lt;br /&gt;
 # sed -i 's#^FDT /dtbs/rockchip/rk3566-quartz64-a.dtb$#FDT /dtbs/rockchip/rk3566-quartz64-a-sata.dtb#' /boot/extlinux/extlinux.conf&lt;br /&gt;
 # systemctl reboot&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=14672</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=14672"/>
		<updated>2022-11-14T01:18:40Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Fix forum link for dietpi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Quartz64modelb.png|400px|thumb|right|The Quartz64 Model B]]&lt;br /&gt;
&lt;br /&gt;
The '''Quartz64''' is the most recent Single Board Computer offering from PINE64, with Model A initially released in June of 2021 and Model B in May of 2022. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open ended slot (model A) or m.2 (model B) using one Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 has three LPDDR4 system memory options: 2GB, 4GB or 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software releases ==&lt;br /&gt;
&lt;br /&gt;
{{warning|Software for the Quartz64 is still early in development, and therefore currently lacks features such as the ability to produce video output. You are strongly encouraged to procure a 3.3V UART serial adapter capable of running at 1.5 mbauds, such as [https://pine64.com/product/serial-console-woodpecker-edition/ the woodpecker] if you want to use a Quartz64 at this stage.}}&lt;br /&gt;
{{note|'''Note:''' OS images are provided by the community, not by PINE64. Most community projects currently aim at getting mainline Linux running on the board, not some vendor provided kernel that will never be receiving updates. A mainline-first approach allows for the boards to continue receiving important updates, such as security updates, for years to come, as well as have higher quality code in the kernel as it underwent independent review, but does mean that not all aspects of the hardware work right out of the gate.}}&lt;br /&gt;
&lt;br /&gt;
=== Armbian ===&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Armbian is a base operating system platform for single board computers&lt;br /&gt;
&lt;br /&gt;
* Lightweight Debian or Ubuntu based Linux distribution specialised for ARM development boards&lt;br /&gt;
* Each system is compiled, assembled and optimised by [https://github.com/armbian/build Armbian Build Tools]&lt;br /&gt;
* It has powerful build and software development tools to make custom builds&lt;br /&gt;
&lt;br /&gt;
Download [https://github.com/armbian/build/releases/ latest, as fresh as possible, upon code change, images]&lt;br /&gt;
&lt;br /&gt;
Support on Armbian forums https://forum.armbian.com/forum/96-upcoming-hardware-wip/&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;
Manjaro ARM is a user friendly rolling release distribution, based on Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-a-images/releases Images for Model A on GitHub]&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-b-images/releases Images for Model B on GitHub]&lt;br /&gt;
&lt;br /&gt;
Most of the hardware support is already available in the mainline kernel. If some devices doesn't work it is possible to swap to the linux-quartz64 kernel &amp;lt;code&amp;gt;pacman -S linux-quartz64&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Following desktop options available:&lt;br /&gt;
* Gnome&lt;br /&gt;
* KDE Plasma&lt;br /&gt;
* Mate&lt;br /&gt;
* Sway&lt;br /&gt;
* XFCE&lt;br /&gt;
as well as minimal image without desktop.&lt;br /&gt;
&lt;br /&gt;
=== pgwipeout's Quartz64 CI ===&lt;br /&gt;
&lt;br /&gt;
pgwipeout provides continuously rebuilt set of images for Quartz64 devices which includes a Debian installer and a buildroot rescue environment. It is aimed at advanced users who generally know their way around a Linux system, and as a baseline for whether something is working or not. Works on both SD cards and eMMC, uses pgwipeout's patched kernel. Kernels aren't auto-updated on the installed system, so the user manually has to do this by mounting the actual correct boot partition.&lt;br /&gt;
&lt;br /&gt;
'''Download:''' https://gitlab.com/pgwipeout/quartz64_ci/-/pipelines (Click the three dots on the right, download the merge-job archive.)&lt;br /&gt;
&lt;br /&gt;
For Quartz64 Model A, flash &amp;lt;tt&amp;gt;rk3566-quartz64-a.dtb.img.xz&amp;lt;/tt&amp;gt;. On Linux, you can for example do this as follows, assuming your target device is &amp;lt;tt&amp;gt;/dev/sdX&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 sudo -i; xzcat /path/to/rk3566-quartz64-a.dtb.img.xz &amp;gt; /dev/sdX&lt;br /&gt;
&lt;br /&gt;
For Quartz64 Model B, use &amp;lt;tt&amp;gt;rk3566-quartz64-b.dtb.img.xz&amp;lt;/tt&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
For line by line instructions to boot Quartz64 CI on a microSD card and use it to install Debian onto an eMMC follow these instructions https://wiki.pine64.org/wiki/Installing_Debian_on_the_Quartz64&lt;br /&gt;
&lt;br /&gt;
=== DietPi ===&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:dietpi.png|center|100px]]&amp;lt;/div&amp;gt;&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 Qurtz64 build(s) on the [https://forum.pine64.org/showthread.php?tid=17601 PINE64 forum thread].&lt;br /&gt;
* DD image (for 4 GiB or above micro SD card or eMMC)&lt;br /&gt;
** Quartz64 Model A: [https://dietpi.com/downloads/images/DietPi_Quartz64A-ARMv8-Bullseye.7z Direct download from dietpi.com]&lt;br /&gt;
** Quartz64 Model B: [https://dietpi.com/downloads/images/DietPi_Quartz64B-ARMv8-Bullseye.7z Direct download from dietpi.com]&lt;br /&gt;
** SOQuartz: [https://dietpi.com/downloads/images/DietPi_SOQuartz-ARMv8-Bullseye.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;
=== Arch Linux ARM (Unofficial) ===&lt;br /&gt;
&lt;br /&gt;
See [[Installing Arch Linux ARM On The Quartz64]] for detailed instructions.&lt;br /&gt;
&lt;br /&gt;
=== Tianocore EDK II port by jmcneill ===&lt;br /&gt;
&lt;br /&gt;
This (as of 2021-12-30) is a work in progress to enable UEFI enabled systems, and is able to bring up SD, eMMC, USB, PCIe with SATA and NVMe, HDMI, thermal sensors, TRNG, as well as general Cortex A-55 features.  Known to work with NetBSD -current, and the ESXi Arm fling version 1.8.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/jaredmcneill/quartz64_uefi jmcneill's Quartz64 UEFI Github]&lt;br /&gt;
&lt;br /&gt;
The sdcard image should be written to an microSD card and installed.  Currently, using this card also for the OS may be problematic.&lt;br /&gt;
&lt;br /&gt;
=== NetBSD ===&lt;br /&gt;
&lt;br /&gt;
NetBSD relies upon the UEFI support in Tianocore.  Before NetBSD 10 is released, the latest version of NetBSD-current should be used:&lt;br /&gt;
&lt;br /&gt;
* [http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/ NetBSD daily builds top level] from inside here, navigate to a date, and inside the images/ subdirectory are installable images. Use the one called &amp;quot;NetBSD-&amp;lt;version&amp;gt;-evbarm-aarch64-install.img.gz&amp;quot;.  This image can be written to a supported device, such as the eMMC interface, any USB storage device, NVMe, and PCIe AHCI SATA are all supported with builds after 2022-01-15.&lt;br /&gt;
&lt;br /&gt;
* Currently this can not be shared with the EDK2 port, ie, microSD for EDK2 and some other media for NetBSD.&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
* [https://www.cnx-software.com/2020/12/01/rockchip-rk3568-processor-to-power-edge-computing-and-nvr-applications 22nm process, believed to be FD-SOI]&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 2GB (SOQuartz only), 4GB, 8GB LPDDR4.&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 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port)&lt;br /&gt;
* optional eMMC module from 8GB up to 128GB&lt;br /&gt;
* 64 Mbit (8 MByte) SPI flash (Model B only), part number &amp;lt;tt&amp;gt;25Q64DWZPIG&amp;lt;/tt&amp;gt; in the schematic&lt;br /&gt;
&lt;br /&gt;
==== eMMC Speeds ====&lt;br /&gt;
&lt;br /&gt;
On a 64 GB eMMC module:&lt;br /&gt;
&lt;br /&gt;
  $ sudo hdparm -tT /dev/mmcblk1 &lt;br /&gt;
  &lt;br /&gt;
  /dev/mmcblk1:&lt;br /&gt;
   Timing cached reads:   2368 MB in  2.00 seconds = 1184.46 MB/sec&lt;br /&gt;
   Timing buffered disk reads: 452 MB in  3.01 seconds = 149.98 MB/sec&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART on model A, build in Wifi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
** On Model A, the slot provides 10W of power for the 3.3V supply and however much power your 12V input power supply provides on the 12V supply&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability).&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are using the same I/O lines, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [https://wiki.pine64.org/images/3/31/Quartz64_model-A_schematic_v1.0_20201215.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model B) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&lt;br /&gt;
&lt;br /&gt;
Interesting alternate pin configurations are listed in [brackets].&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin no.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SDA_M0]'' GPIO1_A0_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:red; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[I2C3_SCL_M0]'' GPIO1_A1_3V3 &lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_C4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CS0_M1]'' GPIO3_A1_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A3_3V3 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_A2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B0_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:yellow; color:black; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_B2_3V3 &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C5_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 21&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 22&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C1_3V3 ''[SPI1_MOSI_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO4_C2_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 23&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 24&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_C6_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 25&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 26&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO4_D1_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C4_SDA_M0&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 27&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:blue; color:gold; font-weight:bold;&amp;quot;| 28&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| I2C4_SCL_M0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 29&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 30&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_B4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 31&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 32&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_C2_3V3 ''[SPI1_MISO_M1]''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPI1_CLK_M1]'' GPIO3_C3_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 33&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 34&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GPIO3_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 35&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 36&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A7_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| ''[SPDIF_TX_M0]'' GPIO1_A4_3V3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 37&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 38&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A6_3V3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 39&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:green; color:gold; font-weight:bold;&amp;quot;| 40&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GPIO3_A5_3V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Source: Page 24 of [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board Information, Schematics, and Certifications ==&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&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.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Certifications:&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 submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-B_Schematic-V1.3_20220124.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic ver 1.3 20220124 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-B_PCB_Components_Placement-V1.2_20211014.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
* Please note that v1.2 and V1.3 schematic and component placement are identical, just some component value changed.&lt;br /&gt;
&lt;br /&gt;
* Note: Model B uses a Molex PicoBlade compatible connector for the RTC battery. The Pine64 Backup Battery Holders come with a JST PH type connector. To use the Pine64 RTC Backup Battery Holder, the connector on the battery holder will need to be modified with a PicoBlade type connector.&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3566 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/2/26/Rockchip_RK3568_TRM_Part1_V1.3-20220930P.PDF Rockchip RK3566 and RK3568 TRM (Technical Reference Manual)]&lt;br /&gt;
* Rockchip PMU (Power Management Unit) Information:&lt;br /&gt;
** [https://www.rockchip.fr/RK817%20datasheet%20V1.01.pdf Rockchip RK817 ver 1.01 datasheet for Quartz64 model A]&lt;br /&gt;
** [https://www.rockchip.fr/RK809%20datasheet%20V1.01.pdf Rockchip RK809 ver 1.01 datasheet for Quartz64 model B and SOQuartz]&lt;br /&gt;
* LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 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;
* E-ink Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PineNote/TI%20PMU-TPS651851.pdf TPS65185x PMIC for E-Ink Enabled Electronic Paper Display Datasheet]&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]&lt;br /&gt;
* WiFi/BT module info:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/AW-CM256SM_DS_DF_V1.9_STD.pdf Azurewave CM256SM 11AC WiFi + Bluetooth5.0 Datasheet]&lt;br /&gt;
* IR LED:&lt;br /&gt;
** [https://media.digikey.com/pdf/Data%20Sheets/Everlight%20PDFs/IRM-36xx_Series.pdf IRM-3638 Datasheet]&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;
** [https://www.printables.com/model/269572-pine-quartz-64-a-full-case 3D Printable Enclosure for Model A]&lt;br /&gt;
** [https://www.printables.com/model/269575-pine-quartz-64-a-open-frame Open Frame for Model A]&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 (Model A)]&lt;br /&gt;
** [https://www.molex.com/pdm_docs/sd/533980271_sd.pdf 1.25mm Picoblade Type connector specification used in RTC Battery port (Model B)]&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;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== BSP Linux SDK ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux SDK ver 4.19 for Quartz64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_BSP%20Linux.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 24554419aec29700add97167a3a4c9ed&lt;br /&gt;
** File Size: 32.67.00GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android SDK ==&lt;br /&gt;
&lt;br /&gt;
=== Android 11 SDK for Quartz64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 77c2ff57ea3372fb04da7fb49e17d12b&lt;br /&gt;
** File Size: 79.00GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 Production Test Build for Quartz64 model A SBC ===&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Stock Image [eMMC Boot] using DD method [20210604] ====&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
* DD image for 8GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): e4365753e584d9fce1b8f10f095eede6&lt;br /&gt;
*** File Size: 819MB&lt;br /&gt;
* DD image for 16GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 491c5f7744b0ca0b74ae76e607051836&lt;br /&gt;
*** File Size: 1.10GB&lt;br /&gt;
* DD image for 32GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 47a6f0cdac8bad06cb920743849a8894&lt;br /&gt;
*** File Size: 846MB&lt;br /&gt;
* DD image for 64GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4e2fed6f5db0d55afdc8a142fc0c4fe1&lt;br /&gt;
*** File Size: 884MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Production Test Build for Quartz64 model A SBC [eMMC Boot] using ROCKChip tools method [20210604] ====&lt;br /&gt;
* Please unzip first and then using [https://files.pine64.org/os/Quartz64//android/RKDevTool_Release_v2.84.zip Rockchip Android tool ver 2.84] to flash in&lt;br /&gt;
* For Windows OS environment, please install the [https://files.pine64.org/os/Quartz64/android/DriverAssitant_v5.1.1.zip DriverAssistant v5.11] driver first &lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* The OTG port located at top USB 2.0 port on top of USB 3.0 port, needs USB type A to type A cable.&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_20210604_stock_android11_emmcboot.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 800f867fdd0d1b2bd7822c156b6067e3&lt;br /&gt;
*** File Size: 812MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 eink SDK for Quartz64 model A SBC  ===&lt;br /&gt;
* The is the Android SDK build for 10.3&amp;quot; eink panel on Quartz64 model A SBC. &lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_eink.android11_SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 293a550584298de4fb95ceae18103672&lt;br /&gt;
** File Size: 72.88GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enclosures ==&lt;br /&gt;
&lt;br /&gt;
(Please expand this section with more cases known to work.)&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;A&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
All enclosures that fit the ROCKPro64 should fit the Quartz64 Model &amp;quot;A&amp;quot;, as the I/O has been laid out the same on purpose.&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Model A&amp;quot; Acrylic Open Enclosure]] - but see the troubleshooting section below.&lt;br /&gt;
* [[ROCKPro64 ABS Enclosure]]&lt;br /&gt;
* [[Quartz64PremiumAluminiumCase|RockPro64 Premium Aluminium Case]]&lt;br /&gt;
* [[ROCKPro64#3D_printable_ITX_mounting_brackets]] (Not an enclosure but allows to mount the board in an ATX/ITX case)&lt;br /&gt;
&lt;br /&gt;
=== Model &amp;quot;B&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Model B&amp;quot; Acrylic Open Enclosure]]&lt;br /&gt;
* the ROCK64 aluminium enclosure '''does not''' work, as the DC input jack is placed differently&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur.&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work, because if the generic PHY driver is built in it will bind to the PHY first, unless you include the motorcomm module in your initramfs.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the [[&amp;quot;Model A&amp;quot; Acrylic Open Enclosure]]. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimetres.&lt;br /&gt;
&lt;br /&gt;
[[File:Quartz64-audio-jack-spacer-issue.jpg]]&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
=== No GPU Acceleration with Debian &amp;quot;Bullseye&amp;quot; Userland ===&lt;br /&gt;
&lt;br /&gt;
Debian Bullseye ships a Mesa version that is too old to contain the required patches for the RK356x SoC's GPU. You can (at your own risk) [https://wiki.debian.org/DebianTesting use the current Debian Testing version ], called &amp;quot;Bookworm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Wireless Connectivity Doesn't Work ===&lt;br /&gt;
&lt;br /&gt;
ROCKPro64 wireless module may have CYW43455 or CYW43456 chips on board (not sure if this is the same for Quartz64 model B). Both chips are supported by &amp;lt;code&amp;gt;brcmfmac&amp;lt;/code&amp;gt; wi-fi driver and &amp;lt;code&amp;gt;btbcm&amp;lt;/code&amp;gt; bluetooth driver. &lt;br /&gt;
&lt;br /&gt;
For CYW43455 drivers attempt to load &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43455-sdio.bin&amp;lt;/code&amp;gt; for wi-fi and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C0.hcd&amp;lt;/code&amp;gt; for bluetooth. Corresponding firmware files for CYW43456 are &amp;lt;code&amp;gt;/lib/firmware/brcm/brcmfmac43456-sdio.bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/lib/firmware/brcm/BCM4345C5.hcd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On Manjaro firmware files for both bluetooth and wi-fi on CYW43456 on are provided by &amp;lt;code&amp;gt;ap6256-firmware&amp;lt;/code&amp;gt; package (&amp;lt;code&amp;gt;pacman -S ap6256-firmware&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
However for CYW43455 wi-fi firmware is in the &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package and bluetooth is in the &amp;lt;code&amp;gt;firmware-raspberrypi&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;pacman -S linux-firmware firmware-raspberrypi&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;linux-firmware&amp;lt;/code&amp;gt; package is missing device specific symlinks for quartz64-a. To create them execute:&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.bin /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.bin&lt;br /&gt;
 # ln -s brcmfmac43455-sdio.AW-CM256SM.txt /lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-a.txt &lt;br /&gt;
&lt;br /&gt;
As of 2022-10-19 device tree in mainline kernel for Quartz64 model A has wrong configuration for the bluetooth driver. [https://patchwork.kernel.org/project/linux-rockchip/patch/20220926125350.64783-1-leo@nabam.net/ Patch] is submitted to the LKML. It's possible to modify dtb file provided by the current kernel using device tree compiler to enable bluetooth or perform &amp;lt;code&amp;gt;make dtbs&amp;lt;/code&amp;gt; in the patched kernel tree to get updated dtb file (&amp;lt;code&amp;gt;arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dtb&amp;lt;/code&amp;gt;). Issue manifests itself with following errors in `dmesg`:&lt;br /&gt;
&lt;br /&gt;
  command 0x0c03 tx timeout&lt;br /&gt;
  Bluetooth: hci0: BCM: Reset failed (-110)&lt;br /&gt;
&lt;br /&gt;
== How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Connect Debug UART ===&lt;br /&gt;
&lt;br /&gt;
The easiest way to get debug output is to connect a 3.3V 1.5mbaud capable UART adapter to the board.&lt;br /&gt;
&lt;br /&gt;
To connect it, connect the ground lead to pin 6, and the RX/TX leads to pins 8 and 10 (consider swapping them if you get no output, things are often mislabelled). These pins are &amp;quot;UART2&amp;quot; in the above GPIO table.&lt;br /&gt;
&lt;br /&gt;
Open a serial terminal at 1500000 bauds, e.g.&lt;br /&gt;
&lt;br /&gt;
 $ picocom -b 1500000 /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
=== Disable Heartbeat LED (Linux) ===&lt;br /&gt;
&lt;br /&gt;
The flashing LED is called the &amp;quot;heartbeat LED&amp;quot;, it blinks in a heart rhythm like fashion once the kernel is running. To disable it, you can run&lt;br /&gt;
&lt;br /&gt;
 # echo none &amp;gt; /sys/class/leds/user-led/trigger&lt;br /&gt;
&lt;br /&gt;
On model A LED device is called &amp;quot;diy-led&amp;quot;, not &amp;quot;user-led&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On a system with systemd, you can do this as soon as the system is ready to be logged in with a systemd unit like this:&lt;br /&gt;
&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Turn off heartbeat LED&lt;br /&gt;
 Wants=multi-user.target&lt;br /&gt;
 After=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=multi-user.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=simple&lt;br /&gt;
 ExecStart=sh -c 'echo none &amp;gt; /sys/class/leds/user-led/trigger'&lt;br /&gt;
&lt;br /&gt;
Place it in &amp;lt;tt&amp;gt;/etc/systemd/system/user-led.service&amp;lt;/tt&amp;gt;, and run&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # systemctl enable user-led.service&lt;br /&gt;
&lt;br /&gt;
Upon rebooting, you will now notice that the heartbeat LED will blink during boot-up, but stops blinking as soon as the multi-user target is reached (i.e. the user can log in).&lt;br /&gt;
&lt;br /&gt;
=== SATA on model A ===&lt;br /&gt;
&lt;br /&gt;
On model A USB 3.0 and SATA ports are using the same I/O line and can't be used simultaneously. By default USB 3.0 is enabled in linux device tree and SATA is disabled. FDT modifications are required to turn SATA on. &lt;br /&gt;
&lt;br /&gt;
Following script is tested on Monjaro but should work on the other distros with minimal changes. Device tree compiler package usually provides fdtput command (on Manjaro run: &amp;lt;code&amp;gt; pacman -S dtc&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/dtbs/rockchip/rk3566-quartz64-a.dtb /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /usb@fd000000 status disabled&lt;br /&gt;
 # fdtput -t s -v /boot/dtbs/rockchip/rk3566-quartz64-a-sata.dtb /sata@fc400000 status okay&lt;br /&gt;
 # sed -i 's#^FDT /dtbs/rockchip/rk3566-quartz64-a.dtb$#FDT /dtbs/rockchip/rk3566-quartz64-a-sata.dtb#' /boot/extlinux/extlinux.conf&lt;br /&gt;
 # systemctl reboot&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14467</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14467"/>
		<updated>2022-10-14T18:56:37Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Upstreaming Status */ Update CSI DPHY status&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&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;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| 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=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|In progress&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Quartz64_Development#Mainline_U-Boot_Work|See below]]&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=29c99fb085ad53e6d5504d1f8d32e6673b9b3a2c]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14464</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14464"/>
		<updated>2022-10-14T15:24:00Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Upstreaming Status */ Update u-boot / bootloader status&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&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;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| 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=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Bootloader&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://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TF-A&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;|In progress&lt;br /&gt;
| &amp;lt;code&amp;gt;U-Boot&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[Quartz64_Development#Mainline_U-Boot_Work|See below]]&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;|In progress&amp;lt;sup&amp;gt;[https://github.com/jaredmcneill/quartz64_uefi]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Tianocore EDK II&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 6.1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/power/supply/rk817_charger.c?id=11cb8da0189b417392e2334ae967b0ba1f0d1be8]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=661385]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=14158</id>
		<title>Pinebook Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=14158"/>
		<updated>2022-09-21T18:17:53Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Post NVMe install power limiting */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Guide =&lt;br /&gt;
== Introducing PineBook Pro == &lt;br /&gt;
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]&lt;br /&gt;
&lt;br /&gt;
It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open source project can deliver. &lt;br /&gt;
&lt;br /&gt;
It's compact and slim dimensions are 329mm x 220mm x 12mm (WxDxH).&lt;br /&gt;
&lt;br /&gt;
Key features include: the RK3399 SOC; USB-C for data, video-out and power-in (3A 5V); privacy switches for the microphone, BT/WiFi module, and camera; and expandable storage via NVMe (PCIe x4) with an optional adapter. &lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1 x micro SD card reader (bootable), 1 x USB 2.0, 1 x USB 3.0, 1 x USB type C Host with DP 1.2 and power-in, PCIe x4 for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch). &lt;br /&gt;
&lt;br /&gt;
The keyboard and touchpad both use the USB 2.0 protocol.  The LCD panel uses eDP MiPi display protocol.&lt;br /&gt;
&lt;br /&gt;
Many different Operating Systems (OS) are freely available from the open source community and partner projects.  These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Default Manjaro KDE Desktop Quick Start ===&lt;br /&gt;
&lt;br /&gt;
When you first get your Pinebook Pro and boot it up for the first time, it'll come with Manjaro using the KDE desktop. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the [https://forum.manjaro.org/c/manjaro-arm/78 Manjaro ARM forums.]&lt;br /&gt;
&lt;br /&gt;
On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the &amp;quot;codename&amp;quot; of your machine, and if you don't know what it's about, you can make something up (use a single word, all lower case, no punctuation; e.g. &amp;quot;pbpro&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
After you're on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi [https://wiki.pine64.org/index.php/Pinebook_Pro#ANSI_Fn_.2B_F_keys_wrong_for_F9.2C_F10.2C_F11_and_F12  privacy switch] is not disabled.&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Pro images ===&lt;br /&gt;
Under [[Pinebook Pro Software Release]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software. &lt;br /&gt;
&lt;br /&gt;
The list includes OS images and descriptions of:&lt;br /&gt;
&lt;br /&gt;
* [[PinebookPro_Software_Release#Manjaro ARM|Manjaro ARM]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Armbian|Armbian]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Twister OS|Twister OS]] (microSD Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Fedora|Fedora]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Arch_Linux_ARM|Arch Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#postmarketOS|Postmarket OS]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Kali Linux|Kali Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#DietPi|DietPi]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Q4OS|Q4OS]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#NetBSD|NetBSD]] (microSD and eMMC Boot)&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#OpenBSD|OpenBSD release for ARM64]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Gentoo|Gentoo]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Slackware|Slackware (microSD boot)]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Void_Linux|Void Linux]]&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and touchpad in the Pinebook Pro use the USB 2.0 protocol and show up as such in xinput. The keyboard features function (Fn) keys in the F-key row, which include display brightness controls, sound volume, touchpad lock, and other functionality. There is also a custom PINE64 logo key that functions as Menu/Super key. It has also a secondary functionality for setting the privacy switches.   &lt;br /&gt;
&lt;br /&gt;
The keyboard firmware binary can be flashed from userspace using the provided open source utility.&lt;br /&gt;
&lt;br /&gt;
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. &lt;br /&gt;
&lt;br /&gt;
=== Typing special characters ===&lt;br /&gt;
The [[Wikipedia:British_and_American_keyboards#Other_keyboard_layouts|UK ISO Layout]] does not have dedicated keys for characters like the German umlauts (Ä,Ö,Ü, etc). Certain characters can still be generated by means of either key combinations or key sequences. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Character&lt;br /&gt;
!Key combination/sequence&lt;br /&gt;
|-&lt;br /&gt;
|Ä, Ö, Ü, ä, ö, ü&lt;br /&gt;
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]&lt;br /&gt;
|-&lt;br /&gt;
|µ&lt;br /&gt;
|[AltGr]+[m]&lt;br /&gt;
|-&lt;br /&gt;
|Ø, ø&lt;br /&gt;
|[AltGr]+[O], [AltGr]+[o]&lt;br /&gt;
|-&lt;br /&gt;
|@&lt;br /&gt;
|[AltGr]+[q] (as on the German layout)&lt;br /&gt;
|-&lt;br /&gt;
|ß&lt;br /&gt;
|[AltGr]+[s]&lt;br /&gt;
|-&lt;br /&gt;
|§&lt;br /&gt;
|[AltGr]+[S]&lt;br /&gt;
|-&lt;br /&gt;
|°&lt;br /&gt;
|[AltGr]+[)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Privacy Switches ===&lt;br /&gt;
There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Privacy switch function and description&lt;br /&gt;
! Combination&lt;br /&gt;
! Effect&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F10&lt;br /&gt;
| Microphone Privacy switch&lt;br /&gt;
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F11&lt;br /&gt;
| WiFi Privacy switch&lt;br /&gt;
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.&lt;br /&gt;
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&amp;amp;pid=52645#pid52645 command line hack to bind/unbind]).&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F12&lt;br /&gt;
| Camera privacy switch&lt;br /&gt;
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
| Can use tools like '''&amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;''' to detect camera's presence. If not detected, check privacy switch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''&lt;br /&gt;
&lt;br /&gt;
The keyboard operates on firmware independent of the operating system.  It detects if one of the F10, F11 or F12 keys is pressed in combination with the Pine key for 3 seconds. Doing so disables power to the appropriate peripheral, thereby disabling it.  This has the same effect as cutting off the power to each peripheral with a physical switch. This implementation is very secure, since the firmware that determines whether a peripheral gets power is not part of the Pinebook Pro’s operating system. So the power state value for each peripheral cannot be overridden or accessed from the operating system. The power state setting for each peripheral is stored across reboots inside the keyboard's firmware flash memory.&lt;br /&gt;
&lt;br /&gt;
=== Basic summary of replacing keyboard ===&lt;br /&gt;
&lt;br /&gt;
This guide is very basic and should be fleshed out with (better) pictures.  There just isn't a list of steps anywhere else yet.&lt;br /&gt;
&lt;br /&gt;
Here's what the replacement keyboard looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]&lt;br /&gt;
&lt;br /&gt;
''Step 0'': If changing from ISO keyboard to ANSI keyboard, or vice versa, be sure to have a system capable of running the firmware updater that you can access either remotely or with a USB keyboard beyond the internal keyboard, as the firmware for each is very different and keys won't work correctly.  See https://forum.pine64.org/showthread.php?tid=8407 (and for NetBSD, https://forum.pine64.org/showthread.php?tid=8716).&lt;br /&gt;
&lt;br /&gt;
''Step 1'': The remove back back panel.&lt;br /&gt;
&lt;br /&gt;
There are 10 screws on the back that must be removed, and the back panel detached.  I recommend using a PH0 bit.  The speakers may remain attached via glue to the case and should be carefully pried off.  When this is done, taking photos of how everything looks now can help put it all back together later.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 2'': Places to unscrew.&lt;br /&gt;
&lt;br /&gt;
There are 3 items screwed into the keyboard frame that must be removed.  There are 2 large screws for daughter board, 3 large screws and 1 small screw for mainboard, and 4 small screws for battery.  Be sure to not lose them.  I recommend a PH00 bit for the large screws on the daughter and main boards and a PH1 bit for the small screws on the battery and mainboard.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 3'': Remove the battery.&lt;br /&gt;
&lt;br /&gt;
Once the battery screws are removed, it should be unplugged from the mainboard and removed.  Note that there are two unconnected cables lying around, that should remain unconnected.  They are used when the battery is disconnected entirely.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]&lt;br /&gt;
&lt;br /&gt;
''Step 4'': Unplug the ribbon cables.&lt;br /&gt;
&lt;br /&gt;
NOTE: you should remove the M.2 adapter board now if you have one installed. See elsewhere in this wiki for instructions on how to install/remove that piece.&lt;br /&gt;
&lt;br /&gt;
There are several ribbon cables.  To remove, flip up the tab and gentle pull the ribbon out.&lt;br /&gt;
&lt;br /&gt;
* One cable runs from the mainboard to the daughterboard underneath the battery.  Detach from both ends.  With the battery removed, detach from keyboard shell, and set aside for the new keyboard shell.&lt;br /&gt;
* One cable runs between the touchpad and the mainboard.  Detach from both ends, and also set aside.&lt;br /&gt;
* One cable runs between the keyboard and the mainboard.  This one remains attached to the keyboard and only needs to be detached from the mainboard.&lt;br /&gt;
* One cable from the LCD attaches near the lid hinge.  It should be just unplugged.&lt;br /&gt;
&lt;br /&gt;
''Step 5'': Detach microphone, speakers, and antenna.  &lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]&lt;br /&gt;
&lt;br /&gt;
The speakers, microphone, and antenna don't have to be detached from the mainboard, but they need to be detached from the keyboard shell.  The microphones are held in place by tape, and the speakers have sticky sides.  The speakers are found obviously, but the microphones (two of) can be found between the battery and the hinge area. Each microphone can be carefully pulled/wedged out of its position by a small screwdriver or pick.  The antenna, similar to the microphones, is found near the hinge area and to the top left of the battery.&lt;br /&gt;
&lt;br /&gt;
''Step 6'': Remove mainboard and daughterboard.&lt;br /&gt;
&lt;br /&gt;
At this point, the mainboard and daughterboards should be removed.  When unscrewed (see Step 2) they should pull out fairly easily.  Put them aside (including microphones and speakers if left attached.)&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]&lt;br /&gt;
&lt;br /&gt;
''Step 7'': Detach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
Step 2 didn't tell you, there are 6 more screws to remove here, 3 for each of the hinges.  I recommend a PH1 bit for these screws.  Unscrew these and the LCD panel will be able to be removed.  You may have to jiggle or move the hinges for this.  When detached, be sure to place the LCD panel such that the display is protected.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]&lt;br /&gt;
&lt;br /&gt;
''Step 8'': Try Not To Break Your Touchpad, or, How I Learned To Love Things That Bend&lt;br /&gt;
&lt;br /&gt;
'''NOTE This section really feels like you're going to break something.'''&lt;br /&gt;
&lt;br /&gt;
The touchpad is glued to the keyboard shell and it's glued well.  There are two places it is glued to.  If you can, only the middle must be force-detached.  You will think you're going to break it.  Gently apply increasing force until the glue begins to detach (you will hear a crackle as it comes off), and continue very slowly until the whole thing is detached.  This may take minutes due to that feeling you're going to break it.&lt;br /&gt;
&lt;br /&gt;
I found it helpful to lift the top left plastic bit on the keyboard to unstick that portion of the touchpad, then push on the top left portion of the touchpad to unstick the rest of the touchpad.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
&lt;br /&gt;
''Step 9'': Over the hill, touchpad goes into new shell.&lt;br /&gt;
&lt;br /&gt;
In the new keyboard shell put the touchpad back where it was, hopefully the glue will remain sufficiently attached.  If there is a glue issue, this guide unfortunately has no advice currently.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Step 10'': Reattach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The LCD panel should slot back into the keyboard frame, the same way it came out.  If the hinges were moved, they should be *very* *gently* closed such that the LCD panel and keyboard closed like normal for the remaining steps.&lt;br /&gt;
&lt;br /&gt;
''Step 11'': Tape it out.&lt;br /&gt;
&lt;br /&gt;
Move any tape from the old keyboard shell to the new one.  These items protect the mainboard and daughterboard, and keep various wires in their right place.  Some are grey and some are black.  For tape that holds the speakers, microhones, or their cables in place, do not reattach yet.&lt;br /&gt;
&lt;br /&gt;
''Step 12'': Board install.&lt;br /&gt;
&lt;br /&gt;
Install the mainboard, the daughtboard, and their connecting ribbon cable.  Be sure to put the boards in place, 2 large flat screws for the daughterboard, 3 large flat screws and one small screw for the mainboard, before attempting to place the ribbon.&lt;br /&gt;
&lt;br /&gt;
''Step 13'': Microphone, speaker, and antenna install.&lt;br /&gt;
&lt;br /&gt;
Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker &amp;quot;out&amp;quot; faces up, and the microphone cables as connected must face up (these are opposite directions.)&lt;br /&gt;
&lt;br /&gt;
''Step 14'': Reattach other ribbon cables.&lt;br /&gt;
 &lt;br /&gt;
NOTE: this would be a good time to attach/install the M.2 adapter board if that is desired. See elsewhere in this wiki for those instructions.&lt;br /&gt;
&lt;br /&gt;
The LCD panel, keyboard and touchpad ribbon cables should be reattached.  Make sure the flap is open, insert the ribbon into the slot (a portion of the cable will disappear), and push the flap down.  The cable should not be easy to pull out.&lt;br /&gt;
 &lt;br /&gt;
''Step 15'': Reattach the battery, and final re-tape.&lt;br /&gt;
  &lt;br /&gt;
The battery should be installed with the 4 screws holding it in place, and the connector attached to the mainboard.  Be sure to keep the two other cables remain unconnected.  Ensure all wires and other tapes are held in place.&lt;br /&gt;
&lt;br /&gt;
''Step 16'': Reattach the back panel.&lt;br /&gt;
 &lt;br /&gt;
Put the back panel back on, and reattach the 10 screws.&lt;br /&gt;
&lt;br /&gt;
''Step 17'': If you changed from ISO to ANSI or from ANSI to ISO, you'll need to update your firmware now.  See the links in Step 0 above.&lt;br /&gt;
&lt;br /&gt;
== Touchpad (trackpad) ==&lt;br /&gt;
Documentation for the touchpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. It is the only component of the Pinebook Pro held in place with strong adhesive tape. Here are some of its features:&lt;br /&gt;
&lt;br /&gt;
* 2 actuating buttons.&lt;br /&gt;
&lt;br /&gt;
* multi-touch functionality. &lt;br /&gt;
&lt;br /&gt;
* A matte finish that your finger can slide along easily.&lt;br /&gt;
&lt;br /&gt;
* A reasonable size (96mm &amp;amp;times; 64mm; diagonal: 115.378mm or 4.542&amp;amp;rdquo;).&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:&lt;br /&gt;
&lt;br /&gt;
* Update the firmware.&lt;br /&gt;
&lt;br /&gt;
* Keep your 2 fingers spread apart rather than close together.&lt;br /&gt;
&lt;br /&gt;
* Individual programs might need to be configured specially.&lt;br /&gt;
&lt;br /&gt;
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:&lt;br /&gt;
&lt;br /&gt;
::: &amp;lt;code&amp;gt;MOZ_USE_XINPUT2=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Experiment with other settings, via [[#X-Windows Configuration|X-Windows Configuration]] or some other system preferences; for example, you could disable double-finger scrolling, and instead enable scrolling by sliding one finger along the edge of the touchpad.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and it's software, then to the keyboard controller's USB port. Note that the touchpad does have separate firmware, (which has to be written through the keyboard controller). The touchpad vendor&amp;amp;rsquo;s firmware binary can be flashed from userspace using the following open source command-line utility:&lt;br /&gt;
&lt;br /&gt;
* Kamil Trzciński&amp;amp;rsquo;s [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].&lt;br /&gt;
&lt;br /&gt;
Naturally, forks have begun to appear:&lt;br /&gt;
&lt;br /&gt;
* Jack Humbert&amp;amp;rsquo;s [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]&lt;br /&gt;
&lt;br /&gt;
* Dragan Simic&amp;amp;rsquo;s [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor, which greatly improves the control of the cursor (see this [https://forum.pine64.org/showthread.php?tid=14531 thread] for discussion); before installing this update, consider resetting to the defaults any configuration of your touchpad.&lt;br /&gt;
&lt;br /&gt;
'''Every Pinebook Pro produced before September 2021 should have its keyboard and touchpad firmware updated.'''&lt;br /&gt;
&lt;br /&gt;
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed. See [//old.reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Before updating ''any'' firmware, your Pinebook Pro should be either fully charged or, preferably, running from mains. This utility will be writing data to chips on the keyboard and touchpad, so a loss of power during any stage of the update can result in irrecoverable damage to your touchpad or keyboard.&lt;br /&gt;
&lt;br /&gt;
The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies. The instructions below assume a Debian desktop. To install these dependencies, newer Pinebook Pro models that come with Manjaro will require a different command.&lt;br /&gt;
&lt;br /&gt;
There are two keyboard versions of the Pinebook Pro: ISO and ANSI. You need to know which model you have prior to running the updater. &lt;br /&gt;
Firmware update steps for both models are listed below.  &lt;br /&gt;
&lt;br /&gt;
What you will need:&lt;br /&gt;
&lt;br /&gt;
* Connection to WiFi (for getting dependencies).&lt;br /&gt;
&lt;br /&gt;
* Your Pinebook Pro fully charged or running from mains power.&lt;br /&gt;
&lt;br /&gt;
* An external USB keyboard &amp;amp;amp; mouse (or access to the Pinebook Pro via SSH. Please note that for some configurations, the SSH service might not be available without first having logged in once; in this case, you will definitely want at least an external keyboard).&lt;br /&gt;
&lt;br /&gt;
==== ISO Model ====&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ANSI Model ====&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Running step 1 on the ANSI keyboard model will make the keyboard and touchpad inaccessible until step 2 is run, so an external keyboard must be connected to complete the update on this model!}}&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, if some of the keys produce incorrect characters, please check your OS’s language settings. For ANSI users, the default OS may have shipped with English UK as the default language; you can change it to English US if desired.&lt;br /&gt;
&lt;br /&gt;
==== Revised Firmware ====&lt;br /&gt;
&lt;br /&gt;
In addition, you might consider using revised firmware data; this is one final step that should not require a reboot:&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ISO''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_iso.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ANSI''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_ansi.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Windows Configuration ===&lt;br /&gt;
''Before making adjustments, consider updating the firmware; reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.''&lt;br /&gt;
&lt;br /&gt;
Some forum members have found that an adjustment to X-Windows will allow finer motion in the touchpad. If you use the '''Synaptic''' mouse/touchpad driver, use this command to make the change live:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may experiment with different settings, but 0.25 was tested as helping noticeably.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To make the change persist across reboots, change the file &amp;lt;code&amp;gt;/etc/X11/xorg.conf&amp;lt;/code&amp;gt; similar to below:&lt;br /&gt;
&amp;lt;pre&amp;gt;    Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;touchpad catchall&amp;quot;&lt;br /&gt;
        Driver &amp;quot;synaptics&amp;quot;&lt;br /&gt;
        MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
        MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
        Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&lt;br /&gt;
    EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
The line &amp;lt;code&amp;gt;Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&amp;lt;/code&amp;gt; is the change.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Another forum user built on the above settings a little, and have found these to be very good:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&lt;br /&gt;
synclient TapButton1=1&lt;br /&gt;
synclient TapButton2=3&lt;br /&gt;
synclient TapButton3=2&lt;br /&gt;
synclient FingerLow=30&lt;br /&gt;
synclient PalmDetect=1&lt;br /&gt;
synclient VertScrollDelta=64&lt;br /&gt;
synclient HorizScrollDelta=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FingerLow&amp;lt;/code&amp;gt; has the same value as 'FingerHigh' in one config (30). It is believed to help reduce mouse movement as you lift your finger, but it's unknown whether synaptic works like this.&lt;br /&gt;
You may find this config to be comfortable for daily use.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TabButton&amp;lt;/code&amp;gt; allows to just tab the touchpad instead of physically pressing it down (to get this click noise).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;right mouse click&amp;lt;/code&amp;gt; is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:&lt;br /&gt;
&amp;lt;pre&amp;gt; synclient MaxTapTime=250 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some users may encounter an issue with the mouse jumping when typing when using libinput driver (has not been test with synaptic) due to their hand hitting the touchpad which can be fixed by updating the xorg settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the xorg config simliar to the previou example. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;on&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setting can be verified by using the xinput command to first list the devices and then listing the properties for the Touchpad device. Exact commands to check this have been omitted for save of brevity. If DisableWhileTyping is shown enabled but does not appear to be working the issue may be due to the fact that the keyboard is connected to a USB bus which causes it to be seen as a external keyboard. To resolve this one can add the config below which sets the keyboard to internal to ensure the DisableWhileTyping works properly. &lt;br /&gt;
&lt;br /&gt;
You will need to edit &amp;lt;code&amp;gt;/etc/libinput/local-overrides.quirks&amp;lt;/code&amp;gt; and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Serial Keyboards]&lt;br /&gt;
MatchUdevType=keyboard&lt;br /&gt;
MatchBus=usb&lt;br /&gt;
AttrKeyboardIntegration=internal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once X11 is restarted the new setting should now take effect and you will no longer be able to use the touchpad while typing which will mostly eliminate the mouse jumping issue.&lt;br /&gt;
&lt;br /&gt;
== Power Supply ==&lt;br /&gt;
* Input Power: 5V DC @ 3A&lt;br /&gt;
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack&lt;br /&gt;
* USB-C 5V, 15W PD quickcharge&lt;br /&gt;
* Only use one power input at a time, barrel jack OR USB-C&lt;br /&gt;
&lt;br /&gt;
== LEDs ==&lt;br /&gt;
In total, there are four LEDs on the Pinebook Pro, three of which are placed in the top-left side of the keyboard, and one near the barrel port: &lt;br /&gt;
&lt;br /&gt;
# The red LED next to the barrel port indicates charging, in three ways.  First, it will illuminate steadily when either the factory power supply or a USB Type-C charger is connected to the Pinebook Pro, and the battery is getting charged.  Second, if the battery is at 100%, the LED will remain turned off regardless of the connected power input; however, this is [https://forum.pine64.org/showthread.php?tid=10899 rather rarely achieved].  Third, this LED will flash at 0.5&amp;amp;nbsp;Hz if there are any problems that prevent charging, such as the battery becoming too hot.&lt;br /&gt;
# The power indicator LED, above the keyboard, supports three different colors: green, amber and red. It is also capable of flashing to indicate eMMC activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused). &lt;br /&gt;
# The green NumLock LED, above the keyboard.&lt;br /&gt;
# The green CapsLock LED, above the keyboard.&lt;br /&gt;
&lt;br /&gt;
The NumLock and CapsLock LEDs serve their usual purposes on a keyboard, but they also have a secondary function. When the privacy switches get activated they blink to confirm that the switch has been activated.&lt;br /&gt;
&lt;br /&gt;
== Webcam ==&lt;br /&gt;
{{Hint| You can use Cheese to test the Camera functionality}}&lt;br /&gt;
* Streaming video resolutions supported, (uncompressed):&lt;br /&gt;
** 320 x 240 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
* Still frame resolutions supported:&lt;br /&gt;
** 160 x 120&lt;br /&gt;
** 176 x 144&lt;br /&gt;
** 320 x 240&lt;br /&gt;
** 352 x 288 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
While it has been said that some Pinebook Pro units contain only one microphone despite having two labeled microphone holes on the outer casing, other units do indeed contain two microphones. It is presently unclear which batches have either configuration; units from the initial community batch of 1000 units (following the initial 100) are believed to contain two, populating both labeled holes.&lt;br /&gt;
&lt;br /&gt;
The wires leading to both microphones connect to the mainboard with a small white plastic connector, located directly adjacent to the ribbon cable attachment point for the keyboard interface.&lt;br /&gt;
&lt;br /&gt;
'''Microphones not working?'''&lt;br /&gt;
&lt;br /&gt;
If pavucontrol input doesn't show microphone activity try changing the [[Pinebook_Pro#Privacy_Switches|privacy switches]]. If the switches are in the correct place and microphone input isn't working you can run &amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt; from the command line, hit &amp;lt;i&amp;gt;F6&amp;lt;/i&amp;gt; and select the &amp;lt;i&amp;gt;es8316&amp;lt;/i&amp;gt;, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0dB, change the audio profile in pavucontrol to another one with input. Additionally you may want to modify ADC PGA to get the levels to where you want them. If that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the section [[#Technical Reference|Technical Reference]]).&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and WiFi ==&lt;br /&gt;
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]&lt;br /&gt;
===Hardware Overview===&lt;br /&gt;
The Pinebook Pro contains an AMPAK AP6256 wireless module to provide Wi-Fi (compliant to IEEE 802.11ac) and Bluetooth (compliant to Bluetooth SIG revision 5.0). The module contains a Broadcom transceiver IC, believed to be the BCM43456, as well as the support electronics needed to allow the Wi-Fi and Bluetooth modes to share a single antenna. &lt;br /&gt;
&lt;br /&gt;
The wireless module interfaces with the Pinebook Pro’s system-on-chip using a combination of three interfaces: Bluetooth functionality is operated by serial UART and PCM, while the Wi-Fi component uses SDIO. It is unknown if the module’s Bluetooth capabilities are usable under operating systems that do not support SDIO.&lt;br /&gt;
&lt;br /&gt;
The module’s RF antenna pin is exposed on the mainboard via a standard Hirose U.FL connector, where a coaxial feedline links it to a flexible adhesive antenna situated near the upper right corner of the Pinebook Pro’s battery. As the RF connector is fragile and easily damaged, it should be handled carefully during connection and disconnection, and should not be reconnected frequently.&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
Problems have been reported with the Wi-Fi transceiver’s reliability during extended periods of high throughput, especially on the 2.4 GHz band. While the cause of this has yet to be determined, switching to the 5 GHz band may improve stability.&lt;br /&gt;
&lt;br /&gt;
Since the Bluetooth transceiver shares both its spectrum and antenna with 2.4 GHz Wi-Fi, simultaneous use of these modes may cause interference, especially when listening to audio over Bluetooth. If Bluetooth audio cuts out frequently, switching to the 5 GHz band – or deactivating Wi-Fi – may help.&lt;br /&gt;
&lt;br /&gt;
===Wi-Fi Capabilities===&lt;br /&gt;
Wi-Fi on the Pinebook Pro is capable of reaching a maximum data transfer rate of approximately 433 megabits per second, using one spatial stream. The transceiver does not support multiple spatial streams or 160-MHz channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
The Wi-Fi transceiver supports the lower thirteen standard channels on the 2.4 GHz band, using a bandwidth of 20 MHz. At least twenty-four channels are supported on the 5 GHz band, spanning frequencies from 5180 to 5320 MHz, 5500 to 5720 MHz, and 5745 to 5825 MHz, with bandwidths of 20, 40, or 80 MHz.&lt;br /&gt;
&lt;br /&gt;
Maximum reception sensitivity for both bands is approximately -92 dBm. The receiver can tolerate input intensities of no more than -20 dBm on the 2.4 GHz band, and no more than -30 dBm on the 5 GHz band. Maximum transmission power is approximately +15 dBm for either band, falling further to approximately +10 dBm at higher data transfer rates on the 5 GHz band.&lt;br /&gt;
&lt;br /&gt;
With current available drivers and firmware, the Wi-Fi interface supports infrastructure, ad-hoc, and access-point modes with satisfactory reliability. Monitor mode is not presently supported. Wi-Fi Direct features may be available, but it is unclear how to make use of them under Linux.&lt;br /&gt;
&lt;br /&gt;
Be aware that Linux userspace utilities, such as &amp;lt;code&amp;gt;iw&amp;lt;/code&amp;gt;, may report inaccurate information about the capabilities of wireless devices. Parameter values derived from vendor datasheets, or direct testing, should be preferred to the outputs of hardware-querying tools.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth Capabilities===&lt;br /&gt;
Bluetooth data transfer speeds have an indicated maximum of 3 megabits per second, but it is unclear what practical data rates can be expected. Audio streaming over Bluetooth is functioning normally, as is networking. Bluetooth Low-Energy functions, such as interacting with Bluetooth beacons, have not yet been tested conclusively.&lt;br /&gt;
&lt;br /&gt;
The Bluetooth transceiver supports all 79 channel allocations, spanning frequencies from 2402 MHz to 2480 MHz. Reception sensitivity is approximately -85 dBm, with a maximum tolerable reception intensity of -20 dBm. Bluetooth transmission power is limited to +10 dBm.&lt;br /&gt;
&lt;br /&gt;
===Disabling Bluetooth===&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth under Linux once:&lt;br /&gt;
&lt;br /&gt;
 sudo rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
To confirm if Bluetooth under Linux is disabled:&lt;br /&gt;
&lt;br /&gt;
 rfkill&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable rfkill-block@bluetooth&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select &amp;lt;i&amp;gt;plugins&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;PowerManager&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;configuration&amp;lt;/i&amp;gt; and then deselect the &amp;lt;i&amp;gt;auto power on&amp;lt;/i&amp;gt; option&lt;br /&gt;
&lt;br /&gt;
== LCD Panel ==&lt;br /&gt;
* Model: BOE NV140FHM-N49&lt;br /&gt;
* 14.0&amp;quot; (35.56&amp;amp;nbsp;cm) diagonal size&lt;br /&gt;
* 1920x1080 resolution&lt;br /&gt;
* 60&amp;amp;nbsp;Hz refresh rate&lt;br /&gt;
* IPS technology&lt;br /&gt;
* 1000:1 contrast&lt;br /&gt;
* 250&amp;amp;nbsp;nit brightness&lt;br /&gt;
* 63% sRGB coverage&lt;br /&gt;
* 6-bit color&lt;br /&gt;
* 30-pin eDP connection&lt;br /&gt;
&lt;br /&gt;
Some people have tested hardware video decode using the following;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External ports list ==&lt;br /&gt;
Here are a list of the external ports. See [[Pinebook_Pro#Expansion_Ports|Technical Reference - Expansion Ports]] for port specifications.&lt;br /&gt;
* Left side&lt;br /&gt;
** Barrel jack for power, (with LED)&lt;br /&gt;
** USB 3, Type A&lt;br /&gt;
** USB 3, Type C&lt;br /&gt;
* Right side&lt;br /&gt;
** USB 2, Type A&lt;br /&gt;
** Standard headset jack&lt;br /&gt;
** MicroSD card slot&lt;br /&gt;
&lt;br /&gt;
== Using the UART ==&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. Swapping the tx and rx around from this also works and is more traditional. See the official [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 document].]]&lt;br /&gt;
&lt;br /&gt;
UART output is enabled by flipping the UART switch to the ON position (item 9). To do so you need to remove the Pinebook Pro's bottom cover - please follow [[Pinebook_Pro#Disassembly_and_Reassembly|proper disassembly and reassembly protocol]]. The OFF position is towards the touchpad, the ON position is towards the display hinges.&lt;br /&gt;
&lt;br /&gt;
With the UART switch in the ON position, console is relayed via the audiojack and the laptop's sound is turned OFF. Please ensure that you are using a 3.3&amp;amp;nbsp;V interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3&amp;amp;nbsp;V and 5&amp;amp;nbsp;V variants) to avoid damage to the CPU.  Older version of the serial console cable sold by Pine64 uses wrong voltage level and should not be used; see [https://forum.pine64.org/showthread.php?tid=9367 this forum thread] for further information.  Recent version of the same cable uses the right voltage level.&lt;br /&gt;
&lt;br /&gt;
Insert the USB plug of the cable into an open USB port on the machine which will monitor, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro audio port. Run the following in a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you should find a line similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serial output should now be accessible using screen, picocom or minicom (and others).&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&lt;br /&gt;
picocom /dev/ttyUSB0 -b 1500000&lt;br /&gt;
&lt;br /&gt;
minicom -D /dev/ttyUSB0 -b 1500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old versions of U-Boot do not use the UART for console output. &amp;lt;strike&amp;gt;The console function is activated by the Linux kernel. Thus, if you use a non-Pinebook Pro Linux distro and want the UART as a console, you have to manually enable it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the optional NVMe adapter ==&lt;br /&gt;
The optional NVMe adapter allows the use of M.2 cards that support the NVMe standard, (but not SATA standard). The optional NVMe M.2 adapter supports '''M''' &amp;amp; '''M'''+'''B''' keyed devices, in both 2242 &amp;amp; 2280 physical sizes, the most common ones available. In addition, 2230 &amp;amp; 2260 are also supported, though NVMe devices that use those sizes are rare.&lt;br /&gt;
&lt;br /&gt;
Once you have fitted and tested your NVMe drive, please add a note to this page [[Pinebook Pro Hardware Accessory Compatibility]] to help build a list of tried and tested devices.&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in PineBook Pro.&lt;br /&gt;
&lt;br /&gt;
=== Installing the adapter ===&lt;br /&gt;
The V2.1-2019-0809 SSD adapter that shipped with the initial Pinebook Pro batches had significant issues. A repair kit will be shipped to address those issues.&lt;br /&gt;
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&amp;amp;pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)&lt;br /&gt;
&lt;br /&gt;
The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with touchpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.&lt;br /&gt;
&lt;br /&gt;
This is the link to the Pinebook Pro accessories in the store: [[https://pine64.com/?v=0446c16e2e66]]&lt;br /&gt;
&lt;br /&gt;
Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found [https://eli.gladman.cc/blog/2020/06/23/pine-book-pro-nvme.html here].&lt;br /&gt;
&lt;br /&gt;
=== Post NVMe install power limiting ===&lt;br /&gt;
Some NVMe SSDs allow reducing the maximum amount of power. Doing so may reduce the speed, but it may be needed in the Pinebook Pro to both improve reliability on battery: Some NVME may be stable with default settings when runnning on AC power but cause frequent kernel panics (system freeze with power LED blinking red/green) when running on battery. Reducing NVME power drain solves this in some cases. And reducing power used gives better battery life.&lt;br /&gt;
Here are the commands to obtain and change the power settings. The package 'nvme-cli' is required to run these commands. The example shows how to find the available power states, and then sets it to the lowest, non-standby setting, (which is 3.8 watts for the device shown);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme id-ctrl /dev/nvme0&lt;br /&gt;
NVME Identify Controller:&lt;br /&gt;
...&lt;br /&gt;
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0&lt;br /&gt;
         rwt:0 rwl:0 idle_power:- active_power:-&lt;br /&gt;
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1&lt;br /&gt;
         rwt:1 rwl:1 idle_power:- active_power:-&lt;br /&gt;
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2&lt;br /&gt;
         rwt:2 rwl:2 idle_power:- active_power:-&lt;br /&gt;
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3&lt;br /&gt;
         rwt:3 rwl:3 idle_power:- active_power:-&lt;br /&gt;
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4&lt;br /&gt;
         rwt:4 rwl:4 idle_power:- active_power:-&lt;br /&gt;
&lt;br /&gt;
$ sudo nvme get-feature /dev/nvme0 -f 2&lt;br /&gt;
get-feature:0x2 (Power Management), Current value:00000000&lt;br /&gt;
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s&lt;br /&gt;
set-feature:02 (Power Management), value:0x000002&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some NVMe SSDs don't appear to allow saving the setting with &amp;quot;-s&amp;quot; option. In those cases, leave off the &amp;quot;-s&amp;quot; and use a startup script to set the non-default power state at boot.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to test performance without saving the new power setting semi-permanantly, then leave off the &amp;quot;-s&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
On systemd based distros like Manjaro, a non-defaut power state for an NVME can be set using a systemd service.&amp;lt;br&amp;gt;&lt;br /&gt;
This is useful in cases where the NVME drive does not save the power state and/or uses APST.&amp;lt;br&amp;gt;&lt;br /&gt;
An example systemd service, nvme-throttle.service, is shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Throttles NVME to lesss power hungry mode&lt;br /&gt;
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/nvme set-feature /dev/nvme0 -f 2 -v 1&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the value after &amp;quot;-v&amp;quot; is the maximum power state that you want your SSD to use.&amp;lt;br&amp;gt;&lt;br /&gt;
This will be executed at system startup, and every time your system exits any suspend mode that might reset the SSD to default values.&lt;br /&gt;
&lt;br /&gt;
This file needs to be placed in the /etc/systemd/system directory. Afterwards, to activate the service, run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now nvme-throttle.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving &amp;amp; transitions based on usage. To check if you have a NVMe SSD with this feature;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme get-feature -f 0x0c -H /dev/nvme0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Information for this feature, (on a Pinebook Pro), is a work in progress. It is enabled by default in latest Manjaro kernels and reported to work.&lt;br /&gt;
On some NVME SSDS (WD), APST is compatible with limiting NVME maximum power : APST will work and not exceed maximum power state defined using &lt;br /&gt;
previous method.&lt;br /&gt;
&lt;br /&gt;
=== Using as data drive ===&lt;br /&gt;
As long as the kernel in use has both the PCIe and NVMe drivers, you should be able to use a NVMe drive as a data drive. It can automatically mount when booting from either the eMMC or an SD card. This applies to Linux, FreeBSD, and Chromium, using the normal partitioning and file system creation tools. Android requires testing.&lt;br /&gt;
&lt;br /&gt;
=== Using as OS root drive ===&lt;br /&gt;
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the [https://github.com/mrfixit2001/updates_repo/blob/v1.1/pinebook/filesystem/mrfixit_update.sh U-Boot update script] from the mrfixit2001 Debian or [https://pastebin.com/raw/EeK074XB Arglebargle's modified script], and [https://github.com/pcm720/rockchip-u-boot/releases the modified u-boot images] provided by forum user pcm720, you can now add support to boot from an NVMe drive. Binary images are useable with SD, eMMC, and [[Pinebook_Pro_SPI|SPI flash]]. For OS images using the mainline kernel, there are a few variants of U-Boot available that also support NVMe as the OS drive. Though these may require writing the U-Boot to the SPI flash for proper use of the NVMe as the OS drive.&lt;br /&gt;
&lt;br /&gt;
The current boot order, per last testing, for this modified U-Boot is:&lt;br /&gt;
*MicroSD&lt;br /&gt;
*eMMC&lt;br /&gt;
*NVMe&lt;br /&gt;
&lt;br /&gt;
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&amp;amp;pid=53764#pid53764 the forum post.]&lt;br /&gt;
&lt;br /&gt;
It is also possible to initially boot off an eMMC or SD card, then transfer to a root file system on the NVMe. Currently, it is necessary to have the U-Boot code on an eMMC or SD card.  (A forum member [https://forum.pine64.org/showthread.php?tid=8439 posted here] about using a modified version of U-Boot with NVMe drivers, that uses &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; off the NVMe drive. So this may change in the future.)&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].&lt;br /&gt;
&lt;br /&gt;
== Caring for the PineBook Pro ==&lt;br /&gt;
=== Bypass Cables ===&lt;br /&gt;
The mainboard features two (disconnected by default) bypass cables that are only to be used with the battery disconnected. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run the laptop without a battery. Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice].  &lt;br /&gt;
&lt;br /&gt;
'''Note that despite the bypass cable being a two conductor cable, it is only used as one. Both wires being soldered together on either side is normal!'''&lt;br /&gt;
&lt;br /&gt;
{{warning|Do not connect the bypass cables with the battery connected.  Using the bypass cables with the battery connected can permanently damage the computer.}}&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Service Step-by-Step Guides ===&lt;br /&gt;
&lt;br /&gt;
Under [[Pinebook_Service_Step_by_Step_Guides|Service Guides for Pinebook]] you can find instructions guides concerning disassembly of:&lt;br /&gt;
&lt;br /&gt;
* The installation process on Pinebook Pro similar to 14&amp;quot; Pinebook&lt;br /&gt;
* The installation process is the reverse order of removal guide:&lt;br /&gt;
** 14″ Pinebook Lithium Battery Pack Removal Guide&lt;br /&gt;
** 14″ Pinebook LCD Panel Screen Removal Guide&lt;br /&gt;
** 14″ Pinebook eMMC Module Removal Guide&lt;br /&gt;
&lt;br /&gt;
== Using the SPI flash device ==&lt;br /&gt;
&lt;br /&gt;
See [[Pinebook Pro SPI]] for details.&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro comes with a 128Mbit, (16MByte), flash device suitable for initial boot target, to store the bootloader. The SoC used on the Pinebook Pro boots from this SPI flash device first, before eMMC or SD card. At present, April 19, 2020, the Pinebook Pros ship without anything programmed in the SPI flash device. So the SoC moves on to the next potential boot device, the eMMC. ARM/ARM64 computers do not have a standardized BIOS, yet.&lt;br /&gt;
&lt;br /&gt;
Here is some information on using the SPI flash device:&lt;br /&gt;
&lt;br /&gt;
* You need the kernel built with SPI flash device support, which will supply a device similar to: code&amp;gt;/dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The Linux package below, will need to be available: &amp;lt;code&amp;gt;mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
* You can then use this program from the package to write the SPI device: &amp;lt;code&amp;gt;flashcp &amp;amp;lt;filename&amp;amp;gt; /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you need to recover from a defective bootloader written to the SPI flash, you can simply short pin 6 of the SPI flash to GND and boot. This will render the SoC bootrom unable to read from the SPI flash and have it fall back to reading the bootloader from other boot media like the eMMC or Micro SD card.&lt;br /&gt;
&lt;br /&gt;
The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware. At present, April 19th, 2020, there is no good bootloader image to flash into the SPI flash device. This is expected to change, as there are people working on issue.&lt;br /&gt;
&lt;br /&gt;
= Software tuning guide =&lt;br /&gt;
Details on how to get the most out of a Pinebook Pro &amp;amp; its RK3399 SoC.&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's default Manjaro KDE system ==&lt;br /&gt;
=== Watching DRM content (Netflix, etc.) ===&lt;br /&gt;
Most paid online streaming services use Widevine DRM to make their content more difficult to pirate. Widevine is not directly supported on Manjaro KDE, however it is still possible to watch DRM content via the &amp;quot;chromium-docker&amp;quot; package which downloads a 32-bit ARM container and installs Chromium with Widevine inside of that. While not space-efficient, or efficient in general, it's the recommended solution for watching this content on your Pinebook Pro. You can install this package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy chromium-docker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking GPU capabilities ===&lt;br /&gt;
To see what versions of OpenGL and OpenGL ES are supported by the Pinebook Pro, what driver is in use, and what version of the driver is loaded, install the &amp;quot;mesa-demos&amp;quot; package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy mesa-demos&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then run:&lt;br /&gt;
&amp;lt;pre&amp;gt;glxinfo | grep OpenGL&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give detailed information about your graphics card and driver, useful for debugging.&lt;br /&gt;
&lt;br /&gt;
=== Better GPU compatibility and performance ===&lt;br /&gt;
For better graphics performance, you may install the &amp;quot;mesa-git&amp;quot; package, built and supplied in the Manjaro ARM repos. This lets you bring in the latest features, optimizations, and bugfixes for the graphics driver used by the Pinebook Pro. Installation is as simple as:&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sy mesa-git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you may reboot to load the newer driver.&lt;br /&gt;
&lt;br /&gt;
With Mesa 20.2 there is no longer much reason to use this over the standard mesa package, and applications may occasionally break with mesa-git.&lt;br /&gt;
&lt;br /&gt;
[https://docs.mesa3d.org/bugs.html Reporting bugs] to the Mesa project will help make sure any problems are quickly fixed.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL 3.3 support ===&lt;br /&gt;
By default, with the current state of the Panfrost GPU driver, the Pinebook Pro supports OpenGL 2.1 and OpenGL ES 3.0. If you want to use OpenGL 3.3, you need to set the system-wide environment variable, open the '''/etc/environment''' file with:&lt;br /&gt;
&amp;lt;pre&amp;gt;kate /etc/environment&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then at the bottom of the file, on a new line, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;PAN_MESA_DEBUG=&amp;quot;gl3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then save the file, entering your password when prompted, and reboot the system. When you check your GPU capabilities, it should report OpenGL 3.3 and applications that rely on it should function properly. Note that GL 3.3 support is incomplete and some rendering features do not work yet, notably geometry shaders.&lt;br /&gt;
&lt;br /&gt;
=== Install Anbox on Pinebook Pro Manjaro 20.10 ===&lt;br /&gt;
[https://www.youtube.com/watch?v=EU8_Q11dATs Youtube video on installing Anbox on Pienbook Pro Manjaro Build 20.10 by LivingLinux]&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's previously-default Debian system ==&lt;br /&gt;
Here are some hints on what you can do to customize the Pinebook Pro's previous factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])&lt;br /&gt;
&lt;br /&gt;
=== Initial user changes, password, name, etc ===&lt;br /&gt;
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.&lt;br /&gt;
&lt;br /&gt;
* Reboot (this is just to ensure all background processes belong to the user are not running... there are other ways to achieve this but this way is easy)&lt;br /&gt;
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal&lt;br /&gt;
* Login as root (login: root, password: root)&lt;br /&gt;
* Set a strong password for the root user using the following command and it's prompts:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd (and follow prompts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock user to your prefered username (replace myself with whatever you like):&lt;br /&gt;
&amp;lt;pre&amp;gt;# usermod -l myself -d /home/myself -m rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock group to match your preferred username:&lt;br /&gt;
&amp;lt;pre&amp;gt;# groupmod -n myself rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Put your name in the account, (replace &amp;quot;John A Doe&amp;quot; with your name):&lt;br /&gt;
&amp;lt;pre&amp;gt;# chfn -f &amp;quot;John A Doe&amp;quot; myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set a strong password for the normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Log out of the text terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;# logout&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user&lt;br /&gt;
* Open text terminal to fix login error: &amp;quot;Configured directory for incoming files does not exist&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ blueman-services&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select &amp;quot;Transfer&amp;quot; tab and set &amp;quot;Incoming Folder&amp;quot; to myself&lt;br /&gt;
OR&lt;br /&gt;
If adduser is in distro, this is MUCH easier&lt;br /&gt;
sudo adduser $USER ,, fill out requested data&lt;br /&gt;
Then,, sudo adduser $USER $GROUP,,, 1 group at a time&lt;br /&gt;
To see which groups to add,,, id $USER,  id rock&lt;br /&gt;
&lt;br /&gt;
=== Changing the default hostname ===&lt;br /&gt;
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl&lt;br /&gt;
   Static hostname: Debian-Desktop&lt;br /&gt;
         Icon name: computer&lt;br /&gt;
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb&lt;br /&gt;
           Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99&lt;br /&gt;
  Operating System: Debian GNU/Linux 9 (stretch)&lt;br /&gt;
            Kernel: Linux 4.4.210&lt;br /&gt;
      Architecture: arm64&amp;lt;/pre&amp;gt;&lt;br /&gt;
To change, use this, (with &amp;quot;My_Hostname&amp;quot; used as the example);&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl set-hostname My_Hostname&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whence done, you can re-verify using the first example.&lt;br /&gt;
&lt;br /&gt;
Then you should backup and edit your &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; entry's name;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`&lt;br /&gt;
$ sudo vi /etc/hosts&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
127.0.0.1	My_Hostname&lt;br /&gt;
::1		localhost ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0		ip6-localnet&lt;br /&gt;
ff00::0		ip6-mcastprefix&lt;br /&gt;
ff02::1		ip6-allnodes&lt;br /&gt;
ff02::2		ip6-allrouters&lt;br /&gt;
127.0.1.1       linaro-alip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable Chromium browser's prompt for passphrase &amp;amp; password storage ===&lt;br /&gt;
&lt;br /&gt;
Perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* On the tool bar, hover over the Chromium icon&lt;br /&gt;
* Using the right mouse button, select '''Properties'''&lt;br /&gt;
* In the '''Command:''' line section, add &amp;lt;code&amp;gt;--password-store=basic&amp;lt;/code&amp;gt; before the &amp;lt;code&amp;gt;%U&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use the '''x Close''' button to save the change&lt;br /&gt;
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.&lt;br /&gt;
&lt;br /&gt;
=== Changing the boot splash picture ===&lt;br /&gt;
&lt;br /&gt;
The default boot splash picture can be replaced using the following instructions:&lt;br /&gt;
&lt;br /&gt;
* Install '''ImageMagick''' which will do the conversion&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo apt-get install imagemagick&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).&lt;br /&gt;
* From the directory in which your new image is stored run the following commands&lt;br /&gt;
* Convert your image to the bootsplash raw format using imagemagick convert.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a backup copy of your current splash screen&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy your new splash screen into place&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp splash.fb /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the correct permissions on the splash.fb file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo chmod 644 /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed&lt;br /&gt;
&lt;br /&gt;
=== Watching Amazon Prime videos with Chromium ===&lt;br /&gt;
When you create a new user, it will be necessary to launch the Chromium browswer with a specific user agent like below;&lt;br /&gt;
&amp;lt;pre&amp;gt;chromium-browser --user-agent=&amp;quot;Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There may be more tweaks needed.&lt;br /&gt;
&lt;br /&gt;
=== Enabling text boot time messages ===&lt;br /&gt;
&lt;br /&gt;
By default, most Linux distros have a boot screen with a picture. To see all the boot time messages, use one of the following;&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 vi /etc/default/u-boot&lt;br /&gt;
&lt;br /&gt;
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.&lt;br /&gt;
&lt;br /&gt;
* Update the U-Boot configuration:&lt;br /&gt;
&lt;br /&gt;
 u-boot-update&lt;br /&gt;
&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 vi /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
* Change '''console=ttyS2,1500000''' to '''console=tty1'''&lt;br /&gt;
* Remove the '''bootsplash.bootfile''' option and it's parameter.&lt;br /&gt;
* You can add verbose logging by appending '''ignore_loglevel''' to the line where boot splash was.&lt;br /&gt;
* Leave everything else alone.&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
== Improving readability ==&lt;br /&gt;
&lt;br /&gt;
Some people find that a 14&amp;quot; LCD screen with 1080p, (1920 x 1080), has text and icons a bit too small. There are things you can do to make the screen easier to use and read.&amp;lt;br&amp;gt;&lt;br /&gt;
* Increase the font size&lt;br /&gt;
* Use a font with more pronounced features&lt;br /&gt;
* Increase the various window manager sizes (e.g. increase the height of the tool bar)&lt;br /&gt;
* Change the color scheme to be easier on the eyes. Higher contrast can help usability.&lt;br /&gt;
* Change the window manager's decorations (e.g. use larger icons)&lt;br /&gt;
* Use a workspace manager, with one application per workspace&lt;br /&gt;
* When at home or office, use an external monitor&lt;br /&gt;
* Change the X-Windows DPI. One such method that someone used successfully, is:&amp;lt;br&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;echo &amp;quot;Xft.dpi: 150&amp;quot; &amp;gt;&amp;gt; ~/.Xresources&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Change the 150 as desired to get the size adjustment you want.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
However, do not change the resolution of the LCD screen, otherwise you may end up with a blank / black screen. If that happens, see this troubleshooting section for the fix:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]&lt;br /&gt;
&lt;br /&gt;
== Chromium tweaks ==&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--disable-low-res-tiling \&lt;br /&gt;
--num-raster-threads=6 \&lt;br /&gt;
--profiler-timing=0 \&lt;br /&gt;
--disable-composited-antialiasing \&lt;br /&gt;
--test-type \&lt;br /&gt;
--show-component-extension-options \&lt;br /&gt;
--ignore-gpu-blacklist \&lt;br /&gt;
--use-gl=egl \&lt;br /&gt;
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \&lt;br /&gt;
--ppapi-flash-version=32.0.0.255 \&lt;br /&gt;
--enable-pinch \&lt;br /&gt;
--flag-switches-begin \&lt;br /&gt;
--enable-gpu-rasterization \&lt;br /&gt;
--enable-oop-rasterization \&lt;br /&gt;
--flag-switches-end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in some cases, this may also decrease performance substantially, as observed when using these flags on the Manjaro KDE desktop. Feel free to experiment to find what is smoothest for you personally.&lt;br /&gt;
&lt;br /&gt;
== gVim has performance issue ==&lt;br /&gt;
It appears that using GTK3 can cause very slow scrolling, while Vim in a terminal window works fine.&amp;lt;br/&amp;gt;&lt;br /&gt;
Simply revert back to using GTK2, (how to do so is somewhat Linux distro-specific).&lt;br /&gt;
&lt;br /&gt;
Another solution may be to run gVim with &lt;br /&gt;
&lt;br /&gt;
 GDK_RENDERING=image&lt;br /&gt;
&lt;br /&gt;
environment variable set. It seems that this improves the performance by reverting back to software-only rendering.&lt;br /&gt;
&lt;br /&gt;
== Kernel options ==&lt;br /&gt;
Here are some Pinebook Pro &amp;amp; its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.&lt;br /&gt;
&lt;br /&gt;
To see if a specific feature is enabled in the current kernel, you can use something like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep -i rockchip_pcie /proc/config.gz&lt;br /&gt;
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set&lt;br /&gt;
CONFIG_PHY_ROCKCHIP_PCIE=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If it's listed as &amp;lt;code&amp;gt;=m&amp;lt;/code&amp;gt;, then it's a module. You can see if the module is loaded with;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep -i rockchip_pcie&lt;br /&gt;
phy_rockchip_pcie      16384  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note modules are not loaded until needed. Thus, we sometimes check the kernel configuration instead to see if a feature is configured first, then see if it's a module.&lt;br /&gt;
&lt;br /&gt;
=== Hardware video decoding ===&lt;br /&gt;
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.&amp;lt;br&amp;gt;&lt;br /&gt;
Older systems, such as the previously-default Debian desktop, use the Rockchip-supplied kernel module &amp;lt;code&amp;gt;rk-vcodec&amp;lt;/code&amp;gt;. To check, something like this can be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep rk-vcodec&lt;br /&gt;
    or&lt;br /&gt;
$ zgrep RK_VCODEC /proc/config.gz&lt;br /&gt;
CONFIG_RK_VCODEC=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that in the above example, the Rockchip video CODEC is not built as a module, but included into the kernel. Thus, it does not show up in the list modules check.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer systems may use a different option as in the configuration below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep HANTRO /proc/config.gz&lt;br /&gt;
CONFIG_VIDEO_HANTRO=m&lt;br /&gt;
CONFIG_VIDEO_HANTRO_ROCKCHIP=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting guide =&lt;br /&gt;
&lt;br /&gt;
Do not panic if something goes wrong or in an unexpected way.  Instead, stop and consider carefully how to undo something, or how to redo it.  This particularly applies when flashing a new operating system, or flashing new firmware to the keyboard or touchpad.  If everything fails, consider reporting the issue on the forums, with as many relevant details as available.&lt;br /&gt;
&lt;br /&gt;
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.&lt;br /&gt;
&lt;br /&gt;
= Hardware/Accessory Compatibility =&lt;br /&gt;
Please contribute to the [[Pinebook Pro Hardware Accessory Compatibility|hardware/accessory compatibility page]], which lists the status of hardware tested with the Pinebook Pro.  Available hardware categories include the following:&lt;br /&gt;
&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
== Disassembly and Reassembly  == &lt;br /&gt;
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]&lt;br /&gt;
&lt;br /&gt;
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]&lt;br /&gt;
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]&lt;br /&gt;
&lt;br /&gt;
There are a few '''mandatory''' precautions to be taken:&lt;br /&gt;
&lt;br /&gt;
* Do not open the laptop by lifting the lid while the Pinebook Pro bottom cover is removed - this can cause structural damage to the hinges and/or other plastic components of the chassis such as the IO port cut-outs.&lt;br /&gt;
* When removing the back cover plate, *do not, under any circumstances, slide your fingertips between the metal shell and the plastic frame!* The back cover plate edges are sharp, and when combined with the pressure and movement generated from, specifically, attempting to slide the tips of your fingers along the bottom edge of the plate along the lid-hinge, they *will* slice open the tips of your fingers like a knife.&lt;br /&gt;
* When removing the back cover plate, use care to avoid damaging the speakers. They can be stuck to the back cover with double-sided tape, and the thin wires are very delicate. Newer Pinebook Pro laptops (as of the May 2021 batch, and perhaps earlier) seem to lack the double-sided tape to the rear cover, instead opting for tape or glue that makes them stick to the front cover. Nevertheless, be gentle when removing the back cover.&lt;br /&gt;
&lt;br /&gt;
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]&lt;br /&gt;
&lt;br /&gt;
When disassembling the laptop make sure that it is powered off and folded closed. To remove the bottom cover of the Pinebook Pro, first remove the ten (10) Phillips head screws that hold the bottom section of the laptop in place. There are four (4) short screws along the front edge, and six (6) long screws along the 3 remaining sides. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis. The aluminum case is held on only by screws. There are no plastic snaps, and the shell should pull away without any effort. If you experience any resistance at all stop and ensure all ten (10) screws are accounted for.&lt;br /&gt;
&lt;br /&gt;
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. Before replacing the aluminum back-plate, ensure that the speakers are properly seated by pressing gently on the hard plastic edge of the speaker module. Slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the touchpad is located) in place using the short screws in the front left and right corners. Then proceed to pop in the bottom panel into place. Secure the bottom section (where hinges are located) by screwing in the left and right corners. Then screw in the remaining screws and run your finger though the rim on the chassis to make sure its fitted correctly. Note that the front uses the remaining 4 short screws.&lt;br /&gt;
&lt;br /&gt;
The screws are small and should only be finger tight. Too much force will strip the threads. If after installing screws the back cover plate has not seated properly on one side (which may be caused by the aforementioned misseating of the speakers), open the display and hold the base on either side of the keyboard and gently flex the base with both hands in opposing directions. Once the side pops further in, then recheck the screws on that side. If it does not pop back in, re-open the machine and check for misseated components.&lt;br /&gt;
&lt;br /&gt;
A basic 3D model to print replacement standoffs for the back cover screws is [https://www.thingiverse.com/thing:4226648 available on Thingiverse], until the official drawings or 3D models are made available.&lt;br /&gt;
&lt;br /&gt;
====Display Disassembly====&lt;br /&gt;
It is not recommended to adjust the position of the lid when the bottom cover is removed, because the bottom cover provides structural strength, so the lid should be open fully as the first step, before starting any disassembly of the laptop.  After opening the lid, remove the bottom cover by following the instruction found in the section above.  Alternatively, you can keep the lid closed and remove the screws that hold the hinges to the main laptop body, as described in [[Pinebook Service Step by Step Guides]].&lt;br /&gt;
&lt;br /&gt;
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plactic U-shaped cover that snaps in place using latches.  Use a dedicated plastic prying tool or a guitar pick to gently pry the cover and remove it, starting from the outer edge.  Once you pry the cover to a certain extent, it should be possible to remove it fully using only your hands.  The U-shaped cover is rather sturdy, but still be careful not to break or bend it.&lt;br /&gt;
&lt;br /&gt;
There are two small screws hidden underneath the two small rubber nubs on the upper part of the screen bezel, so first gently remove the nubs and then remove the screws.  The screen bezel is held in place with a combination of latches and some adhesive tape, which is there to prevent dust ingress.  The adhesive isn't very strong, and the bezel is capable of flexing back into shape after being twisted to a certain extent.  There is more adhesive on the bottom part of the screen bezel, so be more careful while prying that section apart.  Use the same prying tool that you used for the U-shaped cover, and work it around the outer edges of the screen bezel.&lt;br /&gt;
&lt;br /&gt;
== Internal Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Main chips ===&lt;br /&gt;
* RK3399 system-on-chip (1)&lt;br /&gt;
* LPDDR4 SDRAM (21)&lt;br /&gt;
* SPI NOR flash memory (29)&lt;br /&gt;
* eMMC flash memory (26)&lt;br /&gt;
* WiFi/BT module (27)&lt;br /&gt;
&lt;br /&gt;
=== Mainboard Switches and Buttons ===&lt;br /&gt;
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack. &lt;br /&gt;
&lt;br /&gt;
The Reset and Recovery buttons (28): the reset button performs an immediate reset of the laptop. The Recovery button is used to place the device in maskrom mode; this mode allows flashing eMMC using Rockchip tools (e.g. rkflashtools). &lt;br /&gt;
&lt;br /&gt;
[[File:PBPL_S.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Key Internal Parts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Numbered parts classification and description&lt;br /&gt;
! Number&lt;br /&gt;
! Type&lt;br /&gt;
! Descriptor&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 1&lt;br /&gt;
| Component || RK3399 System-On-Chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 2&lt;br /&gt;
| Socket || PCIe x4 slot for optional NVMe adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 3&lt;br /&gt;
| Socket || Speakers socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 4&lt;br /&gt;
| Socket || Touchpad socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 5&lt;br /&gt;
| Component || Left speaker &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 6&lt;br /&gt;
| Connector || Power bridge connector &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 7&lt;br /&gt;
| Socket || Keyboard Socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 8&lt;br /&gt;
| Component || Optional NVMe SSD adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 9&lt;br /&gt;
| Switch || UART/Audio switch - outputs UART via headphone jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 10&lt;br /&gt;
| Socket || Power bridge socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 11&lt;br /&gt;
| Socket || Battery socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 12&lt;br /&gt;
| Component || Touchpad&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 13&lt;br /&gt;
| Component || Battery&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 14&lt;br /&gt;
| Component || Right speaker&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 15&lt;br /&gt;
| Socket || MicroSD card slot&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 16&lt;br /&gt;
| Socket || Headphone / UART jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 17&lt;br /&gt;
| Socket || USB 2.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 18&lt;br /&gt;
| Socket || Daughterboard-to-mainboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 19&lt;br /&gt;
| Cable || Daughterboard-to-mainboard ribbon cable&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 20&lt;br /&gt;
| Component || microphone&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 21&lt;br /&gt;
| Component || LPDDR4 RAM&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 22&lt;br /&gt;
| Socket || Mainboard-to-daughterboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 23&lt;br /&gt;
| Socket || Microphone socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 24&lt;br /&gt;
| Switch || Switch to hardware disable eMMC&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 25&lt;br /&gt;
| Antenna || BT/WiFI antenna&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 26&lt;br /&gt;
| Component || eMMC flash memory module &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 27&lt;br /&gt;
| Component ||BT/WiFi module chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 28&lt;br /&gt;
| Buttons || Reset and recovery buttons&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 29&lt;br /&gt;
| Component || SPI flash storage&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 30&lt;br /&gt;
| Socket || eDP LCD socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 31&lt;br /&gt;
| Socket || Power in barrel socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 32&lt;br /&gt;
| Socket || USB 3.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 33&lt;br /&gt;
| Socket || USB 3.0 Type C &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Smallboard detailed picture ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_pro_smallboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Bootable Storage ==&lt;br /&gt;
&lt;br /&gt;
=== Boot sequence details ===&lt;br /&gt;
The RK3399's mask 32KB ROM boot code looks for the next stage of code at byte off-set 32768, (sector 64 if using 512 byte sectors). This is where U-Boot code would reside on any media that is bootable.&amp;lt;br&amp;gt;&lt;br /&gt;
[[RK3399_boot_sequence|RK3399 boot sequence]]&lt;br /&gt;
&lt;br /&gt;
=== Boot devices ===&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is capable of booting from eMMC, USB 2.0, USB 3.0, or an SD card. It cannot boot from USB-C.  The boot order of the hard-coded ROM of its RK3399 SoC is: SPI NOR, eMMC, SD, USB OTG. &lt;br /&gt;
&lt;br /&gt;
At this time, the Pinebook Pro ships with a Manjaro + KDE build with [https://www.denx.de/wiki/U-Boot/ u-boot] on the eMMC.  Its boot order is: SD, USB, then eMMC.&lt;br /&gt;
&lt;br /&gt;
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other OSes from an SD card. In order to update, fully charge the battery, establish an internet connection, click the update icon in the toolbar, and then reboot your Pinebook Pro.  Please see [https://forum.pine64.org/showthread.php?tid=7830 this log] for details.)&lt;br /&gt;
&lt;br /&gt;
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf&lt;br /&gt;
in a /boot partition on the eMMC.&lt;br /&gt;
&lt;br /&gt;
=== eMMC information ===&lt;br /&gt;
The eMMC appears to be hot-pluggable. This can be useful if trying to recover data or a broken install. Best practice is probably to turn the eMMC switch to off position before changing modules. Note that the enable/disable label on the silkscreen is incorrect on some board revisions (known bad on v2.1).&lt;br /&gt;
&lt;br /&gt;
The eMMC storage will show up as multiple block devices:&lt;br /&gt;
*mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB&lt;br /&gt;
*mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB&lt;br /&gt;
*mmcblk1rpmb - eMMC standard secure data partition, may be 16MB&lt;br /&gt;
*mmcblk1 - This block contains the user areas&lt;br /&gt;
&lt;br /&gt;
Only the last is usable as regular storage device in the Pinebook Pro.&lt;br /&gt;
The device number of &amp;quot;1&amp;quot; shown above may vary, depending on kernel.&lt;br /&gt;
&lt;br /&gt;
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user &amp;quot;root&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/unbind&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/bind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: with the device trees coming with older kernels (Linux &amp;lt; 5.11), the device name may be fe330000.sdhci instead of fe330000.mmc)&lt;br /&gt;
&lt;br /&gt;
== Case Dimensions and Data ==&lt;br /&gt;
* Dimensions: 329mm x 220mm x 12mm (WxDxH)&lt;br /&gt;
* Weight: 1.26Kg&lt;br /&gt;
* Screws&lt;br /&gt;
** Philips head type screws&lt;br /&gt;
** M2 flat head machine screws (measurements in mm)&lt;br /&gt;
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1,  Overall length - 3.05&lt;br /&gt;
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85&lt;br /&gt;
* Rubber Feet&lt;br /&gt;
** 18mm diameter&lt;br /&gt;
** 3mm height&lt;br /&gt;
** Dome shaped&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
[[File:Rockchip_RK3399.png|right]]&lt;br /&gt;
* Based on Rockchip RK3399&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU&lt;br /&gt;
** Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)&lt;br /&gt;
** ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
** ARMv8 Cryptography Extensions&lt;br /&gt;
** VFPv4 floating point unit supporting single and double-precision operations&lt;br /&gt;
** Hardware virtualization support&lt;br /&gt;
** TrustZone technology support&lt;br /&gt;
** Full CoreSight debug solution&lt;br /&gt;
** One isolated voltage domain to support DVFS&lt;br /&gt;
* Cortex-A72 (big cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]&lt;br /&gt;
** Superscalar, variable-length, out-of-order pipeline&lt;br /&gt;
** L1 cache 48KB Icache and 32KB Dcache for each A72 &lt;br /&gt;
** L2 cache 1024KB for big cluster &lt;br /&gt;
* Cortex-A53 (little cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]&lt;br /&gt;
** In-order pipeline with symmetric dual-issue of most instructions &lt;br /&gt;
** L1 cache 32KB Icache and 32KB Dcache for each A53&lt;br /&gt;
** L2 cache 512KB for little cluster&lt;br /&gt;
* Cortex-M0 (control processors):&lt;br /&gt;
** [https://developer.arm.com/ip-products/processors/cortex-m/cortex-m0 Cortex-M0 CPU]&lt;br /&gt;
** Two Cortex-M0 cooperate with the central processors&lt;br /&gt;
** Architecture: Armv6-M&lt;br /&gt;
** Thumb/Thumb2 instruction set&lt;br /&gt;
** 32 bit only&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]&lt;br /&gt;
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.&lt;br /&gt;
* Frequency 	650MHz &lt;br /&gt;
* Throughput 	1300Mtri/s, 10.4Gpix/s&lt;br /&gt;
* Graphic interface standards:&lt;br /&gt;
** OpenGL® ES 1.1, 1.2, 2.0, 3.0, 3.1, 3.2. (Panfrost has initial support of 3.0 beginning 2020/02/27)&lt;br /&gt;
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)&lt;br /&gt;
** OpenCL™ 1.1, 1.2&lt;br /&gt;
** DirectX® 11 FL11_1&lt;br /&gt;
** RenderScript™&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory:&lt;br /&gt;
** LPDDR4&lt;br /&gt;
** 800MHz, (limited by RK3399)&lt;br /&gt;
** Dual memory channels on the CPU, each 32 bits wide&lt;br /&gt;
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel&lt;br /&gt;
** 4GB as a single 366 pin mobile RAM chip&lt;br /&gt;
* Storage Memory: &lt;br /&gt;
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)&lt;br /&gt;
** eMMC version 5.1, HS400, 8 bit on RK3399 side&lt;br /&gt;
** Bootable&lt;br /&gt;
* SPI flash:&lt;br /&gt;
** [[Pinebook Pro SPI]]&lt;br /&gt;
** 128Mbit / 16MByte&lt;br /&gt;
** 1 bit interface&lt;br /&gt;
** Bootable, (first boot device, ahead of eMMC &amp;amp; SD card)&lt;br /&gt;
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.&lt;br /&gt;
&lt;br /&gt;
=== Video out ===&lt;br /&gt;
* USB-C Alt mode DP&lt;br /&gt;
* Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* MicroSD card:&lt;br /&gt;
** Bootable&lt;br /&gt;
** Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.&lt;br /&gt;
** Version SD3.0, (MMC 4.5), up to 50MB/s&lt;br /&gt;
** SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS&lt;br /&gt;
* USB ports:&lt;br /&gt;
** 1 x USB 2.0 Type-A Host Port, bootable&lt;br /&gt;
** 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable&lt;br /&gt;
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable&lt;br /&gt;
** Note that high power USB devices may not work reliably on a PBP. Or they may draw enough power to drain the battery even when the PBP is plugged into A.C. One alternative is externally powered USB devices.&lt;br /&gt;
* Headphone jack switchable to UART console mux circuit&lt;br /&gt;
&lt;br /&gt;
== Additional hardware ==&lt;br /&gt;
Hardware that is not part of the SoC.&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
* Lithium Polymer Battery (10,000 mAH)&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
* 14.0&amp;quot; 1920x1080 IPS LCD panel&lt;br /&gt;
=== Lid closed magnet ===&lt;br /&gt;
There is a magnet to detect when the laptop lid is closed, so action can be taken like sleep. This meets up with the Hall sensor on the daughter / small board to detect lid closed.&lt;br /&gt;
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.&lt;br /&gt;
&lt;br /&gt;
=== Webcam ===&lt;br /&gt;
* Internal USB attached Webcam&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
* Built-in microphone&lt;br /&gt;
* Built-in stereo speakers:&lt;br /&gt;
** Oval in design&lt;br /&gt;
** 3 mm high x 20 mm x 30 mm&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* WiFi:&lt;br /&gt;
** 802.11 b/g/n/ac&lt;br /&gt;
** Dual band: 2.4Ghz &amp;amp; 5Ghz&lt;br /&gt;
** Single antenna&lt;br /&gt;
* Bluetooth 5.0&lt;br /&gt;
&lt;br /&gt;
=== Optional NVMe adapter ===&lt;br /&gt;
* PCIe 1.1, 2.5 GT/s per lane&lt;br /&gt;
** Note that due to errata, PCIe is limited to Gen1. See [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip/rk3399.dtsi?id=712fa1777207c2f2703a6eb618a9699099cbe37b this commit].&lt;br /&gt;
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards&lt;br /&gt;
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too&lt;br /&gt;
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260&lt;br /&gt;
* Power: 2.5&amp;amp;nbsp;W continuous, 8.25&amp;amp;nbsp;W peak momentary&lt;br /&gt;
* Does not support SATA M.2 cards&lt;br /&gt;
* Does not support USB M.2 cards&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro Schematics and Certifications ==&lt;br /&gt;
* Pinebook Pro Main Board Schematic And Silkscreen:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]&lt;br /&gt;
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]&lt;br /&gt;
* Pinebook Pro Daughter Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]&lt;br /&gt;
* Optional Pinebook Pro NVMe Adapter Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]&lt;br /&gt;
* Serial Console Earphone Jack Pinout:&lt;br /&gt;
** [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinebook Serial Console Earphone Jack Pinout]&lt;br /&gt;
* Pinebook Pro Case:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]&lt;br /&gt;
* Pinebook Pro Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3399 SoC information:&lt;br /&gt;
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.3, part 1] and [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf part 2]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]&lt;br /&gt;
* LPDDR4 SDRAM (366-pin BGA):&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 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 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://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (updated)]&lt;br /&gt;
* Wireless and Bluetooth information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]&lt;br /&gt;
* Audio codec:&lt;br /&gt;
** [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]&lt;br /&gt;
* LCD panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14&amp;quot; 1920x1080 IPS LCD Panel datasheet]&lt;br /&gt;
* USB-related information:&lt;br /&gt;
** Internal USB 2.0 hub: [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub Datasheet]&lt;br /&gt;
** USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]&lt;br /&gt;
* Keyboard information:&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]&lt;br /&gt;
** US ANSI: XK-HS002 MB27716023&lt;br /&gt;
* Full HD camera sensor:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]&lt;br /&gt;
* Battery-related information:&lt;br /&gt;
** Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]&lt;br /&gt;
** Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification]&lt;br /&gt;
* Power path device:&lt;br /&gt;
** [https://wiki.pine64.org/images/9/99/Sis412dn.pdf N-MOS / MOSFET]&lt;br /&gt;
* NVMe adapter:&lt;br /&gt;
** [https://wiki.pine64.org/images/d/d0/Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The &amp;quot;first batch&amp;quot; (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]&lt;br /&gt;
&lt;br /&gt;
=Skinning and Case Customization=&lt;br /&gt;
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.&lt;br /&gt;
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]&lt;br /&gt;
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (no login required to read)&lt;br /&gt;
* IRC Server: irc.pine64.org Channel: PineBook&lt;br /&gt;
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]&lt;br /&gt;
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]&lt;br /&gt;
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]&lt;br /&gt;
* [[Pinebook Pro/Freepascal and Lazarus IDE on Manjaro|Freepascal and Lazarus IDE on Pinebook Pro]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;br /&gt;
[[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=14157</id>
		<title>Pinebook Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=14157"/>
		<updated>2022-09-21T18:15:01Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Improve grammar. Also systemd services do not need to be made executable.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Guide =&lt;br /&gt;
== Introducing PineBook Pro == &lt;br /&gt;
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]&lt;br /&gt;
&lt;br /&gt;
It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open source project can deliver. &lt;br /&gt;
&lt;br /&gt;
It's compact and slim dimensions are 329mm x 220mm x 12mm (WxDxH).&lt;br /&gt;
&lt;br /&gt;
Key features include: the RK3399 SOC; USB-C for data, video-out and power-in (3A 5V); privacy switches for the microphone, BT/WiFi module, and camera; and expandable storage via NVMe (PCIe x4) with an optional adapter. &lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1 x micro SD card reader (bootable), 1 x USB 2.0, 1 x USB 3.0, 1 x USB type C Host with DP 1.2 and power-in, PCIe x4 for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch). &lt;br /&gt;
&lt;br /&gt;
The keyboard and touchpad both use the USB 2.0 protocol.  The LCD panel uses eDP MiPi display protocol.&lt;br /&gt;
&lt;br /&gt;
Many different Operating Systems (OS) are freely available from the open source community and partner projects.  These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Default Manjaro KDE Desktop Quick Start ===&lt;br /&gt;
&lt;br /&gt;
When you first get your Pinebook Pro and boot it up for the first time, it'll come with Manjaro using the KDE desktop. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the [https://forum.manjaro.org/c/manjaro-arm/78 Manjaro ARM forums.]&lt;br /&gt;
&lt;br /&gt;
On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the &amp;quot;codename&amp;quot; of your machine, and if you don't know what it's about, you can make something up (use a single word, all lower case, no punctuation; e.g. &amp;quot;pbpro&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
After you're on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi [https://wiki.pine64.org/index.php/Pinebook_Pro#ANSI_Fn_.2B_F_keys_wrong_for_F9.2C_F10.2C_F11_and_F12  privacy switch] is not disabled.&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Pro images ===&lt;br /&gt;
Under [[Pinebook Pro Software Release]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software. &lt;br /&gt;
&lt;br /&gt;
The list includes OS images and descriptions of:&lt;br /&gt;
&lt;br /&gt;
* [[PinebookPro_Software_Release#Manjaro ARM|Manjaro ARM]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Armbian|Armbian]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Twister OS|Twister OS]] (microSD Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Fedora|Fedora]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Arch_Linux_ARM|Arch Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#postmarketOS|Postmarket OS]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Kali Linux|Kali Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#DietPi|DietPi]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Q4OS|Q4OS]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#NetBSD|NetBSD]] (microSD and eMMC Boot)&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#OpenBSD|OpenBSD release for ARM64]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Gentoo|Gentoo]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Slackware|Slackware (microSD boot)]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Void_Linux|Void Linux]]&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and touchpad in the Pinebook Pro use the USB 2.0 protocol and show up as such in xinput. The keyboard features function (Fn) keys in the F-key row, which include display brightness controls, sound volume, touchpad lock, and other functionality. There is also a custom PINE64 logo key that functions as Menu/Super key. It has also a secondary functionality for setting the privacy switches.   &lt;br /&gt;
&lt;br /&gt;
The keyboard firmware binary can be flashed from userspace using the provided open source utility.&lt;br /&gt;
&lt;br /&gt;
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. &lt;br /&gt;
&lt;br /&gt;
=== Typing special characters ===&lt;br /&gt;
The [[Wikipedia:British_and_American_keyboards#Other_keyboard_layouts|UK ISO Layout]] does not have dedicated keys for characters like the German umlauts (Ä,Ö,Ü, etc). Certain characters can still be generated by means of either key combinations or key sequences. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Character&lt;br /&gt;
!Key combination/sequence&lt;br /&gt;
|-&lt;br /&gt;
|Ä, Ö, Ü, ä, ö, ü&lt;br /&gt;
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]&lt;br /&gt;
|-&lt;br /&gt;
|µ&lt;br /&gt;
|[AltGr]+[m]&lt;br /&gt;
|-&lt;br /&gt;
|Ø, ø&lt;br /&gt;
|[AltGr]+[O], [AltGr]+[o]&lt;br /&gt;
|-&lt;br /&gt;
|@&lt;br /&gt;
|[AltGr]+[q] (as on the German layout)&lt;br /&gt;
|-&lt;br /&gt;
|ß&lt;br /&gt;
|[AltGr]+[s]&lt;br /&gt;
|-&lt;br /&gt;
|§&lt;br /&gt;
|[AltGr]+[S]&lt;br /&gt;
|-&lt;br /&gt;
|°&lt;br /&gt;
|[AltGr]+[)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Privacy Switches ===&lt;br /&gt;
There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Privacy switch function and description&lt;br /&gt;
! Combination&lt;br /&gt;
! Effect&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F10&lt;br /&gt;
| Microphone Privacy switch&lt;br /&gt;
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F11&lt;br /&gt;
| WiFi Privacy switch&lt;br /&gt;
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.&lt;br /&gt;
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&amp;amp;pid=52645#pid52645 command line hack to bind/unbind]).&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F12&lt;br /&gt;
| Camera privacy switch&lt;br /&gt;
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
| Can use tools like '''&amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;''' to detect camera's presence. If not detected, check privacy switch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''&lt;br /&gt;
&lt;br /&gt;
The keyboard operates on firmware independent of the operating system.  It detects if one of the F10, F11 or F12 keys is pressed in combination with the Pine key for 3 seconds. Doing so disables power to the appropriate peripheral, thereby disabling it.  This has the same effect as cutting off the power to each peripheral with a physical switch. This implementation is very secure, since the firmware that determines whether a peripheral gets power is not part of the Pinebook Pro’s operating system. So the power state value for each peripheral cannot be overridden or accessed from the operating system. The power state setting for each peripheral is stored across reboots inside the keyboard's firmware flash memory.&lt;br /&gt;
&lt;br /&gt;
=== Basic summary of replacing keyboard ===&lt;br /&gt;
&lt;br /&gt;
This guide is very basic and should be fleshed out with (better) pictures.  There just isn't a list of steps anywhere else yet.&lt;br /&gt;
&lt;br /&gt;
Here's what the replacement keyboard looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]&lt;br /&gt;
&lt;br /&gt;
''Step 0'': If changing from ISO keyboard to ANSI keyboard, or vice versa, be sure to have a system capable of running the firmware updater that you can access either remotely or with a USB keyboard beyond the internal keyboard, as the firmware for each is very different and keys won't work correctly.  See https://forum.pine64.org/showthread.php?tid=8407 (and for NetBSD, https://forum.pine64.org/showthread.php?tid=8716).&lt;br /&gt;
&lt;br /&gt;
''Step 1'': The remove back back panel.&lt;br /&gt;
&lt;br /&gt;
There are 10 screws on the back that must be removed, and the back panel detached.  I recommend using a PH0 bit.  The speakers may remain attached via glue to the case and should be carefully pried off.  When this is done, taking photos of how everything looks now can help put it all back together later.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 2'': Places to unscrew.&lt;br /&gt;
&lt;br /&gt;
There are 3 items screwed into the keyboard frame that must be removed.  There are 2 large screws for daughter board, 3 large screws and 1 small screw for mainboard, and 4 small screws for battery.  Be sure to not lose them.  I recommend a PH00 bit for the large screws on the daughter and main boards and a PH1 bit for the small screws on the battery and mainboard.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 3'': Remove the battery.&lt;br /&gt;
&lt;br /&gt;
Once the battery screws are removed, it should be unplugged from the mainboard and removed.  Note that there are two unconnected cables lying around, that should remain unconnected.  They are used when the battery is disconnected entirely.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]&lt;br /&gt;
&lt;br /&gt;
''Step 4'': Unplug the ribbon cables.&lt;br /&gt;
&lt;br /&gt;
NOTE: you should remove the M.2 adapter board now if you have one installed. See elsewhere in this wiki for instructions on how to install/remove that piece.&lt;br /&gt;
&lt;br /&gt;
There are several ribbon cables.  To remove, flip up the tab and gentle pull the ribbon out.&lt;br /&gt;
&lt;br /&gt;
* One cable runs from the mainboard to the daughterboard underneath the battery.  Detach from both ends.  With the battery removed, detach from keyboard shell, and set aside for the new keyboard shell.&lt;br /&gt;
* One cable runs between the touchpad and the mainboard.  Detach from both ends, and also set aside.&lt;br /&gt;
* One cable runs between the keyboard and the mainboard.  This one remains attached to the keyboard and only needs to be detached from the mainboard.&lt;br /&gt;
* One cable from the LCD attaches near the lid hinge.  It should be just unplugged.&lt;br /&gt;
&lt;br /&gt;
''Step 5'': Detach microphone, speakers, and antenna.  &lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]&lt;br /&gt;
&lt;br /&gt;
The speakers, microphone, and antenna don't have to be detached from the mainboard, but they need to be detached from the keyboard shell.  The microphones are held in place by tape, and the speakers have sticky sides.  The speakers are found obviously, but the microphones (two of) can be found between the battery and the hinge area. Each microphone can be carefully pulled/wedged out of its position by a small screwdriver or pick.  The antenna, similar to the microphones, is found near the hinge area and to the top left of the battery.&lt;br /&gt;
&lt;br /&gt;
''Step 6'': Remove mainboard and daughterboard.&lt;br /&gt;
&lt;br /&gt;
At this point, the mainboard and daughterboards should be removed.  When unscrewed (see Step 2) they should pull out fairly easily.  Put them aside (including microphones and speakers if left attached.)&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]&lt;br /&gt;
&lt;br /&gt;
''Step 7'': Detach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
Step 2 didn't tell you, there are 6 more screws to remove here, 3 for each of the hinges.  I recommend a PH1 bit for these screws.  Unscrew these and the LCD panel will be able to be removed.  You may have to jiggle or move the hinges for this.  When detached, be sure to place the LCD panel such that the display is protected.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]&lt;br /&gt;
&lt;br /&gt;
''Step 8'': Try Not To Break Your Touchpad, or, How I Learned To Love Things That Bend&lt;br /&gt;
&lt;br /&gt;
'''NOTE This section really feels like you're going to break something.'''&lt;br /&gt;
&lt;br /&gt;
The touchpad is glued to the keyboard shell and it's glued well.  There are two places it is glued to.  If you can, only the middle must be force-detached.  You will think you're going to break it.  Gently apply increasing force until the glue begins to detach (you will hear a crackle as it comes off), and continue very slowly until the whole thing is detached.  This may take minutes due to that feeling you're going to break it.&lt;br /&gt;
&lt;br /&gt;
I found it helpful to lift the top left plastic bit on the keyboard to unstick that portion of the touchpad, then push on the top left portion of the touchpad to unstick the rest of the touchpad.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
&lt;br /&gt;
''Step 9'': Over the hill, touchpad goes into new shell.&lt;br /&gt;
&lt;br /&gt;
In the new keyboard shell put the touchpad back where it was, hopefully the glue will remain sufficiently attached.  If there is a glue issue, this guide unfortunately has no advice currently.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Step 10'': Reattach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The LCD panel should slot back into the keyboard frame, the same way it came out.  If the hinges were moved, they should be *very* *gently* closed such that the LCD panel and keyboard closed like normal for the remaining steps.&lt;br /&gt;
&lt;br /&gt;
''Step 11'': Tape it out.&lt;br /&gt;
&lt;br /&gt;
Move any tape from the old keyboard shell to the new one.  These items protect the mainboard and daughterboard, and keep various wires in their right place.  Some are grey and some are black.  For tape that holds the speakers, microhones, or their cables in place, do not reattach yet.&lt;br /&gt;
&lt;br /&gt;
''Step 12'': Board install.&lt;br /&gt;
&lt;br /&gt;
Install the mainboard, the daughtboard, and their connecting ribbon cable.  Be sure to put the boards in place, 2 large flat screws for the daughterboard, 3 large flat screws and one small screw for the mainboard, before attempting to place the ribbon.&lt;br /&gt;
&lt;br /&gt;
''Step 13'': Microphone, speaker, and antenna install.&lt;br /&gt;
&lt;br /&gt;
Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker &amp;quot;out&amp;quot; faces up, and the microphone cables as connected must face up (these are opposite directions.)&lt;br /&gt;
&lt;br /&gt;
''Step 14'': Reattach other ribbon cables.&lt;br /&gt;
 &lt;br /&gt;
NOTE: this would be a good time to attach/install the M.2 adapter board if that is desired. See elsewhere in this wiki for those instructions.&lt;br /&gt;
&lt;br /&gt;
The LCD panel, keyboard and touchpad ribbon cables should be reattached.  Make sure the flap is open, insert the ribbon into the slot (a portion of the cable will disappear), and push the flap down.  The cable should not be easy to pull out.&lt;br /&gt;
 &lt;br /&gt;
''Step 15'': Reattach the battery, and final re-tape.&lt;br /&gt;
  &lt;br /&gt;
The battery should be installed with the 4 screws holding it in place, and the connector attached to the mainboard.  Be sure to keep the two other cables remain unconnected.  Ensure all wires and other tapes are held in place.&lt;br /&gt;
&lt;br /&gt;
''Step 16'': Reattach the back panel.&lt;br /&gt;
 &lt;br /&gt;
Put the back panel back on, and reattach the 10 screws.&lt;br /&gt;
&lt;br /&gt;
''Step 17'': If you changed from ISO to ANSI or from ANSI to ISO, you'll need to update your firmware now.  See the links in Step 0 above.&lt;br /&gt;
&lt;br /&gt;
== Touchpad (trackpad) ==&lt;br /&gt;
Documentation for the touchpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. It is the only component of the Pinebook Pro held in place with strong adhesive tape. Here are some of its features:&lt;br /&gt;
&lt;br /&gt;
* 2 actuating buttons.&lt;br /&gt;
&lt;br /&gt;
* multi-touch functionality. &lt;br /&gt;
&lt;br /&gt;
* A matte finish that your finger can slide along easily.&lt;br /&gt;
&lt;br /&gt;
* A reasonable size (96mm &amp;amp;times; 64mm; diagonal: 115.378mm or 4.542&amp;amp;rdquo;).&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:&lt;br /&gt;
&lt;br /&gt;
* Update the firmware.&lt;br /&gt;
&lt;br /&gt;
* Keep your 2 fingers spread apart rather than close together.&lt;br /&gt;
&lt;br /&gt;
* Individual programs might need to be configured specially.&lt;br /&gt;
&lt;br /&gt;
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:&lt;br /&gt;
&lt;br /&gt;
::: &amp;lt;code&amp;gt;MOZ_USE_XINPUT2=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Experiment with other settings, via [[#X-Windows Configuration|X-Windows Configuration]] or some other system preferences; for example, you could disable double-finger scrolling, and instead enable scrolling by sliding one finger along the edge of the touchpad.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and it's software, then to the keyboard controller's USB port. Note that the touchpad does have separate firmware, (which has to be written through the keyboard controller). The touchpad vendor&amp;amp;rsquo;s firmware binary can be flashed from userspace using the following open source command-line utility:&lt;br /&gt;
&lt;br /&gt;
* Kamil Trzciński&amp;amp;rsquo;s [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].&lt;br /&gt;
&lt;br /&gt;
Naturally, forks have begun to appear:&lt;br /&gt;
&lt;br /&gt;
* Jack Humbert&amp;amp;rsquo;s [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]&lt;br /&gt;
&lt;br /&gt;
* Dragan Simic&amp;amp;rsquo;s [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor, which greatly improves the control of the cursor (see this [https://forum.pine64.org/showthread.php?tid=14531 thread] for discussion); before installing this update, consider resetting to the defaults any configuration of your touchpad.&lt;br /&gt;
&lt;br /&gt;
'''Every Pinebook Pro produced before September 2021 should have its keyboard and touchpad firmware updated.'''&lt;br /&gt;
&lt;br /&gt;
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed. See [//old.reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Before updating ''any'' firmware, your Pinebook Pro should be either fully charged or, preferably, running from mains. This utility will be writing data to chips on the keyboard and touchpad, so a loss of power during any stage of the update can result in irrecoverable damage to your touchpad or keyboard.&lt;br /&gt;
&lt;br /&gt;
The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies. The instructions below assume a Debian desktop. To install these dependencies, newer Pinebook Pro models that come with Manjaro will require a different command.&lt;br /&gt;
&lt;br /&gt;
There are two keyboard versions of the Pinebook Pro: ISO and ANSI. You need to know which model you have prior to running the updater. &lt;br /&gt;
Firmware update steps for both models are listed below.  &lt;br /&gt;
&lt;br /&gt;
What you will need:&lt;br /&gt;
&lt;br /&gt;
* Connection to WiFi (for getting dependencies).&lt;br /&gt;
&lt;br /&gt;
* Your Pinebook Pro fully charged or running from mains power.&lt;br /&gt;
&lt;br /&gt;
* An external USB keyboard &amp;amp;amp; mouse (or access to the Pinebook Pro via SSH. Please note that for some configurations, the SSH service might not be available without first having logged in once; in this case, you will definitely want at least an external keyboard).&lt;br /&gt;
&lt;br /&gt;
==== ISO Model ====&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ANSI Model ====&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Running step 1 on the ANSI keyboard model will make the keyboard and touchpad inaccessible until step 2 is run, so an external keyboard must be connected to complete the update on this model!}}&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, if some of the keys produce incorrect characters, please check your OS’s language settings. For ANSI users, the default OS may have shipped with English UK as the default language; you can change it to English US if desired.&lt;br /&gt;
&lt;br /&gt;
==== Revised Firmware ====&lt;br /&gt;
&lt;br /&gt;
In addition, you might consider using revised firmware data; this is one final step that should not require a reboot:&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ISO''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_iso.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ANSI''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_ansi.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Windows Configuration ===&lt;br /&gt;
''Before making adjustments, consider updating the firmware; reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.''&lt;br /&gt;
&lt;br /&gt;
Some forum members have found that an adjustment to X-Windows will allow finer motion in the touchpad. If you use the '''Synaptic''' mouse/touchpad driver, use this command to make the change live:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may experiment with different settings, but 0.25 was tested as helping noticeably.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To make the change persist across reboots, change the file &amp;lt;code&amp;gt;/etc/X11/xorg.conf&amp;lt;/code&amp;gt; similar to below:&lt;br /&gt;
&amp;lt;pre&amp;gt;    Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;touchpad catchall&amp;quot;&lt;br /&gt;
        Driver &amp;quot;synaptics&amp;quot;&lt;br /&gt;
        MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
        MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
        Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&lt;br /&gt;
    EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
The line &amp;lt;code&amp;gt;Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&amp;lt;/code&amp;gt; is the change.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Another forum user built on the above settings a little, and have found these to be very good:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&lt;br /&gt;
synclient TapButton1=1&lt;br /&gt;
synclient TapButton2=3&lt;br /&gt;
synclient TapButton3=2&lt;br /&gt;
synclient FingerLow=30&lt;br /&gt;
synclient PalmDetect=1&lt;br /&gt;
synclient VertScrollDelta=64&lt;br /&gt;
synclient HorizScrollDelta=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FingerLow&amp;lt;/code&amp;gt; has the same value as 'FingerHigh' in one config (30). It is believed to help reduce mouse movement as you lift your finger, but it's unknown whether synaptic works like this.&lt;br /&gt;
You may find this config to be comfortable for daily use.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TabButton&amp;lt;/code&amp;gt; allows to just tab the touchpad instead of physically pressing it down (to get this click noise).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;right mouse click&amp;lt;/code&amp;gt; is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:&lt;br /&gt;
&amp;lt;pre&amp;gt; synclient MaxTapTime=250 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some users may encounter an issue with the mouse jumping when typing when using libinput driver (has not been test with synaptic) due to their hand hitting the touchpad which can be fixed by updating the xorg settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the xorg config simliar to the previou example. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;on&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setting can be verified by using the xinput command to first list the devices and then listing the properties for the Touchpad device. Exact commands to check this have been omitted for save of brevity. If DisableWhileTyping is shown enabled but does not appear to be working the issue may be due to the fact that the keyboard is connected to a USB bus which causes it to be seen as a external keyboard. To resolve this one can add the config below which sets the keyboard to internal to ensure the DisableWhileTyping works properly. &lt;br /&gt;
&lt;br /&gt;
You will need to edit &amp;lt;code&amp;gt;/etc/libinput/local-overrides.quirks&amp;lt;/code&amp;gt; and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Serial Keyboards]&lt;br /&gt;
MatchUdevType=keyboard&lt;br /&gt;
MatchBus=usb&lt;br /&gt;
AttrKeyboardIntegration=internal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once X11 is restarted the new setting should now take effect and you will no longer be able to use the touchpad while typing which will mostly eliminate the mouse jumping issue.&lt;br /&gt;
&lt;br /&gt;
== Power Supply ==&lt;br /&gt;
* Input Power: 5V DC @ 3A&lt;br /&gt;
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack&lt;br /&gt;
* USB-C 5V, 15W PD quickcharge&lt;br /&gt;
* Only use one power input at a time, barrel jack OR USB-C&lt;br /&gt;
&lt;br /&gt;
== LEDs ==&lt;br /&gt;
In total, there are four LEDs on the Pinebook Pro, three of which are placed in the top-left side of the keyboard, and one near the barrel port: &lt;br /&gt;
&lt;br /&gt;
# The red LED next to the barrel port indicates charging, in three ways.  First, it will illuminate steadily when either the factory power supply or a USB Type-C charger is connected to the Pinebook Pro, and the battery is getting charged.  Second, if the battery is at 100%, the LED will remain turned off regardless of the connected power input; however, this is [https://forum.pine64.org/showthread.php?tid=10899 rather rarely achieved].  Third, this LED will flash at 0.5&amp;amp;nbsp;Hz if there are any problems that prevent charging, such as the battery becoming too hot.&lt;br /&gt;
# The power indicator LED, above the keyboard, supports three different colors: green, amber and red. It is also capable of flashing to indicate eMMC activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused). &lt;br /&gt;
# The green NumLock LED, above the keyboard.&lt;br /&gt;
# The green CapsLock LED, above the keyboard.&lt;br /&gt;
&lt;br /&gt;
The NumLock and CapsLock LEDs serve their usual purposes on a keyboard, but they also have a secondary function. When the privacy switches get activated they blink to confirm that the switch has been activated.&lt;br /&gt;
&lt;br /&gt;
== Webcam ==&lt;br /&gt;
{{Hint| You can use Cheese to test the Camera functionality}}&lt;br /&gt;
* Streaming video resolutions supported, (uncompressed):&lt;br /&gt;
** 320 x 240 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
* Still frame resolutions supported:&lt;br /&gt;
** 160 x 120&lt;br /&gt;
** 176 x 144&lt;br /&gt;
** 320 x 240&lt;br /&gt;
** 352 x 288 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
While it has been said that some Pinebook Pro units contain only one microphone despite having two labeled microphone holes on the outer casing, other units do indeed contain two microphones. It is presently unclear which batches have either configuration; units from the initial community batch of 1000 units (following the initial 100) are believed to contain two, populating both labeled holes.&lt;br /&gt;
&lt;br /&gt;
The wires leading to both microphones connect to the mainboard with a small white plastic connector, located directly adjacent to the ribbon cable attachment point for the keyboard interface.&lt;br /&gt;
&lt;br /&gt;
'''Microphones not working?'''&lt;br /&gt;
&lt;br /&gt;
If pavucontrol input doesn't show microphone activity try changing the [[Pinebook_Pro#Privacy_Switches|privacy switches]]. If the switches are in the correct place and microphone input isn't working you can run &amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt; from the command line, hit &amp;lt;i&amp;gt;F6&amp;lt;/i&amp;gt; and select the &amp;lt;i&amp;gt;es8316&amp;lt;/i&amp;gt;, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0dB, change the audio profile in pavucontrol to another one with input. Additionally you may want to modify ADC PGA to get the levels to where you want them. If that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the section [[#Technical Reference|Technical Reference]]).&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and WiFi ==&lt;br /&gt;
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]&lt;br /&gt;
===Hardware Overview===&lt;br /&gt;
The Pinebook Pro contains an AMPAK AP6256 wireless module to provide Wi-Fi (compliant to IEEE 802.11ac) and Bluetooth (compliant to Bluetooth SIG revision 5.0). The module contains a Broadcom transceiver IC, believed to be the BCM43456, as well as the support electronics needed to allow the Wi-Fi and Bluetooth modes to share a single antenna. &lt;br /&gt;
&lt;br /&gt;
The wireless module interfaces with the Pinebook Pro’s system-on-chip using a combination of three interfaces: Bluetooth functionality is operated by serial UART and PCM, while the Wi-Fi component uses SDIO. It is unknown if the module’s Bluetooth capabilities are usable under operating systems that do not support SDIO.&lt;br /&gt;
&lt;br /&gt;
The module’s RF antenna pin is exposed on the mainboard via a standard Hirose U.FL connector, where a coaxial feedline links it to a flexible adhesive antenna situated near the upper right corner of the Pinebook Pro’s battery. As the RF connector is fragile and easily damaged, it should be handled carefully during connection and disconnection, and should not be reconnected frequently.&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
Problems have been reported with the Wi-Fi transceiver’s reliability during extended periods of high throughput, especially on the 2.4 GHz band. While the cause of this has yet to be determined, switching to the 5 GHz band may improve stability.&lt;br /&gt;
&lt;br /&gt;
Since the Bluetooth transceiver shares both its spectrum and antenna with 2.4 GHz Wi-Fi, simultaneous use of these modes may cause interference, especially when listening to audio over Bluetooth. If Bluetooth audio cuts out frequently, switching to the 5 GHz band – or deactivating Wi-Fi – may help.&lt;br /&gt;
&lt;br /&gt;
===Wi-Fi Capabilities===&lt;br /&gt;
Wi-Fi on the Pinebook Pro is capable of reaching a maximum data transfer rate of approximately 433 megabits per second, using one spatial stream. The transceiver does not support multiple spatial streams or 160-MHz channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
The Wi-Fi transceiver supports the lower thirteen standard channels on the 2.4 GHz band, using a bandwidth of 20 MHz. At least twenty-four channels are supported on the 5 GHz band, spanning frequencies from 5180 to 5320 MHz, 5500 to 5720 MHz, and 5745 to 5825 MHz, with bandwidths of 20, 40, or 80 MHz.&lt;br /&gt;
&lt;br /&gt;
Maximum reception sensitivity for both bands is approximately -92 dBm. The receiver can tolerate input intensities of no more than -20 dBm on the 2.4 GHz band, and no more than -30 dBm on the 5 GHz band. Maximum transmission power is approximately +15 dBm for either band, falling further to approximately +10 dBm at higher data transfer rates on the 5 GHz band.&lt;br /&gt;
&lt;br /&gt;
With current available drivers and firmware, the Wi-Fi interface supports infrastructure, ad-hoc, and access-point modes with satisfactory reliability. Monitor mode is not presently supported. Wi-Fi Direct features may be available, but it is unclear how to make use of them under Linux.&lt;br /&gt;
&lt;br /&gt;
Be aware that Linux userspace utilities, such as &amp;lt;code&amp;gt;iw&amp;lt;/code&amp;gt;, may report inaccurate information about the capabilities of wireless devices. Parameter values derived from vendor datasheets, or direct testing, should be preferred to the outputs of hardware-querying tools.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth Capabilities===&lt;br /&gt;
Bluetooth data transfer speeds have an indicated maximum of 3 megabits per second, but it is unclear what practical data rates can be expected. Audio streaming over Bluetooth is functioning normally, as is networking. Bluetooth Low-Energy functions, such as interacting with Bluetooth beacons, have not yet been tested conclusively.&lt;br /&gt;
&lt;br /&gt;
The Bluetooth transceiver supports all 79 channel allocations, spanning frequencies from 2402 MHz to 2480 MHz. Reception sensitivity is approximately -85 dBm, with a maximum tolerable reception intensity of -20 dBm. Bluetooth transmission power is limited to +10 dBm.&lt;br /&gt;
&lt;br /&gt;
===Disabling Bluetooth===&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth under Linux once:&lt;br /&gt;
&lt;br /&gt;
 sudo rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
To confirm if Bluetooth under Linux is disabled:&lt;br /&gt;
&lt;br /&gt;
 rfkill&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable rfkill-block@bluetooth&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select &amp;lt;i&amp;gt;plugins&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;PowerManager&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;configuration&amp;lt;/i&amp;gt; and then deselect the &amp;lt;i&amp;gt;auto power on&amp;lt;/i&amp;gt; option&lt;br /&gt;
&lt;br /&gt;
== LCD Panel ==&lt;br /&gt;
* Model: BOE NV140FHM-N49&lt;br /&gt;
* 14.0&amp;quot; (35.56&amp;amp;nbsp;cm) diagonal size&lt;br /&gt;
* 1920x1080 resolution&lt;br /&gt;
* 60&amp;amp;nbsp;Hz refresh rate&lt;br /&gt;
* IPS technology&lt;br /&gt;
* 1000:1 contrast&lt;br /&gt;
* 250&amp;amp;nbsp;nit brightness&lt;br /&gt;
* 63% sRGB coverage&lt;br /&gt;
* 6-bit color&lt;br /&gt;
* 30-pin eDP connection&lt;br /&gt;
&lt;br /&gt;
Some people have tested hardware video decode using the following;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External ports list ==&lt;br /&gt;
Here are a list of the external ports. See [[Pinebook_Pro#Expansion_Ports|Technical Reference - Expansion Ports]] for port specifications.&lt;br /&gt;
* Left side&lt;br /&gt;
** Barrel jack for power, (with LED)&lt;br /&gt;
** USB 3, Type A&lt;br /&gt;
** USB 3, Type C&lt;br /&gt;
* Right side&lt;br /&gt;
** USB 2, Type A&lt;br /&gt;
** Standard headset jack&lt;br /&gt;
** MicroSD card slot&lt;br /&gt;
&lt;br /&gt;
== Using the UART ==&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. Swapping the tx and rx around from this also works and is more traditional. See the official [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 document].]]&lt;br /&gt;
&lt;br /&gt;
UART output is enabled by flipping the UART switch to the ON position (item 9). To do so you need to remove the Pinebook Pro's bottom cover - please follow [[Pinebook_Pro#Disassembly_and_Reassembly|proper disassembly and reassembly protocol]]. The OFF position is towards the touchpad, the ON position is towards the display hinges.&lt;br /&gt;
&lt;br /&gt;
With the UART switch in the ON position, console is relayed via the audiojack and the laptop's sound is turned OFF. Please ensure that you are using a 3.3&amp;amp;nbsp;V interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3&amp;amp;nbsp;V and 5&amp;amp;nbsp;V variants) to avoid damage to the CPU.  Older version of the serial console cable sold by Pine64 uses wrong voltage level and should not be used; see [https://forum.pine64.org/showthread.php?tid=9367 this forum thread] for further information.  Recent version of the same cable uses the right voltage level.&lt;br /&gt;
&lt;br /&gt;
Insert the USB plug of the cable into an open USB port on the machine which will monitor, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro audio port. Run the following in a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you should find a line similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serial output should now be accessible using screen, picocom or minicom (and others).&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&lt;br /&gt;
picocom /dev/ttyUSB0 -b 1500000&lt;br /&gt;
&lt;br /&gt;
minicom -D /dev/ttyUSB0 -b 1500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old versions of U-Boot do not use the UART for console output. &amp;lt;strike&amp;gt;The console function is activated by the Linux kernel. Thus, if you use a non-Pinebook Pro Linux distro and want the UART as a console, you have to manually enable it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the optional NVMe adapter ==&lt;br /&gt;
The optional NVMe adapter allows the use of M.2 cards that support the NVMe standard, (but not SATA standard). The optional NVMe M.2 adapter supports '''M''' &amp;amp; '''M'''+'''B''' keyed devices, in both 2242 &amp;amp; 2280 physical sizes, the most common ones available. In addition, 2230 &amp;amp; 2260 are also supported, though NVMe devices that use those sizes are rare.&lt;br /&gt;
&lt;br /&gt;
Once you have fitted and tested your NVMe drive, please add a note to this page [[Pinebook Pro Hardware Accessory Compatibility]] to help build a list of tried and tested devices.&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in PineBook Pro.&lt;br /&gt;
&lt;br /&gt;
=== Installing the adapter ===&lt;br /&gt;
The V2.1-2019-0809 SSD adapter that shipped with the initial Pinebook Pro batches had significant issues. A repair kit will be shipped to address those issues.&lt;br /&gt;
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&amp;amp;pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)&lt;br /&gt;
&lt;br /&gt;
The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with touchpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.&lt;br /&gt;
&lt;br /&gt;
This is the link to the Pinebook Pro accessories in the store: [[https://pine64.com/?v=0446c16e2e66]]&lt;br /&gt;
&lt;br /&gt;
Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found [https://eli.gladman.cc/blog/2020/06/23/pine-book-pro-nvme.html here].&lt;br /&gt;
&lt;br /&gt;
=== Post NVMe install power limiting ===&lt;br /&gt;
Some NVMe SSDs allow reducing the maximum amount of power. Doing so may reduce the speed, but it may be needed in the Pinebook Pro to both improve reliability on battery: Some NVME may be stable with default settings when runnning on AC power but cause frequent kernel panics (system freeze with power LED blinking red/green) when running on battery. Reducing NVME power drain solves this in some cases. And reducing power used gives better battery life.&lt;br /&gt;
Here are the commands to obtain and change the power settings. The package 'nvme-cli' is required to run these commands. The example shows how to find the available power states, and then sets it to the lowest, non-standby setting, (which is 3.8 watts for the device shown);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme id-ctrl /dev/nvme0&lt;br /&gt;
NVME Identify Controller:&lt;br /&gt;
...&lt;br /&gt;
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0&lt;br /&gt;
         rwt:0 rwl:0 idle_power:- active_power:-&lt;br /&gt;
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1&lt;br /&gt;
         rwt:1 rwl:1 idle_power:- active_power:-&lt;br /&gt;
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2&lt;br /&gt;
         rwt:2 rwl:2 idle_power:- active_power:-&lt;br /&gt;
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3&lt;br /&gt;
         rwt:3 rwl:3 idle_power:- active_power:-&lt;br /&gt;
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4&lt;br /&gt;
         rwt:4 rwl:4 idle_power:- active_power:-&lt;br /&gt;
&lt;br /&gt;
$ sudo nvme get-feature /dev/nvme0 -f 2&lt;br /&gt;
get-feature:0x2 (Power Management), Current value:00000000&lt;br /&gt;
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s&lt;br /&gt;
set-feature:02 (Power Management), value:0x000002&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some NVMe SSDs don't appear to allow saving the setting with &amp;quot;-s&amp;quot; option. In those cases, leave off the &amp;quot;-s&amp;quot; and use a startup script to set the non-default power state at boot.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to test performance without saving the new power setting semi-permanantly, then leave off the &amp;quot;-s&amp;quot; option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On systemd based distros like Manjaro, a non-defaut power state for an NVME can be set using a systemd service. This is useful in cases where the NVME drive does not save the power state and/or uses APST.&lt;br /&gt;
&lt;br /&gt;
An example systemd service, nvme-throttle.service, is shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Throttles NVME to lesss power hungry mode&lt;br /&gt;
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/nvme set-feature /dev/nvme0 -f 2 -v 1&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the value after &amp;quot;-v&amp;quot; is the maximum power state that you want your SSD to use.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
This will be executed at system startup, and every time your system exits any suspend mode that might reset the SSD to default values.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file needs to be placed in the /etc/systemd/system directory. Afterwards, to activate the service, run: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl enable --now nvme-throttle.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving &amp;amp; transitions based on usage. To check if you have a NVMe SSD with this feature;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme get-feature -f 0x0c -H /dev/nvme0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Information for this feature, (on a Pinebook Pro), is a work in progress. It is enabled by default in latest Manjaro kernels and reported to work.&lt;br /&gt;
On some NVME SSDS (WD), APST is compatible with limiting NVME maximum power : APST will work and not exceed maximum power state defined using &lt;br /&gt;
previous method.&lt;br /&gt;
&lt;br /&gt;
=== Using as data drive ===&lt;br /&gt;
As long as the kernel in use has both the PCIe and NVMe drivers, you should be able to use a NVMe drive as a data drive. It can automatically mount when booting from either the eMMC or an SD card. This applies to Linux, FreeBSD, and Chromium, using the normal partitioning and file system creation tools. Android requires testing.&lt;br /&gt;
&lt;br /&gt;
=== Using as OS root drive ===&lt;br /&gt;
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the [https://github.com/mrfixit2001/updates_repo/blob/v1.1/pinebook/filesystem/mrfixit_update.sh U-Boot update script] from the mrfixit2001 Debian or [https://pastebin.com/raw/EeK074XB Arglebargle's modified script], and [https://github.com/pcm720/rockchip-u-boot/releases the modified u-boot images] provided by forum user pcm720, you can now add support to boot from an NVMe drive. Binary images are useable with SD, eMMC, and [[Pinebook_Pro_SPI|SPI flash]]. For OS images using the mainline kernel, there are a few variants of U-Boot available that also support NVMe as the OS drive. Though these may require writing the U-Boot to the SPI flash for proper use of the NVMe as the OS drive.&lt;br /&gt;
&lt;br /&gt;
The current boot order, per last testing, for this modified U-Boot is:&lt;br /&gt;
*MicroSD&lt;br /&gt;
*eMMC&lt;br /&gt;
*NVMe&lt;br /&gt;
&lt;br /&gt;
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&amp;amp;pid=53764#pid53764 the forum post.]&lt;br /&gt;
&lt;br /&gt;
It is also possible to initially boot off an eMMC or SD card, then transfer to a root file system on the NVMe. Currently, it is necessary to have the U-Boot code on an eMMC or SD card.  (A forum member [https://forum.pine64.org/showthread.php?tid=8439 posted here] about using a modified version of U-Boot with NVMe drivers, that uses &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; off the NVMe drive. So this may change in the future.)&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].&lt;br /&gt;
&lt;br /&gt;
== Caring for the PineBook Pro ==&lt;br /&gt;
=== Bypass Cables ===&lt;br /&gt;
The mainboard features two (disconnected by default) bypass cables that are only to be used with the battery disconnected. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run the laptop without a battery. Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice].  &lt;br /&gt;
&lt;br /&gt;
'''Note that despite the bypass cable being a two conductor cable, it is only used as one. Both wires being soldered together on either side is normal!'''&lt;br /&gt;
&lt;br /&gt;
{{warning|Do not connect the bypass cables with the battery connected.  Using the bypass cables with the battery connected can permanently damage the computer.}}&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Service Step-by-Step Guides ===&lt;br /&gt;
&lt;br /&gt;
Under [[Pinebook_Service_Step_by_Step_Guides|Service Guides for Pinebook]] you can find instructions guides concerning disassembly of:&lt;br /&gt;
&lt;br /&gt;
* The installation process on Pinebook Pro similar to 14&amp;quot; Pinebook&lt;br /&gt;
* The installation process is the reverse order of removal guide:&lt;br /&gt;
** 14″ Pinebook Lithium Battery Pack Removal Guide&lt;br /&gt;
** 14″ Pinebook LCD Panel Screen Removal Guide&lt;br /&gt;
** 14″ Pinebook eMMC Module Removal Guide&lt;br /&gt;
&lt;br /&gt;
== Using the SPI flash device ==&lt;br /&gt;
&lt;br /&gt;
See [[Pinebook Pro SPI]] for details.&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro comes with a 128Mbit, (16MByte), flash device suitable for initial boot target, to store the bootloader. The SoC used on the Pinebook Pro boots from this SPI flash device first, before eMMC or SD card. At present, April 19, 2020, the Pinebook Pros ship without anything programmed in the SPI flash device. So the SoC moves on to the next potential boot device, the eMMC. ARM/ARM64 computers do not have a standardized BIOS, yet.&lt;br /&gt;
&lt;br /&gt;
Here is some information on using the SPI flash device:&lt;br /&gt;
&lt;br /&gt;
* You need the kernel built with SPI flash device support, which will supply a device similar to: code&amp;gt;/dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The Linux package below, will need to be available: &amp;lt;code&amp;gt;mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
* You can then use this program from the package to write the SPI device: &amp;lt;code&amp;gt;flashcp &amp;amp;lt;filename&amp;amp;gt; /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you need to recover from a defective bootloader written to the SPI flash, you can simply short pin 6 of the SPI flash to GND and boot. This will render the SoC bootrom unable to read from the SPI flash and have it fall back to reading the bootloader from other boot media like the eMMC or Micro SD card.&lt;br /&gt;
&lt;br /&gt;
The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware. At present, April 19th, 2020, there is no good bootloader image to flash into the SPI flash device. This is expected to change, as there are people working on issue.&lt;br /&gt;
&lt;br /&gt;
= Software tuning guide =&lt;br /&gt;
Details on how to get the most out of a Pinebook Pro &amp;amp; its RK3399 SoC.&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's default Manjaro KDE system ==&lt;br /&gt;
=== Watching DRM content (Netflix, etc.) ===&lt;br /&gt;
Most paid online streaming services use Widevine DRM to make their content more difficult to pirate. Widevine is not directly supported on Manjaro KDE, however it is still possible to watch DRM content via the &amp;quot;chromium-docker&amp;quot; package which downloads a 32-bit ARM container and installs Chromium with Widevine inside of that. While not space-efficient, or efficient in general, it's the recommended solution for watching this content on your Pinebook Pro. You can install this package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy chromium-docker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking GPU capabilities ===&lt;br /&gt;
To see what versions of OpenGL and OpenGL ES are supported by the Pinebook Pro, what driver is in use, and what version of the driver is loaded, install the &amp;quot;mesa-demos&amp;quot; package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy mesa-demos&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then run:&lt;br /&gt;
&amp;lt;pre&amp;gt;glxinfo | grep OpenGL&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give detailed information about your graphics card and driver, useful for debugging.&lt;br /&gt;
&lt;br /&gt;
=== Better GPU compatibility and performance ===&lt;br /&gt;
For better graphics performance, you may install the &amp;quot;mesa-git&amp;quot; package, built and supplied in the Manjaro ARM repos. This lets you bring in the latest features, optimizations, and bugfixes for the graphics driver used by the Pinebook Pro. Installation is as simple as:&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sy mesa-git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you may reboot to load the newer driver.&lt;br /&gt;
&lt;br /&gt;
With Mesa 20.2 there is no longer much reason to use this over the standard mesa package, and applications may occasionally break with mesa-git.&lt;br /&gt;
&lt;br /&gt;
[https://docs.mesa3d.org/bugs.html Reporting bugs] to the Mesa project will help make sure any problems are quickly fixed.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL 3.3 support ===&lt;br /&gt;
By default, with the current state of the Panfrost GPU driver, the Pinebook Pro supports OpenGL 2.1 and OpenGL ES 3.0. If you want to use OpenGL 3.3, you need to set the system-wide environment variable, open the '''/etc/environment''' file with:&lt;br /&gt;
&amp;lt;pre&amp;gt;kate /etc/environment&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then at the bottom of the file, on a new line, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;PAN_MESA_DEBUG=&amp;quot;gl3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then save the file, entering your password when prompted, and reboot the system. When you check your GPU capabilities, it should report OpenGL 3.3 and applications that rely on it should function properly. Note that GL 3.3 support is incomplete and some rendering features do not work yet, notably geometry shaders.&lt;br /&gt;
&lt;br /&gt;
=== Install Anbox on Pinebook Pro Manjaro 20.10 ===&lt;br /&gt;
[https://www.youtube.com/watch?v=EU8_Q11dATs Youtube video on installing Anbox on Pienbook Pro Manjaro Build 20.10 by LivingLinux]&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's previously-default Debian system ==&lt;br /&gt;
Here are some hints on what you can do to customize the Pinebook Pro's previous factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])&lt;br /&gt;
&lt;br /&gt;
=== Initial user changes, password, name, etc ===&lt;br /&gt;
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.&lt;br /&gt;
&lt;br /&gt;
* Reboot (this is just to ensure all background processes belong to the user are not running... there are other ways to achieve this but this way is easy)&lt;br /&gt;
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal&lt;br /&gt;
* Login as root (login: root, password: root)&lt;br /&gt;
* Set a strong password for the root user using the following command and it's prompts:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd (and follow prompts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock user to your prefered username (replace myself with whatever you like):&lt;br /&gt;
&amp;lt;pre&amp;gt;# usermod -l myself -d /home/myself -m rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock group to match your preferred username:&lt;br /&gt;
&amp;lt;pre&amp;gt;# groupmod -n myself rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Put your name in the account, (replace &amp;quot;John A Doe&amp;quot; with your name):&lt;br /&gt;
&amp;lt;pre&amp;gt;# chfn -f &amp;quot;John A Doe&amp;quot; myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set a strong password for the normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Log out of the text terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;# logout&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user&lt;br /&gt;
* Open text terminal to fix login error: &amp;quot;Configured directory for incoming files does not exist&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ blueman-services&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select &amp;quot;Transfer&amp;quot; tab and set &amp;quot;Incoming Folder&amp;quot; to myself&lt;br /&gt;
OR&lt;br /&gt;
If adduser is in distro, this is MUCH easier&lt;br /&gt;
sudo adduser $USER ,, fill out requested data&lt;br /&gt;
Then,, sudo adduser $USER $GROUP,,, 1 group at a time&lt;br /&gt;
To see which groups to add,,, id $USER,  id rock&lt;br /&gt;
&lt;br /&gt;
=== Changing the default hostname ===&lt;br /&gt;
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl&lt;br /&gt;
   Static hostname: Debian-Desktop&lt;br /&gt;
         Icon name: computer&lt;br /&gt;
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb&lt;br /&gt;
           Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99&lt;br /&gt;
  Operating System: Debian GNU/Linux 9 (stretch)&lt;br /&gt;
            Kernel: Linux 4.4.210&lt;br /&gt;
      Architecture: arm64&amp;lt;/pre&amp;gt;&lt;br /&gt;
To change, use this, (with &amp;quot;My_Hostname&amp;quot; used as the example);&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl set-hostname My_Hostname&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whence done, you can re-verify using the first example.&lt;br /&gt;
&lt;br /&gt;
Then you should backup and edit your &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; entry's name;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`&lt;br /&gt;
$ sudo vi /etc/hosts&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
127.0.0.1	My_Hostname&lt;br /&gt;
::1		localhost ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0		ip6-localnet&lt;br /&gt;
ff00::0		ip6-mcastprefix&lt;br /&gt;
ff02::1		ip6-allnodes&lt;br /&gt;
ff02::2		ip6-allrouters&lt;br /&gt;
127.0.1.1       linaro-alip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable Chromium browser's prompt for passphrase &amp;amp; password storage ===&lt;br /&gt;
&lt;br /&gt;
Perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* On the tool bar, hover over the Chromium icon&lt;br /&gt;
* Using the right mouse button, select '''Properties'''&lt;br /&gt;
* In the '''Command:''' line section, add &amp;lt;code&amp;gt;--password-store=basic&amp;lt;/code&amp;gt; before the &amp;lt;code&amp;gt;%U&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use the '''x Close''' button to save the change&lt;br /&gt;
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.&lt;br /&gt;
&lt;br /&gt;
=== Changing the boot splash picture ===&lt;br /&gt;
&lt;br /&gt;
The default boot splash picture can be replaced using the following instructions:&lt;br /&gt;
&lt;br /&gt;
* Install '''ImageMagick''' which will do the conversion&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo apt-get install imagemagick&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).&lt;br /&gt;
* From the directory in which your new image is stored run the following commands&lt;br /&gt;
* Convert your image to the bootsplash raw format using imagemagick convert.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a backup copy of your current splash screen&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy your new splash screen into place&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp splash.fb /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the correct permissions on the splash.fb file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo chmod 644 /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed&lt;br /&gt;
&lt;br /&gt;
=== Watching Amazon Prime videos with Chromium ===&lt;br /&gt;
When you create a new user, it will be necessary to launch the Chromium browswer with a specific user agent like below;&lt;br /&gt;
&amp;lt;pre&amp;gt;chromium-browser --user-agent=&amp;quot;Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There may be more tweaks needed.&lt;br /&gt;
&lt;br /&gt;
=== Enabling text boot time messages ===&lt;br /&gt;
&lt;br /&gt;
By default, most Linux distros have a boot screen with a picture. To see all the boot time messages, use one of the following;&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 vi /etc/default/u-boot&lt;br /&gt;
&lt;br /&gt;
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.&lt;br /&gt;
&lt;br /&gt;
* Update the U-Boot configuration:&lt;br /&gt;
&lt;br /&gt;
 u-boot-update&lt;br /&gt;
&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 vi /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
* Change '''console=ttyS2,1500000''' to '''console=tty1'''&lt;br /&gt;
* Remove the '''bootsplash.bootfile''' option and it's parameter.&lt;br /&gt;
* You can add verbose logging by appending '''ignore_loglevel''' to the line where boot splash was.&lt;br /&gt;
* Leave everything else alone.&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
== Improving readability ==&lt;br /&gt;
&lt;br /&gt;
Some people find that a 14&amp;quot; LCD screen with 1080p, (1920 x 1080), has text and icons a bit too small. There are things you can do to make the screen easier to use and read.&amp;lt;br&amp;gt;&lt;br /&gt;
* Increase the font size&lt;br /&gt;
* Use a font with more pronounced features&lt;br /&gt;
* Increase the various window manager sizes (e.g. increase the height of the tool bar)&lt;br /&gt;
* Change the color scheme to be easier on the eyes. Higher contrast can help usability.&lt;br /&gt;
* Change the window manager's decorations (e.g. use larger icons)&lt;br /&gt;
* Use a workspace manager, with one application per workspace&lt;br /&gt;
* When at home or office, use an external monitor&lt;br /&gt;
* Change the X-Windows DPI. One such method that someone used successfully, is:&amp;lt;br&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;echo &amp;quot;Xft.dpi: 150&amp;quot; &amp;gt;&amp;gt; ~/.Xresources&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Change the 150 as desired to get the size adjustment you want.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
However, do not change the resolution of the LCD screen, otherwise you may end up with a blank / black screen. If that happens, see this troubleshooting section for the fix:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]&lt;br /&gt;
&lt;br /&gt;
== Chromium tweaks ==&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--disable-low-res-tiling \&lt;br /&gt;
--num-raster-threads=6 \&lt;br /&gt;
--profiler-timing=0 \&lt;br /&gt;
--disable-composited-antialiasing \&lt;br /&gt;
--test-type \&lt;br /&gt;
--show-component-extension-options \&lt;br /&gt;
--ignore-gpu-blacklist \&lt;br /&gt;
--use-gl=egl \&lt;br /&gt;
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \&lt;br /&gt;
--ppapi-flash-version=32.0.0.255 \&lt;br /&gt;
--enable-pinch \&lt;br /&gt;
--flag-switches-begin \&lt;br /&gt;
--enable-gpu-rasterization \&lt;br /&gt;
--enable-oop-rasterization \&lt;br /&gt;
--flag-switches-end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in some cases, this may also decrease performance substantially, as observed when using these flags on the Manjaro KDE desktop. Feel free to experiment to find what is smoothest for you personally.&lt;br /&gt;
&lt;br /&gt;
== gVim has performance issue ==&lt;br /&gt;
It appears that using GTK3 can cause very slow scrolling, while Vim in a terminal window works fine.&amp;lt;br/&amp;gt;&lt;br /&gt;
Simply revert back to using GTK2, (how to do so is somewhat Linux distro-specific).&lt;br /&gt;
&lt;br /&gt;
Another solution may be to run gVim with &lt;br /&gt;
&lt;br /&gt;
 GDK_RENDERING=image&lt;br /&gt;
&lt;br /&gt;
environment variable set. It seems that this improves the performance by reverting back to software-only rendering.&lt;br /&gt;
&lt;br /&gt;
== Kernel options ==&lt;br /&gt;
Here are some Pinebook Pro &amp;amp; its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.&lt;br /&gt;
&lt;br /&gt;
To see if a specific feature is enabled in the current kernel, you can use something like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep -i rockchip_pcie /proc/config.gz&lt;br /&gt;
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set&lt;br /&gt;
CONFIG_PHY_ROCKCHIP_PCIE=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If it's listed as &amp;lt;code&amp;gt;=m&amp;lt;/code&amp;gt;, then it's a module. You can see if the module is loaded with;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep -i rockchip_pcie&lt;br /&gt;
phy_rockchip_pcie      16384  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note modules are not loaded until needed. Thus, we sometimes check the kernel configuration instead to see if a feature is configured first, then see if it's a module.&lt;br /&gt;
&lt;br /&gt;
=== Hardware video decoding ===&lt;br /&gt;
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.&amp;lt;br&amp;gt;&lt;br /&gt;
Older systems, such as the previously-default Debian desktop, use the Rockchip-supplied kernel module &amp;lt;code&amp;gt;rk-vcodec&amp;lt;/code&amp;gt;. To check, something like this can be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep rk-vcodec&lt;br /&gt;
    or&lt;br /&gt;
$ zgrep RK_VCODEC /proc/config.gz&lt;br /&gt;
CONFIG_RK_VCODEC=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that in the above example, the Rockchip video CODEC is not built as a module, but included into the kernel. Thus, it does not show up in the list modules check.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer systems may use a different option as in the configuration below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep HANTRO /proc/config.gz&lt;br /&gt;
CONFIG_VIDEO_HANTRO=m&lt;br /&gt;
CONFIG_VIDEO_HANTRO_ROCKCHIP=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting guide =&lt;br /&gt;
&lt;br /&gt;
Do not panic if something goes wrong or in an unexpected way.  Instead, stop and consider carefully how to undo something, or how to redo it.  This particularly applies when flashing a new operating system, or flashing new firmware to the keyboard or touchpad.  If everything fails, consider reporting the issue on the forums, with as many relevant details as available.&lt;br /&gt;
&lt;br /&gt;
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.&lt;br /&gt;
&lt;br /&gt;
= Hardware/Accessory Compatibility =&lt;br /&gt;
Please contribute to the [[Pinebook Pro Hardware Accessory Compatibility|hardware/accessory compatibility page]], which lists the status of hardware tested with the Pinebook Pro.  Available hardware categories include the following:&lt;br /&gt;
&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
== Disassembly and Reassembly  == &lt;br /&gt;
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]&lt;br /&gt;
&lt;br /&gt;
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]&lt;br /&gt;
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]&lt;br /&gt;
&lt;br /&gt;
There are a few '''mandatory''' precautions to be taken:&lt;br /&gt;
&lt;br /&gt;
* Do not open the laptop by lifting the lid while the Pinebook Pro bottom cover is removed - this can cause structural damage to the hinges and/or other plastic components of the chassis such as the IO port cut-outs.&lt;br /&gt;
* When removing the back cover plate, *do not, under any circumstances, slide your fingertips between the metal shell and the plastic frame!* The back cover plate edges are sharp, and when combined with the pressure and movement generated from, specifically, attempting to slide the tips of your fingers along the bottom edge of the plate along the lid-hinge, they *will* slice open the tips of your fingers like a knife.&lt;br /&gt;
* When removing the back cover plate, use care to avoid damaging the speakers. They can be stuck to the back cover with double-sided tape, and the thin wires are very delicate. Newer Pinebook Pro laptops (as of the May 2021 batch, and perhaps earlier) seem to lack the double-sided tape to the rear cover, instead opting for tape or glue that makes them stick to the front cover. Nevertheless, be gentle when removing the back cover.&lt;br /&gt;
&lt;br /&gt;
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]&lt;br /&gt;
&lt;br /&gt;
When disassembling the laptop make sure that it is powered off and folded closed. To remove the bottom cover of the Pinebook Pro, first remove the ten (10) Phillips head screws that hold the bottom section of the laptop in place. There are four (4) short screws along the front edge, and six (6) long screws along the 3 remaining sides. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis. The aluminum case is held on only by screws. There are no plastic snaps, and the shell should pull away without any effort. If you experience any resistance at all stop and ensure all ten (10) screws are accounted for.&lt;br /&gt;
&lt;br /&gt;
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. Before replacing the aluminum back-plate, ensure that the speakers are properly seated by pressing gently on the hard plastic edge of the speaker module. Slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the touchpad is located) in place using the short screws in the front left and right corners. Then proceed to pop in the bottom panel into place. Secure the bottom section (where hinges are located) by screwing in the left and right corners. Then screw in the remaining screws and run your finger though the rim on the chassis to make sure its fitted correctly. Note that the front uses the remaining 4 short screws.&lt;br /&gt;
&lt;br /&gt;
The screws are small and should only be finger tight. Too much force will strip the threads. If after installing screws the back cover plate has not seated properly on one side (which may be caused by the aforementioned misseating of the speakers), open the display and hold the base on either side of the keyboard and gently flex the base with both hands in opposing directions. Once the side pops further in, then recheck the screws on that side. If it does not pop back in, re-open the machine and check for misseated components.&lt;br /&gt;
&lt;br /&gt;
A basic 3D model to print replacement standoffs for the back cover screws is [https://www.thingiverse.com/thing:4226648 available on Thingiverse], until the official drawings or 3D models are made available.&lt;br /&gt;
&lt;br /&gt;
====Display Disassembly====&lt;br /&gt;
It is not recommended to adjust the position of the lid when the bottom cover is removed, because the bottom cover provides structural strength, so the lid should be open fully as the first step, before starting any disassembly of the laptop.  After opening the lid, remove the bottom cover by following the instruction found in the section above.  Alternatively, you can keep the lid closed and remove the screws that hold the hinges to the main laptop body, as described in [[Pinebook Service Step by Step Guides]].&lt;br /&gt;
&lt;br /&gt;
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plactic U-shaped cover that snaps in place using latches.  Use a dedicated plastic prying tool or a guitar pick to gently pry the cover and remove it, starting from the outer edge.  Once you pry the cover to a certain extent, it should be possible to remove it fully using only your hands.  The U-shaped cover is rather sturdy, but still be careful not to break or bend it.&lt;br /&gt;
&lt;br /&gt;
There are two small screws hidden underneath the two small rubber nubs on the upper part of the screen bezel, so first gently remove the nubs and then remove the screws.  The screen bezel is held in place with a combination of latches and some adhesive tape, which is there to prevent dust ingress.  The adhesive isn't very strong, and the bezel is capable of flexing back into shape after being twisted to a certain extent.  There is more adhesive on the bottom part of the screen bezel, so be more careful while prying that section apart.  Use the same prying tool that you used for the U-shaped cover, and work it around the outer edges of the screen bezel.&lt;br /&gt;
&lt;br /&gt;
== Internal Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Main chips ===&lt;br /&gt;
* RK3399 system-on-chip (1)&lt;br /&gt;
* LPDDR4 SDRAM (21)&lt;br /&gt;
* SPI NOR flash memory (29)&lt;br /&gt;
* eMMC flash memory (26)&lt;br /&gt;
* WiFi/BT module (27)&lt;br /&gt;
&lt;br /&gt;
=== Mainboard Switches and Buttons ===&lt;br /&gt;
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack. &lt;br /&gt;
&lt;br /&gt;
The Reset and Recovery buttons (28): the reset button performs an immediate reset of the laptop. The Recovery button is used to place the device in maskrom mode; this mode allows flashing eMMC using Rockchip tools (e.g. rkflashtools). &lt;br /&gt;
&lt;br /&gt;
[[File:PBPL_S.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Key Internal Parts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Numbered parts classification and description&lt;br /&gt;
! Number&lt;br /&gt;
! Type&lt;br /&gt;
! Descriptor&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 1&lt;br /&gt;
| Component || RK3399 System-On-Chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 2&lt;br /&gt;
| Socket || PCIe x4 slot for optional NVMe adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 3&lt;br /&gt;
| Socket || Speakers socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 4&lt;br /&gt;
| Socket || Touchpad socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 5&lt;br /&gt;
| Component || Left speaker &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 6&lt;br /&gt;
| Connector || Power bridge connector &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 7&lt;br /&gt;
| Socket || Keyboard Socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 8&lt;br /&gt;
| Component || Optional NVMe SSD adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 9&lt;br /&gt;
| Switch || UART/Audio switch - outputs UART via headphone jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 10&lt;br /&gt;
| Socket || Power bridge socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 11&lt;br /&gt;
| Socket || Battery socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 12&lt;br /&gt;
| Component || Touchpad&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 13&lt;br /&gt;
| Component || Battery&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 14&lt;br /&gt;
| Component || Right speaker&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 15&lt;br /&gt;
| Socket || MicroSD card slot&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 16&lt;br /&gt;
| Socket || Headphone / UART jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 17&lt;br /&gt;
| Socket || USB 2.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 18&lt;br /&gt;
| Socket || Daughterboard-to-mainboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 19&lt;br /&gt;
| Cable || Daughterboard-to-mainboard ribbon cable&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 20&lt;br /&gt;
| Component || microphone&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 21&lt;br /&gt;
| Component || LPDDR4 RAM&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 22&lt;br /&gt;
| Socket || Mainboard-to-daughterboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 23&lt;br /&gt;
| Socket || Microphone socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 24&lt;br /&gt;
| Switch || Switch to hardware disable eMMC&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 25&lt;br /&gt;
| Antenna || BT/WiFI antenna&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 26&lt;br /&gt;
| Component || eMMC flash memory module &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 27&lt;br /&gt;
| Component ||BT/WiFi module chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 28&lt;br /&gt;
| Buttons || Reset and recovery buttons&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 29&lt;br /&gt;
| Component || SPI flash storage&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 30&lt;br /&gt;
| Socket || eDP LCD socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 31&lt;br /&gt;
| Socket || Power in barrel socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 32&lt;br /&gt;
| Socket || USB 3.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 33&lt;br /&gt;
| Socket || USB 3.0 Type C &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Smallboard detailed picture ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_pro_smallboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Bootable Storage ==&lt;br /&gt;
&lt;br /&gt;
=== Boot sequence details ===&lt;br /&gt;
The RK3399's mask 32KB ROM boot code looks for the next stage of code at byte off-set 32768, (sector 64 if using 512 byte sectors). This is where U-Boot code would reside on any media that is bootable.&amp;lt;br&amp;gt;&lt;br /&gt;
[[RK3399_boot_sequence|RK3399 boot sequence]]&lt;br /&gt;
&lt;br /&gt;
=== Boot devices ===&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is capable of booting from eMMC, USB 2.0, USB 3.0, or an SD card. It cannot boot from USB-C.  The boot order of the hard-coded ROM of its RK3399 SoC is: SPI NOR, eMMC, SD, USB OTG. &lt;br /&gt;
&lt;br /&gt;
At this time, the Pinebook Pro ships with a Manjaro + KDE build with [https://www.denx.de/wiki/U-Boot/ u-boot] on the eMMC.  Its boot order is: SD, USB, then eMMC.&lt;br /&gt;
&lt;br /&gt;
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other OSes from an SD card. In order to update, fully charge the battery, establish an internet connection, click the update icon in the toolbar, and then reboot your Pinebook Pro.  Please see [https://forum.pine64.org/showthread.php?tid=7830 this log] for details.)&lt;br /&gt;
&lt;br /&gt;
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf&lt;br /&gt;
in a /boot partition on the eMMC.&lt;br /&gt;
&lt;br /&gt;
=== eMMC information ===&lt;br /&gt;
The eMMC appears to be hot-pluggable. This can be useful if trying to recover data or a broken install. Best practice is probably to turn the eMMC switch to off position before changing modules. Note that the enable/disable label on the silkscreen is incorrect on some board revisions (known bad on v2.1).&lt;br /&gt;
&lt;br /&gt;
The eMMC storage will show up as multiple block devices:&lt;br /&gt;
*mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB&lt;br /&gt;
*mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB&lt;br /&gt;
*mmcblk1rpmb - eMMC standard secure data partition, may be 16MB&lt;br /&gt;
*mmcblk1 - This block contains the user areas&lt;br /&gt;
&lt;br /&gt;
Only the last is usable as regular storage device in the Pinebook Pro.&lt;br /&gt;
The device number of &amp;quot;1&amp;quot; shown above may vary, depending on kernel.&lt;br /&gt;
&lt;br /&gt;
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user &amp;quot;root&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/unbind&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/bind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: with the device trees coming with older kernels (Linux &amp;lt; 5.11), the device name may be fe330000.sdhci instead of fe330000.mmc)&lt;br /&gt;
&lt;br /&gt;
== Case Dimensions and Data ==&lt;br /&gt;
* Dimensions: 329mm x 220mm x 12mm (WxDxH)&lt;br /&gt;
* Weight: 1.26Kg&lt;br /&gt;
* Screws&lt;br /&gt;
** Philips head type screws&lt;br /&gt;
** M2 flat head machine screws (measurements in mm)&lt;br /&gt;
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1,  Overall length - 3.05&lt;br /&gt;
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85&lt;br /&gt;
* Rubber Feet&lt;br /&gt;
** 18mm diameter&lt;br /&gt;
** 3mm height&lt;br /&gt;
** Dome shaped&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
[[File:Rockchip_RK3399.png|right]]&lt;br /&gt;
* Based on Rockchip RK3399&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU&lt;br /&gt;
** Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)&lt;br /&gt;
** ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
** ARMv8 Cryptography Extensions&lt;br /&gt;
** VFPv4 floating point unit supporting single and double-precision operations&lt;br /&gt;
** Hardware virtualization support&lt;br /&gt;
** TrustZone technology support&lt;br /&gt;
** Full CoreSight debug solution&lt;br /&gt;
** One isolated voltage domain to support DVFS&lt;br /&gt;
* Cortex-A72 (big cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]&lt;br /&gt;
** Superscalar, variable-length, out-of-order pipeline&lt;br /&gt;
** L1 cache 48KB Icache and 32KB Dcache for each A72 &lt;br /&gt;
** L2 cache 1024KB for big cluster &lt;br /&gt;
* Cortex-A53 (little cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]&lt;br /&gt;
** In-order pipeline with symmetric dual-issue of most instructions &lt;br /&gt;
** L1 cache 32KB Icache and 32KB Dcache for each A53&lt;br /&gt;
** L2 cache 512KB for little cluster&lt;br /&gt;
* Cortex-M0 (control processors):&lt;br /&gt;
** [https://developer.arm.com/ip-products/processors/cortex-m/cortex-m0 Cortex-M0 CPU]&lt;br /&gt;
** Two Cortex-M0 cooperate with the central processors&lt;br /&gt;
** Architecture: Armv6-M&lt;br /&gt;
** Thumb/Thumb2 instruction set&lt;br /&gt;
** 32 bit only&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]&lt;br /&gt;
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.&lt;br /&gt;
* Frequency 	650MHz &lt;br /&gt;
* Throughput 	1300Mtri/s, 10.4Gpix/s&lt;br /&gt;
* Graphic interface standards:&lt;br /&gt;
** OpenGL® ES 1.1, 1.2, 2.0, 3.0, 3.1, 3.2. (Panfrost has initial support of 3.0 beginning 2020/02/27)&lt;br /&gt;
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)&lt;br /&gt;
** OpenCL™ 1.1, 1.2&lt;br /&gt;
** DirectX® 11 FL11_1&lt;br /&gt;
** RenderScript™&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory:&lt;br /&gt;
** LPDDR4&lt;br /&gt;
** 800MHz, (limited by RK3399)&lt;br /&gt;
** Dual memory channels on the CPU, each 32 bits wide&lt;br /&gt;
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel&lt;br /&gt;
** 4GB as a single 366 pin mobile RAM chip&lt;br /&gt;
* Storage Memory: &lt;br /&gt;
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)&lt;br /&gt;
** eMMC version 5.1, HS400, 8 bit on RK3399 side&lt;br /&gt;
** Bootable&lt;br /&gt;
* SPI flash:&lt;br /&gt;
** [[Pinebook Pro SPI]]&lt;br /&gt;
** 128Mbit / 16MByte&lt;br /&gt;
** 1 bit interface&lt;br /&gt;
** Bootable, (first boot device, ahead of eMMC &amp;amp; SD card)&lt;br /&gt;
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.&lt;br /&gt;
&lt;br /&gt;
=== Video out ===&lt;br /&gt;
* USB-C Alt mode DP&lt;br /&gt;
* Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* MicroSD card:&lt;br /&gt;
** Bootable&lt;br /&gt;
** Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.&lt;br /&gt;
** Version SD3.0, (MMC 4.5), up to 50MB/s&lt;br /&gt;
** SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS&lt;br /&gt;
* USB ports:&lt;br /&gt;
** 1 x USB 2.0 Type-A Host Port, bootable&lt;br /&gt;
** 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable&lt;br /&gt;
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable&lt;br /&gt;
** Note that high power USB devices may not work reliably on a PBP. Or they may draw enough power to drain the battery even when the PBP is plugged into A.C. One alternative is externally powered USB devices.&lt;br /&gt;
* Headphone jack switchable to UART console mux circuit&lt;br /&gt;
&lt;br /&gt;
== Additional hardware ==&lt;br /&gt;
Hardware that is not part of the SoC.&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
* Lithium Polymer Battery (10,000 mAH)&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
* 14.0&amp;quot; 1920x1080 IPS LCD panel&lt;br /&gt;
=== Lid closed magnet ===&lt;br /&gt;
There is a magnet to detect when the laptop lid is closed, so action can be taken like sleep. This meets up with the Hall sensor on the daughter / small board to detect lid closed.&lt;br /&gt;
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.&lt;br /&gt;
&lt;br /&gt;
=== Webcam ===&lt;br /&gt;
* Internal USB attached Webcam&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
* Built-in microphone&lt;br /&gt;
* Built-in stereo speakers:&lt;br /&gt;
** Oval in design&lt;br /&gt;
** 3 mm high x 20 mm x 30 mm&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* WiFi:&lt;br /&gt;
** 802.11 b/g/n/ac&lt;br /&gt;
** Dual band: 2.4Ghz &amp;amp; 5Ghz&lt;br /&gt;
** Single antenna&lt;br /&gt;
* Bluetooth 5.0&lt;br /&gt;
&lt;br /&gt;
=== Optional NVMe adapter ===&lt;br /&gt;
* PCIe 1.1, 2.5 GT/s per lane&lt;br /&gt;
** Note that due to errata, PCIe is limited to Gen1. See [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip/rk3399.dtsi?id=712fa1777207c2f2703a6eb618a9699099cbe37b this commit].&lt;br /&gt;
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards&lt;br /&gt;
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too&lt;br /&gt;
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260&lt;br /&gt;
* Power: 2.5&amp;amp;nbsp;W continuous, 8.25&amp;amp;nbsp;W peak momentary&lt;br /&gt;
* Does not support SATA M.2 cards&lt;br /&gt;
* Does not support USB M.2 cards&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro Schematics and Certifications ==&lt;br /&gt;
* Pinebook Pro Main Board Schematic And Silkscreen:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]&lt;br /&gt;
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]&lt;br /&gt;
* Pinebook Pro Daughter Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]&lt;br /&gt;
* Optional Pinebook Pro NVMe Adapter Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]&lt;br /&gt;
* Serial Console Earphone Jack Pinout:&lt;br /&gt;
** [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinebook Serial Console Earphone Jack Pinout]&lt;br /&gt;
* Pinebook Pro Case:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]&lt;br /&gt;
* Pinebook Pro Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3399 SoC information:&lt;br /&gt;
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.3, part 1] and [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf part 2]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]&lt;br /&gt;
* LPDDR4 SDRAM (366-pin BGA):&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 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 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://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (updated)]&lt;br /&gt;
* Wireless and Bluetooth information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]&lt;br /&gt;
* Audio codec:&lt;br /&gt;
** [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]&lt;br /&gt;
* LCD panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14&amp;quot; 1920x1080 IPS LCD Panel datasheet]&lt;br /&gt;
* USB-related information:&lt;br /&gt;
** Internal USB 2.0 hub: [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub Datasheet]&lt;br /&gt;
** USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]&lt;br /&gt;
* Keyboard information:&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]&lt;br /&gt;
** US ANSI: XK-HS002 MB27716023&lt;br /&gt;
* Full HD camera sensor:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]&lt;br /&gt;
* Battery-related information:&lt;br /&gt;
** Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]&lt;br /&gt;
** Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification]&lt;br /&gt;
* Power path device:&lt;br /&gt;
** [https://wiki.pine64.org/images/9/99/Sis412dn.pdf N-MOS / MOSFET]&lt;br /&gt;
* NVMe adapter:&lt;br /&gt;
** [https://wiki.pine64.org/images/d/d0/Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The &amp;quot;first batch&amp;quot; (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]&lt;br /&gt;
&lt;br /&gt;
=Skinning and Case Customization=&lt;br /&gt;
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.&lt;br /&gt;
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]&lt;br /&gt;
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (no login required to read)&lt;br /&gt;
* IRC Server: irc.pine64.org Channel: PineBook&lt;br /&gt;
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]&lt;br /&gt;
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]&lt;br /&gt;
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]&lt;br /&gt;
* [[Pinebook Pro/Freepascal and Lazarus IDE on Manjaro|Freepascal and Lazarus IDE on Pinebook Pro]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;br /&gt;
[[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14122</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14122"/>
		<updated>2022-09-20T11:41:05Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Needs Testing */ drivers available for EBC and MIPI DSI&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&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;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| 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=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&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:#F99; 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; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=671676&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=661385]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14121</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14121"/>
		<updated>2022-09-20T11:39:24Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Linux Kernel Config Options */ Add dsi-dphy, csi-dphy, and rk817-charger driver configs&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&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;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| 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=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&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:#F99; 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; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=671676&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=661385]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI &amp;amp;mdash; needs driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI DSI DPHY (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_CHARGER_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** RK817 charger (note: requires in-review patches linked in status table)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** MIPI CSI DPHY&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14120</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=14120"/>
		<updated>2022-09-20T11:31:54Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Upstreaming Status */ Add dsi-dphy patch series, update rk817-charger series to v10, update csi-dphy status&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Output&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
As of 5.19-rc1&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=604be85547ce4d61b89292d2f9a78c721b778c16]&amp;lt;/sup&amp;gt;, Also featured in Phoronix Article&amp;lt;sup&amp;gt;[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Rockchip-VOP2-Linux-5.19]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/d7ad116fb30d11d110aeb880754cf27f34c45c40#7e8e2ef87e479c54539dc519c0b92d6b31727f8d_671_681] Coordinate any porting with Rockchip first&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;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=678297&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;dw-mipi-dsi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/gpu/drm/rockchip/dw-mipi-dsi.c]&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;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=810028668c6d9da25664195d6b906c98a8169f72]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Video Decode &lt;br /&gt;
| style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| style=&amp;quot;background:LightYellow; text-align:center;&amp;quot; rowspan=&amp;quot;3&amp;quot;|GStreamer only, no 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&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU121 handling 1080p H.263, MPEG-1, MPEG-2, VP8 and H.264. Mainline as of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f6bfab6da6531238e899fdf29efd6d0185adc3e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkvdec2&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU346 handling 4K H.265, H.264 and VP9&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &amp;lt;code&amp;gt;rkdjpeg&amp;lt;/code&amp;gt; using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| VDPU720 handling JPEG, [[User:CounterPillow]] is working on this&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;5&amp;quot; | [[Mainline Hardware Encoding|Video Encode]] &lt;br /&gt;
| 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=649611]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:LightYellow;&amp;quot;|GStreamer only&lt;br /&gt;
| JPEG on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| VP8 on VEPU121&lt;br /&gt;
| Hantro-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.264 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;|?&lt;br /&gt;
| H.265 on VEPU540&lt;br /&gt;
| rkvenc-based&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&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:#F99; 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; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c37415f55bdadffe5b4c0e7981e9fc7e8b96beea]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| SOQuartz&lt;br /&gt;
| As of 5.19&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c466828fb3ba8cb7f5c3bf28766da9b70bf9745e]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| PineNote&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=671676&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A, Pinenote&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:LightYellow; text-align:center;&amp;quot;|In review (RFC)&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/20220413221916.50995-1-samuel@sholland.org/T/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc-drm-v5 here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;. Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | CSI Camera&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;rkisp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/isp]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|linux-next&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=661385]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-inno-csidphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | NPU&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| &lt;br /&gt;
| Downstream version is a closed source SDK. Major undertaking to reimplement this as Linux does not (yet) appear to have a generic architecture for neural accelerators.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Crypto&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;rk-crypto&amp;lt;/code&amp;gt; v2&lt;br /&gt;
| Downstream driver [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/crypto/rockchip] doesn't include a rk3568 compatible either, but the TRM shows that it seemingly matches.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
* eDP &amp;amp;mdash; needs PHY driver and controller driver&lt;br /&gt;
* DSI &amp;amp;mdash; needs driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
=== eDP Driver Porting ===&lt;br /&gt;
&lt;br /&gt;
The eDP PHY driver and controller driver needs to be ported, brought into shape and submitted with proper commit attribution to the Rockchip authors.&lt;br /&gt;
&lt;br /&gt;
[[User:CounterPillow]] has experimentally ported stuff, but it's currently not working.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box if the generic PHY driver is y and binds first. Alternatively tell users in board-specific setup instructions to force including the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module in initramfs if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_SDHCI_OF_DWCMSHC&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13177</id>
		<title>Pinebook Pro Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13177"/>
		<updated>2022-06-11T06:54:38Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Void Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux OS Image Releases =&lt;br /&gt;
For information on how to install these images onto your device, please see the [[NOOB]] Page, which includes information on writing images to the device eMMC or an SD card&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The Manjaro project offers a mainline kernel with patches and modules to support PBPro hardware. To learn more about Manjaro please visit [https://forum.manjaro.org/c/arm/ Manjaro Forum]. You can follow the ongoing discussion about Manjaro on the [https://forum.pine64.org/showthread.php?tid=8207 PINE64 forum].&lt;br /&gt;
All images boot from both SD card and the internal eMMC module.&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-kde-plasma/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Xfce ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-xfce/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Gnome ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-gnome/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Sway ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-sway/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with no desktop ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
As of Nov. 3rd, 2021, Pinebook Pro has No official support (CSC) from Armbian.&lt;br /&gt;
&lt;br /&gt;
To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-pro/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_current_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Gnome (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with GNOME Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://redirect.armbian.com/region/NA/pinebook-pro/Focal_current_gnome]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_legacy_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Debian Buster with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Buster_legacy_desktop Armbian's Pinebook Pro Debian Buster Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Bionic with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Bionic with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Bionic_legacy_desktop Armbian's Pinebook Pro Ubuntu Bionic Xfce Desktop download site]&lt;br /&gt;
&lt;br /&gt;
== Twister OS ==&lt;br /&gt;
[[File:Twister_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Twister OS Armbian-Reforged with Xfce. It boots from microSD card and from eMMC. For more information on Twister OS, please visit this [https://twisteros.com/ official site]. You can follow the ongoing discussion about Twister OS on the [https://forum.pine64.org/showthread.php?tid=12192 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* After flashing image, edit /boot/armbianEnv.txt, replace the dtb name with &amp;lt;code&amp;gt;rk3399-pinebook-pro.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://twisteros.com/twisterarmbian.html Direct download latest images from Twister OS's website] (size: 2.8GB)&lt;br /&gt;
&lt;br /&gt;
'''Password'''&lt;br /&gt;
&lt;br /&gt;
asdasd&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
[[File:fedora1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Fedora Official ===&lt;br /&gt;
&lt;br /&gt;
Using this [https://nullr0ute.com/2021/05/fedora-on-the-pinebook-pro/ blog post] it is now possible to run Official Fedora on the Pinebook Pro. &lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
Upstream Fedora uses  SPI flash on the Pinebook Pro to manage uboot. &lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Cinnamon ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://cinnamon-spices.linuxmint.com/ Cinnamon] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Cinnamon-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with KDE ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://kde.org/ KDE aka Plasma] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-KDE-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Xfce===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://xfce.org/ Xfce] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Xfce-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Gnome ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://www.gnome.org/gnome-3/ GNOME 3] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Workstation-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ARM ==&lt;br /&gt;
[[File:Archlinux-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Official Installation ===&lt;br /&gt;
See [[Installing Arch Linux ARM On The Pinebook Pro]] for instructions on how to install the official Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
=== Customized Premade Image ===&lt;br /&gt;
Arch Linux ARM root filesystem customized for the Pinebook Pro using Manjaro kernel. Instructions are included for installation on microSD card, eMMC module and NVME SSD.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SvenKiljan/archlinuxarm-pbp/releases/latest Get the latest image from GitHub] (size: 591 MB).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Make sure to thoroughly read the [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md readme], [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md installation instructions] and [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/FAQ.md FAQ].&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
The default Arch Linux ARM user credentials.&lt;br /&gt;
&lt;br /&gt;
Username: alarm&lt;br /&gt;
&lt;br /&gt;
Password: alarm&lt;br /&gt;
&lt;br /&gt;
The password for the root account is 'root'.&lt;br /&gt;
&lt;br /&gt;
== postmarketOS ==&lt;br /&gt;
[[File:PostmarketOS logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Official postmarketOS build with the GNOME desktop for the Pinebook Pro. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://images.postmarketos.org/bpo/edge/pine64-pinebookpro/ Direct download latest images from postmarketOS] (size: 400 MB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
demo/demo&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
demo/147147&lt;br /&gt;
&lt;br /&gt;
==Kali Linux==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux prebuilt OS images for Pinebook Pro===&lt;br /&gt;
&lt;br /&gt;
Official pre-built OS images of Kali Linux for the Pinebook Pro featuring all tools you'd expect from the distribution. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://www.offensive-security.com/kali-linux-arm-images/ Direct download latest images from Offensive Security's website] (size: 2.0 GB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
kali/kali&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'. It boots from microSD card and from eMMC. To learn more please visit the [https://forum.pine64.org/showthread.php?tid=8385 PINE64 forum] or official [https://q4os.org/index.html Q4OS website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
User account and password are created on first run.&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=14061 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_PinebookPro-ARMv8-Bullseye.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;
== openSUSE ==&lt;br /&gt;
[[File:opensuse-distribution.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest openSUSE Tumbleweed images for Pinebook Pro here: [https://en.opensuse.org/HCL:Pinebook-Pro-RK3399]&lt;br /&gt;
&lt;br /&gt;
Credits to [https://bugzilla.opensuse.org/show_bug.cgi?id=1194491]&lt;br /&gt;
Step 1. Flash Tow-Boot[https://github.com/Tow-Boot/Tow-Boot] to SPI&lt;br /&gt;
Step 2. Flash openSUSE image to sd card &amp;amp; insert it&lt;br /&gt;
Step 3. When it loads grub, press e and add the following line:&lt;br /&gt;
&lt;br /&gt;
devicetree /boot/dtb/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
&lt;br /&gt;
Press ctrl + x to boot&lt;br /&gt;
&lt;br /&gt;
Work : display, wifi&lt;br /&gt;
Not tested : bluetooth&lt;br /&gt;
Doesn't work : audio&lt;br /&gt;
&lt;br /&gt;
You may build rpms and see if it fix issues from this repository: [https://github.com/bengtfredh/pinebook-pro-copr]&lt;br /&gt;
&lt;br /&gt;
== FydeOS ==&lt;br /&gt;
An operating system based on the Chromium Project&lt;br /&gt;
&lt;br /&gt;
https://fydeos.io/download/device/pinebook-pro&lt;br /&gt;
&lt;br /&gt;
== Void Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://voidlinux.org/ Void Linux] packages U-Boot and a kernel for the Pinebook Pro, but does not distribute any images for the device.&lt;br /&gt;
&lt;br /&gt;
Cameron Nemo ([[User:CameronNemo]]) distributes unofficial Void Linux images for the Pinebook Pro:&lt;br /&gt;
&lt;br /&gt;
* [https://repo.nohom.org/void/images/void-pinebookpro-20220530.img.xz glibc download]&lt;br /&gt;
* [https://repo.nohom.org/void/images/void-pinebookpro-musl-20220610.img.xz musl download]&lt;br /&gt;
&lt;br /&gt;
Some notes about the images:&lt;br /&gt;
&lt;br /&gt;
* They were released on 2022-05-30 (glibc) and 2022-06-10 (musl)&lt;br /&gt;
* They ship U-Boot 2022.04 and Linux 5.15 (with minimal patches)&lt;br /&gt;
* Meant to be uncompressed then flashed to either an SD card or the internal eMMC module&lt;br /&gt;
* The root partition is ~1.7GB, and must be expanded manually&lt;br /&gt;
* There are very few services enabled on the images by default: udev and some getty's&lt;br /&gt;
* The default root password is &amp;quot;voidlinux&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= BSD =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [http://www.armbsd.org/arm/ Direct download from NetBSD]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&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;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/(none)&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about OpenBSD, please visit [https://www.openbsd.org/ OpenBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
ARM64 images, (including support for Pinebook Pro), can be found here [https://www.openbsd.org/arm64.html OpenBSD arm64]&lt;br /&gt;
&lt;br /&gt;
= Linux Installer Releases =&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer manjaro-arm-installer] script is intended to install Manjaro ARM directly to SD/eMMC cards without the need for images (including LXQT, Mate &amp;amp; CuboCore editions, as well as full disk encryption). Running on a Linux x86 computer, it can install Manjaro ARM directly to an empty eMMC using an eMMC to USB adapter. The script can also be run from SD to install an image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
[[File:debian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Uses only the upstream kernel and firmware without special patches&lt;br /&gt;
* Display doesn't always work properly on first boot of installer, usually fixed after a couple tries&lt;br /&gt;
* Requires adding the non-free component to your /etc/apt/sources.list file and installing the &amp;quot;firmware-linux&amp;quot; package for Wi-Fi and Bluetooth support&lt;br /&gt;
* Installer is loaded into RAM, can install onto the same media from which it’s booted&lt;br /&gt;
* Supports automatic partitioning and full disk encryption through LVM&lt;br /&gt;
* Installer currently doesn't install a functional bootloader, leaving the installed system in an unbootable state until it's manually added (if installed to eMMC, the system cannot be booted even to an SD card unless the eMMC is physically switched off or there is U-Boot in the SPI)&lt;br /&gt;
&lt;br /&gt;
[https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/ The relevant files are built daily here] and may sometimes be unavailable if the build system is having issues. The &amp;quot;README.concatenateable_images&amp;quot; file provides instructions on how to combine the partition.img.gz file with the firmware.pinebook-pro.rk3399.img.gz file in order to create a DD-able image.&lt;br /&gt;
&lt;br /&gt;
The official images are '''not''' recommended yet until the display begins working consistently and the installer properly installs the bootloader. Most users will want to see [[Pinebook Pro Debian Installer|Daniel Thompson's Debian Installer]] instead.&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
[[File:GentooLogo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script that prepares a Gentoo arm64 stage 3 tarball for the Pinebook Pro. Unfortunately, this script is not currently functional, and requires extensive troubleshooting to make work. New instructions are currently being created and will be available here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Word to the wise'''&lt;br /&gt;
&lt;br /&gt;
Currently, following the instructions on the Pinebook pro gentoo github page will *not* result in a functional system. Therefore it is neccesary to follow the instructions given here. Please bear in mind that the Pinebook pro's six arm cores and 4gb of ram are extremely anemic. For example, emerging the package net-libs/webkit-gtk in order to build the minimalist web-browser &amp;quot;surf&amp;quot;, a process which takes eighty minutes on an intel core i5-8250U with 8gb of ram, required eight hours of compile time,&lt;br /&gt;
Basic installation alone can take 24 hours of compillation, dozens of reboots, and hours of troubleshooting. After that, even installing firefox would take 17 hours.&lt;br /&gt;
Now that that's out of the way, we may begin the installation.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the bootloader'''&lt;br /&gt;
&lt;br /&gt;
Installing a functional bootloader can be difficult. Luckily, the tow-boot project provides a UEFI-like experience for some arm-based devices. Furthermore, it is not neccesary install this bootloader manually, as it will continue to be useable even after the disk has been reformatted, as long as the bootloader remains unscathed.&lt;br /&gt;
&lt;br /&gt;
https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/&lt;br /&gt;
&lt;br /&gt;
No-matter where you intend to install gentoo, the bootloader should always be installed on the eMMC flash, although technically the SD card slot could also be used. Either way, install any of the official Manjaro arm disk images to the internal eMMC (there's no reason not to use the minimal image, as you will not be using this OS for anything). You may use a second operating system installed on an SD-card, or the official Pine64 eMMC USB adapter. Boot into this operating system to ensure that the bootloader functions, but after that you have no further need of it.&lt;br /&gt;
&lt;br /&gt;
Next, if you already have an OS on an SD card, you can use that for installing gentoo. If you don't, you may be pleasantly suprised to find that tow-boot is cabable of booting from a USB drive. Therefore, you may install the same Manjaro image to your USB drive or SD card, and select it from the boot menu. You should now have an unused but bootable OS on the eMMC, and another bootable, usable OS on your external storage.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the Disks'''&lt;br /&gt;
&lt;br /&gt;
Log into your host device as root with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; sudo su &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter your password.&lt;br /&gt;
&lt;br /&gt;
Let the device on which you intend to install gentoo be refered to hereafter as /dev/&amp;lt;gentoo&amp;gt;. Use the following command to prepare this disk for installation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; fdisk -B /dev/&amp;lt;gentoo&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: don't just copy these commands! You should substitute &amp;lt;gentoo&amp;gt; for mmcblk2 for the internal eMMC flash storage.&lt;br /&gt;
&lt;br /&gt;
Note that the first block of the boot partition is block 62500. Delete all partitions, but *do not* re-format the disk. Create a new boot partition starting at 62500, and as it's size select &amp;quot;+1GB&amp;quot;. Create a new swap partition. fdisk will try to start it at the beginning of the volume (before the boot partition) Instead, when it prompts you for the starting position, enter in the end sector of the boot partition. It should then tell you that this is within an existing partition, and recommend a slightly higher value. Press enter, and give for the size of the partition any value greater than &amp;quot;+4gb&amp;quot;. You need this much ram to be able to suspend your system, and emerge large packages. Don't be stingey - you still have SD cards. I reccomend &amp;quot;+8gb&amp;quot;.&lt;br /&gt;
Finally, add a root partition starting at the end sector of the swap partition, and use the rest of the disk for it. That should be 50-60 GB depending on the size of your swap and boot partitions.&lt;br /&gt;
&lt;br /&gt;
Lastly, press &amp;quot;t&amp;quot; to set the type of each partition. You may set partition 1 to type 6, 2 to type 82, and 3 to type 83.&lt;br /&gt;
&lt;br /&gt;
to set the partition types of the three partitions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remind yourself which disk is /dev/&amp;lt;gentoo&amp;gt;&lt;br /&gt;
Write the filesystems to these three partitions with the commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.vfat /dev/&amp;lt;gentoo&amp;gt;p1&lt;br /&gt;
&lt;br /&gt;
mkswap /dev/&amp;lt;gentoo&amp;gt;p2&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 /dev/&amp;lt;gentoo&amp;gt;p3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a slightly different format if you're installing to a usb stick.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
make the directory for mounting the filesystem you just created. These should be made on the external OS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/gentoo&lt;br /&gt;
&lt;br /&gt;
mount /dev/&amp;lt;gentoo&amp;gt;p3 /mnt/gentoo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd into this directory and fire up links. Navigate to gentoo.org/downloads and select the stage 3 minimal stage 3 tarball. Download it to your current directory, or move it to that directory from wherever it has been downloaded to. Once you are in the correct directory, unpack the tarball.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xpvf stage3-arm64-&amp;lt;blah blah blah&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount the boot partition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount /dev/&amp;lt;gentoo&amp;gt;p1 /mnt/gentoo/boot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chroot into the mounted directory and Install the operating system as per the AMD64 manual [https://wiki.gentoo.org/wiki/Handbook:AMD64]. Before you emerge anything, however, be sure to set your use flags as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/portage/make.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MAKEOPTS=&amp;quot;-j4 -l4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_KEYWORDS=&amp;quot;* **&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_LICENSE=&amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE=&amp;quot;X gtk bluetooth pulseaudio&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use your own options instead of these if you know what you're doing. It's not super difficult.&lt;br /&gt;
&lt;br /&gt;
Continue installing the operating system, but stop just before emerging the @world set. I don't know if this is necessary, but I haven't had the time to try without doing this. Clone Janikk2099's github repo. It doesn't matter where, and run the script. If it fails run it a couple more times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/Jannik2099/gentoo-pinebookpro&lt;br /&gt;
&lt;br /&gt;
./gentoo-pinebookpro/prepare.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't follow any of Janikk's other instructions. They appear to be out of date (no offense bro). Let me be clear: DO NOT INSTALL U-BOOT. I don't know what will happen, but it won't be an improvement over the existing boot-loader so don't worry about it.&lt;br /&gt;
&lt;br /&gt;
Finish installing your system until you come to the kernel.&lt;br /&gt;
&lt;br /&gt;
'''Custom Kernel'''&lt;br /&gt;
&lt;br /&gt;
Use sys-kernel/gentoo-kernel-bin as your kernel. You will need to manually edit the kernel configuration. First, select it as your kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should list only one option. Otherwise, select the number matching &amp;lt;code&amp;gt;linux-5.&amp;lt;whatever is latest&amp;gt;-gentoo-dist&amp;lt;/code&amp;gt;, and cd into the kernel source directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel set &amp;lt;number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd /usr/src/linux&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Begin the kernel configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make menuconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, you're almost on your own. I don't know a strict cause-and-effect relationship between my kernel config and the behavior of my system. For starters, just go into platform selection and deselect everything except rockchip platforms. Once you're done save your configuration and exit. Make sure boot is mounted, and your fstab is set up with your swap mounted. Make sure dracut is installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make&lt;br /&gt;
&lt;br /&gt;
make modules&lt;br /&gt;
&lt;br /&gt;
make dtbs&lt;br /&gt;
&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
make modules install&lt;br /&gt;
&lt;br /&gt;
make dtbs_install &lt;br /&gt;
&lt;br /&gt;
ls /lib/modules&lt;br /&gt;
&lt;br /&gt;
dracut -f --kver &amp;lt;name of directory in /lib/modules matching your kernel, *not* the kernel name from eselect&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
emerge the package extlinux and run &amp;lt;code&amp;gt;u-boot-update&amp;lt;/code&amp;gt;. Open the extlinux configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /boot/extlinux/extlinux.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And configure it as follows:&lt;br /&gt;
&lt;br /&gt;
LABEL &amp;lt;label of your choice, for example GENTOO ARM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KERNEL /&amp;lt;name of your vmlinuz kernel image. Include the slash, but be relative to boot, not root.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FDT /dtbs/&amp;lt;kernel-version&amp;gt;/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 &lt;br /&gt;
APPEND initrd=/&amp;lt;name of initramfs image&amp;gt; root=PARTUUID-&amp;lt;nboot partition's PARTUUID, no quotes&amp;gt; rw rootwait&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the blkid command to find the PARTUUID of every partition on the machine. None of this configuration is guaranteed to work, but it worked for me, and given enough fiddling you can get it to work as well.&lt;br /&gt;
&lt;br /&gt;
Now you should reboot the machine and see if it boots into gentoo. If it does: congratulations! If not, too bad. Try again.&lt;br /&gt;
&lt;br /&gt;
== Kali Linux ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script to create official Kali Linux OS images for the Pinebook Pro. The script carries out the build process in entirety and is Pinebook Pro specific.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/pinebook-pro.sh Kali Linux install script] from the project's GitLab.&lt;br /&gt;
* For more information regarding building the OS image please read the README instruction at https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/README.md&lt;br /&gt;
&lt;br /&gt;
== K1ss OS ==&lt;br /&gt;
[[File:K1ss.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a repository containing an unofficial port of KISS Linux to AARCH64. The tarball is built for generic aarch64, currently being tested on the Pinebook Pro. You can follow the ongoing discussion about K1ss Linux on the [https://forum.pine64.org/showthread.php?tid=9304 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://github.com/jedavies-dev/kiss-aarch64 K1ss Linux install script] from the project's GitHub.&lt;br /&gt;
&lt;br /&gt;
== NixOS ==&lt;br /&gt;
[[File:nixos.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
You can follow the ongoing discussion about NixOS on the [https://forum.pine64.org/showthread.php?tid=10524 PINE64 forum]. There is a good chance we will see Tier 1 support for aarch64, including the Pinebook Pro, in 2021 (see https://github.com/NixOS/rfcs/pull/87).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* This is instructions to install NixOS on the Pinebook Pro: https://nixos.wiki/wiki/NixOS_on_ARM/PINE64_Pinebook_Pro&lt;br /&gt;
* Please pull the latest [https://github.com/samueldr/wip-pinebook-pro samueldr's repository ] from the project's GitHub.&lt;br /&gt;
* [[NixOS Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== SkiffOS ==&lt;br /&gt;
[[File:SkiffOS-Icon-1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Instructions to build/install on the Pinebook Pro: https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/book&lt;br /&gt;
* Please pull the latest version from the project's GitHub.&lt;br /&gt;
* Compiling the boot image takes approximately 30 minutes.&lt;br /&gt;
* Easily configure the kernel, compiler, etc with Buildroot.&lt;br /&gt;
* Pre-built ISOs will be available with the upcoming 2021.02 release.&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:slackware.jpg|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://arm.slackware.com/ Slackware] is the world's oldest actively developed Linux distribution, providing a modern user land (applications) and Linux Kernel, within a more classic Unix Operating System environment.&lt;br /&gt;
&lt;br /&gt;
More information can be found about Slackware in this [https://www.youtube.com/watch?v=A5PFYUttsWA&amp;amp;list=PL1XOSJnvang3IbwySOf6m3PK1gm13hS5s 20 minute video].&lt;br /&gt;
&lt;br /&gt;
[https://docs.slackware.com/slackwarearm:inst Installation instructions].&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=QKs_RnFqLO8&amp;amp;list=PL1XOSJnvang3VLmqke2QbRitKtOD6Rm3t Installation guide video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13128</id>
		<title>Pinebook Pro Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13128"/>
		<updated>2022-05-30T21:10:31Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Void Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux OS Image Releases =&lt;br /&gt;
For information on how to install these images onto your device, please see the [[NOOB]] Page, which includes information on writing images to the device eMMC or an SD card&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The Manjaro project offers a mainline kernel with patches and modules to support PBPro hardware. To learn more about Manjaro please visit [https://forum.manjaro.org/c/arm/ Manjaro Forum]. You can follow the ongoing discussion about Manjaro on the [https://forum.pine64.org/showthread.php?tid=8207 PINE64 forum].&lt;br /&gt;
All images boot from both SD card and the internal eMMC module.&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-kde-plasma/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Xfce ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-xfce/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Gnome ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-gnome/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Sway ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-sway/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with no desktop ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
As of Nov. 3rd, 2021, Pinebook Pro has No official support (CSC) from Armbian.&lt;br /&gt;
&lt;br /&gt;
To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-pro/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_current_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Gnome (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with GNOME Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://redirect.armbian.com/region/NA/pinebook-pro/Focal_current_gnome]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_legacy_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Debian Buster with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Buster_legacy_desktop Armbian's Pinebook Pro Debian Buster Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Bionic with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Bionic with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Bionic_legacy_desktop Armbian's Pinebook Pro Ubuntu Bionic Xfce Desktop download site]&lt;br /&gt;
&lt;br /&gt;
== Twister OS ==&lt;br /&gt;
[[File:Twister_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Twister OS Armbian-Reforged with Xfce. It boots from microSD card and from eMMC. For more information on Twister OS, please visit this [https://twisteros.com/ official site]. You can follow the ongoing discussion about Twister OS on the [https://forum.pine64.org/showthread.php?tid=12192 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* After flashing image, edit /boot/armbianEnv.txt, replace the dtb name with &amp;lt;code&amp;gt;rk3399-pinebook-pro.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://twisteros.com/twisterarmbian.html Direct download latest images from Twister OS's website] (size: 2.8GB)&lt;br /&gt;
&lt;br /&gt;
'''Password'''&lt;br /&gt;
&lt;br /&gt;
asdasd&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
[[File:fedora1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Fedora Official ===&lt;br /&gt;
&lt;br /&gt;
Using this [https://nullr0ute.com/2021/05/fedora-on-the-pinebook-pro/ blog post] it is now possible to run Official Fedora on the Pinebook Pro. &lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
Upstream Fedora uses  SPI flash on the Pinebook Pro to manage uboot. &lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Cinnamon ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://cinnamon-spices.linuxmint.com/ Cinnamon] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Cinnamon-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with KDE ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://kde.org/ KDE aka Plasma] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-KDE-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Xfce===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://xfce.org/ Xfce] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Xfce-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Gnome ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://www.gnome.org/gnome-3/ GNOME 3] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Workstation-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ARM ==&lt;br /&gt;
[[File:Archlinux-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Official Installation ===&lt;br /&gt;
See [[Installing Arch Linux ARM On The Pinebook Pro]] for instructions on how to install the official Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
=== Customized Premade Image ===&lt;br /&gt;
Arch Linux ARM root filesystem customized for the Pinebook Pro using Manjaro kernel. Instructions are included for installation on microSD card, eMMC module and NVME SSD.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SvenKiljan/archlinuxarm-pbp/releases/latest Get the latest image from GitHub] (size: 591 MB).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Make sure to thoroughly read the [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md readme], [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md installation instructions] and [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/FAQ.md FAQ].&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
The default Arch Linux ARM user credentials.&lt;br /&gt;
&lt;br /&gt;
Username: alarm&lt;br /&gt;
&lt;br /&gt;
Password: alarm&lt;br /&gt;
&lt;br /&gt;
The password for the root account is 'root'.&lt;br /&gt;
&lt;br /&gt;
== postmarketOS ==&lt;br /&gt;
[[File:PostmarketOS logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Official postmarketOS build with the GNOME desktop for the Pinebook Pro. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://images.postmarketos.org/bpo/edge/pine64-pinebookpro/ Direct download latest images from postmarketOS] (size: 400 MB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
demo/demo&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
demo/147147&lt;br /&gt;
&lt;br /&gt;
==Kali Linux==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux prebuilt OS images for Pinebook Pro===&lt;br /&gt;
&lt;br /&gt;
Official pre-built OS images of Kali Linux for the Pinebook Pro featuring all tools you'd expect from the distribution. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://www.offensive-security.com/kali-linux-arm-images/ Direct download latest images from Offensive Security's website] (size: 2.0 GB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
kali/kali&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'. It boots from microSD card and from eMMC. To learn more please visit the [https://forum.pine64.org/showthread.php?tid=8385 PINE64 forum] or official [https://q4os.org/index.html Q4OS website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
User account and password are created on first run.&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=14061 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_PinebookPro-ARMv8-Bullseye.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;
== openSUSE ==&lt;br /&gt;
[[File:opensuse-distribution.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest openSUSE Tumbleweed images for Pinebook Pro here: [https://en.opensuse.org/HCL:Pinebook-Pro-RK3399]&lt;br /&gt;
&lt;br /&gt;
Credits to [https://bugzilla.opensuse.org/show_bug.cgi?id=1194491]&lt;br /&gt;
Step 1. Flash Tow-Boot[https://github.com/Tow-Boot/Tow-Boot] to SPI&lt;br /&gt;
Step 2. Flash openSUSE image to sd card &amp;amp; insert it&lt;br /&gt;
Step 3. When it loads grub, press e and add the following line:&lt;br /&gt;
&lt;br /&gt;
devicetree /boot/dtb/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
&lt;br /&gt;
Press ctrl + x to boot&lt;br /&gt;
&lt;br /&gt;
Work : display, wifi&lt;br /&gt;
Not tested : bluetooth&lt;br /&gt;
Doesn't work : audio&lt;br /&gt;
&lt;br /&gt;
You may build rpms and see if it fix issues from this repository: [https://github.com/bengtfredh/pinebook-pro-copr]&lt;br /&gt;
&lt;br /&gt;
== FydeOS ==&lt;br /&gt;
An operating system based on the Chromium Project&lt;br /&gt;
&lt;br /&gt;
https://fydeos.io/download/device/pinebook-pro&lt;br /&gt;
&lt;br /&gt;
== Void Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://voidlinux.org/ Void Linux] packages U-Boot and a kernel for the Pinebook Pro, but does not distribute any images for the device.&lt;br /&gt;
&lt;br /&gt;
Cameron Nemo ([[User:CameronNemo]]) distributes unofficial Void Linux images for the Pinebook Pro:&lt;br /&gt;
&lt;br /&gt;
* [https://repo.nohom.org/void/images/void-pinebookpro-20220530.img.xz glibc download]&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://repo.nohom.org/void/images/void-pinebookpro-musl-20220530.img.xz musl download]&amp;lt;/s&amp;gt; (suspected to be broken)&lt;br /&gt;
&lt;br /&gt;
Some notes about the images:&lt;br /&gt;
&lt;br /&gt;
* They were released on 2022-05-30&lt;br /&gt;
* They ship U-Boot 2022.04 and Linux 5.15.44 (with minimal patches)&lt;br /&gt;
* Meant to be uncompressed then flashed to either an SD card or the internal eMMC module&lt;br /&gt;
* The root partition is ~1.7GB, and must be expanded manually&lt;br /&gt;
* There are very few services enabled on the images by default: udev and some getty's&lt;br /&gt;
* The default root password is &amp;quot;voidlinux&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= BSD =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [http://www.armbsd.org/arm/ Direct download from NetBSD]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&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;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/(none)&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about OpenBSD, please visit [https://www.openbsd.org/ OpenBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
ARM64 images, (including support for Pinebook Pro), can be found here [https://www.openbsd.org/arm64.html OpenBSD arm64]&lt;br /&gt;
&lt;br /&gt;
= Linux Installer Releases =&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer manjaro-arm-installer] script is intended to install Manjaro ARM directly to SD/eMMC cards without the need for images (including LXQT, Mate &amp;amp; CuboCore editions, as well as full disk encryption). Running on a Linux x86 computer, it can install Manjaro ARM directly to an empty eMMC using an eMMC to USB adapter. The script can also be run from SD to install an image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
[[File:debian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Uses only the upstream kernel and firmware without special patches&lt;br /&gt;
* Display doesn't always work properly on first boot of installer, usually fixed after a couple tries&lt;br /&gt;
* Requires adding the non-free component to your /etc/apt/sources.list file and installing the &amp;quot;firmware-linux&amp;quot; package for Wi-Fi and Bluetooth support&lt;br /&gt;
* Installer is loaded into RAM, can install onto the same media from which it’s booted&lt;br /&gt;
* Supports automatic partitioning and full disk encryption through LVM&lt;br /&gt;
* Installer currently doesn't install a functional bootloader, leaving the installed system in an unbootable state until it's manually added (if installed to eMMC, the system cannot be booted even to an SD card unless the eMMC is physically switched off or there is U-Boot in the SPI)&lt;br /&gt;
&lt;br /&gt;
[https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/ The relevant files are built daily here] and may sometimes be unavailable if the build system is having issues. The &amp;quot;README.concatenateable_images&amp;quot; file provides instructions on how to combine the partition.img.gz file with the firmware.pinebook-pro.rk3399.img.gz file in order to create a DD-able image.&lt;br /&gt;
&lt;br /&gt;
The official images are '''not''' recommended yet until the display begins working consistently and the installer properly installs the bootloader. Most users will want to see [[Pinebook Pro Debian Installer|Daniel Thompson's Debian Installer]] instead.&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
[[File:GentooLogo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script that prepares a Gentoo arm64 stage 3 tarball for the Pinebook Pro. Unfortunately, this script is not currently functional, and requires extensive troubleshooting to make work. New instructions are currently being created and will be available here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Word to the wise'''&lt;br /&gt;
&lt;br /&gt;
Currently, following the instructions on the Pinebook pro gentoo github page will *not* result in a functional system. Therefore it is neccesary to follow the instructions given here. Please bear in mind that the Pinebook pro's six arm cores and 4gb of ram are extremely anemic. For example, emerging the package net-libs/webkit-gtk in order to build the minimalist web-browser &amp;quot;surf&amp;quot;, a process which takes eighty minutes on an intel core i5-8250U with 8gb of ram, required eight hours of compile time,&lt;br /&gt;
Basic installation alone can take 24 hours of compillation, dozens of reboots, and hours of troubleshooting. After that, even installing firefox would take 17 hours.&lt;br /&gt;
Now that that's out of the way, we may begin the installation.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the bootloader'''&lt;br /&gt;
&lt;br /&gt;
Installing a functional bootloader can be difficult. Luckily, the tow-boot project provides a UEFI-like experience for some arm-based devices. Furthermore, it is not neccesary install this bootloader manually, as it will continue to be useable even after the disk has been reformatted, as long as the bootloader remains unscathed.&lt;br /&gt;
&lt;br /&gt;
https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/&lt;br /&gt;
&lt;br /&gt;
No-matter where you intend to install gentoo, the bootloader should always be installed on the eMMC flash, although technically the SD card slot could also be used. Either way, install any of the official Manjaro arm disk images to the internal eMMC (there's no reason not to use the minimal image, as you will not be using this OS for anything). You may use a second operating system installed on an SD-card, or the official Pine64 eMMC USB adapter. Boot into this operating system to ensure that the bootloader functions, but after that you have no further need of it.&lt;br /&gt;
&lt;br /&gt;
Next, if you already have an OS on an SD card, you can use that for installing gentoo. If you don't, you may be pleasantly suprised to find that tow-boot is cabable of booting from a USB drive. Therefore, you may install the same Manjaro image to your USB drive or SD card, and select it from the boot menu. You should now have an unused but bootable OS on the eMMC, and another bootable, usable OS on your external storage.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the Disks'''&lt;br /&gt;
&lt;br /&gt;
Log into your host device as root with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; sudo su &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter your password.&lt;br /&gt;
&lt;br /&gt;
Let the device on which you intend to install gentoo be refered to hereafter as /dev/&amp;lt;gentoo&amp;gt;. Use the following command to prepare this disk for installation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; fdisk -B /dev/&amp;lt;gentoo&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: don't just copy these commands! You should substitute &amp;lt;gentoo&amp;gt; for mmcblk2 for the internal eMMC flash storage.&lt;br /&gt;
&lt;br /&gt;
Note that the first block of the boot partition is block 62500. Delete all partitions, but *do not* re-format the disk. Create a new boot partition starting at 62500, and as it's size select &amp;quot;+1GB&amp;quot;. Create a new swap partition. fdisk will try to start it at the beginning of the volume (before the boot partition) Instead, when it prompts you for the starting position, enter in the end sector of the boot partition. It should then tell you that this is within an existing partition, and recommend a slightly higher value. Press enter, and give for the size of the partition any value greater than &amp;quot;+4gb&amp;quot;. You need this much ram to be able to suspend your system, and emerge large packages. Don't be stingey - you still have SD cards. I reccomend &amp;quot;+8gb&amp;quot;.&lt;br /&gt;
Finally, add a root partition starting at the end sector of the swap partition, and use the rest of the disk for it. That should be 50-60 GB depending on the size of your swap and boot partitions.&lt;br /&gt;
&lt;br /&gt;
Lastly, press &amp;quot;t&amp;quot; to set the type of each partition. You may set partition 1 to type 6, 2 to type 82, and 3 to type 83.&lt;br /&gt;
&lt;br /&gt;
to set the partition types of the three partitions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remind yourself which disk is /dev/&amp;lt;gentoo&amp;gt;&lt;br /&gt;
Write the filesystems to these three partitions with the commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.vfat /dev/&amp;lt;gentoo&amp;gt;p1&lt;br /&gt;
&lt;br /&gt;
mkswap /dev/&amp;lt;gentoo&amp;gt;p2&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 /dev/&amp;lt;gentoo&amp;gt;p3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a slightly different format if you're installing to a usb stick.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
make the directory for mounting the filesystem you just created. These should be made on the external OS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/gentoo&lt;br /&gt;
&lt;br /&gt;
mount /dev/&amp;lt;gentoo&amp;gt;p3 /mnt/gentoo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd into this directory and fire up links. Navigate to gentoo.org/downloads and select the stage 3 minimal stage 3 tarball. Download it to your current directory, or move it to that directory from wherever it has been downloaded to. Once you are in the correct directory, unpack the tarball.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xpvf stage3-arm64-&amp;lt;blah blah blah&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount the boot partition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount /dev/&amp;lt;gentoo&amp;gt;p1 /mnt/gentoo/boot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chroot into the mounted directory and Install the operating system as per the AMD64 manual [https://wiki.gentoo.org/wiki/Handbook:AMD64]. Before you emerge anything, however, be sure to set your use flags as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/portage/make.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MAKEOPTS=&amp;quot;-j4 -l4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_KEYWORDS=&amp;quot;* **&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_LICENSE=&amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE=&amp;quot;X gtk bluetooth pulseaudio&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use your own options instead of these if you know what you're doing. It's not super difficult.&lt;br /&gt;
&lt;br /&gt;
Continue installing the operating system, but stop just before emerging the @world set. I don't know if this is necessary, but I haven't had the time to try without doing this. Clone Janikk2099's github repo. It doesn't matter where, and run the script. If it fails run it a couple more times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/Jannik2099/gentoo-pinebookpro&lt;br /&gt;
&lt;br /&gt;
./gentoo-pinebookpro/prepare.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't follow any of Janikk's other instructions. They appear to be out of date (no offense bro). Let me be clear: DO NOT INSTALL U-BOOT. I don't know what will happen, but it won't be an improvement over the existing boot-loader so don't worry about it.&lt;br /&gt;
&lt;br /&gt;
Finish installing your system until you come to the kernel.&lt;br /&gt;
&lt;br /&gt;
'''Custom Kernel'''&lt;br /&gt;
&lt;br /&gt;
Use sys-kernel/gentoo-kernel-bin as your kernel. You will need to manually edit the kernel configuration. First, select it as your kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should list only one option. Otherwise, select the number matching &amp;lt;code&amp;gt;linux-5.&amp;lt;whatever is latest&amp;gt;-gentoo-dist&amp;lt;/code&amp;gt;, and cd into the kernel source directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel set &amp;lt;number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd /usr/src/linux&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Begin the kernel configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make menuconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, you're almost on your own. I don't know a strict cause-and-effect relationship between my kernel config and the behavior of my system. For starters, just go into platform selection and deselect everything except rockchip platforms. Once you're done save your configuration and exit. Make sure boot is mounted, and your fstab is set up with your swap mounted. Make sure dracut is installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make&lt;br /&gt;
&lt;br /&gt;
make modules&lt;br /&gt;
&lt;br /&gt;
make dtbs&lt;br /&gt;
&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
make modules install&lt;br /&gt;
&lt;br /&gt;
make dtbs_install &lt;br /&gt;
&lt;br /&gt;
ls /lib/modules&lt;br /&gt;
&lt;br /&gt;
dracut -f --kver &amp;lt;name of directory in /lib/modules matching your kernel, *not* the kernel name from eselect&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
emerge the package extlinux and run &amp;lt;code&amp;gt;u-boot-update&amp;lt;/code&amp;gt;. Open the extlinux configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /boot/extlinux/extlinux.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And configure it as follows:&lt;br /&gt;
&lt;br /&gt;
LABEL &amp;lt;label of your choice, for example GENTOO ARM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KERNEL /&amp;lt;name of your vmlinuz kernel image. Include the slash, but be relative to boot, not root.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FDT /dtbs/&amp;lt;kernel-version&amp;gt;/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 &lt;br /&gt;
APPEND initrd=/&amp;lt;name of initramfs image&amp;gt; root=PARTUUID-&amp;lt;nboot partition's PARTUUID, no quotes&amp;gt; rw rootwait&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the blkid command to find the PARTUUID of every partition on the machine. None of this configuration is guaranteed to work, but it worked for me, and given enough fiddling you can get it to work as well.&lt;br /&gt;
&lt;br /&gt;
Now you should reboot the machine and see if it boots into gentoo. If it does: congratulations! If not, too bad. Try again.&lt;br /&gt;
&lt;br /&gt;
== Kali Linux ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script to create official Kali Linux OS images for the Pinebook Pro. The script carries out the build process in entirety and is Pinebook Pro specific.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/pinebook-pro.sh Kali Linux install script] from the project's GitLab.&lt;br /&gt;
* For more information regarding building the OS image please read the README instruction at https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/README.md&lt;br /&gt;
&lt;br /&gt;
== K1ss OS ==&lt;br /&gt;
[[File:K1ss.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a repository containing an unofficial port of KISS Linux to AARCH64. The tarball is built for generic aarch64, currently being tested on the Pinebook Pro. You can follow the ongoing discussion about K1ss Linux on the [https://forum.pine64.org/showthread.php?tid=9304 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://github.com/jedavies-dev/kiss-aarch64 K1ss Linux install script] from the project's GitHub.&lt;br /&gt;
&lt;br /&gt;
== NixOS ==&lt;br /&gt;
[[File:nixos.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
You can follow the ongoing discussion about NixOS on the [https://forum.pine64.org/showthread.php?tid=10524 PINE64 forum]. There is a good chance we will see Tier 1 support for aarch64, including the Pinebook Pro, in 2021 (see https://github.com/NixOS/rfcs/pull/87).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* This is instructions to install NixOS on the Pinebook Pro: https://nixos.wiki/wiki/NixOS_on_ARM/PINE64_Pinebook_Pro&lt;br /&gt;
* Please pull the latest [https://github.com/samueldr/wip-pinebook-pro samueldr's repository ] from the project's GitHub.&lt;br /&gt;
* [[NixOS Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== SkiffOS ==&lt;br /&gt;
[[File:SkiffOS-Icon-1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Instructions to build/install on the Pinebook Pro: https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/book&lt;br /&gt;
* Please pull the latest version from the project's GitHub.&lt;br /&gt;
* Compiling the boot image takes approximately 30 minutes.&lt;br /&gt;
* Easily configure the kernel, compiler, etc with Buildroot.&lt;br /&gt;
* Pre-built ISOs will be available with the upcoming 2021.02 release.&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:slackware.jpg|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://arm.slackware.com/ Slackware] is the world's oldest actively developed Linux distribution, providing a modern user land (applications) and Linux Kernel, within a more classic Unix Operating System environment.&lt;br /&gt;
&lt;br /&gt;
More information can be found about Slackware in this [https://www.youtube.com/watch?v=A5PFYUttsWA&amp;amp;list=PL1XOSJnvang3IbwySOf6m3PK1gm13hS5s 20 minute video].&lt;br /&gt;
&lt;br /&gt;
[https://docs.slackware.com/slackwarearm:inst Installation instructions].&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=QKs_RnFqLO8&amp;amp;list=PL1XOSJnvang3VLmqke2QbRitKtOD6Rm3t Installation guide video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=User:CameronNemo&amp;diff=13127</id>
		<title>User:CameronNemo</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=User:CameronNemo&amp;diff=13127"/>
		<updated>2022-05-30T20:55:47Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Created page with &amp;quot;Hey. I package software for Void Linux. Do other stuff too.  * GitHub: CameronNemo * Matrix: @cnemo:matrix.org&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey. I package software for Void Linux. Do other stuff too.&lt;br /&gt;
&lt;br /&gt;
* GitHub: CameronNemo&lt;br /&gt;
* Matrix: @cnemo:matrix.org&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=13126</id>
		<title>Pinebook Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=13126"/>
		<updated>2022-05-30T20:54:18Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Pinebook Pro images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Guide =&lt;br /&gt;
== Introducing PineBook Pro == &lt;br /&gt;
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]&lt;br /&gt;
&lt;br /&gt;
It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open source project can deliver. &lt;br /&gt;
&lt;br /&gt;
It's compact and slim dimensions are 329mm x 220mm x 12mm (WxDxH).&lt;br /&gt;
&lt;br /&gt;
Key features include: the RK3399 SOC; USB-C for data, video-out and power-in (3A 5V); privacy switches for the microphone, BT/WiFi module, and camera; and expandable storage via NVMe (PCIe x4) with an optional adapter. &lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1 x micro SD card reader (bootable), 1 x USB 2.0, 1 x USB 3.0, 1 x USB type C Host with DP 1.2 and power-in, PCIe x4 for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch). &lt;br /&gt;
&lt;br /&gt;
The keyboard and touchpad both use the USB 2.0 protocol.  The LCD panel uses eDP MiPi display protocol.&lt;br /&gt;
&lt;br /&gt;
Many different Operating Systems (OS) are freely available from the open source community and partner projects.  These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Default Manjaro KDE Desktop Quick Start ===&lt;br /&gt;
&lt;br /&gt;
When you first get your Pinebook Pro and boot it up for the first time, it'll come with Manjaro using the KDE desktop. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the [https://forum.manjaro.org/c/manjaro-arm/78 Manjaro ARM forums.]&lt;br /&gt;
&lt;br /&gt;
On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the &amp;quot;codename&amp;quot; of your machine, and if you don't know what it's about, you can make something up (use a single word, all lower case, no punctuation; e.g. &amp;quot;pbpro&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
After you're on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi [https://wiki.pine64.org/index.php/Pinebook_Pro#ANSI_Fn_.2B_F_keys_wrong_for_F9.2C_F10.2C_F11_and_F12  privacy switch] is not disabled.&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Pro images ===&lt;br /&gt;
Under [[Pinebook Pro Software Release]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software. &lt;br /&gt;
&lt;br /&gt;
The list includes OS images and descriptions of:&lt;br /&gt;
&lt;br /&gt;
* [[PinebookPro_Software_Release#Manjaro ARM|Manjaro ARM]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Armbian|Armbian]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Twister OS|Twister OS]] (microSD Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Fedora|Fedora]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Arch_Linux_ARM|Arch Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#postmarketOS|Postmarket OS]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Kali Linux|Kali Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#DietPi|DietPi]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Q4OS|Q4OS]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#NetBSD|NetBSD]] (microSD and eMMC Boot)&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#OpenBSD|OpenBSD release for ARM64]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Gentoo|Gentoo]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Slackware|Slackware (microSD boot)]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Void_Linux|Void Linux]]&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and touchpad in the Pinebook Pro use the USB 2.0 protocol and show up as such in xinput. The keyboard features function (Fn) keys in the F-key row, which include display brightness controls, sound volume, touchpad lock, and other functionality. There is also a custom PINE64 logo key that functions as Menu/Super key. It has also a secondary functionality for setting the privacy switches.   &lt;br /&gt;
&lt;br /&gt;
The keyboard firmware binary can be flashed from userspace using the provided open source utility.&lt;br /&gt;
&lt;br /&gt;
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. &lt;br /&gt;
&lt;br /&gt;
=== Typing special characters ===&lt;br /&gt;
The [[Wikipedia:British_and_American_keyboards#Other_keyboard_layouts|UK ISO Layout]] does not have dedicated keys for characters like the German umlauts (Ä,Ö,Ü, etc). Certain characters can still be generated by means of either key combinations or key sequences. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Character&lt;br /&gt;
!Key combination/sequence&lt;br /&gt;
|-&lt;br /&gt;
|Ä, Ö, Ü, ä, ö, ü&lt;br /&gt;
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]&lt;br /&gt;
|-&lt;br /&gt;
|µ&lt;br /&gt;
|[AltGr]+[m]&lt;br /&gt;
|-&lt;br /&gt;
|Ø, ø&lt;br /&gt;
|[AltGr]+[O], [AltGr]+[o]&lt;br /&gt;
|-&lt;br /&gt;
|@&lt;br /&gt;
|[AltGr]+[q] (as on the German layout)&lt;br /&gt;
|-&lt;br /&gt;
|ß&lt;br /&gt;
|[AltGr]+[s]&lt;br /&gt;
|-&lt;br /&gt;
|§&lt;br /&gt;
|[AltGr]+[S]&lt;br /&gt;
|-&lt;br /&gt;
|°&lt;br /&gt;
|[AltGr]+[)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Privacy Switches ===&lt;br /&gt;
There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Privacy switch function and description&lt;br /&gt;
! Combination&lt;br /&gt;
! Effect&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F10&lt;br /&gt;
| Microphone Privacy switch&lt;br /&gt;
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F11&lt;br /&gt;
| WiFi Privacy switch&lt;br /&gt;
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.&lt;br /&gt;
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&amp;amp;pid=52645#pid52645 command line hack to bind/unbind]).&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F12&lt;br /&gt;
| Camera privacy switch&lt;br /&gt;
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
| Can use tools like '''&amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;''' to detect camera's presence. If not detected, check privacy switch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''&lt;br /&gt;
&lt;br /&gt;
The keyboard operates on firmware independent of the operating system.  It detects if one of the F10, F11 or F12 keys is pressed in combination with the Pine key for 3 seconds. Doing so disables power to the appropriate peripheral, thereby disabling it.  This has the same effect as cutting off the power to each peripheral with a physical switch. This implementation is very secure, since the firmware that determines whether a peripheral gets power is not part of the Pinebook Pro’s operating system. So the power state value for each peripheral cannot be overridden or accessed from the operating system. The power state setting for each peripheral is stored across reboots inside the keyboard's firmware flash memory.&lt;br /&gt;
&lt;br /&gt;
=== Basic summary of replacing keyboard ===&lt;br /&gt;
&lt;br /&gt;
This guide is very basic and should be fleshed out with (better) pictures.  There just isn't a list of steps anywhere else yet.&lt;br /&gt;
&lt;br /&gt;
Here's what the replacement keyboard looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]&lt;br /&gt;
&lt;br /&gt;
''Step 0'': If changing from ISO keyboard to ANSI keyboard, or vice versa, be sure to have a system capable of running the firmware updater that you can access either remotely or with a USB keyboard beyond the internal keyboard, as the firmware for each is very different and keys won't work correctly.  See https://forum.pine64.org/showthread.php?tid=8407 (and for NetBSD, https://forum.pine64.org/showthread.php?tid=8716).&lt;br /&gt;
&lt;br /&gt;
''Step 1'': The remove back back panel.&lt;br /&gt;
&lt;br /&gt;
There are 10 screws on the back that must be removed, and the back panel detached.  I recommend using a PH0 bit.  The speakers may remain attached via glue to the case and should be carefully pried off.  When this is done, taking photos of how everything looks now can help put it all back together later.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 2'': Places to unscrew.&lt;br /&gt;
&lt;br /&gt;
There are 3 items screwed into the keyboard frame that must be removed.  There are 2 large screws for daughter board, 3 large screws and 1 small screw for mainboard, and 4 small screws for battery.  Be sure to not lose them.  I recommend a PH00 bit for the large screws on the daughter and main boards and a PH1 bit for the small screws on the battery and mainboard.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 3'': Remove the battery.&lt;br /&gt;
&lt;br /&gt;
Once the battery screws are removed, it should be unplugged from the mainboard and removed.  Note that there are two unconnected cables lying around, that should remain unconnected.  They are used when the battery is disconnected entirely.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]&lt;br /&gt;
&lt;br /&gt;
''Step 4'': Unplug the ribbon cables.&lt;br /&gt;
&lt;br /&gt;
NOTE: you should remove the M.2 adapter board now if you have one installed. See elsewhere in this wiki for instructions on how to install/remove that piece.&lt;br /&gt;
&lt;br /&gt;
There are several ribbon cables.  To remove, flip up the tab and gentle pull the ribbon out.&lt;br /&gt;
&lt;br /&gt;
* One cable runs from the mainboard to the daughterboard underneath the battery.  Detach from both ends.  With the battery removed, detach from keyboard shell, and set aside for the new keyboard shell.&lt;br /&gt;
* One cable runs between the touchpad and the mainboard.  Detach from both ends, and also set aside.&lt;br /&gt;
* One cable runs between the keyboard and the mainboard.  This one remains attached to the keyboard and only needs to be detached from the mainboard.&lt;br /&gt;
* One cable from the LCD attaches near the lid hinge.  It should be just unplugged.&lt;br /&gt;
&lt;br /&gt;
''Step 5'': Detach microphone, speakers, and antenna.  &lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]&lt;br /&gt;
&lt;br /&gt;
The speakers, microphone, and antenna don't have to be detached from the mainboard, but they need to be detached from the keyboard shell.  The microphones are held in place by tape, and the speakers have sticky sides.  The speakers are found obviously, but the microphones (two of) can be found between the battery and the hinge area. Each microphone can be carefully pulled/wedged out of its position by a small screwdriver or pick.  The antenna, similar to the microphones, is found near the hinge area and to the top left of the battery.&lt;br /&gt;
&lt;br /&gt;
''Step 6'': Remove mainboard and daughterboard.&lt;br /&gt;
&lt;br /&gt;
At this point, the mainboard and daughterboards should be removed.  When unscrewed (see Step 2) they should pull out fairly easily.  Put them aside (including microphones and speakers if left attached.)&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]&lt;br /&gt;
&lt;br /&gt;
''Step 7'': Detach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
Step 2 didn't tell you, there are 6 more screws to remove here, 3 for each of the hinges.  I recommend a PH1 bit for these screws.  Unscrew these and the LCD panel will be able to be removed.  You may have to jiggle or move the hinges for this.  When detached, be sure to place the LCD panel such that the display is protected.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]&lt;br /&gt;
&lt;br /&gt;
''Step 8'': Try Not To Break Your Touchpad, or, How I Learned To Love Things That Bend&lt;br /&gt;
&lt;br /&gt;
'''NOTE This section really feels like you're going to break something.'''&lt;br /&gt;
&lt;br /&gt;
The touchpad is glued to the keyboard shell and it's glued well.  There are two places it is glued to.  If you can, only the middle must be force-detached.  You will think you're going to break it.  Gently apply increasing force until the glue begins to detach (you will hear a crackle as it comes off), and continue very slowly until the whole thing is detached.  This may take minutes due to that feeling you're going to break it.&lt;br /&gt;
&lt;br /&gt;
I found it helpful to lift the top left plastic bit on the keyboard to unstick that portion of the touchpad, then push on the top left portion of the touchpad to unstick the rest of the touchpad.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
&lt;br /&gt;
''Step 9'': Over the hill, touchpad goes into new shell.&lt;br /&gt;
&lt;br /&gt;
In the new keyboard shell put the touchpad back where it was, hopefully the glue will remain sufficiently attached.  If there is a glue issue, this guide unfortunately has no advice currently.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Step 10'': Reattach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The LCD panel should slot back into the keyboard frame, the same way it came out.  If the hinges were moved, they should be *very* *gently* closed such that the LCD panel and keyboard closed like normal for the remaining steps.&lt;br /&gt;
&lt;br /&gt;
''Step 11'': Tape it out.&lt;br /&gt;
&lt;br /&gt;
Move any tape from the old keyboard shell to the new one.  These items protect the mainboard and daughterboard, and keep various wires in their right place.  Some are grey and some are black.  For tape that holds the speakers, microhones, or their cables in place, do not reattach yet.&lt;br /&gt;
&lt;br /&gt;
''Step 12'': Board install.&lt;br /&gt;
&lt;br /&gt;
Install the mainboard, the daughtboard, and their connecting ribbon cable.  Be sure to put the boards in place, 2 large flat screws for the daughterboard, 3 large flat screws and one small screw for the mainboard, before attempting to place the ribbon.&lt;br /&gt;
&lt;br /&gt;
''Step 13'': Microphone, speaker, and antenna install.&lt;br /&gt;
&lt;br /&gt;
Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker &amp;quot;out&amp;quot; faces up, and the microphone cables as connected must face up (these are opposite directions.)&lt;br /&gt;
&lt;br /&gt;
''Step 14'': Reattach other ribbon cables.&lt;br /&gt;
 &lt;br /&gt;
NOTE: this would be a good time to attach/install the M.2 adapter board if that is desired. See elsewhere in this wiki for those instructions.&lt;br /&gt;
&lt;br /&gt;
The LCD panel, keyboard and touchpad ribbon cables should be reattached.  Make sure the flap is open, insert the ribbon into the slot (a portion of the cable will disappear), and push the flap down.  The cable should not be easy to pull out.&lt;br /&gt;
 &lt;br /&gt;
''Step 15'': Reattach the battery, and final re-tape.&lt;br /&gt;
  &lt;br /&gt;
The battery should be installed with the 4 screws holding it in place, and the connector attached to the mainboard.  Be sure to keep the two other cables remain unconnected.  Ensure all wires and other tapes are held in place.&lt;br /&gt;
&lt;br /&gt;
''Step 16'': Reattach the back panel.&lt;br /&gt;
 &lt;br /&gt;
Put the back panel back on, and reattach the 10 screws.&lt;br /&gt;
&lt;br /&gt;
''Step 17'': If you changed from ISO to ANSI or from ANSI to ISO, you'll need to update your firmware now.  See the links in Step 0 above.&lt;br /&gt;
&lt;br /&gt;
== Touchpad (trackpad) ==&lt;br /&gt;
Documentation for the touchpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. It is the only component of the Pinebook Pro held in place with strong adhesive tape. Here are some of its features:&lt;br /&gt;
&lt;br /&gt;
* 2 actuating buttons.&lt;br /&gt;
&lt;br /&gt;
* multi-touch functionality. &lt;br /&gt;
&lt;br /&gt;
* A matte finish that your finger can slide along easily.&lt;br /&gt;
&lt;br /&gt;
* A reasonable size (96mm &amp;amp;times; 64mm; diagonal: 115.378mm or 4.542&amp;amp;rdquo;).&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:&lt;br /&gt;
&lt;br /&gt;
* Update the firmware.&lt;br /&gt;
&lt;br /&gt;
* Keep your 2 fingers spread apart rather than close together.&lt;br /&gt;
&lt;br /&gt;
* Individual programs might need to be configured specially.&lt;br /&gt;
&lt;br /&gt;
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:&lt;br /&gt;
&lt;br /&gt;
::: &amp;lt;code&amp;gt;MOZ_USE_XINPUT2=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Experiment with other settings, via [[#X-Windows Configuration|X-Windows Configuration]] or some other system preferences; for example, you could disable double-finger scrolling, and instead enable scrolling by sliding one finger along the edge of the touchpad.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and it's software, then to the keyboard controller's USB port. Note that the touchpad does have separate firmware, (which has to be written through the keyboard controller). The touchpad vendor&amp;amp;rsquo;s firmware binary can be flashed from userspace using the following open source command-line utility:&lt;br /&gt;
&lt;br /&gt;
* Kamil Trzciński&amp;amp;rsquo;s [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].&lt;br /&gt;
&lt;br /&gt;
Naturally, forks have begun to appear:&lt;br /&gt;
&lt;br /&gt;
* Jack Humbert&amp;amp;rsquo;s [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]&lt;br /&gt;
&lt;br /&gt;
* Dragan Simic&amp;amp;rsquo;s [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor, which greatly improves the control of the cursor (see this [https://forum.pine64.org/showthread.php?tid=14531 thread] for discussion); before installing this update, consider resetting to the defaults any configuration of your touchpad.&lt;br /&gt;
&lt;br /&gt;
'''Every Pinebook Pro produced before September 2021 should have its keyboard and touchpad firmware updated.'''&lt;br /&gt;
&lt;br /&gt;
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed. See [//old.reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Before updating ''any'' firmware, your Pinebook Pro should be either fully charged or, preferably, running from mains. This utility will be writing data to chips on the keyboard and touchpad, so a loss of power during any stage of the update can result in irrecoverable damage to your touchpad or keyboard.&lt;br /&gt;
&lt;br /&gt;
The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies. The instructions below assume a Debian desktop. To install these dependencies, newer Pinebook Pro models that come with Manjaro will require a different command.&lt;br /&gt;
&lt;br /&gt;
There are two keyboard versions of the Pinebook Pro: ISO and ANSI. You need to know which model you have prior to running the updater. &lt;br /&gt;
Firmware update steps for both models are listed below.  &lt;br /&gt;
&lt;br /&gt;
What you will need:&lt;br /&gt;
&lt;br /&gt;
* Connection to WiFi (for getting dependencies).&lt;br /&gt;
&lt;br /&gt;
* Your Pinebook Pro fully charged or running from mains power.&lt;br /&gt;
&lt;br /&gt;
* An external USB keyboard &amp;amp;amp; mouse (or access to the Pinebook Pro via SSH. Please note that for some configurations, the SSH service might not be available without first having logged in once; in this case, you will definitely want at least an external keyboard).&lt;br /&gt;
&lt;br /&gt;
==== ISO Model ====&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ANSI Model ====&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Running step 1 on the ANSI keyboard model will make the keyboard and touchpad inaccessible until step 2 is run, so an external keyboard must be connected to complete the update on this model!}}&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, if some of the keys produce incorrect characters, please check your OS’s language settings. For ANSI users, the default OS may have shipped with English UK as the default language; you can change it to English US if desired.&lt;br /&gt;
&lt;br /&gt;
==== Revised Firmware ====&lt;br /&gt;
&lt;br /&gt;
In addition, you might consider using revised firmware data; this is one final step that should not require a reboot:&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ISO''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_iso.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ANSI''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_ansi.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Windows Configuration ===&lt;br /&gt;
''Before making adjustments, consider updating the firmware; reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.''&lt;br /&gt;
&lt;br /&gt;
Some forum members have found that an adjustment to X-Windows will allow finer motion in the touchpad. If you use the '''Synaptic''' mouse/touchpad driver, use this command to make the change live:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may experiment with different settings, but 0.25 was tested as helping noticeably.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To make the change persist across reboots, change the file &amp;lt;code&amp;gt;/etc/X11/xorg.conf&amp;lt;/code&amp;gt; similar to below:&lt;br /&gt;
&amp;lt;pre&amp;gt;    Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;touchpad catchall&amp;quot;&lt;br /&gt;
        Driver &amp;quot;synaptics&amp;quot;&lt;br /&gt;
        MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
        MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
        Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&lt;br /&gt;
    EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
The line &amp;lt;code&amp;gt;Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&amp;lt;/code&amp;gt; is the change.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Another forum user built on the above settings a little, and have found these to be very good:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&lt;br /&gt;
synclient TapButton1=1&lt;br /&gt;
synclient TapButton2=3&lt;br /&gt;
synclient TapButton3=2&lt;br /&gt;
synclient FingerLow=30&lt;br /&gt;
synclient PalmDetect=1&lt;br /&gt;
synclient VertScrollDelta=64&lt;br /&gt;
synclient HorizScrollDelta=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FingerLow&amp;lt;/code&amp;gt; has the same value as 'FingerHigh' in one config (30). It is believed to help reduce mouse movement as you lift your finger, but it's unknown whether synaptic works like this.&lt;br /&gt;
You may find this config to be comfortable for daily use.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TabButton&amp;lt;/code&amp;gt; allows to just tab the touchpad instead of physically pressing it down (to get this click noise).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;right mouse click&amp;lt;/code&amp;gt; is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:&lt;br /&gt;
&amp;lt;pre&amp;gt; synclient MaxTapTime=250 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some users may encounter an issue with the mouse jumping when typing when using libinput driver (has not been test with synaptic) due to their hand hitting the touchpad which can be fixed by updating the xorg settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the xorg config simliar to the previou example. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;on&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setting can be verified by using the xinput command to first list the devices and then listing the properties for the Touchpad device. Exact commands to check this have been omitted for save of brevity. If DisableWhileTyping is shown enabled but does not appear to be working the issue may be due to the fact that the keyboard is connected to a USB bus which causes it to be seen as a external keyboard. To resolve this one can add the config below which sets the keyboard to internal to ensure the DisableWhileTyping works properly. &lt;br /&gt;
&lt;br /&gt;
You will need to edit &amp;lt;code&amp;gt;/etc/libinput/local-overrides.quirks&amp;lt;/code&amp;gt; and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Serial Keyboards]&lt;br /&gt;
MatchUdevType=keyboard&lt;br /&gt;
MatchBus=usb&lt;br /&gt;
AttrKeyboardIntegration=internal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once X11 is restarted the new setting should now take effect and you will no longer be able to use the touchpad while typing which will mostly eliminate the mouse jumping issue.&lt;br /&gt;
&lt;br /&gt;
== Power Supply ==&lt;br /&gt;
* Input Power: 5V DC @ 3A&lt;br /&gt;
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack&lt;br /&gt;
* USB-C 5V, 15W PD quickcharge&lt;br /&gt;
* Only use one power input at a time, barrel jack OR USB-C&lt;br /&gt;
&lt;br /&gt;
== LEDs ==&lt;br /&gt;
In total, there are four LEDs on the Pinebook Pro, three of which are placed in the top-left side of the keyboard, and one near the barrel port: &lt;br /&gt;
&lt;br /&gt;
# The red LED next to the barrel port indicates charging, in three ways.  First, it will illuminate steadily when either the factory power supply or a USB Type-C charger is connected to the Pinebook Pro, and the battery is getting charged.  Second, if the battery is at 100%, the LED will remain turned off regardless of the connected power input; however, this is [https://forum.pine64.org/showthread.php?tid=10899 rather rarely achieved].  Third, this LED will flash at 0.5&amp;amp;nbsp;Hz if there are any problems that prevent charging, such as the battery becoming too hot.&lt;br /&gt;
# The power indicator LED, above the keyboard, supports three different colors: green, amber and red. It is also capable of flashing to indicate eMMC activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused). &lt;br /&gt;
# The green NumLock LED, above the keyboard.&lt;br /&gt;
# The green CapsLock LED, above the keyboard.&lt;br /&gt;
&lt;br /&gt;
The NumLock and CapsLock LEDs serve their usual purposes on a keyboard, but they also have a secondary function. When the privacy switches get activated they blink to confirm that the switch has been activated.&lt;br /&gt;
&lt;br /&gt;
== Webcam ==&lt;br /&gt;
{{Hint| You can use Cheese to test the Camera functionality}}&lt;br /&gt;
* Streaming video resolutions supported, (uncompressed):&lt;br /&gt;
** 320 x 240 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
* Still frame resolutions supported:&lt;br /&gt;
** 160 x 120&lt;br /&gt;
** 176 x 144&lt;br /&gt;
** 320 x 240&lt;br /&gt;
** 352 x 288 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
While it has been said that some Pinebook Pro units contain only one microphone despite having two labeled microphone holes on the outer casing, other units do indeed contain two microphones. It is presently unclear which batches have either configuration; units from the initial community batch of 1000 units (following the initial 100) are believed to contain two, populating both labeled holes.&lt;br /&gt;
&lt;br /&gt;
The wires leading to both microphones connect to the mainboard with a small white plastic connector, located directly adjacent to the ribbon cable attachment point for the keyboard interface.&lt;br /&gt;
&lt;br /&gt;
'''Microphones not working?'''&lt;br /&gt;
&lt;br /&gt;
If pavucontrol input doesn't show microphone activity try changing the [[Pinebook_Pro#Privacy_Switches|privacy switches]]. If the switches are in the correct place and microphone input isn't working you can run &amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt; from the command line, hit &amp;lt;i&amp;gt;F6&amp;lt;/i&amp;gt; and select the &amp;lt;i&amp;gt;es8316&amp;lt;/i&amp;gt;, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0dB, change the audio profile in pavucontrol to another one with input. Additionally you may want to modify ADC PGA to get the levels to where you want them. If that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the section [[#Technical Reference|Technical Reference]]).&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and WiFi ==&lt;br /&gt;
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]&lt;br /&gt;
===Hardware Overview===&lt;br /&gt;
The Pinebook Pro contains an AMPAK AP6256 wireless module to provide Wi-Fi (compliant to IEEE 802.11ac) and Bluetooth (compliant to Bluetooth SIG revision 5.0). The module contains a Broadcom transceiver IC, believed to be the BCM43456, as well as the support electronics needed to allow the Wi-Fi and Bluetooth modes to share a single antenna. &lt;br /&gt;
&lt;br /&gt;
The wireless module interfaces with the Pinebook Pro’s system-on-chip using a combination of three interfaces: Bluetooth functionality is operated by serial UART and PCM, while the Wi-Fi component uses SDIO. It is unknown if the module’s Bluetooth capabilities are usable under operating systems that do not support SDIO.&lt;br /&gt;
&lt;br /&gt;
The module’s RF antenna pin is exposed on the mainboard via a standard Hirose U.FL connector, where a coaxial feedline links it to a flexible adhesive antenna situated near the upper right corner of the Pinebook Pro’s battery. As the RF connector is fragile and easily damaged, it should be handled carefully during connection and disconnection, and should not be reconnected frequently.&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
Problems have been reported with the Wi-Fi transceiver’s reliability during extended periods of high throughput, especially on the 2.4 GHz band. While the cause of this has yet to be determined, switching to the 5 GHz band may improve stability.&lt;br /&gt;
&lt;br /&gt;
Since the Bluetooth transceiver shares both its spectrum and antenna with 2.4 GHz Wi-Fi, simultaneous use of these modes may cause interference, especially when listening to audio over Bluetooth. If Bluetooth audio cuts out frequently, switching to the 5 GHz band – or deactivating Wi-Fi – may help.&lt;br /&gt;
&lt;br /&gt;
===Wi-Fi Capabilities===&lt;br /&gt;
Wi-Fi on the Pinebook Pro is capable of reaching a maximum data transfer rate of approximately 433 megabits per second, using one spatial stream. The transceiver does not support multiple spatial streams or 160-MHz channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
The Wi-Fi transceiver supports the lower thirteen standard channels on the 2.4 GHz band, using a bandwidth of 20 MHz. At least twenty-four channels are supported on the 5 GHz band, spanning frequencies from 5180 to 5320 MHz, 5500 to 5720 MHz, and 5745 to 5825 MHz, with bandwidths of 20, 40, or 80 MHz.&lt;br /&gt;
&lt;br /&gt;
Maximum reception sensitivity for both bands is approximately -92 dBm. The receiver can tolerate input intensities of no more than -20 dBm on the 2.4 GHz band, and no more than -30 dBm on the 5 GHz band. Maximum transmission power is approximately +15 dBm for either band, falling further to approximately +10 dBm at higher data transfer rates on the 5 GHz band.&lt;br /&gt;
&lt;br /&gt;
With current available drivers and firmware, the Wi-Fi interface supports infrastructure, ad-hoc, and access-point modes with satisfactory reliability. Monitor mode is not presently supported. Wi-Fi Direct features may be available, but it is unclear how to make use of them under Linux.&lt;br /&gt;
&lt;br /&gt;
Be aware that Linux userspace utilities, such as &amp;lt;code&amp;gt;iw&amp;lt;/code&amp;gt;, may report inaccurate information about the capabilities of wireless devices. Parameter values derived from vendor datasheets, or direct testing, should be preferred to the outputs of hardware-querying tools.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth Capabilities===&lt;br /&gt;
Bluetooth data transfer speeds have an indicated maximum of 3 megabits per second, but it is unclear what practical data rates can be expected. Audio streaming over Bluetooth is functioning normally, as is networking. Bluetooth Low-Energy functions, such as interacting with Bluetooth beacons, have not yet been tested conclusively.&lt;br /&gt;
&lt;br /&gt;
The Bluetooth transceiver supports all 79 channel allocations, spanning frequencies from 2402 MHz to 2480 MHz. Reception sensitivity is approximately -85 dBm, with a maximum tolerable reception intensity of -20 dBm. Bluetooth transmission power is limited to +10 dBm.&lt;br /&gt;
&lt;br /&gt;
===Disabling Bluetooth===&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth under Linux once:&lt;br /&gt;
&lt;br /&gt;
 sudo rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
To confirm if Bluetooth under Linux is disabled:&lt;br /&gt;
&lt;br /&gt;
 rfkill&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable rfkill-block@bluetooth&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select &amp;lt;i&amp;gt;plugins&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;PowerManager&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;configuration&amp;lt;/i&amp;gt; and then deselect the &amp;lt;i&amp;gt;auto power on&amp;lt;/i&amp;gt; option&lt;br /&gt;
&lt;br /&gt;
== LCD Panel ==&lt;br /&gt;
* Model: BOE NV140FHM-N49&lt;br /&gt;
* 14.0&amp;quot; (35.56&amp;amp;nbsp;cm) diagonal size&lt;br /&gt;
* 1920x1080 resolution&lt;br /&gt;
* 60&amp;amp;nbsp;Hz refresh rate&lt;br /&gt;
* IPS technology&lt;br /&gt;
* 1000:1 contrast&lt;br /&gt;
* 250&amp;amp;nbsp;nit brightness&lt;br /&gt;
* 63% sRGB coverage&lt;br /&gt;
* 6-bit color&lt;br /&gt;
* 30-pin eDP connection&lt;br /&gt;
&lt;br /&gt;
Some people have tested hardware video decode using the following;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External ports list ==&lt;br /&gt;
Here are a list of the external ports. See [[Pinebook_Pro#Expansion_Ports|Technical Reference - Expansion Ports]] for port specifications.&lt;br /&gt;
* Left side&lt;br /&gt;
** Barrel jack for power, (with LED)&lt;br /&gt;
** USB 3, Type A&lt;br /&gt;
** USB 3, Type C&lt;br /&gt;
* Right side&lt;br /&gt;
** USB 2, Type A&lt;br /&gt;
** Standard headset jack&lt;br /&gt;
** MicroSD card slot&lt;br /&gt;
&lt;br /&gt;
== Using the UART ==&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. Swapping the tx and rx around from this also works and is more traditional. See the official [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 document].]]&lt;br /&gt;
&lt;br /&gt;
UART output is enabled by flipping the UART switch to the ON position (item 9). To do so you need to remove the Pinebook Pro's bottom cover - please follow [[Pinebook_Pro#Disassembly_and_Reassembly|proper disassembly and reassembly protocol]]. The OFF position is towards the touchpad, the ON position is towards the display hinges.&lt;br /&gt;
&lt;br /&gt;
With the UART switch in the ON position, console is relayed via the audiojack and the laptop's sound is turned OFF. Please ensure that you are using a 3.3&amp;amp;nbsp;V interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3&amp;amp;nbsp;V and 5&amp;amp;nbsp;V variants) to avoid damage to the CPU.  Older version of the serial console cable sold by Pine64 uses wrong voltage level and should not be used; see [https://forum.pine64.org/showthread.php?tid=9367 this forum thread] for further information.  Recent version of the same cable uses the right voltage level.&lt;br /&gt;
&lt;br /&gt;
Insert the USB plug of the cable into an open USB port on the machine which will monitor, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro audio port. Run the following in a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you should find a line similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serial output should now be accessible using screen, picocom or minicom (and others).&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&lt;br /&gt;
picocom /dev/ttyUSB0 -b 1500000&lt;br /&gt;
&lt;br /&gt;
minicom -D /dev/ttyUSB0 -b 1500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old versions of U-Boot do not use the UART for console output. &amp;lt;strike&amp;gt;The console function is activated by the Linux kernel. Thus, if you use a non-Pinebook Pro Linux distro and want the UART as a console, you have to manually enable it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the optional NVMe adapter ==&lt;br /&gt;
The optional NVMe adapter allows the use of M.2 cards that support the NVMe standard, (but not SATA standard). The optional NVMe M.2 adapter supports '''M''' &amp;amp; '''M'''+'''B''' keyed devices, in both 2242 &amp;amp; 2280 physical sizes, the most common ones available. In addition, 2230 &amp;amp; 2260 are also supported, though NVMe devices that use those sizes are rare.&lt;br /&gt;
&lt;br /&gt;
Once you have fitted and tested your NVMe drive, please add a note to this page [[Pinebook Pro Hardware Accessory Compatibility]] to help build a list of tried and tested devices.&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in PineBook Pro.&lt;br /&gt;
&lt;br /&gt;
=== Installing the adapter ===&lt;br /&gt;
The V2.1-2019-0809 SSD adapter that shipped with the initial Pinebook Pro batches had significant issues. A repair kit will be shipped to address those issues.&lt;br /&gt;
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&amp;amp;pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)&lt;br /&gt;
&lt;br /&gt;
The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with touchpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.&lt;br /&gt;
&lt;br /&gt;
This is the link to the Pinebook Pro accessories in the store: [[https://pine64.com/?v=0446c16e2e66]]&lt;br /&gt;
&lt;br /&gt;
Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found [https://eli.gladman.cc/blog/2020/06/23/pine-book-pro-nvme.html here].&lt;br /&gt;
&lt;br /&gt;
=== Post NVMe install power limiting ===&lt;br /&gt;
Some NVMe SSDs allow reducing the maximum amount of power. Doing so may reduce the speed, but it may be needed in the Pinebook Pro to both improve reliability at lower battery levels. And to reduce power used, to maintain battery life.&lt;br /&gt;
Here are the commands to obtain and change the power settings. The package 'nvme-cli' is required to run these commands. The example shows how to find the available power states, and then sets it to the lowest, non-standby setting, (which is 3.8 watts for the device shown);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme id-ctrl /dev/nvme0&lt;br /&gt;
NVME Identify Controller:&lt;br /&gt;
...&lt;br /&gt;
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0&lt;br /&gt;
         rwt:0 rwl:0 idle_power:- active_power:-&lt;br /&gt;
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1&lt;br /&gt;
         rwt:1 rwl:1 idle_power:- active_power:-&lt;br /&gt;
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2&lt;br /&gt;
         rwt:2 rwl:2 idle_power:- active_power:-&lt;br /&gt;
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3&lt;br /&gt;
         rwt:3 rwl:3 idle_power:- active_power:-&lt;br /&gt;
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4&lt;br /&gt;
         rwt:4 rwl:4 idle_power:- active_power:-&lt;br /&gt;
&lt;br /&gt;
$ sudo nvme get-feature /dev/nvme0 -f 2&lt;br /&gt;
get-feature:0x2 (Power Management), Current value:00000000&lt;br /&gt;
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s&lt;br /&gt;
set-feature:02 (Power Management), value:0x000002&amp;lt;/pre&amp;gt;&lt;br /&gt;
Some NVMe SSDs don't appear to allow saving the setting with &amp;quot;-s&amp;quot; option. In those cases, leave off the &amp;quot;-s&amp;quot; and use a startup script to set the non-default power state at boot.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to test performance without saving the new power setting semi-permanantly, then leave off the &amp;quot;-s&amp;quot; option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving &amp;amp; transitions based on usage. To check if you have a NVMe SSD with this feature;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme get-feature -f 0x0c -H /dev/nvme0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Information for this feature, (on a Pinebook Pro), is a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Using as data drive ===&lt;br /&gt;
As long as the kernel in use has both the PCIe and NVMe drivers, you should be able to use a NVMe drive as a data drive. It can automatically mount when booting from either the eMMC or an SD card. This applies to Linux, FreeBSD, and Chromium, using the normal partitioning and file system creation tools. Android requires testing.&lt;br /&gt;
&lt;br /&gt;
=== Using as OS root drive ===&lt;br /&gt;
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the [https://github.com/mrfixit2001/updates_repo/blob/v1.1/pinebook/filesystem/mrfixit_update.sh U-Boot update script] from the mrfixit2001 Debian or [https://pastebin.com/raw/EeK074XB Arglebargle's modified script], and [https://github.com/pcm720/rockchip-u-boot/releases the modified u-boot images] provided by forum user pcm720, you can now add support to boot from an NVMe drive. Binary images are useable with SD, eMMC, and [[Pinebook_Pro_SPI|SPI flash]]. For OS images using the mainline kernel, there are a few variants of U-Boot available that also support NVMe as the OS drive. Though these may require writing the U-Boot to the SPI flash for proper use of the NVMe as the OS drive.&lt;br /&gt;
&lt;br /&gt;
The current boot order, per last testing, for this modified U-Boot is:&lt;br /&gt;
*MicroSD&lt;br /&gt;
*eMMC&lt;br /&gt;
*NVMe&lt;br /&gt;
&lt;br /&gt;
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&amp;amp;pid=53764#pid53764 the forum post.]&lt;br /&gt;
&lt;br /&gt;
It is also possible to initially boot off an eMMC or SD card, then transfer to a root file system on the NVMe. Currently, it is necessary to have the U-Boot code on an eMMC or SD card.  (A forum member [https://forum.pine64.org/showthread.php?tid=8439 posted here] about using a modified version of U-Boot with NVMe drivers, that uses &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; off the NVMe drive. So this may change in the future.)&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].&lt;br /&gt;
&lt;br /&gt;
== Caring for the PineBook Pro ==&lt;br /&gt;
=== Bypass Cables ===&lt;br /&gt;
The mainboard features two (disconnected by default) bypass cables that are only to be used with the battery disconnected. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run the laptop without a battery. Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice].  &lt;br /&gt;
&lt;br /&gt;
'''Note that despite the bypass cable being a two conductor cable, it is only used as one. Both wires being soldered together on either side is normal!'''&lt;br /&gt;
&lt;br /&gt;
{{warning|Do not connect the bypass cables with the battery connected.  Using the bypass cables with the battery connected can permanently damage the computer.}}&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Service Step-by-Step Guides ===&lt;br /&gt;
&lt;br /&gt;
Under [[Pinebook_Service_Step_by_Step_Guides|Service Guides for Pinebook]] you can find instructions guides concerning disassembly of:&lt;br /&gt;
&lt;br /&gt;
* The installation process on Pinebook Pro similar to 14&amp;quot; Pinebook&lt;br /&gt;
* The installation process is the reverse order of removal guide:&lt;br /&gt;
** 14″ Pinebook Lithium Battery Pack Removal Guide&lt;br /&gt;
** 14″ Pinebook LCD Panel Screen Removal Guide&lt;br /&gt;
** 14″ Pinebook eMMC Module Removal Guide&lt;br /&gt;
&lt;br /&gt;
== Using the SPI flash device ==&lt;br /&gt;
&lt;br /&gt;
See [[Pinebook Pro SPI]] for details.&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro comes with a 128Mbit, (16MByte), flash device suitable for initial boot target, to store the bootloader. The SoC used on the Pinebook Pro boots from this SPI flash device first, before eMMC or SD card. At present, April 19, 2020, the Pinebook Pros ship without anything programmed in the SPI flash device. So the SoC moves on to the next potential boot device, the eMMC. ARM/ARM64 computers do not have a standardized BIOS, yet.&lt;br /&gt;
&lt;br /&gt;
Here is some information on using the SPI flash device:&lt;br /&gt;
&lt;br /&gt;
* You need the kernel built with SPI flash device support, which will supply a device similar to: code&amp;gt;/dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The Linux package below, will need to be available: &amp;lt;code&amp;gt;mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
* You can then use this program from the package to write the SPI device: &amp;lt;code&amp;gt;flashcp &amp;amp;lt;filename&amp;amp;gt; /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you need to recover from a defective bootloader written to the SPI flash, you can simply short pin 6 of the SPI flash to GND and boot. This will render the SoC bootrom unable to read from the SPI flash and have it fall back to reading the bootloader from other boot media like the eMMC or Micro SD card.&lt;br /&gt;
&lt;br /&gt;
The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware. At present, April 19th, 2020, there is no good bootloader image to flash into the SPI flash device. This is expected to change, as there are people working on issue.&lt;br /&gt;
&lt;br /&gt;
= Software tuning guide =&lt;br /&gt;
Details on how to get the most out of a Pinebook Pro &amp;amp; its RK3399 SoC.&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's default Manjaro KDE system ==&lt;br /&gt;
=== Watching DRM content (Netflix, etc.) ===&lt;br /&gt;
Most paid online streaming services use Widevine DRM to make their content more difficult to pirate. Widevine is not directly supported on Manjaro KDE, however it is still possible to watch DRM content via the &amp;quot;chromium-docker&amp;quot; package which downloads a 32-bit ARM container and installs Chromium with Widevine inside of that. While not space-efficient, or efficient in general, it's the recommended solution for watching this content on your Pinebook Pro. You can install this package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy chromium-docker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking GPU capabilities ===&lt;br /&gt;
To see what versions of OpenGL and OpenGL ES are supported by the Pinebook Pro, what driver is in use, and what version of the driver is loaded, install the &amp;quot;mesa-demos&amp;quot; package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy mesa-demos&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then run:&lt;br /&gt;
&amp;lt;pre&amp;gt;glxinfo | grep OpenGL&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give detailed information about your graphics card and driver, useful for debugging.&lt;br /&gt;
&lt;br /&gt;
=== Better GPU compatibility and performance ===&lt;br /&gt;
For better graphics performance, you may install the &amp;quot;mesa-git&amp;quot; package, built and supplied in the Manjaro ARM repos. This lets you bring in the latest features, optimizations, and bugfixes for the graphics driver used by the Pinebook Pro. Installation is as simple as:&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sy mesa-git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you may reboot to load the newer driver.&lt;br /&gt;
&lt;br /&gt;
With Mesa 20.2 there is no longer much reason to use this over the standard mesa package, and applications may occasionally break with mesa-git.&lt;br /&gt;
&lt;br /&gt;
[https://docs.mesa3d.org/bugs.html Reporting bugs] to the Mesa project will help make sure any problems are quickly fixed.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL 3.3 support ===&lt;br /&gt;
By default, with the current state of the Panfrost GPU driver, the Pinebook Pro supports OpenGL 2.1 and OpenGL ES 3.0. If you want to use OpenGL 3.3, you need to set the system-wide environment variable, open the '''/etc/environment''' file with:&lt;br /&gt;
&amp;lt;pre&amp;gt;kate /etc/environment&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then at the bottom of the file, on a new line, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;PAN_MESA_DEBUG=&amp;quot;gl3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then save the file, entering your password when prompted, and reboot the system. When you check your GPU capabilities, it should report OpenGL 3.3 and applications that rely on it should function properly. Note that GL 3.3 support is incomplete and some rendering features do not work yet, notably geometry shaders.&lt;br /&gt;
&lt;br /&gt;
=== Install Anbox on Pinebook Pro Manjaro 20.10 ===&lt;br /&gt;
[https://www.youtube.com/watch?v=EU8_Q11dATs Youtube video on installing Anbox on Pienbook Pro Manjaro Build 20.10 by LivingLinux]&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's previously-default Debian system ==&lt;br /&gt;
Here are some hints on what you can do to customize the Pinebook Pro's previous factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])&lt;br /&gt;
&lt;br /&gt;
=== Initial user changes, password, name, etc ===&lt;br /&gt;
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.&lt;br /&gt;
&lt;br /&gt;
* Reboot (this is just to ensure all background processes belong to the user are not running... there are other ways to achieve this but this way is easy)&lt;br /&gt;
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal&lt;br /&gt;
* Login as root (login: root, password: root)&lt;br /&gt;
* Set a strong password for the root user using the following command and it's prompts:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd (and follow prompts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock user to your prefered username (replace myself with whatever you like):&lt;br /&gt;
&amp;lt;pre&amp;gt;# usermod -l myself -d /home/myself -m rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock group to match your preferred username:&lt;br /&gt;
&amp;lt;pre&amp;gt;# groupmod -n myself rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Put your name in the account, (replace &amp;quot;John A Doe&amp;quot; with your name):&lt;br /&gt;
&amp;lt;pre&amp;gt;# chfn -f &amp;quot;John A Doe&amp;quot; myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set a strong password for the normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Log out of the text terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;# logout&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user&lt;br /&gt;
* Open text terminal to fix login error: &amp;quot;Configured directory for incoming files does not exist&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ blueman-services&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select &amp;quot;Transfer&amp;quot; tab and set &amp;quot;Incoming Folder&amp;quot; to myself&lt;br /&gt;
OR&lt;br /&gt;
If adduser is in distro, this is MUCH easier&lt;br /&gt;
sudo adduser $USER ,, fill out requested data&lt;br /&gt;
Then,, sudo adduser $USER $GROUP,,, 1 group at a time&lt;br /&gt;
To see which groups to add,,, id $USER,  id rock&lt;br /&gt;
&lt;br /&gt;
=== Changing the default hostname ===&lt;br /&gt;
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl&lt;br /&gt;
   Static hostname: Debian-Desktop&lt;br /&gt;
         Icon name: computer&lt;br /&gt;
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb&lt;br /&gt;
           Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99&lt;br /&gt;
  Operating System: Debian GNU/Linux 9 (stretch)&lt;br /&gt;
            Kernel: Linux 4.4.210&lt;br /&gt;
      Architecture: arm64&amp;lt;/pre&amp;gt;&lt;br /&gt;
To change, use this, (with &amp;quot;My_Hostname&amp;quot; used as the example);&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl set-hostname My_Hostname&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whence done, you can re-verify using the first example.&lt;br /&gt;
&lt;br /&gt;
Then you should backup and edit your &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; entry's name;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`&lt;br /&gt;
$ sudo vi /etc/hosts&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
127.0.0.1	My_Hostname&lt;br /&gt;
::1		localhost ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0		ip6-localnet&lt;br /&gt;
ff00::0		ip6-mcastprefix&lt;br /&gt;
ff02::1		ip6-allnodes&lt;br /&gt;
ff02::2		ip6-allrouters&lt;br /&gt;
127.0.1.1       linaro-alip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable Chromium browser's prompt for passphrase &amp;amp; password storage ===&lt;br /&gt;
&lt;br /&gt;
Perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* On the tool bar, hover over the Chromium icon&lt;br /&gt;
* Using the right mouse button, select '''Properties'''&lt;br /&gt;
* In the '''Command:''' line section, add &amp;lt;code&amp;gt;--password-store=basic&amp;lt;/code&amp;gt; before the &amp;lt;code&amp;gt;%U&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use the '''x Close''' button to save the change&lt;br /&gt;
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.&lt;br /&gt;
&lt;br /&gt;
=== Changing the boot splash picture ===&lt;br /&gt;
&lt;br /&gt;
The default boot splash picture can be replaced using the following instructions:&lt;br /&gt;
&lt;br /&gt;
* Install '''ImageMagick''' which will do the conversion&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo apt-get install imagemagick&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).&lt;br /&gt;
* From the directory in which your new image is stored run the following commands&lt;br /&gt;
* Convert your image to the bootsplash raw format using imagemagick convert.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a backup copy of your current splash screen&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy your new splash screen into place&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp splash.fb /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the correct permissions on the splash.fb file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo chmod 644 /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed&lt;br /&gt;
&lt;br /&gt;
=== Watching Amazon Prime videos with Chromium ===&lt;br /&gt;
When you create a new user, it will be necessary to launch the Chromium browswer with a specific user agent like below;&lt;br /&gt;
&amp;lt;pre&amp;gt;chromium-browser --user-agent=&amp;quot;Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There may be more tweaks needed.&lt;br /&gt;
&lt;br /&gt;
=== Enabling text boot time messages ===&lt;br /&gt;
&lt;br /&gt;
By default, most Linux distros have a boot screen with a picture. To see all the boot time messages, use one of the following;&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 vi /etc/default/u-boot&lt;br /&gt;
&lt;br /&gt;
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.&lt;br /&gt;
&lt;br /&gt;
* Update the U-Boot configuration:&lt;br /&gt;
&lt;br /&gt;
 u-boot-update&lt;br /&gt;
&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 vi /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
* Change '''console=ttyS2,1500000''' to '''console=tty1'''&lt;br /&gt;
* Remove the '''bootsplash.bootfile''' option and it's parameter.&lt;br /&gt;
* You can add verbose logging by appending '''ignore_loglevel''' to the line where boot splash was.&lt;br /&gt;
* Leave everything else alone.&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
== Improving readability ==&lt;br /&gt;
&lt;br /&gt;
Some people find that a 14&amp;quot; LCD screen with 1080p, (1920 x 1080), has text and icons a bit too small. There are things you can do to make the screen easier to use and read.&amp;lt;br&amp;gt;&lt;br /&gt;
* Increase the font size&lt;br /&gt;
* Use a font with more pronounced features&lt;br /&gt;
* Increase the various window manager sizes (e.g. increase the height of the tool bar)&lt;br /&gt;
* Change the color scheme to be easier on the eyes. Higher contrast can help usability.&lt;br /&gt;
* Change the window manager's decorations (e.g. use larger icons)&lt;br /&gt;
* Use a workspace manager, with one application per workspace&lt;br /&gt;
* When at home or office, use an external monitor&lt;br /&gt;
* Change the X-Windows DPI. One such method that someone used successfully, is:&amp;lt;br&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;echo &amp;quot;Xft.dpi: 150&amp;quot; &amp;gt;&amp;gt; ~/.Xresources&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Change the 150 as desired to get the size adjustment you want.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
However, do not change the resolution of the LCD screen, otherwise you may end up with a blank / black screen. If that happens, see this troubleshooting section for the fix:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]&lt;br /&gt;
&lt;br /&gt;
== Chromium tweaks ==&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--disable-low-res-tiling \&lt;br /&gt;
--num-raster-threads=6 \&lt;br /&gt;
--profiler-timing=0 \&lt;br /&gt;
--disable-composited-antialiasing \&lt;br /&gt;
--test-type \&lt;br /&gt;
--show-component-extension-options \&lt;br /&gt;
--ignore-gpu-blacklist \&lt;br /&gt;
--use-gl=egl \&lt;br /&gt;
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \&lt;br /&gt;
--ppapi-flash-version=32.0.0.255 \&lt;br /&gt;
--enable-pinch \&lt;br /&gt;
--flag-switches-begin \&lt;br /&gt;
--enable-gpu-rasterization \&lt;br /&gt;
--enable-oop-rasterization \&lt;br /&gt;
--flag-switches-end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in some cases, this may also decrease performance substantially, as observed when using these flags on the Manjaro KDE desktop. Feel free to experiment to find what is smoothest for you personally.&lt;br /&gt;
&lt;br /&gt;
== gVim has performance issue ==&lt;br /&gt;
It appears that using GTK3 can cause very slow scrolling, while Vim in a terminal window works fine.&amp;lt;br/&amp;gt;&lt;br /&gt;
Simply revert back to using GTK2, (how to do so is somewhat Linux distro-specific).&lt;br /&gt;
&lt;br /&gt;
Another solution may be to run gVim with &lt;br /&gt;
&lt;br /&gt;
 GDK_RENDERING=image&lt;br /&gt;
&lt;br /&gt;
environment variable set. It seems that this improves the performance by reverting back to software-only rendering.&lt;br /&gt;
&lt;br /&gt;
== Kernel options ==&lt;br /&gt;
Here are some Pinebook Pro &amp;amp; its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.&lt;br /&gt;
&lt;br /&gt;
To see if a specific feature is enabled in the current kernel, you can use something like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep -i rockchip_pcie /proc/config.gz&lt;br /&gt;
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set&lt;br /&gt;
CONFIG_PHY_ROCKCHIP_PCIE=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If it's listed as &amp;lt;code&amp;gt;=m&amp;lt;/code&amp;gt;, then it's a module. You can see if the module is loaded with;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep -i rockchip_pcie&lt;br /&gt;
phy_rockchip_pcie      16384  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note modules are not loaded until needed. Thus, we sometimes check the kernel configuration instead to see if a feature is configured first, then see if it's a module.&lt;br /&gt;
&lt;br /&gt;
=== Hardware video decoding ===&lt;br /&gt;
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.&amp;lt;br&amp;gt;&lt;br /&gt;
Older systems, such as the previously-default Debian desktop, use the Rockchip-supplied kernel module &amp;lt;code&amp;gt;rk-vcodec&amp;lt;/code&amp;gt;. To check, something like this can be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep rk-vcodec&lt;br /&gt;
    or&lt;br /&gt;
$ zgrep RK_VCODEC /proc/config.gz&lt;br /&gt;
CONFIG_RK_VCODEC=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that in the above example, the Rockchip video CODEC is not built as a module, but included into the kernel. Thus, it does not show up in the list modules check.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer systems may use a different option as in the configuration below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep HANTRO /proc/config.gz&lt;br /&gt;
CONFIG_VIDEO_HANTRO=m&lt;br /&gt;
CONFIG_VIDEO_HANTRO_ROCKCHIP=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting guide =&lt;br /&gt;
&lt;br /&gt;
Do not panic if something goes wrong or in an unexpected way.  Instead, stop and consider carefully how to undo something, or how to redo it.  This particularly applies when flashing a new operating system, or flashing new firmware to the keyboard or touchpad.  If everything fails, consider reporting the issue on the forums, with as many relevant details as available.&lt;br /&gt;
&lt;br /&gt;
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.&lt;br /&gt;
&lt;br /&gt;
= Hardware/Accessory Compatibility =&lt;br /&gt;
Please contribute to the [[Pinebook Pro Hardware Accessory Compatibility|hardware/accessory compatibility page]], which lists the status of hardware tested with the Pinebook Pro.  Available hardware categories include the following:&lt;br /&gt;
&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
== Disassembly and Reassembly  == &lt;br /&gt;
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]&lt;br /&gt;
&lt;br /&gt;
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]&lt;br /&gt;
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]&lt;br /&gt;
&lt;br /&gt;
There are a few '''mandatory''' precautions to be taken:&lt;br /&gt;
&lt;br /&gt;
* Do not open the laptop by lifting the lid while the Pinebook Pro bottom cover is removed - this can cause structural damage to the hinges and/or other plastic components of the chassis such as the IO port cut-outs.&lt;br /&gt;
* When removing the back cover plate, *do not, under any circumstances, slide your fingertips between the metal shell and the plastic frame!* The back cover plate edges are sharp, and when combined with the pressure and movement generated from, specifically, attempting to slide the tips of your fingers along the bottom edge of the plate along the lid-hinge, they *will* slice open the tips of your fingers like a knife.&lt;br /&gt;
* When removing the back cover plate, use care to avoid damaging the speakers. They can be stuck to the back cover with double-sided tape, and the thin wires are very delicate. Newer Pinebook Pro laptops (as of the May 2021 batch, and perhaps earlier) seem to lack the double-sided tape to the rear cover, instead opting for tape or glue that makes them stick to the front cover. Nevertheless, be gentle when removing the back cover.&lt;br /&gt;
&lt;br /&gt;
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]&lt;br /&gt;
&lt;br /&gt;
When disassembling the laptop make sure that it is powered off and folded closed. To remove the bottom cover of the Pinebook Pro, first remove the ten (10) Phillips head screws that hold the bottom section of the laptop in place. There are four (4) short screws along the front edge, and six (6) long screws along the 3 remaining sides. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis. The aluminum case is held on only by screws. There are no plastic snaps, and the shell should pull away without any effort. If you experience any resistance at all stop and ensure all ten (10) screws are accounted for.&lt;br /&gt;
&lt;br /&gt;
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. Before replacing the aluminum back-plate, ensure that the speakers are properly seated by pressing gently on the hard plastic edge of the speaker module. Slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the touchpad is located) in place using the short screws in the front left and right corners. Then proceed to pop in the bottom panel into place. Secure the bottom section (where hinges are located) by screwing in the left and right corners. Then screw in the remaining screws and run your finger though the rim on the chassis to make sure its fitted correctly. Note that the front uses the remaining 4 short screws.&lt;br /&gt;
&lt;br /&gt;
The screws are small and should only be finger tight. Too much force will strip the threads. If after installing screws the back cover plate has not seated properly on one side (which may be caused by the aforementioned misseating of the speakers), open the display and hold the base on either side of the keyboard and gently flex the base with both hands in opposing directions. Once the side pops further in, then recheck the screws on that side. If it does not pop back in, re-open the machine and check for misseated components.&lt;br /&gt;
&lt;br /&gt;
A basic 3D model to print replacement standoffs for the back cover screws is [https://www.thingiverse.com/thing:4226648 available on Thingiverse], until the official drawings or 3D models are made available.&lt;br /&gt;
&lt;br /&gt;
====Display Disassembly====&lt;br /&gt;
It is not recommended to adjust the position of the lid when the bottom cover is removed, because the bottom cover provides structural strength, so the lid should be open fully as the first step, before starting any disassembly of the laptop.  After opening the lid, remove the bottom cover by following the instruction found in the section above.  Alternatively, you can keep the lid closed and remove the screws that hold the hinges to the main laptop body, as described in [[Pinebook Service Step by Step Guides]].&lt;br /&gt;
&lt;br /&gt;
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plactic U-shaped cover that snaps in place using latches.  Use a dedicated plastic prying tool or a guitar pick to gently pry the cover and remove it, starting from the outer edge.  Once you pry the cover to a certain extent, it should be possible to remove it fully using only your hands.  The U-shaped cover is rather sturdy, but still be careful not to break or bend it.&lt;br /&gt;
&lt;br /&gt;
There are two small screws hidden underneath the two small rubber nubs on the upper part of the screen bezel, so first gently remove the nubs and then remove the screws.  The screen bezel is held in place with a combination of latches and some adhesive tape, which is there to prevent dust ingress.  The adhesive isn't very strong, and the bezel is capable of flexing back into shape after being twisted to a certain extent.  There is more adhesive on the bottom part of the screen bezel, so be more careful while prying that section apart.  Use the same prying tool that you used for the U-shaped cover, and work it around the outer edges of the screen bezel.&lt;br /&gt;
&lt;br /&gt;
== Internal Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Main chips ===&lt;br /&gt;
* RK3399 system-on-chip (1)&lt;br /&gt;
* LPDDR4 SDRAM (21)&lt;br /&gt;
* SPI NOR flash memory (29)&lt;br /&gt;
* eMMC flash memory (26)&lt;br /&gt;
* WiFi/BT module (27)&lt;br /&gt;
&lt;br /&gt;
=== Mainboard Switches and Buttons ===&lt;br /&gt;
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack. &lt;br /&gt;
&lt;br /&gt;
The Reset and Recovery buttons (28): the reset button performs an immediate reset of the laptop. The Recovery button is used to place the device in maskrom mode; this mode allows flashing eMMC using Rockchip tools (e.g. rkflashtools). &lt;br /&gt;
&lt;br /&gt;
[[File:PBPL_S.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Key Internal Parts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Numbered parts classification and description&lt;br /&gt;
! Number&lt;br /&gt;
! Type&lt;br /&gt;
! Descriptor&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 1&lt;br /&gt;
| Component || RK3399 System-On-Chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 2&lt;br /&gt;
| Socket || PCIe x4 slot for optional NVMe adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 3&lt;br /&gt;
| Socket || Speakers socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 4&lt;br /&gt;
| Socket || Touchpad socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 5&lt;br /&gt;
| Component || Left speaker &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 6&lt;br /&gt;
| Connector || Power bridge connector &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 7&lt;br /&gt;
| Socket || Keyboard Socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 8&lt;br /&gt;
| Component || Optional NVMe SSD adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 9&lt;br /&gt;
| Switch || UART/Audio switch - outputs UART via headphone jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 10&lt;br /&gt;
| Socket || Power bridge socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 11&lt;br /&gt;
| Socket || Battery socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 12&lt;br /&gt;
| Component || Touchpad&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 13&lt;br /&gt;
| Component || Battery&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 14&lt;br /&gt;
| Component || Right speaker&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 15&lt;br /&gt;
| Socket || MicroSD card slot&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 16&lt;br /&gt;
| Socket || Headphone / UART jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 17&lt;br /&gt;
| Socket || USB 2.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 18&lt;br /&gt;
| Socket || Daughterboard-to-mainboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 19&lt;br /&gt;
| Cable || Daughterboard-to-mainboard ribbon cable&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 20&lt;br /&gt;
| Component || microphone&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 21&lt;br /&gt;
| Component || LPDDR4 RAM&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 22&lt;br /&gt;
| Socket || Mainboard-to-daughterboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 23&lt;br /&gt;
| Socket || Microphone socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 24&lt;br /&gt;
| Switch || Switch to hardware disable eMMC&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 25&lt;br /&gt;
| Antenna || BT/WiFI antenna&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 26&lt;br /&gt;
| Component || eMMC flash memory module &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 27&lt;br /&gt;
| Component ||BT/WiFi module chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 28&lt;br /&gt;
| Buttons || Reset and recovery buttons&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 29&lt;br /&gt;
| Component || SPI flash storage&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 30&lt;br /&gt;
| Socket || eDP LCD socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 31&lt;br /&gt;
| Socket || Power in barrel socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 32&lt;br /&gt;
| Socket || USB 3.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 33&lt;br /&gt;
| Socket || USB 3.0 Type C &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Smallboard detailed picture ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_pro_smallboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Bootable Storage ==&lt;br /&gt;
&lt;br /&gt;
=== Boot sequence details ===&lt;br /&gt;
The RK3399's mask 32KB ROM boot code looks for the next stage of code at byte off-set 32768, (sector 64 if using 512 byte sectors). This is where U-Boot code would reside on any media that is bootable.&amp;lt;br&amp;gt;&lt;br /&gt;
[[RK3399_boot_sequence|RK3399 boot sequence]]&lt;br /&gt;
&lt;br /&gt;
=== Boot devices ===&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is capable of booting from eMMC, USB 2.0, USB 3.0, or an SD card. It cannot boot from USB-C.  The boot order of the hard-coded ROM of its RK3399 SoC is: SPI NOR, eMMC, SD, USB OTG. &lt;br /&gt;
&lt;br /&gt;
At this time, the Pinebook Pro ships with a Manjaro + KDE build with [https://www.denx.de/wiki/U-Boot/ u-boot] on the eMMC.  Its boot order is: SD, USB, then eMMC.&lt;br /&gt;
&lt;br /&gt;
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other OSes from an SD card. In order to update, fully charge the battery, establish an internet connection, click the update icon in the toolbar, and then reboot your Pinebook Pro.  Please see [https://forum.pine64.org/showthread.php?tid=7830 this log] for details.)&lt;br /&gt;
&lt;br /&gt;
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf&lt;br /&gt;
in a /boot partition on the eMMC.&lt;br /&gt;
&lt;br /&gt;
=== eMMC information ===&lt;br /&gt;
The eMMC appears to be hot-pluggable. This can be useful if trying to recover data or a broken install. Best practice is probably to turn the eMMC switch to off position before changing modules. Note that the enable/disable label on the silkscreen is incorrect on some board revisions (known bad on v2.1).&lt;br /&gt;
&lt;br /&gt;
The eMMC storage will show up as multiple block devices:&lt;br /&gt;
*mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB&lt;br /&gt;
*mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB&lt;br /&gt;
*mmcblk1rpmb - eMMC standard secure data partition, may be 16MB&lt;br /&gt;
*mmcblk1 - This block contains the user areas&lt;br /&gt;
&lt;br /&gt;
Only the last is usable as regular storage device in the Pinebook Pro.&lt;br /&gt;
The device number of &amp;quot;1&amp;quot; shown above may vary, depending on kernel.&lt;br /&gt;
&lt;br /&gt;
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user &amp;quot;root&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/unbind&lt;br /&gt;
echo fe330000.mmc &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/bind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: with the device trees coming with older kernels (Linux &amp;lt; 5.11), the device name may be fe330000.sdhci instead of fe330000.mmc)&lt;br /&gt;
&lt;br /&gt;
== Case Dimensions and Data ==&lt;br /&gt;
* Dimensions: 329mm x 220mm x 12mm (WxDxH)&lt;br /&gt;
* Weight: 1.26Kg&lt;br /&gt;
* Screws&lt;br /&gt;
** Philips head type screws&lt;br /&gt;
** M2 flat head machine screws (measurements in mm)&lt;br /&gt;
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1,  Overall length - 3.05&lt;br /&gt;
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85&lt;br /&gt;
* Rubber Feet&lt;br /&gt;
** 18mm diameter&lt;br /&gt;
** 3mm height&lt;br /&gt;
** Dome shaped&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
[[File:Rockchip_RK3399.png|right]]&lt;br /&gt;
* Based on Rockchip RK3399&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU&lt;br /&gt;
** Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)&lt;br /&gt;
** ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
** ARMv8 Cryptography Extensions&lt;br /&gt;
** VFPv4 floating point unit supporting single and double-precision operations&lt;br /&gt;
** Hardware virtualization support&lt;br /&gt;
** TrustZone technology support&lt;br /&gt;
** Full CoreSight debug solution&lt;br /&gt;
** One isolated voltage domain to support DVFS&lt;br /&gt;
* Cortex-A72 (big cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]&lt;br /&gt;
** Superscalar, variable-length, out-of-order pipeline&lt;br /&gt;
** L1 cache 48KB Icache and 32KB Dcache for each A72 &lt;br /&gt;
** L2 cache 1024KB for big cluster &lt;br /&gt;
* Cortex-A53 (little cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]&lt;br /&gt;
** In-order pipeline with symmetric dual-issue of most instructions &lt;br /&gt;
** L1 cache 32KB Icache and 32KB Dcache for each A53&lt;br /&gt;
** L2 cache 512KB for little cluster&lt;br /&gt;
* Cortex-M0 (control processors):&lt;br /&gt;
** [https://developer.arm.com/ip-products/processors/cortex-m/cortex-m0 Cortex-M0 CPU]&lt;br /&gt;
** Two Cortex-M0 cooperate with the central processors&lt;br /&gt;
** Architecture: Armv6-M&lt;br /&gt;
** Thumb/Thumb2 instruction set&lt;br /&gt;
** 32 bit only&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]&lt;br /&gt;
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.&lt;br /&gt;
* Frequency 	650MHz &lt;br /&gt;
* Throughput 	1300Mtri/s, 10.4Gpix/s&lt;br /&gt;
* Graphic interface standards:&lt;br /&gt;
** OpenGL® ES 1.1, 1.2, 2.0, 3.0, 3.1, 3.2. (Panfrost has initial support of 3.0 beginning 2020/02/27)&lt;br /&gt;
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)&lt;br /&gt;
** OpenCL™ 1.1, 1.2&lt;br /&gt;
** DirectX® 11 FL11_1&lt;br /&gt;
** RenderScript™&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory:&lt;br /&gt;
** LPDDR4&lt;br /&gt;
** 800MHz, (limited by RK3399)&lt;br /&gt;
** Dual memory channels on the CPU, each 32 bits wide&lt;br /&gt;
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel&lt;br /&gt;
** 4GB as a single 366 pin mobile RAM chip&lt;br /&gt;
* Storage Memory: &lt;br /&gt;
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)&lt;br /&gt;
** eMMC version 5.1, HS400, 8 bit on RK3399 side&lt;br /&gt;
** Bootable&lt;br /&gt;
* SPI flash:&lt;br /&gt;
** [[Pinebook Pro SPI]]&lt;br /&gt;
** 128Mbit / 16MByte&lt;br /&gt;
** 1 bit interface&lt;br /&gt;
** Bootable, (first boot device, ahead of eMMC &amp;amp; SD card)&lt;br /&gt;
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.&lt;br /&gt;
&lt;br /&gt;
=== Video out ===&lt;br /&gt;
* USB-C Alt mode DP&lt;br /&gt;
* Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* MicroSD card:&lt;br /&gt;
** Bootable&lt;br /&gt;
** Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.&lt;br /&gt;
** Version SD3.0, (MMC 4.5), up to 50MB/s&lt;br /&gt;
** SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS&lt;br /&gt;
* USB ports:&lt;br /&gt;
** 1 x USB 2.0 Type-A Host Port, bootable&lt;br /&gt;
** 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable&lt;br /&gt;
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable&lt;br /&gt;
** Note that high power USB devices may not work reliably on a PBP. Or they may draw enough power to drain the battery even when the PBP is plugged into A.C. One alternative is externally powered USB devices.&lt;br /&gt;
* Headphone jack switchable to UART console mux circuit&lt;br /&gt;
&lt;br /&gt;
== Additional hardware ==&lt;br /&gt;
Hardware that is not part of the SoC.&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
* Lithium Polymer Battery (10,000 mAH)&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
* 14.0&amp;quot; 1920x1080 IPS LCD panel&lt;br /&gt;
=== Lid closed magnet ===&lt;br /&gt;
There is a magnet to detect when the laptop lid is closed, so action can be taken like sleep. This meets up with the Hall sensor on the daughter / small board to detect lid closed.&lt;br /&gt;
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.&lt;br /&gt;
&lt;br /&gt;
=== Webcam ===&lt;br /&gt;
* Internal USB attached Webcam&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
* Built-in microphone&lt;br /&gt;
* Built-in stereo speakers:&lt;br /&gt;
** Oval in design&lt;br /&gt;
** 3 mm high x 20 mm x 30 mm&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* WiFi:&lt;br /&gt;
** 802.11 b/g/n/ac&lt;br /&gt;
** Dual band: 2.4Ghz &amp;amp; 5Ghz&lt;br /&gt;
** Single antenna&lt;br /&gt;
* Bluetooth 5.0&lt;br /&gt;
&lt;br /&gt;
=== Optional NVMe adapter ===&lt;br /&gt;
* PCIe 1.1, 2.5 GT/s per lane&lt;br /&gt;
** Note that due to errata, PCIe is limited to Gen1. See [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip/rk3399.dtsi?id=712fa1777207c2f2703a6eb618a9699099cbe37b this commit].&lt;br /&gt;
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards&lt;br /&gt;
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too&lt;br /&gt;
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260&lt;br /&gt;
* Power: 2.5&amp;amp;nbsp;W continuous, 8.25&amp;amp;nbsp;W peak momentary&lt;br /&gt;
* Does not support SATA M.2 cards&lt;br /&gt;
* Does not support USB M.2 cards&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro Schematics and Certifications ==&lt;br /&gt;
* Pinebook Pro Main Board Schematic And Silkscreen:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]&lt;br /&gt;
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]&lt;br /&gt;
* Pinebook Pro Daughter Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]&lt;br /&gt;
* Optional Pinebook Pro NVMe Adapter Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]&lt;br /&gt;
* Serial Console Earphone Jack Pinout:&lt;br /&gt;
** [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinkbook Serial Console Earphone Jack Pinout]&lt;br /&gt;
* Pinebook Pro Case:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]&lt;br /&gt;
* Pinebook Pro Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3399 SoC information:&lt;br /&gt;
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.3, part 1] and [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf part 2]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]&lt;br /&gt;
* LPDDR4 SDRAM (366-pin BGA):&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 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 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://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (updated)]&lt;br /&gt;
* Wireless and Bluetooth information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]&lt;br /&gt;
* Audio codec:&lt;br /&gt;
** [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]&lt;br /&gt;
* LCD panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14&amp;quot; 1920x1080 IPS LCD Panel datasheet]&lt;br /&gt;
* USB-related information:&lt;br /&gt;
** Internal USB 2.0 hub: [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub Datasheet]&lt;br /&gt;
** USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]&lt;br /&gt;
* Keyboard information:&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]&lt;br /&gt;
** US ANSI: XK-HS002 MB27716023&lt;br /&gt;
* Full HD camera sensor:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]&lt;br /&gt;
* Battery-related information:&lt;br /&gt;
** Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]&lt;br /&gt;
** Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification]&lt;br /&gt;
* Power path device:&lt;br /&gt;
** [https://wiki.pine64.org/images/9/99/Sis412dn.pdf N-MOS / MOSFET]&lt;br /&gt;
* NVMe adapter:&lt;br /&gt;
** [https://wiki.pine64.org/images/d/d0/Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The &amp;quot;first batch&amp;quot; (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]&lt;br /&gt;
&lt;br /&gt;
=Skinning and Case Customization=&lt;br /&gt;
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.&lt;br /&gt;
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]&lt;br /&gt;
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (no login required to read)&lt;br /&gt;
* IRC Server: irc.pine64.org Channel: PineBook&lt;br /&gt;
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]&lt;br /&gt;
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]&lt;br /&gt;
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]&lt;br /&gt;
* [[Pinebook Pro/Freepascal and Lazarus IDE on Manjaro|Freepascal and Lazarus IDE on Pinebook Pro]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;br /&gt;
[[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13125</id>
		<title>Pinebook Pro Software Releases</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro_Software_Releases&amp;diff=13125"/>
		<updated>2022-05-30T20:52:19Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Linux OS Image Releases */ Add Void Linux images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Linux OS Image Releases =&lt;br /&gt;
For information on how to install these images onto your device, please see the [[NOOB]] Page, which includes information on writing images to the device eMMC or an SD card&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The Manjaro project offers a mainline kernel with patches and modules to support PBPro hardware. To learn more about Manjaro please visit [https://forum.manjaro.org/c/arm/ Manjaro Forum]. You can follow the ongoing discussion about Manjaro on the [https://forum.pine64.org/showthread.php?tid=8207 PINE64 forum].&lt;br /&gt;
All images boot from both SD card and the internal eMMC module.&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-kde-plasma/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Xfce ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-xfce/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Gnome ===&lt;br /&gt;
&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-gnome/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with Sway ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-sway/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM with no desktop ===&lt;br /&gt;
* [https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/ Direct download from Manjaro]&lt;br /&gt;
&lt;br /&gt;
== Armbian ==&lt;br /&gt;
[[File:armbian.png|right|100px]]&lt;br /&gt;
As of Nov. 3rd, 2021, Pinebook Pro has No official support (CSC) from Armbian.&lt;br /&gt;
&lt;br /&gt;
To find out more about Armbian and available options please visit their [https://www.armbian.com/pinebook-pro/ site].&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_current_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Gnome (mainline kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a mainline kernel build images for Ubuntu Focal with GNOME Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://redirect.armbian.com/region/NA/pinebook-pro/Focal_current_gnome]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Focal with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Focal with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Focal_legacy_desktop Armbian's Pinebook Pro Ubuntu Focal Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Debian Buster with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Debian Buster with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Buster_legacy_desktop Armbian's Pinebook Pro Debian Buster Xfce]&lt;br /&gt;
&lt;br /&gt;
=== Armbian Ubuntu Bionic with Xfce (legacy kernel) ===&lt;br /&gt;
&lt;br /&gt;
Armbian provides a legacy kernel 4.4 build images for Ubuntu Bionic with Xfce Desktop. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://dl.armbian.com/pinebook-pro/Bionic_legacy_desktop Armbian's Pinebook Pro Ubuntu Bionic Xfce Desktop download site]&lt;br /&gt;
&lt;br /&gt;
== Twister OS ==&lt;br /&gt;
[[File:Twister_OS.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Twister OS Armbian-Reforged with Xfce. It boots from microSD card and from eMMC. For more information on Twister OS, please visit this [https://twisteros.com/ official site]. You can follow the ongoing discussion about Twister OS on the [https://forum.pine64.org/showthread.php?tid=12192 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* After flashing image, edit /boot/armbianEnv.txt, replace the dtb name with &amp;lt;code&amp;gt;rk3399-pinebook-pro.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://twisteros.com/twisterarmbian.html Direct download latest images from Twister OS's website] (size: 2.8GB)&lt;br /&gt;
&lt;br /&gt;
'''Password'''&lt;br /&gt;
&lt;br /&gt;
asdasd&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
[[File:fedora1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Fedora Official ===&lt;br /&gt;
&lt;br /&gt;
Using this [https://nullr0ute.com/2021/05/fedora-on-the-pinebook-pro/ blog post] it is now possible to run Official Fedora on the Pinebook Pro. &lt;br /&gt;
&lt;br /&gt;
'''Notes'''&lt;br /&gt;
Upstream Fedora uses  SPI flash on the Pinebook Pro to manage uboot. &lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Cinnamon ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://cinnamon-spices.linuxmint.com/ Cinnamon] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Cinnamon-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with KDE ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://kde.org/ KDE aka Plasma] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-KDE-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Xfce===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://xfce.org/ Xfce] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Xfce-Desktop-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
=== Fedora 32 with Gnome ===&lt;br /&gt;
&lt;br /&gt;
This image contains an install of Fedora with [https://www.gnome.org/gnome-3/ GNOME 3] desktop environment. It boots from microSD card and from eMMC. To learn more about Fedora please visit the [https://getfedora.org/ official website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://builds.armdevelopers.com/pinebook-pro/releases/dev/Fedora32-Workstation-202009.0.pinebook-pro.img.xz Fedora 32 Pinebook Pro Image]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/fedora&lt;br /&gt;
&lt;br /&gt;
== Arch Linux ARM ==&lt;br /&gt;
[[File:Archlinux-logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Official Installation ===&lt;br /&gt;
See [[Installing Arch Linux ARM On The Pinebook Pro]] for instructions on how to install the official Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
=== Customized Premade Image ===&lt;br /&gt;
Arch Linux ARM root filesystem customized for the Pinebook Pro using Manjaro kernel. Instructions are included for installation on microSD card, eMMC module and NVME SSD.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
[https://github.com/SvenKiljan/archlinuxarm-pbp/releases/latest Get the latest image from GitHub] (size: 591 MB).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
Make sure to thoroughly read the [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md readme], [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/README.md installation instructions] and [https://github.com/SvenKiljan/archlinuxarm-pbp/blob/main/FAQ.md FAQ].&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
The default Arch Linux ARM user credentials.&lt;br /&gt;
&lt;br /&gt;
Username: alarm&lt;br /&gt;
&lt;br /&gt;
Password: alarm&lt;br /&gt;
&lt;br /&gt;
The password for the root account is 'root'.&lt;br /&gt;
&lt;br /&gt;
== postmarketOS ==&lt;br /&gt;
[[File:PostmarketOS logo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Official postmarketOS build with the GNOME desktop for the Pinebook Pro. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://images.postmarketos.org/bpo/edge/pine64-pinebookpro/ Direct download latest images from postmarketOS] (size: 400 MB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
demo/demo&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
demo/147147&lt;br /&gt;
&lt;br /&gt;
==Kali Linux==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
=== Kali Linux prebuilt OS images for Pinebook Pro===&lt;br /&gt;
&lt;br /&gt;
Official pre-built OS images of Kali Linux for the Pinebook Pro featuring all tools you'd expect from the distribution. It boots from microSD card and from eMMC.&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://www.offensive-security.com/kali-linux-arm-images/ Direct download latest images from Offensive Security's website] (size: 2.0 GB)&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
kali/kali&lt;br /&gt;
&lt;br /&gt;
== Q4OS ==&lt;br /&gt;
[[File:q4os.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Q4OS is advertised as a 'fast and powerful operating system based on the latest technologies while offering highly productive desktop environment'. It boots from microSD card and from eMMC. To learn more please visit the [https://forum.pine64.org/showthread.php?tid=8385 PINE64 forum] or official [https://q4os.org/index.html Q4OS website].&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [https://sourceforge.net/projects/q4os/files/stable/ Direct download latest release build from SourceForge]&lt;br /&gt;
&lt;br /&gt;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
User account and password are created on first run.&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=14061 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_PinebookPro-ARMv8-Bullseye.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;
== openSUSE ==&lt;br /&gt;
[[File:opensuse-distribution.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest openSUSE Tumbleweed images for Pinebook Pro here: [https://en.opensuse.org/HCL:Pinebook-Pro-RK3399]&lt;br /&gt;
&lt;br /&gt;
Credits to [https://bugzilla.opensuse.org/show_bug.cgi?id=1194491]&lt;br /&gt;
Step 1. Flash Tow-Boot[https://github.com/Tow-Boot/Tow-Boot] to SPI&lt;br /&gt;
Step 2. Flash openSUSE image to sd card &amp;amp; insert it&lt;br /&gt;
Step 3. When it loads grub, press e and add the following line:&lt;br /&gt;
&lt;br /&gt;
devicetree /boot/dtb/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
&lt;br /&gt;
Press ctrl + x to boot&lt;br /&gt;
&lt;br /&gt;
Work : display, wifi&lt;br /&gt;
Not tested : bluetooth&lt;br /&gt;
Doesn't work : audio&lt;br /&gt;
&lt;br /&gt;
You may build rpms and see if it fix issues from this repository: [https://github.com/bengtfredh/pinebook-pro-copr]&lt;br /&gt;
&lt;br /&gt;
== FydeOS ==&lt;br /&gt;
An operating system based on the Chromium Project&lt;br /&gt;
&lt;br /&gt;
https://fydeos.io/download/device/pinebook-pro&lt;br /&gt;
&lt;br /&gt;
== Void Linux ==&lt;br /&gt;
&lt;br /&gt;
[https://voidlinux.org/ Void Linux] packages U-Boot and a kernel for the Pinebook Pro, but does not distribute any images for the device.&lt;br /&gt;
&lt;br /&gt;
Cameron Nemo ([[User:CameronNemo]]) distributes unofficial Void Linux images for the Pinebook Pro:&lt;br /&gt;
&lt;br /&gt;
* [https://repo.nohom.org/void/images/void-pinebookpro-20220530.img.xz glibc download]&lt;br /&gt;
* [https://repo.nohom.org/void/images/void-pinebookpro-musl-20220530.img.xz musl download]&lt;br /&gt;
&lt;br /&gt;
Some notes about the images:&lt;br /&gt;
&lt;br /&gt;
* They were released on 2022-05-30&lt;br /&gt;
* They ship U-Boot 2022.04 and Linux 5.15.44 (with minimal patches)&lt;br /&gt;
* Meant to be uncompressed then flashed to either an SD card or the internal eMMC module&lt;br /&gt;
* The root partition is ~1.7GB, and must be expanded manually&lt;br /&gt;
* There are very few services enabled on the images by default: udev and some getty's&lt;br /&gt;
* The default root password is &amp;quot;voidlinux&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= BSD =&lt;br /&gt;
&lt;br /&gt;
==NetBSD==&lt;br /&gt;
[[File:netbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about NetBSD please visit [https://www.netbsd.org/ NetBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
Get the latest image here: [http://www.armbsd.org/arm/ Direct download from NetBSD]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&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;
'''Username and password'''&lt;br /&gt;
&lt;br /&gt;
root/(none)&lt;br /&gt;
&lt;br /&gt;
==OpenBSD==&lt;br /&gt;
[[File:Puffy_mascot_openbsd.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The image boots from microSD card and from eMMC. To learn more about OpenBSD, please visit [https://www.openbsd.org/ OpenBSD main page]&lt;br /&gt;
&lt;br /&gt;
'''Download location'''&lt;br /&gt;
&lt;br /&gt;
ARM64 images, (including support for Pinebook Pro), can be found here [https://www.openbsd.org/arm64.html OpenBSD arm64]&lt;br /&gt;
&lt;br /&gt;
= Linux Installer Releases =&lt;br /&gt;
&lt;br /&gt;
== Manjaro ARM ==&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer manjaro-arm-installer] script is intended to install Manjaro ARM directly to SD/eMMC cards without the need for images (including LXQT, Mate &amp;amp; CuboCore editions, as well as full disk encryption). Running on a Linux x86 computer, it can install Manjaro ARM directly to an empty eMMC using an eMMC to USB adapter. The script can also be run from SD to install an image to the eMMC.&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
[[File:debian.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
* Uses only the upstream kernel and firmware without special patches&lt;br /&gt;
* Display doesn't always work properly on first boot of installer, usually fixed after a couple tries&lt;br /&gt;
* Requires adding the non-free component to your /etc/apt/sources.list file and installing the &amp;quot;firmware-linux&amp;quot; package for Wi-Fi and Bluetooth support&lt;br /&gt;
* Installer is loaded into RAM, can install onto the same media from which it’s booted&lt;br /&gt;
* Supports automatic partitioning and full disk encryption through LVM&lt;br /&gt;
* Installer currently doesn't install a functional bootloader, leaving the installed system in an unbootable state until it's manually added (if installed to eMMC, the system cannot be booted even to an SD card unless the eMMC is physically switched off or there is U-Boot in the SPI)&lt;br /&gt;
&lt;br /&gt;
[https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/ The relevant files are built daily here] and may sometimes be unavailable if the build system is having issues. The &amp;quot;README.concatenateable_images&amp;quot; file provides instructions on how to combine the partition.img.gz file with the firmware.pinebook-pro.rk3399.img.gz file in order to create a DD-able image.&lt;br /&gt;
&lt;br /&gt;
The official images are '''not''' recommended yet until the display begins working consistently and the installer properly installs the bootloader. Most users will want to see [[Pinebook Pro Debian Installer|Daniel Thompson's Debian Installer]] instead.&lt;br /&gt;
&lt;br /&gt;
== Gentoo ==&lt;br /&gt;
[[File:GentooLogo.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script that prepares a Gentoo arm64 stage 3 tarball for the Pinebook Pro. Unfortunately, this script is not currently functional, and requires extensive troubleshooting to make work. New instructions are currently being created and will be available here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Word to the wise'''&lt;br /&gt;
&lt;br /&gt;
Currently, following the instructions on the Pinebook pro gentoo github page will *not* result in a functional system. Therefore it is neccesary to follow the instructions given here. Please bear in mind that the Pinebook pro's six arm cores and 4gb of ram are extremely anemic. For example, emerging the package net-libs/webkit-gtk in order to build the minimalist web-browser &amp;quot;surf&amp;quot;, a process which takes eighty minutes on an intel core i5-8250U with 8gb of ram, required eight hours of compile time,&lt;br /&gt;
Basic installation alone can take 24 hours of compillation, dozens of reboots, and hours of troubleshooting. After that, even installing firefox would take 17 hours.&lt;br /&gt;
Now that that's out of the way, we may begin the installation.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the bootloader'''&lt;br /&gt;
&lt;br /&gt;
Installing a functional bootloader can be difficult. Luckily, the tow-boot project provides a UEFI-like experience for some arm-based devices. Furthermore, it is not neccesary install this bootloader manually, as it will continue to be useable even after the disk has been reformatted, as long as the bootloader remains unscathed.&lt;br /&gt;
&lt;br /&gt;
https://manjaro.org/downloads/arm/pinebook-pro/arm8-pinebook-pro-minimal/&lt;br /&gt;
&lt;br /&gt;
No-matter where you intend to install gentoo, the bootloader should always be installed on the eMMC flash, although technically the SD card slot could also be used. Either way, install any of the official Manjaro arm disk images to the internal eMMC (there's no reason not to use the minimal image, as you will not be using this OS for anything). You may use a second operating system installed on an SD-card, or the official Pine64 eMMC USB adapter. Boot into this operating system to ensure that the bootloader functions, but after that you have no further need of it.&lt;br /&gt;
&lt;br /&gt;
Next, if you already have an OS on an SD card, you can use that for installing gentoo. If you don't, you may be pleasantly suprised to find that tow-boot is cabable of booting from a USB drive. Therefore, you may install the same Manjaro image to your USB drive or SD card, and select it from the boot menu. You should now have an unused but bootable OS on the eMMC, and another bootable, usable OS on your external storage.&lt;br /&gt;
&lt;br /&gt;
'''Preparing the Disks'''&lt;br /&gt;
&lt;br /&gt;
Log into your host device as root with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; sudo su &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter your password.&lt;br /&gt;
&lt;br /&gt;
Let the device on which you intend to install gentoo be refered to hereafter as /dev/&amp;lt;gentoo&amp;gt;. Use the following command to prepare this disk for installation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; fdisk -B /dev/&amp;lt;gentoo&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: don't just copy these commands! You should substitute &amp;lt;gentoo&amp;gt; for mmcblk2 for the internal eMMC flash storage.&lt;br /&gt;
&lt;br /&gt;
Note that the first block of the boot partition is block 62500. Delete all partitions, but *do not* re-format the disk. Create a new boot partition starting at 62500, and as it's size select &amp;quot;+1GB&amp;quot;. Create a new swap partition. fdisk will try to start it at the beginning of the volume (before the boot partition) Instead, when it prompts you for the starting position, enter in the end sector of the boot partition. It should then tell you that this is within an existing partition, and recommend a slightly higher value. Press enter, and give for the size of the partition any value greater than &amp;quot;+4gb&amp;quot;. You need this much ram to be able to suspend your system, and emerge large packages. Don't be stingey - you still have SD cards. I reccomend &amp;quot;+8gb&amp;quot;.&lt;br /&gt;
Finally, add a root partition starting at the end sector of the swap partition, and use the rest of the disk for it. That should be 50-60 GB depending on the size of your swap and boot partitions.&lt;br /&gt;
&lt;br /&gt;
Lastly, press &amp;quot;t&amp;quot; to set the type of each partition. You may set partition 1 to type 6, 2 to type 82, and 3 to type 83.&lt;br /&gt;
&lt;br /&gt;
to set the partition types of the three partitions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remind yourself which disk is /dev/&amp;lt;gentoo&amp;gt;&lt;br /&gt;
Write the filesystems to these three partitions with the commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkfs.vfat /dev/&amp;lt;gentoo&amp;gt;p1&lt;br /&gt;
&lt;br /&gt;
mkswap /dev/&amp;lt;gentoo&amp;gt;p2&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 /dev/&amp;lt;gentoo&amp;gt;p3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a slightly different format if you're installing to a usb stick.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
make the directory for mounting the filesystem you just created. These should be made on the external OS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /mnt/gentoo&lt;br /&gt;
&lt;br /&gt;
mount /dev/&amp;lt;gentoo&amp;gt;p3 /mnt/gentoo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd into this directory and fire up links. Navigate to gentoo.org/downloads and select the stage 3 minimal stage 3 tarball. Download it to your current directory, or move it to that directory from wherever it has been downloaded to. Once you are in the correct directory, unpack the tarball.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xpvf stage3-arm64-&amp;lt;blah blah blah&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount the boot partition.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount /dev/&amp;lt;gentoo&amp;gt;p1 /mnt/gentoo/boot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chroot into the mounted directory and Install the operating system as per the AMD64 manual [https://wiki.gentoo.org/wiki/Handbook:AMD64]. Before you emerge anything, however, be sure to set your use flags as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /etc/portage/make.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MAKEOPTS=&amp;quot;-j4 -l4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_KEYWORDS=&amp;quot;* **&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACCEPT_LICENSE=&amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE=&amp;quot;X gtk bluetooth pulseaudio&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use your own options instead of these if you know what you're doing. It's not super difficult.&lt;br /&gt;
&lt;br /&gt;
Continue installing the operating system, but stop just before emerging the @world set. I don't know if this is necessary, but I haven't had the time to try without doing this. Clone Janikk2099's github repo. It doesn't matter where, and run the script. If it fails run it a couple more times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/Jannik2099/gentoo-pinebookpro&lt;br /&gt;
&lt;br /&gt;
./gentoo-pinebookpro/prepare.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't follow any of Janikk's other instructions. They appear to be out of date (no offense bro). Let me be clear: DO NOT INSTALL U-BOOT. I don't know what will happen, but it won't be an improvement over the existing boot-loader so don't worry about it.&lt;br /&gt;
&lt;br /&gt;
Finish installing your system until you come to the kernel.&lt;br /&gt;
&lt;br /&gt;
'''Custom Kernel'''&lt;br /&gt;
&lt;br /&gt;
Use sys-kernel/gentoo-kernel-bin as your kernel. You will need to manually edit the kernel configuration. First, select it as your kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should list only one option. Otherwise, select the number matching &amp;lt;code&amp;gt;linux-5.&amp;lt;whatever is latest&amp;gt;-gentoo-dist&amp;lt;/code&amp;gt;, and cd into the kernel source directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;eselect kernel set &amp;lt;number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd /usr/src/linux&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Begin the kernel configuration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make menuconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point, you're almost on your own. I don't know a strict cause-and-effect relationship between my kernel config and the behavior of my system. For starters, just go into platform selection and deselect everything except rockchip platforms. Once you're done save your configuration and exit. Make sure boot is mounted, and your fstab is set up with your swap mounted. Make sure dracut is installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make&lt;br /&gt;
&lt;br /&gt;
make modules&lt;br /&gt;
&lt;br /&gt;
make dtbs&lt;br /&gt;
&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
make modules install&lt;br /&gt;
&lt;br /&gt;
make dtbs_install &lt;br /&gt;
&lt;br /&gt;
ls /lib/modules&lt;br /&gt;
&lt;br /&gt;
dracut -f --kver &amp;lt;name of directory in /lib/modules matching your kernel, *not* the kernel name from eselect&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
emerge the package extlinux and run &amp;lt;code&amp;gt;u-boot-update&amp;lt;/code&amp;gt;. Open the extlinux configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /boot/extlinux/extlinux.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And configure it as follows:&lt;br /&gt;
&lt;br /&gt;
LABEL &amp;lt;label of your choice, for example GENTOO ARM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KERNEL /&amp;lt;name of your vmlinuz kernel image. Include the slash, but be relative to boot, not root.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FDT /dtbs/&amp;lt;kernel-version&amp;gt;/rockchip/rk3399-pinebook-pro.dtb&lt;br /&gt;
 &lt;br /&gt;
APPEND initrd=/&amp;lt;name of initramfs image&amp;gt; root=PARTUUID-&amp;lt;nboot partition's PARTUUID, no quotes&amp;gt; rw rootwait&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use the blkid command to find the PARTUUID of every partition on the machine. None of this configuration is guaranteed to work, but it worked for me, and given enough fiddling you can get it to work as well.&lt;br /&gt;
&lt;br /&gt;
Now you should reboot the machine and see if it boots into gentoo. If it does: congratulations! If not, too bad. Try again.&lt;br /&gt;
&lt;br /&gt;
== Kali Linux ==&lt;br /&gt;
[[File:Kali.jpeg|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a script to create official Kali Linux OS images for the Pinebook Pro. The script carries out the build process in entirety and is Pinebook Pro specific.&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/pinebook-pro.sh Kali Linux install script] from the project's GitLab.&lt;br /&gt;
* For more information regarding building the OS image please read the README instruction at https://gitlab.com/kalilinux/build-scripts/kali-arm/blob/master/README.md&lt;br /&gt;
&lt;br /&gt;
== K1ss OS ==&lt;br /&gt;
[[File:K1ss.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
There is a repository containing an unofficial port of KISS Linux to AARCH64. The tarball is built for generic aarch64, currently being tested on the Pinebook Pro. You can follow the ongoing discussion about K1ss Linux on the [https://forum.pine64.org/showthread.php?tid=9304 PINE64 forum].&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Please pull the latest [https://github.com/jedavies-dev/kiss-aarch64 K1ss Linux install script] from the project's GitHub.&lt;br /&gt;
&lt;br /&gt;
== NixOS ==&lt;br /&gt;
[[File:nixos.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
You can follow the ongoing discussion about NixOS on the [https://forum.pine64.org/showthread.php?tid=10524 PINE64 forum]. There is a good chance we will see Tier 1 support for aarch64, including the Pinebook Pro, in 2021 (see https://github.com/NixOS/rfcs/pull/87).&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* This is instructions to install NixOS on the Pinebook Pro: https://nixos.wiki/wiki/NixOS_on_ARM/PINE64_Pinebook_Pro&lt;br /&gt;
* Please pull the latest [https://github.com/samueldr/wip-pinebook-pro samueldr's repository ] from the project's GitHub.&lt;br /&gt;
* [[NixOS Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== SkiffOS ==&lt;br /&gt;
[[File:SkiffOS-Icon-1.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
&lt;br /&gt;
* Instructions to build/install on the Pinebook Pro: https://github.com/skiffos/SkiffOS/tree/master/configs/pine64/book&lt;br /&gt;
* Please pull the latest version from the project's GitHub.&lt;br /&gt;
* Compiling the boot image takes approximately 30 minutes.&lt;br /&gt;
* Easily configure the kernel, compiler, etc with Buildroot.&lt;br /&gt;
* Pre-built ISOs will be available with the upcoming 2021.02 release.&lt;br /&gt;
&lt;br /&gt;
== Slackware ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=float:right&amp;gt;[[File:slackware.jpg|right|100px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://arm.slackware.com/ Slackware] is the world's oldest actively developed Linux distribution, providing a modern user land (applications) and Linux Kernel, within a more classic Unix Operating System environment.&lt;br /&gt;
&lt;br /&gt;
More information can be found about Slackware in this [https://www.youtube.com/watch?v=A5PFYUttsWA&amp;amp;list=PL1XOSJnvang3IbwySOf6m3PK1gm13hS5s 20 minute video].&lt;br /&gt;
&lt;br /&gt;
[https://docs.slackware.com/slackwarearm:inst Installation instructions].&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=QKs_RnFqLO8&amp;amp;list=PL1XOSJnvang3VLmqke2QbRitKtOD6Rm3t Installation guide video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12673</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=12673"/>
		<updated>2022-03-20T05:18:24Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: include archived battery patch series&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;
! scope=&amp;quot;col&amp;quot; | Applies To&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;2&amp;quot; | Video Output&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=622542]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&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;rockchip-edpphy-naneng&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/phy/rockchip/phy-rockchip-naneng-edp.c] Coordinate any porting with Rockchip first&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| 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=612521]&amp;lt;/sup&amp;gt;&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;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&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; and &amp;lt;code&amp;gt;rkvdec&amp;lt;/code&amp;gt;, using &amp;lt;code&amp;gt;v4l2-requests&amp;lt;/code&amp;gt;&lt;br /&gt;
| Necessary device tree changes for the Hantro VPU [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]. rkvdec hardware has been updated compared to rk3399 and may require driver changes.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
| Quartz64 Model A/B&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:#F99; 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; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Rockchip Tree&lt;br /&gt;
| PineNote&lt;br /&gt;
| Will be in Mainline in 5.18&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?id=d449121e5e8addcee654250cec298c887ecafb32]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;. Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/list/?series=586691 in review].&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=536233&amp;amp;archive=both]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c].&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.17&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/phy/rockchip?h=v5.17-rc1&amp;amp;id=42b559727a45d79c811f493515eb9b7e56016421]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-ebc&amp;lt;/code&amp;gt;&lt;br /&gt;
| A DRM driver is available [https://github.com/smaeul/linux/commits/rk35/ebc here]; also see [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&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/next/linux-next.git/commit/drivers/phy/rockchip?h=next-20220310&amp;amp;id=7160820d742a16313f7802e33c2956c19548e488]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
| Still requires DTS changes&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Fan Controller&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;emc2301&amp;lt;/code&amp;gt;&lt;br /&gt;
| Previous attempts at mainlining: [http://lkml.iu.edu/hypermail/linux/kernel/1306.1/02473.html] and [https://lore.kernel.org/all/20200928104326.40386-1-biwen.li@oss.nxp.com/]. Latest iteration: [https://gitlab.traverse.com.au/ls1088firmware/traverse-sensors/-/commit/1cdec49171ebafcf32b347e7701224144de8620b]&lt;br /&gt;
| SOQuartz Blade&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | CIF (CSI Camera)&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;video_rkcif&amp;lt;/code&amp;gt;&lt;br /&gt;
| Downstream: [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/tree/quartz64/drivers/media/platform/rockchip/cif]&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** HDMI works&lt;br /&gt;
* SPI &amp;amp;mdash; works, user needs to modify device tree to add devices&lt;br /&gt;
* I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C &amp;amp;mdash; works, user needs to modify device tree to add devices&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, likely down due to power draw on one of the rails as the same sustained bandwidth could be achieved with a different PCIe device with no issue.&lt;br /&gt;
* SDMMC1 (Wi-Fi) &amp;amp;mdash; AP6256 working, BL602 needs some work to make it flash firmware&lt;br /&gt;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* Microphone Input&lt;br /&gt;
* CSI &amp;amp;mdash; needs CIF driver&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources means that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== Things that need to be done ====&lt;br /&gt;
&lt;br /&gt;
This list is non-exhaustive as we don't exactly know how much is missing&lt;br /&gt;
&lt;br /&gt;
* Do the &amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt; refactoring into &amp;lt;code&amp;gt;rk356x.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3568.dtsi&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rk3566.dtsi&amp;lt;/code&amp;gt; that the kernel did, probably just port the kernel dtsi files for this&lt;br /&gt;
* Bring the kernel's Quartz64 DTS into the tree&lt;br /&gt;
* Write a &amp;lt;code&amp;gt;quartz64-rk3566_defconfig&amp;lt;/code&amp;gt; based on &amp;lt;code&amp;gt;evb-rk3568_defconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stretch Goals:&lt;br /&gt;
&lt;br /&gt;
* Port the Naneng Combo PHY driver to u-boot so we can SATA, USB 3 and PCIe boot&lt;br /&gt;
* Look into SPI&lt;br /&gt;
* Port the Motorcomm PHY driver to u-boot for networking?&lt;br /&gt;
* Port a basic VOP2 driver to get a framebuffer from u-boot&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work out of the box as module autoloading does not work for this specific PHY (the vendor ID is zeroed out), alternatively tell users in board-specific setup instructions to force loading the &amp;lt;code&amp;gt;motorcomm&amp;lt;/code&amp;gt; module if you set it to m.&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_GPIO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PINCTRL_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPIO and general SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PWM_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** PWM support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IOMMU&amp;lt;/code&amp;gt;&lt;br /&gt;
** IOMMU support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_MBOX&amp;lt;/code&amp;gt;&lt;br /&gt;
** Mailbox support (for communication with MCU)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_SARADC&amp;lt;/code&amp;gt;&lt;br /&gt;
** Analog-to-digital conversion support, for e.g. microphones&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_THERMAL&amp;lt;/code&amp;gt;&lt;br /&gt;
** Temperature sensor and thermal throttling support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SPI_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPI support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_VIDEO_HANTRO_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Hardware video decoder support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_IODOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support so your I/O pins have the right voltage&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Common clock support&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&lt;br /&gt;
* Tianocore EDK II port for UEFI on Quartz64&lt;br /&gt;
** https://github.com/jaredmcneill/quartz64_uefi&lt;br /&gt;
* Mainline U-Boot Port by pgwipeout&lt;br /&gt;
** https://gitlab.com/pgwipeout/u-boot-quartz64&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=12324</id>
		<title>Pinebook Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=12324"/>
		<updated>2022-01-23T02:35:48Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Basic summary of replacing keyboard */ Expand keyboard replacement section (M.2 board, antenna, bit sizes)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Guide =&lt;br /&gt;
== Introducing PineBook Pro == &lt;br /&gt;
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]&lt;br /&gt;
&lt;br /&gt;
It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open source project can deliver. &lt;br /&gt;
&lt;br /&gt;
It's compact and slim dimensions are 329mm x 220mm x 12mm (WxDxH).&lt;br /&gt;
&lt;br /&gt;
Key features include: the RK3399 SOC; USB-C for data, video-out and power-in (3A 5V); privacy switches for the microphone, BT/WiFi module, and camera; and expandable storage via NVMe (PCIe x4) with an optional adapter. &lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1 x micro SD card reader (bootable), 1 x USB 2.0, 1 x USB 3.0, 1 x USB type C Host with DP 1.2 and power-in, PCIe x4 for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch). &lt;br /&gt;
&lt;br /&gt;
The keyboard and touchpad both use the USB 2.0 protocol.  The LCD panel uses eDP MiPi display protocol.&lt;br /&gt;
&lt;br /&gt;
Many different Operating Systems (OS) are freely available from the open source community and partner projects.  These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Default Manjaro KDE Desktop Quick Start ===&lt;br /&gt;
&lt;br /&gt;
When you first get your Pinebook Pro and boot it up for the first time, it'll come with Manjaro using the KDE desktop. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the [https://forum.manjaro.org/c/manjaro-arm/78 Manjaro ARM forums.]&lt;br /&gt;
&lt;br /&gt;
On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the &amp;quot;codename&amp;quot; of your machine, and if you don't know what it's about, you can make something up (use a single word, all lower case, no punctuation; e.g. &amp;quot;pbpro&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
After you're on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi [https://wiki.pine64.org/index.php/Pinebook_Pro#ANSI_Fn_.2B_F_keys_wrong_for_F9.2C_F10.2C_F11_and_F12  privacy switch] is not disabled.&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Pro images ===&lt;br /&gt;
Under [[Pinebook Pro Software Release]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software. &lt;br /&gt;
&lt;br /&gt;
The list includes OS images and descriptions of:&lt;br /&gt;
&lt;br /&gt;
* [[PinebookPro_Software_Release#Manjaro ARM|Manjaro ARM]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Armbian|Armbian]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Twister OS|Twister OS]] (microSD Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Fedora|Fedora]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Arch_Linux_ARM|Arch Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#postmarketOS|Postmarket OS]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Kali Linux|Kali Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#DietPi|DietPi]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Q4OS|Q4OS]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#NetBSD|NetBSD]] (microSD and eMMC Boot)&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#OpenBSD|OpenBSD release for ARM64]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Gentoo|Gentoo]]&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and touchpad in the Pinebook Pro use the USB 2.0 protocol and show up as such in xinput. The keyboard features function (Fn) keys in the F-key row, which include display brightness controls, sound volume, touchpad lock, and other functionality. There is also a custom PINE64 logo key that functions as Menu/Super key. It has also a secondary functionality for setting the privacy switches.   &lt;br /&gt;
&lt;br /&gt;
The keyboard firmware binary can be flashed from userspace using the provided open source utility.&lt;br /&gt;
&lt;br /&gt;
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. &lt;br /&gt;
&lt;br /&gt;
=== Typing special characters ===&lt;br /&gt;
The [[Wikipedia:British_and_American_keyboards#Other_keyboard_layouts|UK ISO Layout]] does not have dedicated keys for characters like the German umlauts (Ä,Ö,Ü, etc). Certain characters can still be generated by means of either key combinations or key sequences. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Character&lt;br /&gt;
!Key combination/sequence&lt;br /&gt;
|-&lt;br /&gt;
|Ä, Ö, Ü, ä, ö, ü&lt;br /&gt;
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]&lt;br /&gt;
|-&lt;br /&gt;
|µ&lt;br /&gt;
|[AltGr]+[m]&lt;br /&gt;
|-&lt;br /&gt;
|Ø, ø&lt;br /&gt;
|[AltGr]+[O], [AltGr]+[o]&lt;br /&gt;
|-&lt;br /&gt;
|@&lt;br /&gt;
|[AltGr]+[q] (as on the German layout)&lt;br /&gt;
|-&lt;br /&gt;
|ß&lt;br /&gt;
|[AltGr]+[s]&lt;br /&gt;
|-&lt;br /&gt;
|§&lt;br /&gt;
|[AltGr]+[S]&lt;br /&gt;
|-&lt;br /&gt;
|°&lt;br /&gt;
|[AltGr]+[)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Privacy Switches ===&lt;br /&gt;
There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Privacy switch function and description&lt;br /&gt;
! Combination&lt;br /&gt;
! Effect&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F10&lt;br /&gt;
| Microphone Privacy switch&lt;br /&gt;
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F11&lt;br /&gt;
| WiFi Privacy switch&lt;br /&gt;
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.&lt;br /&gt;
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&amp;amp;pid=52645#pid52645 command line hack to bind/unbind]).&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F12&lt;br /&gt;
| Camera privacy switch&lt;br /&gt;
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
| Can use tools like '''&amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;''' to detect camera's presence. If not detected, check privacy switch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''&lt;br /&gt;
&lt;br /&gt;
The keyboard operates on firmware independent of the operating system.  It detects if one of the F10, F11 or F12 keys is pressed in combination with the Pine key for 3 seconds. Doing so disables power to the appropriate peripheral, thereby disabling it.  This has the same effect as cutting off the power to each peripheral with a physical switch. This implementation is very secure, since the firmware that determines whether a peripheral gets power is not part of the Pinebook Pro’s operating system. So the power state value for each peripheral cannot be overridden or accessed from the operating system. The power state setting for each peripheral is stored across reboots inside the keyboard's firmware flash memory.&lt;br /&gt;
&lt;br /&gt;
=== Basic summary of replacing keyboard ===&lt;br /&gt;
&lt;br /&gt;
This guide is very basic and should be fleshed out with (better) pictures.  There just isn't a list of steps anywhere else yet.&lt;br /&gt;
&lt;br /&gt;
Here's what the replacement keyboard looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]&lt;br /&gt;
&lt;br /&gt;
''Step 0'': If changing from ISO keyboard to ANSI keyboard, or vice versa, be sure to have a system capable of running the firmware updater that you can access either remotely or with a USB keyboard beyond the internal keyboard, as the firmware for each is very different and keys won't work correctly.  See https://forum.pine64.org/showthread.php?tid=8407 (and for NetBSD, https://forum.pine64.org/showthread.php?tid=8716).&lt;br /&gt;
&lt;br /&gt;
''Step 1'': The remove back back panel.&lt;br /&gt;
&lt;br /&gt;
There are 10 screws on the back that must be removed, and the back panel detached.  I recommend using a PH0 bit.  The speakers may remain attached via glue to the case and should be carefully pried off.  When this is done, taking photos of how everything looks now can help put it all back together later.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 2'': Places to unscrew.&lt;br /&gt;
&lt;br /&gt;
There are 3 items screwed into the keyboard frame that must be removed.  There are 2 large screws for daughter board, 3 large screws and 1 small screw for mainboard, and 4 small screws for battery.  Be sure to not lose them.  I recommend a PH00 bit for the large screws on the daughter and main boards and a PH1 bit for the small screws on the battery and mainboard.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 3'': Remove the battery.&lt;br /&gt;
&lt;br /&gt;
Once the battery screws are removed, it should be unplugged from the mainboard and removed.  Note that there are two unconnected cables lying around, that should remain unconnected.  They are used when the battery is disconnected entirely.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]&lt;br /&gt;
&lt;br /&gt;
''Step 4'': Unplug the ribbon cables.&lt;br /&gt;
&lt;br /&gt;
NOTE: you should remove the M.2 adapter board now if you have one installed. See elsewhere in this wiki for instructions on how to install/remove that piece.&lt;br /&gt;
&lt;br /&gt;
There are several ribbon cables.  To remove, flip up the tab and gentle pull the ribbon out.&lt;br /&gt;
&lt;br /&gt;
* One cable runs from the mainboard to the daughterboard underneath the battery.  Detach from both ends.  With the battery removed, detach from keyboard shell, and set aside for the new keyboard shell.&lt;br /&gt;
* One cable runs between the touchpad and the mainboard.  Detach from both ends, and also set aside.&lt;br /&gt;
* One cable runs between the keyboard and the mainboard.  This one remains attached to the keyboard and only needs to be detached from the mainboard.&lt;br /&gt;
* One cable from the LCD attaches near the lid hinge.  It should be just unplugged.&lt;br /&gt;
&lt;br /&gt;
''Step 5'': Detach microphone, speakers, and antenna.  &lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]&lt;br /&gt;
&lt;br /&gt;
The speakers, microphone, and antenna don't have to be detached from the mainboard, but they need to be detached from the keyboard shell.  The microphones are held in place by tape, and the speakers have sticky sides.  The speakers are found obviously, but the microphones (two of) can be found between the battery and the hinge area. Each microphone can be carefully pulled/wedged out of its position by a small screwdriver or pick.  The antenna, similar to the microphones, is found near the hinge area and to the top left of the battery.&lt;br /&gt;
&lt;br /&gt;
''Step 6'': Remove mainboard and daughterboard.&lt;br /&gt;
&lt;br /&gt;
At this point, the mainboard and daughterboards should be removed.  When unscrewed (see Step 2) they should pull out fairly easily.  Put them aside (including microphones and speakers if left attached.)&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]&lt;br /&gt;
&lt;br /&gt;
''Step 7'': Detach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
Step 2 didn't tell you, there are 6 more screws to remove here, 3 for each of the hinges.  I recommend a PH1 bit for these screws.  Unscrew these and the LCD panel will be able to be removed.  You may have to jiggle or move the hinges for this.  When detached, be sure to place the LCD panel such that the display is protected.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]&lt;br /&gt;
&lt;br /&gt;
''Step 8'': Try Not To Break Your Touchpad, or, How I Learned To Love Things That Bend&lt;br /&gt;
&lt;br /&gt;
'''NOTE This section really feels like you're going to break something.'''&lt;br /&gt;
&lt;br /&gt;
The touchpad is glued to the keyboard shell and it's glued well.  There are two places it is glued to.  If you can, only the middle must be force-detached.  You will think you're going to break it.  Gently apply increasing force until the glue begins to detach (you will hear a crackle as it comes off), and continue very slowly until the whole thing is detached.  This may take minutes due to that feeling you're going to break it.&lt;br /&gt;
&lt;br /&gt;
I found it helpful to lift the top left plastic bit on the keyboard to unstick that portion of the touchpad, then push on the top left portion of the touchpad to unstick the rest of the touchpad.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
&lt;br /&gt;
''Step 9'': Over the hill, touchpad goes into new shell.&lt;br /&gt;
&lt;br /&gt;
In the new keyboard shell put the touchpad back where it was, hopefully the glue will remain sufficiently attached.  If there is a glue issue, this guide unfortunately has no advice currently.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Step 10'': Reattach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The LCD panel should slot back into the keyboard frame, the same way it came out.  If the hinges were moved, they should be *very* *gently* closed such that the LCD panel and keyboard closed like normal for the remaining steps.&lt;br /&gt;
&lt;br /&gt;
''Step 11'': Tape it out.&lt;br /&gt;
&lt;br /&gt;
Move any tape from the old keyboard shell to the new one.  These items protect the mainboard and daughterboard, and keep various wires in their right place.  Some are grey and some are black.  For tape that holds the speakers, microhones, or their cables in place, do not reattach yet.&lt;br /&gt;
&lt;br /&gt;
''Step 12'': Board install.&lt;br /&gt;
&lt;br /&gt;
Install the mainboard, the daughtboard, and their connecting ribbon cable.  Be sure to put the boards in place, 2 large flat screws for the daughterboard, 3 large flat screws and one small screw for the mainboard, before attempting to place the ribbon.&lt;br /&gt;
&lt;br /&gt;
''Step 13'': Microphone, speaker, and antenna install.&lt;br /&gt;
&lt;br /&gt;
Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker &amp;quot;out&amp;quot; faces up, and the microphone cables as connected must face up (these are opposite directions.)&lt;br /&gt;
&lt;br /&gt;
''Step 14'': Reattach other ribbon cables.&lt;br /&gt;
 &lt;br /&gt;
NOTE: this would be a good time to attach/install the M.2 adapter board if that is desired. See elsewhere in this wiki for those instructions.&lt;br /&gt;
&lt;br /&gt;
The LCD panel, keyboard and touchpad ribbon cables should be reattached.  Make sure the flap is open, insert the ribbon into the slot (a portion of the cable will disappear), and push the flap down.  The cable should not be easy to pull out.&lt;br /&gt;
 &lt;br /&gt;
''Step 15'': Reattach the battery, and final re-tape.&lt;br /&gt;
  &lt;br /&gt;
The battery should be installed with the 4 screws holding it in place, and the connector attached to the mainboard.  Be sure to keep the two other cables remain unconnected.  Ensure all wires and other tapes are held in place.&lt;br /&gt;
&lt;br /&gt;
''Step 16'': Reattach the back panel.&lt;br /&gt;
 &lt;br /&gt;
Put the back panel back on, and reattach the 10 screws.&lt;br /&gt;
&lt;br /&gt;
''Step 17'': If you changed from ISO to ANSI or from ANSI to ISO, you'll need to update your firmware now.  See the links in Step 0 above.&lt;br /&gt;
&lt;br /&gt;
== Touchpad (trackpad) ==&lt;br /&gt;
Documentation for the touchpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. It is the only component of the Pinebook Pro held in place with strong adhesive tape. Here are some of its features:&lt;br /&gt;
&lt;br /&gt;
* 2 actuating buttons.&lt;br /&gt;
&lt;br /&gt;
* multi-touch functionality. &lt;br /&gt;
&lt;br /&gt;
* A matte finish that your finger can slide along easily.&lt;br /&gt;
&lt;br /&gt;
* A reasonable size (96mm &amp;amp;times; 64mm; diagonal: 115.378mm or 4.542&amp;amp;rdquo;).&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:&lt;br /&gt;
&lt;br /&gt;
* Update the firmware.&lt;br /&gt;
&lt;br /&gt;
* Keep your 2 fingers spread apart rather than close together.&lt;br /&gt;
&lt;br /&gt;
* Individual programs might need to be configured specially.&lt;br /&gt;
&lt;br /&gt;
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:&lt;br /&gt;
&lt;br /&gt;
::: &amp;lt;code&amp;gt;MOZ_USE_XINPUT2=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Experiment with other settings, via [[#X-Windows Configuration|X-Windows Configuration]] or some other system preferences; for example, you could disable double-finger scrolling, and instead enable scrolling by sliding one finger along the edge of the touchpad.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and it's software, then to the keyboard controller's USB port. Note that the touchpad does have separate firmware, (which has to be written through the keyboard controller). The touchpad vendor&amp;amp;rsquo;s firmware binary can be flashed from userspace using the following open source command-line utility:&lt;br /&gt;
&lt;br /&gt;
* Kamil Trzciński&amp;amp;rsquo;s [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].&lt;br /&gt;
&lt;br /&gt;
Naturally, forks have begun to appear:&lt;br /&gt;
&lt;br /&gt;
* Jack Humbert&amp;amp;rsquo;s [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]&lt;br /&gt;
&lt;br /&gt;
* Dragan Simic&amp;amp;rsquo;s [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor, which greatly improves the control of the cursor (see this [https://forum.pine64.org/showthread.php?tid=14531 thread] for discussion); before installing this update, consider resetting to the defaults any configuration of your touchpad.&lt;br /&gt;
&lt;br /&gt;
'''Every Pinebook Pro produced before September 2021 should have its keyboard and touchpad firmware updated.'''&lt;br /&gt;
&lt;br /&gt;
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed. See [//old.reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Before updating ''any'' firmware, your Pinebook Pro should be either fully charged or, preferably, running from mains. This utility will be writing data to chips on the keyboard and touchpad, so a loss of power during any stage of the update can result in irrecoverable damage to your touchpad or keyboard.&lt;br /&gt;
&lt;br /&gt;
The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies. The instructions below assume a Debian desktop. To install these dependencies, newer Pinebook Pro models that come with Manjaro will require a different command.&lt;br /&gt;
&lt;br /&gt;
There are two keyboard versions of the Pinebook Pro: ISO and ANSI. You need to know which model you have prior to running the updater. &lt;br /&gt;
Firmware update steps for both models are listed below.  &lt;br /&gt;
&lt;br /&gt;
What you will need:&lt;br /&gt;
&lt;br /&gt;
* Connection to WiFi (for getting dependencies).&lt;br /&gt;
&lt;br /&gt;
* Your Pinebook Pro fully charged or running from mains power.&lt;br /&gt;
&lt;br /&gt;
* An external USB keyboard &amp;amp;amp; mouse (or access to the Pinebook Pro via SSH. Please note that for some configurations, the SSH service might not be available without first having logged in once; in this case, you will definitely want at least an external keyboard).&lt;br /&gt;
&lt;br /&gt;
==== ISO Model ====&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ANSI Model ====&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Running step 1 on the ANSI keyboard model will make the keyboard and touchpad inaccessible until step 2 is ran, so an external keyboard must be connected to complete the update on this model!}}&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, if some of the keys produce incorrect characters, please check your OS’s language settings. For ANSI users, the default OS may have shipped with English UK as the default language; you can change it to English US if desired.&lt;br /&gt;
&lt;br /&gt;
==== Revised Firmware ====&lt;br /&gt;
&lt;br /&gt;
In addition, you might consider using revised firmware data; this is one final step that should not require a reboot:&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ISO''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_iso.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ANSI''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_ansi.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Windows Configuration ===&lt;br /&gt;
''Before making adjustments, consider updating the firmware; reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.''&lt;br /&gt;
&lt;br /&gt;
Some forum members have found that an adjustment to X-Windows will allow finer motion in the touchpad. If you use the '''Synaptic''' mouse/touchpad driver, use this command to make the change live:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may experiment with different settings, but 0.25 was tested as helping noticeably.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To make the change persist across reboots, change the file &amp;lt;code&amp;gt;/etc/X11/xorg.conf&amp;lt;/code&amp;gt; similar to below:&lt;br /&gt;
&amp;lt;pre&amp;gt;    Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;touchpad catchall&amp;quot;&lt;br /&gt;
        Driver &amp;quot;synaptics&amp;quot;&lt;br /&gt;
        MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
        MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
        Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&lt;br /&gt;
    EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
The line &amp;lt;code&amp;gt;Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&amp;lt;/code&amp;gt; is the change.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Another forum user built on the above settings a little, and have found these to be very good:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&lt;br /&gt;
synclient TapButton1=1&lt;br /&gt;
synclient TapButton2=3&lt;br /&gt;
synclient TapButton3=2&lt;br /&gt;
synclient FingerLow=30&lt;br /&gt;
synclient PalmDetect=1&lt;br /&gt;
synclient VertScrollDelta=64&lt;br /&gt;
synclient HorizScrollDelta=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FingerLow&amp;lt;/code&amp;gt; has the same value as 'FingerHigh' in one config (30). It is believed to help reduce mouse movement as you lift your finger, but it's unknown whether synaptic works like this.&lt;br /&gt;
You may find this config to be comfortable for daily use.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TabButton&amp;lt;/code&amp;gt; allows to just tab the touchpad instead of physically pressing it down (to get this click noise).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;right mouse click&amp;lt;/code&amp;gt; is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:&lt;br /&gt;
&amp;lt;pre&amp;gt; synclient MaxTapTime=250 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some users may encounter an issue with the mouse jumping when typing when using libinput driver (has not been test with synaptic) due to their hand hitting the touchpad which can be fixed by updating the xorg settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the xorg config simliar to the previou example. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;on&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setting can be verified by using the xinput command to first list the devices and then listing the properties for the Touchpad device. Exact commands to check this have been omitted for save of brevity. If DisableWhileTyping is shown enabled but does not appear to be working the issue may be due to the fact that the keyboard is connected to a USB bus which causes it to be seen as a external keyboard. To resolve this one can add the config below which sets the keyboard to internal to ensure the DisableWhileTyping works properly. &lt;br /&gt;
&lt;br /&gt;
You will need to edit &amp;lt;code&amp;gt;/etc/libinput/local-overrides.quirks&amp;lt;/code&amp;gt; and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Serial Keyboards]&lt;br /&gt;
MatchUdevType=keyboard&lt;br /&gt;
MatchBus=usb&lt;br /&gt;
AttrKeyboardIntegration=internal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once X11 is restarted the new setting should now take effect and you will no longer be able to use the touchpad while typing which will mostly eliminate the mouse jumping issue.&lt;br /&gt;
&lt;br /&gt;
== Power Supply ==&lt;br /&gt;
* Input Power: 5V DC @ 3A&lt;br /&gt;
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack&lt;br /&gt;
* USB-C 5V, 15W PD quickcharge&lt;br /&gt;
* Only use one power input at a time, barrel jack OR USB-C&lt;br /&gt;
&lt;br /&gt;
== LEDs ==&lt;br /&gt;
In total, there are four LEDs on the Pinebook Pro, three of which are placed in the top-left side of the keyboard, and one near the barrel port: &lt;br /&gt;
&lt;br /&gt;
# The red LED next to the barrel port indicates charging, in three ways.  First, it will illuminate steadily when either the factory power supply or a USB Type-C charger is connected to the Pinebook Pro, and the battery is getting charged.  Second, if the battery is at 100%, the LED will remain turned off regardless of the connected power input; however, this is [https://forum.pine64.org/showthread.php?tid=10899 rather rarely achieved].  Third, this LED will flash at 0.5&amp;amp;nbsp;Hz if there are any problems that prevent charging, such as the battery becoming too hot.&lt;br /&gt;
# The power indicator LED, above the keyboard, supports three different colors: green, amber and red. It is also capable of flashing to indicate eMMC activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused). &lt;br /&gt;
# The green NumLock LED, above the keyboard.&lt;br /&gt;
# The green CapsLock LED, above the keyboard.&lt;br /&gt;
&lt;br /&gt;
The NumLock and CapsLock LEDs serve their usual purposes on a keyboard, but they also have a secondary function. When the privacy switches get activated they blink to confirm that the switch has been activated.&lt;br /&gt;
&lt;br /&gt;
== Webcam ==&lt;br /&gt;
{{Hint| You can use Cheese to test the Camera functionality}}&lt;br /&gt;
* Streaming video resolutions supported, (uncompressed):&lt;br /&gt;
** 320 x 240 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
* Still frame resolutions supported:&lt;br /&gt;
** 160 x 120&lt;br /&gt;
** 176 x 144&lt;br /&gt;
** 320 x 240&lt;br /&gt;
** 352 x 288 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
While it has been said that some Pinebook Pro units contain only one microphone despite having two labeled microphone holes on the outer casing, other units do indeed contain two microphones. It is presently unclear which batches have either configuration; units from the initial community batch of 1000 units (following the initial 100) are believed to contain two, populating both labeled holes.&lt;br /&gt;
&lt;br /&gt;
The wires leading to both microphones connect to the mainboard with a small white plastic connector, located directly adjacent to the ribbon cable attachment point for the keyboard interface.&lt;br /&gt;
&lt;br /&gt;
'''Microphones not working?'''&lt;br /&gt;
&lt;br /&gt;
If pavucontrol input doesn't show microphone activity try changing the [[Pinebook_Pro#Privacy_Switches|privacy switches]]. If the switches are in the correct place and microphone input isn't working you can run &amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt; from the command line, hit &amp;lt;i&amp;gt;F6&amp;lt;/i&amp;gt; and select the &amp;lt;i&amp;gt;es8316&amp;lt;/i&amp;gt;, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0dB, change the audio profile in pavucontrol to another one with input. Additionally you may want to modify ADC PGA to get the levels to where you want them. If that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the section [[#Technical Reference|Technical Reference]]).&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and WiFi ==&lt;br /&gt;
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]&lt;br /&gt;
===Hardware Overview===&lt;br /&gt;
The Pinebook Pro contains an AMPAK AP6256 wireless module to provide Wi-Fi (compliant to IEEE 802.11ac) and Bluetooth (compliant to Bluetooth SIG revision 5.0). The module contains a Broadcom transceiver IC, believed to be the BCM43456, as well as the support electronics needed to allow the Wi-Fi and Bluetooth modes to share a single antenna. &lt;br /&gt;
&lt;br /&gt;
The wireless module interfaces with the Pinebook Pro’s system-on-chip using a combination of three interfaces: Bluetooth functionality is operated by serial UART and PCM, while the Wi-Fi component uses SDIO. It is unknown if the module’s Bluetooth capabilities are usable under operating systems that do not support SDIO.&lt;br /&gt;
&lt;br /&gt;
The module’s RF antenna pin is exposed on the mainboard via a standard Hirose U.FL connector, where a coaxial feedline links it to a flexible adhesive antenna situated near the upper right corner of the Pinebook Pro’s battery. As the RF connector is fragile and easily damaged, it should be handled carefully during connection and disconnection, and should not be reconnected frequently.&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
Problems have been reported with the Wi-Fi transceiver’s reliability during extended periods of high throughput, especially on the 2.4 GHz band. While the cause of this has yet to be determined, switching to the 5 GHz band may improve stability.&lt;br /&gt;
&lt;br /&gt;
Since the Bluetooth transceiver shares both its spectrum and antenna with 2.4 GHz Wi-Fi, simultaneous use of these modes may cause interference, especially when listening to audio over Bluetooth. If Bluetooth audio cuts out frequently, switching to the 5 GHz band – or deactivating Wi-Fi – may help.&lt;br /&gt;
&lt;br /&gt;
===Wi-Fi Capabilities===&lt;br /&gt;
Wi-Fi on the Pinebook Pro is capable of reaching a maximum data transfer rate of approximately 433 megabits per second, using one spatial stream. The transceiver does not support multiple spatial streams or 160-MHz channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
The Wi-Fi transceiver supports the lower thirteen standard channels on the 2.4 GHz band, using a bandwidth of 20 MHz. At least twenty-four channels are supported on the 5 GHz band, spanning frequencies from 5180 to 5320 MHz, 5500 to 5720 MHz, and 5745 to 5825 MHz, with bandwidths of 20, 40, or 80 MHz.&lt;br /&gt;
&lt;br /&gt;
Maximum reception sensitivity for both bands is approximately -92 dBm. The receiver can tolerate input intensities of no more than -20 dBm on the 2.4 GHz band, and no more than -30 dBm on the 5 GHz band. Maximum transmission power is approximately +15 dBm for either band, falling further to approximately +10 dBm at higher data transfer rates on the 5 GHz band.&lt;br /&gt;
&lt;br /&gt;
With current available drivers and firmware, the Wi-Fi interface supports infrastructure, ad-hoc, and access-point modes with satisfactory reliability. Monitor mode is not presently supported. Wi-Fi Direct features may be available, but it is unclear how to make use of them under Linux.&lt;br /&gt;
&lt;br /&gt;
Be aware that Linux userspace utilities, such as &amp;lt;code&amp;gt;iw&amp;lt;/code&amp;gt;, may report inaccurate information about the capabilities of wireless devices. Parameter values derived from vendor datasheets, or direct testing, should be preferred to the outputs of hardware-querying tools.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth Capabilities===&lt;br /&gt;
Bluetooth data transfer speeds have an indicated maximum of 3 megabits per second, but it is unclear what practical data rates can be expected. Audio streaming over Bluetooth is functioning normally, as is networking. Bluetooth Low-Energy functions, such as interacting with Bluetooth beacons, have not yet been tested conclusively.&lt;br /&gt;
&lt;br /&gt;
The Bluetooth transceiver supports all 79 channel allocations, spanning frequencies from 2402 MHz to 2480 MHz. Reception sensitivity is approximately -85 dBm, with a maximum tolerable reception intensity of -20 dBm. Bluetooth transmission power is limited to +10 dBm.&lt;br /&gt;
&lt;br /&gt;
===Disabling Bluetooth===&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth under Linux once:&lt;br /&gt;
&lt;br /&gt;
 sudo rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
To confirm if Bluetooth under Linux is disabled:&lt;br /&gt;
&lt;br /&gt;
 rfkill&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable rfkill-block@bluetooth&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select &amp;lt;i&amp;gt;plugins&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;PowerManager&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;configuration&amp;lt;/i&amp;gt; and then deselect the &amp;lt;i&amp;gt;auto power on&amp;lt;/i&amp;gt; option&lt;br /&gt;
&lt;br /&gt;
== LCD Panel ==&lt;br /&gt;
* Model: BOE NV140FHM-N49&lt;br /&gt;
* 14.0&amp;quot; (35.56&amp;amp;nbsp;cm) diagonal size&lt;br /&gt;
* 1920x1080 resolution&lt;br /&gt;
* 60&amp;amp;nbsp;Hz refresh rate&lt;br /&gt;
* IPS technology&lt;br /&gt;
* 1000:1 contrast&lt;br /&gt;
* 250&amp;amp;nbsp;nit brightness&lt;br /&gt;
* 63% sRGB coverage&lt;br /&gt;
* 6-bit color&lt;br /&gt;
* 30-pin eDP connection&lt;br /&gt;
&lt;br /&gt;
Some people have tested hardware video decode using the following;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External ports list ==&lt;br /&gt;
Here are a list of the external ports. See [[Pinebook_Pro#Expansion_Ports|Technical Reference - Expansion Ports]] for port specifications.&lt;br /&gt;
* Left side&lt;br /&gt;
** Barrel jack for power, (with LED)&lt;br /&gt;
** USB 3, Type A&lt;br /&gt;
** USB 3, Type C&lt;br /&gt;
* Right side&lt;br /&gt;
** USB 2, Type A&lt;br /&gt;
** Standard headset jack&lt;br /&gt;
** MicroSD card slot&lt;br /&gt;
&lt;br /&gt;
== Using the UART ==&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. Swapping the tx and rx around from this also works and is more traditional. See the official [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 document].]]&lt;br /&gt;
&lt;br /&gt;
UART output is enabled by flipping the UART switch to the ON position (item 9). To do so you need to remove the Pinebook Pro's bottom cover - please follow [[Pinebook_Pro#Disassembly_and_Reassembly|proper disassembly and reassembly protocol]]. The OFF position is towards the touchpad, the ON position is towards the display hinges.&lt;br /&gt;
&lt;br /&gt;
With the UART switch in the ON position, console is relayed via the audiojack and the laptop's sound is turned OFF. Please ensure that you are using a 3.3&amp;amp;nbsp;V interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3&amp;amp;nbsp;V and 5&amp;amp;nbsp;V variants) to avoid damage to the CPU.  Older version of the serial console cable sold by Pine64 uses wrong voltage level and should not be used; see [https://forum.pine64.org/showthread.php?tid=9367 this forum thread] for further information.  Recent version of the same cable uses the right voltage level.&lt;br /&gt;
&lt;br /&gt;
Insert the USB plug of the cable into an open USB port on the machine which will monitor, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro audio port. Run the following in a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you should find a line similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serial output should now be accessible using screen, picocom or minicom (and others).&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&lt;br /&gt;
picocom /dev/ttyUSB0 -b 1500000&lt;br /&gt;
&lt;br /&gt;
minicom -D /dev/ttyUSB0 -b 1500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old versions of U-Boot do not use the UART for console output. &amp;lt;strike&amp;gt;The console function is activated by the Linux kernel. Thus, if you use a non-Pinebook Pro Linux distro and want the UART as a console, you have to manually enable it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the optional NVMe adapter ==&lt;br /&gt;
The optional NVMe adapter allows the use of M.2 cards that support the NVMe standard, (but not SATA standard). The optional NVMe M.2 adapter supports '''M''' &amp;amp; '''M'''+'''B''' keyed devices, in both 2242 &amp;amp; 2280 physical sizes, the most common ones available. In addition, 2230 &amp;amp; 2260 are also supported, though NVMe devices that use those sizes are rare.&lt;br /&gt;
&lt;br /&gt;
Once you have fitted and tested your NVMe drive, please add a note to this page [[Pinebook Pro Hardware Accessory Compatibility]] to help build a list of tried and tested devices.&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in PineBook Pro.&lt;br /&gt;
&lt;br /&gt;
=== Installing the adapter ===&lt;br /&gt;
The V2.1-2019-0809 SSD adapter that shipped with the initial Pinebook Pro batches had significant issues. A repair kit will be shipped to address those issues.&lt;br /&gt;
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&amp;amp;pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)&lt;br /&gt;
&lt;br /&gt;
The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with touchpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.&lt;br /&gt;
&lt;br /&gt;
This is the link to the Pinebook Pro accessories in the store: [[https://pine64.com/?v=0446c16e2e66]]&lt;br /&gt;
&lt;br /&gt;
Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found [https://eli.gladman.cc/blog/2020/06/23/pine-book-pro-nvme.html here].&lt;br /&gt;
&lt;br /&gt;
=== Post NVMe install power limiting ===&lt;br /&gt;
Some NVMe SSDs allow reducing the maximum amount of power. Doing so may reduce the speed, but it may be needed in the Pinebook Pro to both improve reliability at lower battery levels. And to reduce power used, to maintain battery life.&lt;br /&gt;
Here are the commands to obtain and change the power settings. The package 'nvme-cli' is required to run these commands. The example shows how to find the available power states, and then sets it to the lowest, non-standby setting, (which is 3.8 watts for the device shown);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme id-ctrl /dev/nvme0&lt;br /&gt;
NVME Identify Controller:&lt;br /&gt;
...&lt;br /&gt;
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0&lt;br /&gt;
         rwt:0 rwl:0 idle_power:- active_power:-&lt;br /&gt;
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1&lt;br /&gt;
         rwt:1 rwl:1 idle_power:- active_power:-&lt;br /&gt;
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2&lt;br /&gt;
         rwt:2 rwl:2 idle_power:- active_power:-&lt;br /&gt;
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3&lt;br /&gt;
         rwt:3 rwl:3 idle_power:- active_power:-&lt;br /&gt;
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4&lt;br /&gt;
         rwt:4 rwl:4 idle_power:- active_power:-&lt;br /&gt;
&lt;br /&gt;
$ sudo nvme get-feature /dev/nvme0 -f 2&lt;br /&gt;
get-feature:0x2 (Power Management), Current value:00000000&lt;br /&gt;
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s&lt;br /&gt;
set-feature:02 (Power Management), value:0x000002&amp;lt;/pre&amp;gt;&lt;br /&gt;
Some NVMe SSDs don't appear to allow saving the setting with &amp;quot;-s&amp;quot; option. In those cases, leave off the &amp;quot;-s&amp;quot; and use a startup script to set the non-default power state at boot.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to test performance without saving the new power setting semi-permanantly, then leave off the &amp;quot;-s&amp;quot; option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving &amp;amp; transitions based on usage. To check if you have a NVMe SSD with this feature;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme get-feature -f 0x0c -H /dev/nvme0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Information for this feature, (on a Pinebook Pro), is a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Using as data drive ===&lt;br /&gt;
As long as the kernel in use has both the PCIe and NVMe drivers, you should be able to use a NVMe drive as a data drive. It can automatically mount when booting from either the eMMC or an SD card. This applies to Linux, FreeBSD, and Chromium, using the normal partitioning and file system creation tools. Android requires testing.&lt;br /&gt;
&lt;br /&gt;
=== Using as OS root drive ===&lt;br /&gt;
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the [https://github.com/mrfixit2001/updates_repo/blob/v1.1/pinebook/filesystem/mrfixit_update.sh U-Boot update script] from the mrfixit2001 Debian or [https://pastebin.com/raw/EeK074XB Arglebargle's modified script], and [https://github.com/pcm720/rockchip-u-boot/releases the modified u-boot images] provided by forum user pcm720, you can now add support to boot from an NVMe drive. Binary images are useable with SD, eMMC, and [[Pinebook_Pro_SPI|SPI flash]]. For OS images using the mainline kernel, there are a few variants of U-Boot available that also support NVMe as the OS drive. Though these may require writing the U-Boot to the SPI flash for proper use of the NVMe as the OS drive.&lt;br /&gt;
&lt;br /&gt;
The current boot order, per last testing, for this modified U-Boot is:&lt;br /&gt;
*MicroSD&lt;br /&gt;
*eMMC&lt;br /&gt;
*NVMe&lt;br /&gt;
&lt;br /&gt;
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&amp;amp;pid=53764#pid53764 the forum post.]&lt;br /&gt;
&lt;br /&gt;
It is also possible to initially boot off an eMMC or SD card, then transfer to a root file system on the NVMe. Currently, it is necessary to have the U-Boot code on an eMMC or SD card.  (A forum member [https://forum.pine64.org/showthread.php?tid=8439 posted here] about using a modified version of U-Boot with NVMe drivers, that uses &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; off the NVMe drive. So this may change in the future.)&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].&lt;br /&gt;
&lt;br /&gt;
== Caring for the PineBook Pro ==&lt;br /&gt;
=== Bypass Cables ===&lt;br /&gt;
The mainboard features two (disconnected by default) bypass cables that are only to be used with the battery disconnected. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run the laptop without a battery. Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice].  &lt;br /&gt;
&lt;br /&gt;
'''Note that despite the bypass cable being a two conductor cable, it is only used as one. Both wires being soldered together on either side is normal!'''&lt;br /&gt;
&lt;br /&gt;
{{warning|Do not connect the bypass cables with the battery connected.  Using the bypass cables with the battery connected can permanently damage the computer.}}&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Service Step-by-Step Guides ===&lt;br /&gt;
&lt;br /&gt;
Under [[Pinebook_Service_Step_by_Step_Guides|Service Guides for Pinebook]] you can find instructions guides concerning disassembly of:&lt;br /&gt;
&lt;br /&gt;
* The installation process on Pinebook Pro similar to 14&amp;quot; Pinebook&lt;br /&gt;
* The installation process is the reverse order of removal guide:&lt;br /&gt;
** 14″ Pinebook Lithium Battery Pack Removal Guide&lt;br /&gt;
** 14″ Pinebook LCD Panel Screen Removal Guide&lt;br /&gt;
** 14″ Pinebook eMMC Module Removal Guide&lt;br /&gt;
&lt;br /&gt;
== Using the SPI flash device ==&lt;br /&gt;
&lt;br /&gt;
See [[Pinebook Pro SPI]] for details.&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro comes with a 128Mbit, (16MByte), flash device suitable for initial boot target, to store the bootloader. The SoC used on the Pinebook Pro boots from this SPI flash device first, before eMMC or SD card. At present, April 19, 2020, the Pinebook Pros ship without anything programmed in the SPI flash device. So the SoC moves on to the next potential boot device, the eMMC. ARM/ARM64 computers do not have a standardized BIOS, yet.&lt;br /&gt;
&lt;br /&gt;
Here is some information on using the SPI flash device:&lt;br /&gt;
&lt;br /&gt;
* You need the kernel built with SPI flash device support, which will supply a device similar to: code&amp;gt;/dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The Linux package below, will need to be available: &amp;lt;code&amp;gt;mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
* You can then use this program from the package to write the SPI device: &amp;lt;code&amp;gt;flashcp &amp;amp;lt;filename&amp;amp;gt; /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you need to recover from a defective bootloader written to the SPI flash, you can simply short pin 6 of the SPI flash to GND and boot. This will render the SoC bootrom unable to read from the SPI flash and have it fall back to reading the bootloader from other boot media like the eMMC or Micro SD card.&lt;br /&gt;
&lt;br /&gt;
The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware. At present, April 19th, 2020, there is no good bootloader image to flash into the SPI flash device. This is expected to change, as there are people working on issue.&lt;br /&gt;
&lt;br /&gt;
= Software tuning guide =&lt;br /&gt;
Details on how to get the most out of a Pinebook Pro &amp;amp; its RK3399 SoC.&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's default Manjaro KDE system ==&lt;br /&gt;
=== Watching DRM content (Netflix, etc.) ===&lt;br /&gt;
Most paid online streaming services use Widevine DRM to make their content more difficult to pirate. Widevine is not directly supported on Manjaro KDE, however it is still possible to watch DRM content via the &amp;quot;chromium-docker&amp;quot; package which downloads a 32-bit ARM container and installs Chromium with Widevine inside of that. While not space-efficient, or efficient in general, it's the recommended solution for watching this content on your Pinebook Pro. You can install this package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy chromium-docker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking GPU capabilities ===&lt;br /&gt;
To see what versions of OpenGL and OpenGL ES are supported by the Pinebook Pro, what driver is in use, and what version of the driver is loaded, install the &amp;quot;mesa-demos&amp;quot; package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy mesa-demos&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then run:&lt;br /&gt;
&amp;lt;pre&amp;gt;glxinfo | grep OpenGL&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give detailed information about your graphics card and driver, useful for debugging.&lt;br /&gt;
&lt;br /&gt;
=== Better GPU compatibility and performance ===&lt;br /&gt;
For better graphics performance, you may install the &amp;quot;mesa-git&amp;quot; package, built and supplied in the Manjaro ARM repos. This lets you bring in the latest features, optimizations, and bugfixes for the graphics driver used by the Pinebook Pro. Installation is as simple as:&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sy mesa-git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you may reboot to load the newer driver.&lt;br /&gt;
&lt;br /&gt;
With Mesa 20.2 there is no longer much reason to use this over the standard mesa package, and applications may occasionally break with mesa-git.&lt;br /&gt;
&lt;br /&gt;
[https://docs.mesa3d.org/bugs.html Reporting bugs] to the Mesa project will help make sure any problems are quickly fixed.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL 3.3 support ===&lt;br /&gt;
By default, with the current state of the Panfrost GPU driver, the Pinebook Pro supports OpenGL 2.1 and OpenGL ES 3.0. If you want to use OpenGL 3.3, you need to set the system-wide environment variable, open the '''/etc/environment''' file with:&lt;br /&gt;
&amp;lt;pre&amp;gt;kate /etc/environment&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then at the bottom of the file, on a new line, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;PAN_MESA_DEBUG=&amp;quot;gl3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then save the file, entering your password when prompted, and reboot the system. When you check your GPU capabilities, it should report OpenGL 3.3 and applications that rely on it should function properly. Note that GL 3.3 support is incomplete and some rendering features do not work yet, notably geometry shaders.&lt;br /&gt;
&lt;br /&gt;
=== Install Anbox on Pinebook Pro Manjaro 20.10 ===&lt;br /&gt;
[https://www.youtube.com/watch?v=EU8_Q11dATs Youtube video on installing Anbox on Pienbook Pro Manjaro Build 20.10 by LivingLinux]&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's previously-default Debian system ==&lt;br /&gt;
Here are some hints on what you can do to customize the Pinebook Pro's previous factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])&lt;br /&gt;
&lt;br /&gt;
=== Initial user changes, password, name, etc ===&lt;br /&gt;
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.&lt;br /&gt;
&lt;br /&gt;
* Reboot (this is just to ensure all background processes belong to the user are not running... there are other ways to achieve this but this way is easy)&lt;br /&gt;
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal&lt;br /&gt;
* Login as root (login: root, password: root)&lt;br /&gt;
* Set a strong password for the root user using the following command and it's prompts:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd (and follow prompts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock user to your prefered username (replace myself with whatever you like):&lt;br /&gt;
&amp;lt;pre&amp;gt;# usermod -l myself -d /home/myself -m rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock group to match your preferred username:&lt;br /&gt;
&amp;lt;pre&amp;gt;# groupmod -n myself rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Put your name in the account, (replace &amp;quot;John A Doe&amp;quot; with your name):&lt;br /&gt;
&amp;lt;pre&amp;gt;# chfn -f &amp;quot;John A Doe&amp;quot; myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set a strong password for the normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Log out of the text terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;# logout&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user&lt;br /&gt;
* Open text terminal to fix login error: &amp;quot;Configured directory for incoming files does not exist&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ blueman-services&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select &amp;quot;Transfer&amp;quot; tab and set &amp;quot;Incoming Folder&amp;quot; to myself&lt;br /&gt;
OR&lt;br /&gt;
If adduser is in distro, this is MUCH easier&lt;br /&gt;
sudo adduser $USER ,, fill out requested data&lt;br /&gt;
Then,, sudo adduser $USER $GROUP,,, 1 group at a time&lt;br /&gt;
To see which groups to add,,, id $USER,  id rock&lt;br /&gt;
&lt;br /&gt;
=== Changing the default hostname ===&lt;br /&gt;
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl&lt;br /&gt;
   Static hostname: Debian-Desktop&lt;br /&gt;
         Icon name: computer&lt;br /&gt;
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb&lt;br /&gt;
           Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99&lt;br /&gt;
  Operating System: Debian GNU/Linux 9 (stretch)&lt;br /&gt;
            Kernel: Linux 4.4.210&lt;br /&gt;
      Architecture: arm64&amp;lt;/pre&amp;gt;&lt;br /&gt;
To change, use this, (with &amp;quot;My_Hostname&amp;quot; used as the example);&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl set-hostname My_Hostname&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whence done, you can re-verify using the first example.&lt;br /&gt;
&lt;br /&gt;
Then you should backup and edit your &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; entry's name;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`&lt;br /&gt;
$ sudo vi /etc/hosts&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
127.0.0.1	My_Hostname&lt;br /&gt;
::1		localhost ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0		ip6-localnet&lt;br /&gt;
ff00::0		ip6-mcastprefix&lt;br /&gt;
ff02::1		ip6-allnodes&lt;br /&gt;
ff02::2		ip6-allrouters&lt;br /&gt;
127.0.1.1       linaro-alip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable Chromium browser's prompt for passphrase &amp;amp; password storage ===&lt;br /&gt;
&lt;br /&gt;
Perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* On the tool bar, hover over the Chromium icon&lt;br /&gt;
* Using the right mouse button, select '''Properties'''&lt;br /&gt;
* In the '''Command:''' line section, add &amp;lt;code&amp;gt;--password-store=basic&amp;lt;/code&amp;gt; before the &amp;lt;code&amp;gt;%U&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use the '''x Close''' button to save the change&lt;br /&gt;
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.&lt;br /&gt;
&lt;br /&gt;
=== Changing the boot splash picture ===&lt;br /&gt;
&lt;br /&gt;
The default boot splash picture can be replaced using the following instructions:&lt;br /&gt;
&lt;br /&gt;
* Install '''ImageMagick''' which will do the conversion&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo apt-get install imagemagick&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).&lt;br /&gt;
* From the directory in which your new image is stored run the following commands&lt;br /&gt;
* Convert your image to the bootsplash raw format using imagemagick convert.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a backup copy of your current splash screen&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy your new splash screen into place&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp splash.fb /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the correct permissions on the splash.fb file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo chmod 644 /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed&lt;br /&gt;
&lt;br /&gt;
=== Watching Amazon Prime videos with Chromium ===&lt;br /&gt;
When you create a new user, it will be necessary to launch the Chromium browswer with a specific user agent like below;&lt;br /&gt;
&amp;lt;pre&amp;gt;chromium-browser --user-agent=&amp;quot;Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There may be more tweaks needed.&lt;br /&gt;
&lt;br /&gt;
=== Enabling text boot time messages ===&lt;br /&gt;
&lt;br /&gt;
By default, most Linux distros have a boot screen with a picture. To see all the boot time messages, use one of the following;&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 vi /etc/default/u-boot&lt;br /&gt;
&lt;br /&gt;
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.&lt;br /&gt;
&lt;br /&gt;
* Update the U-Boot configuration:&lt;br /&gt;
&lt;br /&gt;
 u-boot-update&lt;br /&gt;
&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 vi /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
* Change '''console=ttyS2,1500000''' to '''console=tty1'''&lt;br /&gt;
* Remove the '''bootsplash.bootfile''' option and it's parameter.&lt;br /&gt;
* You can add verbose logging by appending '''ignore_loglevel''' to the line where boot splash was.&lt;br /&gt;
* Leave everything else alone.&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
== Improving readability ==&lt;br /&gt;
&lt;br /&gt;
Some people find that a 14&amp;quot; LCD screen with 1080p, (1920 x 1080), has text and icons a bit too small. There are things you can do to make the screen easier to use and read.&amp;lt;br&amp;gt;&lt;br /&gt;
* Increase the font size&lt;br /&gt;
* Use a font with more pronounced features&lt;br /&gt;
* Increase the various window manager sizes (e.g. increase the height of the tool bar)&lt;br /&gt;
* Change the color scheme to be easier on the eyes. Higher contrast can help usability.&lt;br /&gt;
* Change the window manager's decorations (e.g. use larger icons)&lt;br /&gt;
* Use a workspace manager, with one application per workspace&lt;br /&gt;
* When at home or office, use an external monitor&lt;br /&gt;
* Change the X-Windows DPI. One such method that someone used successfully, is:&amp;lt;br&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;echo &amp;quot;Xft.dpi: 150&amp;quot; &amp;gt;&amp;gt; ~/.Xresources&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Change the 150 as desired to get the size adjustment you want.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
However, do not change the resolution of the LCD screen, otherwise you may end up with a blank / black screen. If that happens, see this troubleshooting section for the fix:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]&lt;br /&gt;
&lt;br /&gt;
== Chromium tweaks ==&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--disable-low-res-tiling \&lt;br /&gt;
--num-raster-threads=6 \&lt;br /&gt;
--profiler-timing=0 \&lt;br /&gt;
--disable-composited-antialiasing \&lt;br /&gt;
--test-type \&lt;br /&gt;
--show-component-extension-options \&lt;br /&gt;
--ignore-gpu-blacklist \&lt;br /&gt;
--use-gl=egl \&lt;br /&gt;
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \&lt;br /&gt;
--ppapi-flash-version=32.0.0.255 \&lt;br /&gt;
--enable-pinch \&lt;br /&gt;
--flag-switches-begin \&lt;br /&gt;
--enable-gpu-rasterization \&lt;br /&gt;
--enable-oop-rasterization \&lt;br /&gt;
--flag-switches-end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in some cases, this may also decrease performance substantially, as observed when using these flags on the Manjaro KDE desktop. Feel free to experiment to find what is smoothest for you personally.&lt;br /&gt;
&lt;br /&gt;
== gVim has performance issue ==&lt;br /&gt;
It appears that using GTK3 can cause very slow scrolling, while Vim in a terminal window works fine.&amp;lt;br/&amp;gt;&lt;br /&gt;
Simply revert back to using GTK2, (how to do so is somewhat Linux distro-specific).&lt;br /&gt;
&lt;br /&gt;
Another solution may be to run gVim with &lt;br /&gt;
&lt;br /&gt;
 GDK_RENDERING=image&lt;br /&gt;
&lt;br /&gt;
environment variable set. It seems that this improves the performance by reverting back to software-only rendering.&lt;br /&gt;
&lt;br /&gt;
== Kernel options ==&lt;br /&gt;
Here are some Pinebook Pro &amp;amp; its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.&lt;br /&gt;
&lt;br /&gt;
To see if a specific feature is enabled in the current kernel, you can use something like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep -i rockchip_pcie /proc/config.gz&lt;br /&gt;
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set&lt;br /&gt;
CONFIG_PHY_ROCKCHIP_PCIE=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If it's listed as &amp;lt;code&amp;gt;=m&amp;lt;/code&amp;gt;, then it's a module. You can see if the module is loaded with;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep -i rockchip_pcie&lt;br /&gt;
phy_rockchip_pcie      16384  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note modules are not loaded until needed. Thus, we sometimes check the kernel configuration instead to see if a feature is configured first, then see if it's a module.&lt;br /&gt;
&lt;br /&gt;
=== Hardware video decoding ===&lt;br /&gt;
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.&amp;lt;br&amp;gt;&lt;br /&gt;
Older systems, such as the previously-default Debian desktop, use the Rockchip-supplied kernel module &amp;lt;code&amp;gt;rk-vcodec&amp;lt;/code&amp;gt;. To check, something like this can be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep rk-vcodec&lt;br /&gt;
    or&lt;br /&gt;
$ zgrep RK_VCODEC /proc/config.gz&lt;br /&gt;
CONFIG_RK_VCODEC=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that in the above example, the Rockchip video CODEC is not built as a module, but included into the kernel. Thus, it does not show up in the list modules check.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer systems may use a different option as in the configuration below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep HANTRO /proc/config.gz&lt;br /&gt;
CONFIG_VIDEO_HANTRO=m&lt;br /&gt;
CONFIG_VIDEO_HANTRO_ROCKCHIP=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting guide =&lt;br /&gt;
&lt;br /&gt;
Do not to panic if something goes wrong or in an unexpected way.  Instead, stop and consider carefully how to undo something, or how to redo it.  This particularly applies when flashing a new operating system, or flashing new firmware to the keyboard or touchpad.  If everything fails, consider reporting the issue on the forums, with as many relevant details as available.&lt;br /&gt;
&lt;br /&gt;
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.&lt;br /&gt;
&lt;br /&gt;
= Hardware/Accessory Compatibility =&lt;br /&gt;
Please contribute to the [[Pinebook Pro Hardware Accessory Compatibility|hardware/accessory compatibility page]], which lists the status of hardware tested with the Pinebook Pro.  Available hardware categories include the following:&lt;br /&gt;
&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
== Disassembly and Reassembly  == &lt;br /&gt;
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]&lt;br /&gt;
&lt;br /&gt;
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]&lt;br /&gt;
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]&lt;br /&gt;
&lt;br /&gt;
There are a few '''mandatory''' precautions to be taken:&lt;br /&gt;
&lt;br /&gt;
* Do not open the laptop by lifting the lid while the Pinebook Pro bottom cover is removed - this can cause structural damage to the hinges and/or other plastic components of the chassis such as the IO port cut-outs.&lt;br /&gt;
* When removing the back cover plate, *do not, under any circumstances, slide your fingertips between the metal shell and the plastic frame!* The back cover plate edges are sharp, and when combined with the pressure and movement generated from, specifically, attempting to slide the tips of your fingers along the bottom edge of the plate along the lid-hinge, they *will* slice open the tips of your fingers like a knife.&lt;br /&gt;
* When removing the back cover plate, use care to avoid damaging the speakers. They can be stuck to the back cover with double-sided tape, and the thin wires are very delicate. Newer Pinebook Pro laptops (as of the May 2021 batch, and perhaps earlier) seem to lack the double-sided tape to the rear cover, instead opting for tape or glue that makes them stick to the front cover. Nevertheless, be gentle when removing the back cover.&lt;br /&gt;
&lt;br /&gt;
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]&lt;br /&gt;
&lt;br /&gt;
When disassembling the laptop make sure that it is powered off and folded closed. To remove the bottom cover of the Pinebook Pro, first remove the ten (10) Phillips head screws that hold the bottom section of the laptop in place. There are four (4) short screws along the front edge, and six (6) long screws along the 3 remaining sides. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis. The aluminum case is held on only by screws. There are no plastic snaps, and the shell should pull away without any effort. If you experience any resistance at all stop and ensure all ten (10) screws are accounted for.&lt;br /&gt;
&lt;br /&gt;
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. Before replacing the aluminum back-plate, ensure that the speakers are properly seated by pressing gently on the hard plastic edge of the speaker module. Slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the touchpad is located) in place using the short screws in the front left and right corners. Then proceed to pop in the bottom panel into place. Secure the bottom section (where hinges are located) by screwing in the left and right corners. Then screw in the remaining screws and run your finger though the rim on the chassis to make sure its fitted correctly. Note that the front uses the remaining 4 short screws.&lt;br /&gt;
&lt;br /&gt;
The screws are small and should only be finger tight. Too much force will strip the threads. If after installing screws the back cover plate has not seated properly on one side (which may be caused by the aforementioned misseating of the speakers), open the display and hold the base on either side of the keyboard and gently flex the base with both hands in opposing directions. Once the side pops further in, then recheck the screws on that side. If it does not pop back in, re-open the machine and check for misseated components.&lt;br /&gt;
&lt;br /&gt;
A basic 3D model to print replacement standoffs for the back cover screws is [https://www.thingiverse.com/thing:4226648 available on Thingiverse], until the official drawings or 3D models are made available.&lt;br /&gt;
&lt;br /&gt;
====Display Disassembly====&lt;br /&gt;
It is not recommended to adjust the position of the lid when the bottom cover is removed, because the bottom cover provides structural strength, so the lid should be open fully as the first step, before starting any disassembly of the laptop.  After opening the lid, remove the bottom cover by following the instruction found in the section above.  Alternatively, you can keep the lid closed and remove the screws that hold the hinges to the main laptop body, as described in [[Pinebook Service Step by Step Guides]].&lt;br /&gt;
&lt;br /&gt;
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plactic U-shaped cover that snaps in place using latches.  Use a dedicated plastic prying tool or a guitar pick to gently pry the cover and remove it, starting from the outer edge.  Once you pry the cover to a certain extent, it should be possible to remove it fully using only your hands.  The U-shaped cover is rather sturdy, but still be careful not to break or bend it.&lt;br /&gt;
&lt;br /&gt;
There are two small screws hidden underneath the two small rubber nubs on the upper part of the screen bezel, so first gently remove the nubs and then remove the screws.  The screen bezel is held in place with a combination of latches and some adhesive tape, which is there to prevent dust ingress.  The adhesive isn't very strong, and the bezel is capable of flexing back into shape after being twisted to a certain extent.  There is more adhesive on the bottom part of the screen bezel, so be more careful while prying that section apart.  Use the same prying tool that you used for the U-shaped cover, and work it around the outer edges of the screen bezel.&lt;br /&gt;
&lt;br /&gt;
== Internal Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Main chips ===&lt;br /&gt;
* RK3399 system-on-chip (1)&lt;br /&gt;
* LPDDR4 SDRAM (21)&lt;br /&gt;
* SPI NOR flash memory (29)&lt;br /&gt;
* eMMC flash memory (26)&lt;br /&gt;
* WiFi/BT module (27)&lt;br /&gt;
&lt;br /&gt;
=== Mainboard Switches and Buttons ===&lt;br /&gt;
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack. &lt;br /&gt;
&lt;br /&gt;
The Reset and Recovery buttons (28): the reset button performs an immediate reset of the laptop. The Recovery button is used to place the device in maskrom mode; this mode allows flashing eMMC using Rockchip tools (e.g. rkflashtools). &lt;br /&gt;
&lt;br /&gt;
[[File:PBPL_S.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Key Internal Parts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Numbered parts classification and description&lt;br /&gt;
! Number&lt;br /&gt;
! Type&lt;br /&gt;
! Descriptor&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 1&lt;br /&gt;
| Component || RK3399 System-On-Chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 2&lt;br /&gt;
| Socket || PCIe x4 slot for optional NVMe adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 3&lt;br /&gt;
| Socket || Speakers socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 4&lt;br /&gt;
| Socket || Touchpad socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 5&lt;br /&gt;
| Component || Left speaker &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 6&lt;br /&gt;
| Connector || Power bridge connector &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 7&lt;br /&gt;
| Socket || Keyboard Socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 8&lt;br /&gt;
| Component || Optional NVMe SSD adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 9&lt;br /&gt;
| Switch || UART/Audio switch - outputs UART via headphone jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 10&lt;br /&gt;
| Socket || Power bridge socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 11&lt;br /&gt;
| Socket || Battery socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 12&lt;br /&gt;
| Component || Touchpad&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 13&lt;br /&gt;
| Component || Battery&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 14&lt;br /&gt;
| Component || Right speaker&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 15&lt;br /&gt;
| Socket || MicroSD card slot&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 16&lt;br /&gt;
| Socket || Headphone / UART jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 17&lt;br /&gt;
| Socket || USB 2.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 18&lt;br /&gt;
| Socket || Daughterboard-to-mainboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 19&lt;br /&gt;
| Cable || Daughterboard-to-mainboard ribbon cable&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 20&lt;br /&gt;
| Component || microphone&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 21&lt;br /&gt;
| Component || LPDDR4 RAM&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 22&lt;br /&gt;
| Socket || Mainboard-to-daughterboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 23&lt;br /&gt;
| Socket || Microphone socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 24&lt;br /&gt;
| Switch || Switch to hardware disable eMMC&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 25&lt;br /&gt;
| Antenna || BT/WiFI antenna&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 26&lt;br /&gt;
| Component || eMMC flash memory module &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 27&lt;br /&gt;
| Component ||BT/WiFi module chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 28&lt;br /&gt;
| Buttons || Reset and recovery buttons&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 29&lt;br /&gt;
| Component || SPI flash storage&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 30&lt;br /&gt;
| Socket || eDP LCD socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 31&lt;br /&gt;
| Socket || Power in barrel socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 32&lt;br /&gt;
| Socket || USB 3.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 33&lt;br /&gt;
| Socket || USB 3.0 Type C &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Smallboard detailed picture ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_pro_smallboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Bootable Storage ==&lt;br /&gt;
&lt;br /&gt;
=== Boot sequence details ===&lt;br /&gt;
The RK3399's mask 32KB ROM boot code looks for the next stage of code at byte off-set 32768, (sector 64 if using 512 byte sectors). This is where U-Boot code would reside on any media that is bootable.&amp;lt;br&amp;gt;&lt;br /&gt;
[[RK3399_boot_sequence|RK3399 boot sequence]]&lt;br /&gt;
&lt;br /&gt;
=== Boot devices ===&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is capable of booting from eMMC, USB 2.0, USB 3.0, or an SD card. It cannot boot from USB-C.  The boot order of the hard-coded ROM of its RK3399 SoC is: SPI NOR, eMMC, SD, USB OTG. &lt;br /&gt;
&lt;br /&gt;
At this time, the Pinebook Pro ships with a Manjaro + KDE build with [https://www.denx.de/wiki/U-Boot/ u-boot] on the eMMC.  Its boot order is: SD, USB, then eMMC.&lt;br /&gt;
&lt;br /&gt;
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other OSes from an SD card. In order to update, fully charge the battery, establish an internet connection, click the update icon in the toolbar, and then reboot your Pinebook Pro.  Please see [https://forum.pine64.org/showthread.php?tid=7830 this log] for details.)&lt;br /&gt;
&lt;br /&gt;
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf&lt;br /&gt;
in a /boot partition on the eMMC.&lt;br /&gt;
&lt;br /&gt;
=== eMMC information ===&lt;br /&gt;
The eMMC appears to be hot-pluggable. This can be useful if trying to recover data or a broken install. Best practice is probably to turn the eMMC switch to off position before changing modules. Note that the enable/disable label on the silkscreen is incorrect on some board revisions (known bad on v2.1).&lt;br /&gt;
&lt;br /&gt;
The eMMC storage will show up as multiple block devices:&lt;br /&gt;
*mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB&lt;br /&gt;
*mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB&lt;br /&gt;
*mmcblk1rpmb - eMMC standard secure data partition, may be 16MB&lt;br /&gt;
*mmcblk1 - This block contains the user areas&lt;br /&gt;
&lt;br /&gt;
Only the last is usable as regular storage device in the Pinebook Pro.&lt;br /&gt;
The device number of &amp;quot;1&amp;quot; shown above may vary, depending on kernel.&lt;br /&gt;
&lt;br /&gt;
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user &amp;quot;root&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo fe330000.sdhci &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/unbind&lt;br /&gt;
echo fe330000.sdhci &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/bind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case Dimensions and Data ==&lt;br /&gt;
* Dimensions: 329mm x 220mm x 12mm (WxDxH)&lt;br /&gt;
* Weight: 1.26Kg&lt;br /&gt;
* Screws&lt;br /&gt;
** Philips head type screws&lt;br /&gt;
** M2 flat head machine screws (measurements in mm)&lt;br /&gt;
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1,  Overall length - 3.05&lt;br /&gt;
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85&lt;br /&gt;
* Rubber Feet&lt;br /&gt;
** 18mm diameter&lt;br /&gt;
** 3mm height&lt;br /&gt;
** Dome shaped&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
[[File:Rockchip_RK3399.png|right]]&lt;br /&gt;
* Based on Rockchip RK3399&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU&lt;br /&gt;
** Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)&lt;br /&gt;
** ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
** ARMv8 Cryptography Extensions&lt;br /&gt;
** VFPv4 floating point unit supporting single and double-precision operations&lt;br /&gt;
** Hardware virtualization support&lt;br /&gt;
** TrustZone technology support&lt;br /&gt;
** Full CoreSight debug solution&lt;br /&gt;
** One isolated voltage domain to support DVFS&lt;br /&gt;
* Cortex-A72 (big cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]&lt;br /&gt;
** Superscalar, variable-length, out-of-order pipeline&lt;br /&gt;
** L1 cache 48KB Icache and 32KB Dcache for each A72 &lt;br /&gt;
** L2 cache 1024KB for big cluster &lt;br /&gt;
* Cortex-A53 (little cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]&lt;br /&gt;
** In-order pipeline with symmetric dual-issue of most instructions &lt;br /&gt;
** L1 cache 32KB Icache and 32KB Dcache for each A53&lt;br /&gt;
** L2 cache 512KB for little cluster&lt;br /&gt;
* Cortex-M0 (control processors):&lt;br /&gt;
** [https://developer.arm.com/ip-products/processors/cortex-m/cortex-m0 Cortex-M0 CPU]&lt;br /&gt;
** Two Cortex-M0 cooperate with the central processors&lt;br /&gt;
** Architecture: Armv6-M&lt;br /&gt;
** Thumb/Thumb2 instruction set&lt;br /&gt;
** 32 bit only&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]&lt;br /&gt;
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.&lt;br /&gt;
* Frequency 	650MHz &lt;br /&gt;
* Throughput 	1300Mtri/s, 10.4Gpix/s&lt;br /&gt;
* Graphic interface standards:&lt;br /&gt;
** OpenGL® ES 1.1, 1.2, 2.0, 3.0, 3.1, 3.2. (Panfrost has initial support of 3.0 beginning 2020/02/27)&lt;br /&gt;
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)&lt;br /&gt;
** OpenCL™ 1.1, 1.2&lt;br /&gt;
** DirectX® 11 FL11_1&lt;br /&gt;
** RenderScript™&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory:&lt;br /&gt;
** LPDDR4&lt;br /&gt;
** 800MHz, (limited by RK3399)&lt;br /&gt;
** Dual memory channels on the CPU, each 32 bits wide&lt;br /&gt;
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel&lt;br /&gt;
** 4GB as a single 366 pin mobile RAM chip&lt;br /&gt;
* Storage Memory: &lt;br /&gt;
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)&lt;br /&gt;
** eMMC version 5.1, HS400, 8 bit on RK3399 side&lt;br /&gt;
** Bootable&lt;br /&gt;
* SPI flash:&lt;br /&gt;
** [[Pinebook Pro SPI]]&lt;br /&gt;
** 128Mbit / 16MByte&lt;br /&gt;
** 1 bit interface&lt;br /&gt;
** Bootable, (first boot device, ahead of eMMC &amp;amp; SD card)&lt;br /&gt;
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.&lt;br /&gt;
&lt;br /&gt;
=== Video out ===&lt;br /&gt;
* USB-C Alt mode DP&lt;br /&gt;
* Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* MicroSD card:&lt;br /&gt;
** Bootable&lt;br /&gt;
** Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.&lt;br /&gt;
** Version SD3.0, (MMC 4.5), up to 50MB/s&lt;br /&gt;
** SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS&lt;br /&gt;
* USB ports:&lt;br /&gt;
** 1 x USB 2.0 Type-A Host Port, bootable&lt;br /&gt;
** 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable&lt;br /&gt;
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable&lt;br /&gt;
** Note that high power USB devices may not work reliably on a PBP. Or they may draw enough power to drain the battery even when the PBP is plugged into A.C. One alternative is externally powered USB devices.&lt;br /&gt;
* Headphone jack switchable to UART console mux circuit&lt;br /&gt;
&lt;br /&gt;
== Additional hardware ==&lt;br /&gt;
Hardware that is not part of the SoC.&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
* Lithium Polymer Battery (10,000 mAH)&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
* 14.0&amp;quot; 1920x1080 IPS LCD panel&lt;br /&gt;
=== Lid closed magnet ===&lt;br /&gt;
There is a magnet to detect when the laptop lid is closed, so action can be taken like sleep. This meets up with the Hall sensor on the daughter / small board to detect lid closed.&lt;br /&gt;
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.&lt;br /&gt;
&lt;br /&gt;
=== Webcam ===&lt;br /&gt;
* Internal USB attached Webcam&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
* Built-in microphone&lt;br /&gt;
* Built-in stereo speakers:&lt;br /&gt;
** Oval in design&lt;br /&gt;
** 3 mm high x 20 mm x 30 mm&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* WiFi:&lt;br /&gt;
** 802.11 b/g/n/ac&lt;br /&gt;
** Dual band: 2.4Ghz &amp;amp; 5Ghz&lt;br /&gt;
** Single antenna&lt;br /&gt;
* Bluetooth 5.0&lt;br /&gt;
&lt;br /&gt;
=== Optional NVMe adapter ===&lt;br /&gt;
* PCIe 1.1, 2.5 GT/s per lane&lt;br /&gt;
** Note that due to errata, PCIe is limited to Gen1. See [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip/rk3399.dtsi?id=712fa1777207c2f2703a6eb618a9699099cbe37b this commit].&lt;br /&gt;
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards&lt;br /&gt;
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too&lt;br /&gt;
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260&lt;br /&gt;
* Power: 2.5&amp;amp;nbsp;W continuous, 8.25&amp;amp;nbsp;W peak momentary&lt;br /&gt;
* Does not support SATA M.2 cards&lt;br /&gt;
* Does not support USB M.2 cards&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro Schematics and Certifications ==&lt;br /&gt;
* Pinebook Pro Main Board Schematic And Silkscreen:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]&lt;br /&gt;
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]&lt;br /&gt;
* Pinebook Pro Daughter Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]&lt;br /&gt;
* Optional Pinebook Pro NVMe Adapter Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]&lt;br /&gt;
* Serial Console Earphone Jack Pinout:&lt;br /&gt;
** [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinkbook Serial Console Earphone Jack Pinout]&lt;br /&gt;
* Pinebook Pro Case:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]&lt;br /&gt;
* Pinebook Pro Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3399 SoC information:&lt;br /&gt;
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.3, part 1] and [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf part 2]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]&lt;br /&gt;
* LPDDR4 SDRAM (366-pin BGA):&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 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 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://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (updated)]&lt;br /&gt;
* Wireless and Bluetooth information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]&lt;br /&gt;
* Audio codec:&lt;br /&gt;
** [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]&lt;br /&gt;
* LCD panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14&amp;quot; 1920x1080 IPS LCD Panel datasheet]&lt;br /&gt;
* USB-related information:&lt;br /&gt;
** Internal USB 2.0 hub: [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub Datasheet]&lt;br /&gt;
** USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]&lt;br /&gt;
* Keyboard information:&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]&lt;br /&gt;
** US ANSI: XK-HS002 MB27716023&lt;br /&gt;
* Full HD camera sensor:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]&lt;br /&gt;
* Battery-related information:&lt;br /&gt;
** Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]&lt;br /&gt;
** Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification]&lt;br /&gt;
* Power path device:&lt;br /&gt;
** [https://wiki.pine64.org/images/9/99/Sis412dn.pdf N-MOS / MOSFET]&lt;br /&gt;
* NVMe adapter:&lt;br /&gt;
** [https://wiki.pine64.org/images/d/d0/Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The &amp;quot;first batch&amp;quot; (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]&lt;br /&gt;
&lt;br /&gt;
=Skinning and Case Customization=&lt;br /&gt;
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.&lt;br /&gt;
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]&lt;br /&gt;
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (no login required to read)&lt;br /&gt;
* IRC Server: irc.pine64.org Channel: PineBook&lt;br /&gt;
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]&lt;br /&gt;
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]&lt;br /&gt;
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]&lt;br /&gt;
* [[Pinebook Pro/Freepascal and Lazarus IDE on Manjaro|Freepascal and Lazarus IDE on Pinebook Pro]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;br /&gt;
[[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=12265</id>
		<title>Pinebook Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Pinebook_Pro&amp;diff=12265"/>
		<updated>2022-01-17T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Optional NVMe adapter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User Guide =&lt;br /&gt;
== Introducing PineBook Pro == &lt;br /&gt;
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]&lt;br /&gt;
&lt;br /&gt;
It is built to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops. It features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, high capacity eMMC storage, a 10,000 mAh capacity battery, and the modularity that only an open source project can deliver. &lt;br /&gt;
&lt;br /&gt;
It's compact and slim dimensions are 329mm x 220mm x 12mm (WxDxH).&lt;br /&gt;
&lt;br /&gt;
Key features include: the RK3399 SOC; USB-C for data, video-out and power-in (3A 5V); privacy switches for the microphone, BT/WiFi module, and camera; and expandable storage via NVMe (PCIe x4) with an optional adapter. &lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1 x micro SD card reader (bootable), 1 x USB 2.0, 1 x USB 3.0, 1 x USB type C Host with DP 1.2 and power-in, PCIe x4 for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch). &lt;br /&gt;
&lt;br /&gt;
The keyboard and touchpad both use the USB 2.0 protocol.  The LCD panel uses eDP MiPi display protocol.&lt;br /&gt;
&lt;br /&gt;
Many different Operating Systems (OS) are freely available from the open source community and partner projects.  These include various flavors of Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Default Manjaro KDE Desktop Quick Start ===&lt;br /&gt;
&lt;br /&gt;
When you first get your Pinebook Pro and boot it up for the first time, it'll come with Manjaro using the KDE desktop. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the [https://forum.manjaro.org/c/manjaro-arm/78 Manjaro ARM forums.]&lt;br /&gt;
&lt;br /&gt;
On first boot, it will ask for certain information such as your timezone location, keyboard layout, username, password, and hostname. Most of these should be self-explanatory. Note that the hostname it asks for should be thought of as the &amp;quot;codename&amp;quot; of your machine, and if you don't know what it's about, you can make something up (use a single word, all lower case, no punctuation; e.g. &amp;quot;pbpro&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
After you're on the desktop, be sure to update it as soon as possible and reboot after updates are finished installing. If nothing appears when you click on the Networking icon in your system tray to connect to your Wi-Fi, ensure the Wi-Fi [https://wiki.pine64.org/index.php/Pinebook_Pro#ANSI_Fn_.2B_F_keys_wrong_for_F9.2C_F10.2C_F11_and_F12  privacy switch] is not disabled.&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Pro images ===&lt;br /&gt;
Under [[Pinebook Pro Software Release]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software. &lt;br /&gt;
&lt;br /&gt;
The list includes OS images and descriptions of:&lt;br /&gt;
&lt;br /&gt;
* [[PinebookPro_Software_Release#Manjaro ARM|Manjaro ARM]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Armbian|Armbian]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Twister OS|Twister OS]] (microSD Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Fedora|Fedora]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Arch_Linux_ARM|Arch Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#postmarketOS|Postmarket OS]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Kali Linux|Kali Linux]] (microSD and USB boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#DietPi|DietPi]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#Q4OS|Q4OS]] (microSD and eMMC Boot)&lt;br /&gt;
* [[PinebookPro_Software_Release#NetBSD|NetBSD]] (microSD and eMMC Boot)&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#OpenBSD|OpenBSD release for ARM64]]&lt;br /&gt;
* [[Pinebook_Pro_Software_Release#Gentoo|Gentoo]]&lt;br /&gt;
&lt;br /&gt;
== Keyboard ==&lt;br /&gt;
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and touchpad in the Pinebook Pro use the USB 2.0 protocol and show up as such in xinput. The keyboard features function (Fn) keys in the F-key row, which include display brightness controls, sound volume, touchpad lock, and other functionality. There is also a custom PINE64 logo key that functions as Menu/Super key. It has also a secondary functionality for setting the privacy switches.   &lt;br /&gt;
&lt;br /&gt;
The keyboard firmware binary can be flashed from userspace using the provided open source utility.&lt;br /&gt;
&lt;br /&gt;
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. &lt;br /&gt;
&lt;br /&gt;
=== Typing special characters ===&lt;br /&gt;
The [[Wikipedia:British_and_American_keyboards#Other_keyboard_layouts|UK ISO Layout]] does not have dedicated keys for characters like the German umlauts (Ä,Ö,Ü, etc). Certain characters can still be generated by means of either key combinations or key sequences. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Character&lt;br /&gt;
!Key combination/sequence&lt;br /&gt;
|-&lt;br /&gt;
|Ä, Ö, Ü, ä, ö, ü&lt;br /&gt;
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]&lt;br /&gt;
|-&lt;br /&gt;
|µ&lt;br /&gt;
|[AltGr]+[m]&lt;br /&gt;
|-&lt;br /&gt;
|Ø, ø&lt;br /&gt;
|[AltGr]+[O], [AltGr]+[o]&lt;br /&gt;
|-&lt;br /&gt;
|@&lt;br /&gt;
|[AltGr]+[q] (as on the German layout)&lt;br /&gt;
|-&lt;br /&gt;
|ß&lt;br /&gt;
|[AltGr]+[s]&lt;br /&gt;
|-&lt;br /&gt;
|§&lt;br /&gt;
|[AltGr]+[S]&lt;br /&gt;
|-&lt;br /&gt;
|°&lt;br /&gt;
|[AltGr]+[)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Privacy Switches ===&lt;br /&gt;
There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Privacy switch function and description&lt;br /&gt;
! Combination&lt;br /&gt;
! Effect&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F10&lt;br /&gt;
| Microphone Privacy switch&lt;br /&gt;
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F11&lt;br /&gt;
| WiFi Privacy switch&lt;br /&gt;
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.&lt;br /&gt;
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&amp;amp;pid=52645#pid52645 command line hack to bind/unbind]).&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | PINE64 logo key+F12&lt;br /&gt;
| Camera privacy switch&lt;br /&gt;
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled&lt;br /&gt;
| Can use tools like '''&amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;''' to detect camera's presence. If not detected, check privacy switch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''&lt;br /&gt;
&lt;br /&gt;
The keyboard operates on firmware independent of the operating system.  It detects if one of the F10, F11 or F12 keys is pressed in combination with the Pine key for 3 seconds. Doing so disables power to the appropriate peripheral, thereby disabling it.  This has the same effect as cutting off the power to each peripheral with a physical switch. This implementation is very secure, since the firmware that determines whether a peripheral gets power is not part of the Pinebook Pro’s operating system. So the power state value for each peripheral cannot be overridden or accessed from the operating system. The power state setting for each peripheral is stored across reboots inside the keyboard's firmware flash memory.&lt;br /&gt;
&lt;br /&gt;
=== Basic summary of replacing keyboard ===&lt;br /&gt;
&lt;br /&gt;
This guide is very basic and should be fleshed out with (better) pictures.  There just isn't a list of steps anywhere else yet.&lt;br /&gt;
&lt;br /&gt;
Here's what the replacement keyboard looks like:&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]&lt;br /&gt;
&lt;br /&gt;
''Step 0'': If changing from ISO keyboard to ANSI keyboard, or vice versa, be sure to have a system capable of running the firmware updater that you can access either remotely or with a USB keyboard beyond the internal keyboard, as the firmware for each is very different and keys won't work correctly.  See https://forum.pine64.org/showthread.php?tid=8407 (and for NetBSD, https://forum.pine64.org/showthread.php?tid=8716).&lt;br /&gt;
&lt;br /&gt;
''Step 1'': The remove back back panel.&lt;br /&gt;
&lt;br /&gt;
There are 10 screws on the back that must be removed, and the back panel detached.  The speakers may remain attached via glue to the case and should be carefully pried off.  When this is done, taking photos of how everything looks now can help put it all back together later.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 2'': Places to unscrew.&lt;br /&gt;
&lt;br /&gt;
There are 3 items screwed into the keyboard frame that must be removed.  There are 2 large screws for daughter board, 3 large screws and 1 small screw for mainboard, and 4 screws for battery.  Be sure to not lose them.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]&lt;br /&gt;
&lt;br /&gt;
''Step 3'': Remove the battery.&lt;br /&gt;
&lt;br /&gt;
Once the battery screws are removed, it should be unplugged from the mainboard and removed.  Note that there are two unconnected cables lying around, that should remain unconnected.  They are used when the battery is disconnected entirely.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]&lt;br /&gt;
&lt;br /&gt;
''Step 4'': Unplug the ribbon cables.&lt;br /&gt;
&lt;br /&gt;
There are several ribbon cables.  To remove, flip up the tab and gentle pull the ribbon out.&lt;br /&gt;
&lt;br /&gt;
* One cable runs from the mainboard to the daughterboard underneath the battery.  Detach from both ends.  With the battery removed, detach from keyboard shell, and set aside for the new keyboard shell.&lt;br /&gt;
* One cable runs between the touchpad and the mainboard.  Detach from both ends, and also set aside.&lt;br /&gt;
* One cable runs between the keyboard and the mainboard.  This one remains attached to the keyboard and only needs to be detached from the mainboard.&lt;br /&gt;
* One cable from the LCD attaches near the lid hinge.  It should be just unplugged.&lt;br /&gt;
&lt;br /&gt;
''Step 5'': Detach microphone and speakers.  &lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]&lt;br /&gt;
&lt;br /&gt;
The speakers and microphone don't have to be detached from the mainboard, but they need to be detached from the keyboard shell.  The microphones are held in place by tape, and the speakers have sticky sides.  The speakers are found obviously, but the microphones (two of) can be found between the battery and the hinge area. Each microphone can be carefully pulled/wedged out of its position by a small screwdriver or pick.&lt;br /&gt;
&lt;br /&gt;
''Step 6'': Remove mainboard and daughterboard.&lt;br /&gt;
&lt;br /&gt;
At this point, the mainboard and daughterboards should be removed.  When unscrewed (see Step 2) they should pull out fairly easily.  Put them aside (including microphones and speakers if left attached.)&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]&lt;br /&gt;
&lt;br /&gt;
''Step 7'': Detach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
Step 2 didn't tell you, there are 6 more screws to remove here, 3 for each of the hinges.  Unscrew these and the LCD panel will be able to be removed.  You may have to jiggle or move the hinges for this.  When detached, be sure to place the LCD panel such that the display is protected.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]&lt;br /&gt;
&lt;br /&gt;
''Step 8'': Try Not To Break Your Touchpad, or, How I Learned To Love Things That Bend&lt;br /&gt;
&lt;br /&gt;
'''NOTE This section really feels like you're going to break something.'''&lt;br /&gt;
&lt;br /&gt;
The touchpad is glued to the keyboard shell and it's glued well.  There are two places it is glued to.  If you can, only the middle must be force-detached.  You will think you're going to break it.  Gently apply increasing force until the glue begins to detach (you will hear a crackle as it comes off), and continue very slowly until the whole thing is detached.  This may take minutes due to that feeling you're going to break it.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]&lt;br /&gt;
&lt;br /&gt;
''Step 9'': Over the hill, touchpad goes into new shell.&lt;br /&gt;
&lt;br /&gt;
In the new keyboard shell put the touchpad back where it was, hopefully the glue will remain sufficiently attached.  If there is a glue issue, this guide unfortunately has no advice currently.&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Step 10'': Reattach the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The LCD panel should slot back into the keyboard frame, the same way it came out.  If the hinges were moved, they should be *very* *gently* closed such that the LCD panel and keyboard closed like normal for the remaining steps.&lt;br /&gt;
&lt;br /&gt;
''Step 11'': Tape it out.&lt;br /&gt;
&lt;br /&gt;
Move any tape from the old keyboard shell to the new one.  These items protect the mainboard and daughterboard, and keep various wires in their right place.  Some are grey and some are black.  For tape that holds the speakers, microhones, or their cables in place, do not reattach yet.&lt;br /&gt;
&lt;br /&gt;
''Step 12'': Board install.&lt;br /&gt;
&lt;br /&gt;
Install the mainboard, the daughtboard, and their connecting ribbon cable.  Be sure to put the boards in place, 2 large flat screws for the daughterboard, 3 large flat screws and one small screw for the mainboard, before attempting to place the ribbon.&lt;br /&gt;
&lt;br /&gt;
''Step 13'': Microphone and speaker install.&lt;br /&gt;
&lt;br /&gt;
Reattached the microphones and speakers to their respective areas, making sure that both are properly oriented - the speaker &amp;quot;out&amp;quot; faces up, and the microphone cables as connected must face up (these are opposite directions.)&lt;br /&gt;
&lt;br /&gt;
''Step 14'': Reattach other ribbon cables.&lt;br /&gt;
 &lt;br /&gt;
The LCD panel, keyboard and touchpad ribbon cables should be reattached.  Make sure the flap is open, insert the ribbon into the slot (a portion of the cable will disappear), and push the flap down.  The cable should not be easy to pull out.&lt;br /&gt;
 &lt;br /&gt;
''Step 15'': Reattach the battery, and final re-tape.&lt;br /&gt;
  &lt;br /&gt;
The battery should be installed with the 4 screws holding it in place, and the connector attached to the mainboard.  Be sure to keep the two other cables remain unconnected.  Ensure all wires and other tapes are held in place.&lt;br /&gt;
&lt;br /&gt;
''Step 16'': Reattach the back panel.&lt;br /&gt;
 &lt;br /&gt;
Put the back panel back on, and reattach the 10 screws.&lt;br /&gt;
&lt;br /&gt;
''Step 17'': If you changed from ISO to ANSI or from ANSI to ISO, you'll need to update your firmware now.  See the links in Step 0 above.&lt;br /&gt;
&lt;br /&gt;
== Touchpad (trackpad) ==&lt;br /&gt;
Documentation for the touchpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]]. It is the only component of the Pinebook Pro held in place with strong adhesive tape. Here are some of its features:&lt;br /&gt;
&lt;br /&gt;
* 2 actuating buttons.&lt;br /&gt;
&lt;br /&gt;
* multi-touch functionality. &lt;br /&gt;
&lt;br /&gt;
* A matte finish that your finger can slide along easily.&lt;br /&gt;
&lt;br /&gt;
* A reasonable size (96mm &amp;amp;times; 64mm; diagonal: 115.378mm or 4.542&amp;amp;rdquo;).&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:&lt;br /&gt;
&lt;br /&gt;
* Update the firmware.&lt;br /&gt;
&lt;br /&gt;
* Keep your 2 fingers spread apart rather than close together.&lt;br /&gt;
&lt;br /&gt;
* Individual programs might need to be configured specially.&lt;br /&gt;
&lt;br /&gt;
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:&lt;br /&gt;
&lt;br /&gt;
::: &amp;lt;code&amp;gt;MOZ_USE_XINPUT2=1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Experiment with other settings, via [[#X-Windows Configuration|X-Windows Configuration]] or some other system preferences; for example, you could disable double-finger scrolling, and instead enable scrolling by sliding one finger along the edge of the touchpad.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and it's software, then to the keyboard controller's USB port. Note that the touchpad does have separate firmware, (which has to be written through the keyboard controller). The touchpad vendor&amp;amp;rsquo;s firmware binary can be flashed from userspace using the following open source command-line utility:&lt;br /&gt;
&lt;br /&gt;
* Kamil Trzciński&amp;amp;rsquo;s [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].&lt;br /&gt;
&lt;br /&gt;
Naturally, forks have begun to appear:&lt;br /&gt;
&lt;br /&gt;
* Jack Humbert&amp;amp;rsquo;s [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]&lt;br /&gt;
&lt;br /&gt;
* Dragan Simic&amp;amp;rsquo;s [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor, which greatly improves the control of the cursor (see this [https://forum.pine64.org/showthread.php?tid=14531 thread] for discussion); before installing this update, consider resetting to the defaults any configuration of your touchpad.&lt;br /&gt;
&lt;br /&gt;
'''Every Pinebook Pro produced before September 2021 should have its keyboard and touchpad firmware updated.'''&lt;br /&gt;
&lt;br /&gt;
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has.&amp;lt;/b&amp;gt; Some Pinebook Pro were delivered with a '''SH61F83''' instead of a '''SH68F83'''. The SH61F83 can only be written 8 times, this will render the keyboard and touchpad unusable if this limit is reached when &amp;lt;code&amp;gt;step-1&amp;lt;/code&amp;gt; is flashed. See [//old.reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to &amp;lt;code&amp;gt;U23&amp;lt;/code&amp;gt; on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}&lt;br /&gt;
&lt;br /&gt;
Before updating ''any'' firmware, your Pinebook Pro should be either fully charged or, preferably, running from mains. This utility will be writing data to chips on the keyboard and touchpad, so a loss of power during any stage of the update can result in irrecoverable damage to your touchpad or keyboard.&lt;br /&gt;
&lt;br /&gt;
The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies. The instructions below assume a Debian desktop. To install these dependencies, newer Pinebook Pro models that come with Manjaro will require a different command.&lt;br /&gt;
&lt;br /&gt;
There are two keyboard versions of the Pinebook Pro: ISO and ANSI. You need to know which model you have prior to running the updater. &lt;br /&gt;
Firmware update steps for both models are listed below.  &lt;br /&gt;
&lt;br /&gt;
What you will need:&lt;br /&gt;
&lt;br /&gt;
* Connection to WiFi (for getting dependencies).&lt;br /&gt;
&lt;br /&gt;
* Your Pinebook Pro fully charged or running from mains power.&lt;br /&gt;
&lt;br /&gt;
* An external USB keyboard &amp;amp;amp; mouse (or access to the Pinebook Pro via SSH. Please note that for some configurations, the SSH service might not be available without first having logged in once; in this case, you will definitely want at least an external keyboard).&lt;br /&gt;
&lt;br /&gt;
==== ISO Model ====&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 iso&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ANSI Model ====&lt;br /&gt;
&lt;br /&gt;
{{Hint| Note: Running step 1 on the ANSI keyboard model will make the keyboard and touchpad inaccessible until step 2 is ran, so an external keyboard must be connected to complete the update on this model!}}&lt;br /&gt;
&lt;br /&gt;
From the terminal command line: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo apt-get install build-essential libusb-1.0-0-dev xxd&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-1 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 2 (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd pinebook-pro-keyboard-updater&lt;br /&gt;
sudo ./updater step-2 ansi&lt;br /&gt;
sudo poweroff # do not use 'reboot'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, if some of the keys produce incorrect characters, please check your OS’s language settings. For ANSI users, the default OS may have shipped with English UK as the default language; you can change it to English US if desired.&lt;br /&gt;
&lt;br /&gt;
==== Revised Firmware ====&lt;br /&gt;
&lt;br /&gt;
In addition, you might consider using revised firmware data; this is one final step that should not require a reboot:&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ISO''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_iso.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Step 3: '''ANSI''' (after booting)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./updater flash-kb firmware/default_ansi.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== X-Windows Configuration ===&lt;br /&gt;
''Before making adjustments, consider updating the firmware; reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.''&lt;br /&gt;
&lt;br /&gt;
Some forum members have found that an adjustment to X-Windows will allow finer motion in the touchpad. If you use the '''Synaptic''' mouse/touchpad driver, use this command to make the change live:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&amp;lt;/pre&amp;gt;&lt;br /&gt;
You may experiment with different settings, but 0.25 was tested as helping noticeably.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To make the change persist across reboots, change the file &amp;lt;code&amp;gt;/etc/X11/xorg.conf&amp;lt;/code&amp;gt; similar to below:&lt;br /&gt;
&amp;lt;pre&amp;gt;    Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;touchpad catchall&amp;quot;&lt;br /&gt;
        Driver &amp;quot;synaptics&amp;quot;&lt;br /&gt;
        MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
        MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
        Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&lt;br /&gt;
    EndSection&amp;lt;/pre&amp;gt;&lt;br /&gt;
The line &amp;lt;code&amp;gt;Option &amp;quot;MinSpeed&amp;quot; &amp;quot;0.25&amp;quot;&amp;lt;/code&amp;gt; is the change.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Another forum user built on the above settings a little, and have found these to be very good:&lt;br /&gt;
&amp;lt;pre&amp;gt;synclient MinSpeed=0.25&lt;br /&gt;
synclient TapButton1=1&lt;br /&gt;
synclient TapButton2=3&lt;br /&gt;
synclient TapButton3=2&lt;br /&gt;
synclient FingerLow=30&lt;br /&gt;
synclient PalmDetect=1&lt;br /&gt;
synclient VertScrollDelta=64&lt;br /&gt;
synclient HorizScrollDelta=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FingerLow&amp;lt;/code&amp;gt; has the same value as 'FingerHigh' in one config (30). It is believed to help reduce mouse movement as you lift your finger, but it's unknown whether synaptic works like this.&lt;br /&gt;
You may find this config to be comfortable for daily use.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;TabButton&amp;lt;/code&amp;gt; allows to just tab the touchpad instead of physically pressing it down (to get this click noise).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;right mouse click&amp;lt;/code&amp;gt; is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:&lt;br /&gt;
&amp;lt;pre&amp;gt; synclient MaxTapTime=250 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some users may encounter an issue with the mouse jumping when typing when using libinput driver (has not been test with synaptic) due to their hand hitting the touchpad which can be fixed by updating the xorg settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the xorg config simliar to the previou example. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;on&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The setting can be verified by using the xinput command to first list the devices and then listing the properties for the Touchpad device. Exact commands to check this have been omitted for save of brevity. If DisableWhileTyping is shown enabled but does not appear to be working the issue may be due to the fact that the keyboard is connected to a USB bus which causes it to be seen as a external keyboard. To resolve this one can add the config below which sets the keyboard to internal to ensure the DisableWhileTyping works properly. &lt;br /&gt;
&lt;br /&gt;
You will need to edit &amp;lt;code&amp;gt;/etc/libinput/local-overrides.quirks&amp;lt;/code&amp;gt; and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Serial Keyboards]&lt;br /&gt;
MatchUdevType=keyboard&lt;br /&gt;
MatchBus=usb&lt;br /&gt;
AttrKeyboardIntegration=internal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once X11 is restarted the new setting should now take effect and you will no longer be able to use the touchpad while typing which will mostly eliminate the mouse jumping issue.&lt;br /&gt;
&lt;br /&gt;
== Power Supply ==&lt;br /&gt;
* Input Power: 5V DC @ 3A&lt;br /&gt;
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack&lt;br /&gt;
* USB-C 5V, 15W PD quickcharge&lt;br /&gt;
* Only use one power input at a time, barrel jack OR USB-C&lt;br /&gt;
&lt;br /&gt;
== LEDs ==&lt;br /&gt;
In total, there are four LEDs on the Pinebook Pro, three of which are placed in the top-left side of the keyboard, and one near the barrel port: &lt;br /&gt;
&lt;br /&gt;
# The red LED next to the barrel port indicates charging, in three ways.  First, it will illuminate steadily when either the factory power supply or a USB Type-C charger is connected to the Pinebook Pro, and the battery is getting charged.  Second, if the battery is at 100%, the LED will remain turned off regardless of the connected power input; however, this is [https://forum.pine64.org/showthread.php?tid=10899 rather rarely achieved].  Third, this LED will flash at 0.5&amp;amp;nbsp;Hz if there are any problems that prevent charging, such as the battery becoming too hot.&lt;br /&gt;
# The power indicator LED, above the keyboard, supports three different colors: green, amber and red. It is also capable of flashing to indicate eMMC activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused). &lt;br /&gt;
# The green NumLock LED, above the keyboard.&lt;br /&gt;
# The green CapsLock LED, above the keyboard.&lt;br /&gt;
&lt;br /&gt;
The NumLock and CapsLock LEDs serve their usual purposes on a keyboard, but they also have a secondary function. When the privacy switches get activated they blink to confirm that the switch has been activated.&lt;br /&gt;
&lt;br /&gt;
== Webcam ==&lt;br /&gt;
{{Hint| You can use Cheese to test the Camera functionality}}&lt;br /&gt;
* Streaming video resolutions supported, (uncompressed):&lt;br /&gt;
** 320 x 240 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
* Still frame resolutions supported:&lt;br /&gt;
** 160 x 120&lt;br /&gt;
** 176 x 144&lt;br /&gt;
** 320 x 240&lt;br /&gt;
** 352 x 288 &lt;br /&gt;
** 640 x 480&lt;br /&gt;
** 800 x 600&lt;br /&gt;
** 1280 x 720&lt;br /&gt;
** 1600 x 1200&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
While it has been said that some Pinebook Pro units contain only one microphone despite having two labeled microphone holes on the outer casing, other units do indeed contain two microphones. It is presently unclear which batches have either configuration; units from the initial community batch of 1000 units (following the initial 100) are believed to contain two, populating both labeled holes.&lt;br /&gt;
&lt;br /&gt;
The wires leading to both microphones connect to the mainboard with a small white plastic connector, located directly adjacent to the ribbon cable attachment point for the keyboard interface.&lt;br /&gt;
&lt;br /&gt;
'''Microphones not working?'''&lt;br /&gt;
&lt;br /&gt;
If pavucontrol input doesn't show microphone activity try changing the [[Pinebook_Pro#Privacy_Switches|privacy switches]]. If the switches are in the correct place and microphone input isn't working you can run &amp;lt;code&amp;gt;alsamixer&amp;lt;/code&amp;gt; from the command line, hit &amp;lt;i&amp;gt;F6&amp;lt;/i&amp;gt; and select the &amp;lt;i&amp;gt;es8316&amp;lt;/i&amp;gt;, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0dB, change the audio profile in pavucontrol to another one with input. Additionally you may want to modify ADC PGA to get the levels to where you want them. If that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the section [[#Technical Reference|Technical Reference]]).&lt;br /&gt;
&lt;br /&gt;
== Bluetooth and WiFi ==&lt;br /&gt;
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]&lt;br /&gt;
===Hardware Overview===&lt;br /&gt;
The Pinebook Pro contains an AMPAK AP6256 wireless module to provide Wi-Fi (compliant to IEEE 802.11ac) and Bluetooth (compliant to Bluetooth SIG revision 5.0). The module contains a Broadcom transceiver IC, believed to be the BCM43456, as well as the support electronics needed to allow the Wi-Fi and Bluetooth modes to share a single antenna. &lt;br /&gt;
&lt;br /&gt;
The wireless module interfaces with the Pinebook Pro’s system-on-chip using a combination of three interfaces: Bluetooth functionality is operated by serial UART and PCM, while the Wi-Fi component uses SDIO. It is unknown if the module’s Bluetooth capabilities are usable under operating systems that do not support SDIO.&lt;br /&gt;
&lt;br /&gt;
The module’s RF antenna pin is exposed on the mainboard via a standard Hirose U.FL connector, where a coaxial feedline links it to a flexible adhesive antenna situated near the upper right corner of the Pinebook Pro’s battery. As the RF connector is fragile and easily damaged, it should be handled carefully during connection and disconnection, and should not be reconnected frequently.&lt;br /&gt;
&lt;br /&gt;
===Issues===&lt;br /&gt;
Problems have been reported with the Wi-Fi transceiver’s reliability during extended periods of high throughput, especially on the 2.4 GHz band. While the cause of this has yet to be determined, switching to the 5 GHz band may improve stability.&lt;br /&gt;
&lt;br /&gt;
Since the Bluetooth transceiver shares both its spectrum and antenna with 2.4 GHz Wi-Fi, simultaneous use of these modes may cause interference, especially when listening to audio over Bluetooth. If Bluetooth audio cuts out frequently, switching to the 5 GHz band – or deactivating Wi-Fi – may help.&lt;br /&gt;
&lt;br /&gt;
===Wi-Fi Capabilities===&lt;br /&gt;
Wi-Fi on the Pinebook Pro is capable of reaching a maximum data transfer rate of approximately 433 megabits per second, using one spatial stream. The transceiver does not support multiple spatial streams or 160-MHz channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
The Wi-Fi transceiver supports the lower thirteen standard channels on the 2.4 GHz band, using a bandwidth of 20 MHz. At least twenty-four channels are supported on the 5 GHz band, spanning frequencies from 5180 to 5320 MHz, 5500 to 5720 MHz, and 5745 to 5825 MHz, with bandwidths of 20, 40, or 80 MHz.&lt;br /&gt;
&lt;br /&gt;
Maximum reception sensitivity for both bands is approximately -92 dBm. The receiver can tolerate input intensities of no more than -20 dBm on the 2.4 GHz band, and no more than -30 dBm on the 5 GHz band. Maximum transmission power is approximately +15 dBm for either band, falling further to approximately +10 dBm at higher data transfer rates on the 5 GHz band.&lt;br /&gt;
&lt;br /&gt;
With current available drivers and firmware, the Wi-Fi interface supports infrastructure, ad-hoc, and access-point modes with satisfactory reliability. Monitor mode is not presently supported. Wi-Fi Direct features may be available, but it is unclear how to make use of them under Linux.&lt;br /&gt;
&lt;br /&gt;
Be aware that Linux userspace utilities, such as &amp;lt;code&amp;gt;iw&amp;lt;/code&amp;gt;, may report inaccurate information about the capabilities of wireless devices. Parameter values derived from vendor datasheets, or direct testing, should be preferred to the outputs of hardware-querying tools.&lt;br /&gt;
&lt;br /&gt;
===Bluetooth Capabilities===&lt;br /&gt;
Bluetooth data transfer speeds have an indicated maximum of 3 megabits per second, but it is unclear what practical data rates can be expected. Audio streaming over Bluetooth is functioning normally, as is networking. Bluetooth Low-Energy functions, such as interacting with Bluetooth beacons, have not yet been tested conclusively.&lt;br /&gt;
&lt;br /&gt;
The Bluetooth transceiver supports all 79 channel allocations, spanning frequencies from 2402 MHz to 2480 MHz. Reception sensitivity is approximately -85 dBm, with a maximum tolerable reception intensity of -20 dBm. Bluetooth transmission power is limited to +10 dBm.&lt;br /&gt;
&lt;br /&gt;
===Disabling Bluetooth===&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth under Linux once:&lt;br /&gt;
&lt;br /&gt;
 sudo rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
To confirm if Bluetooth under Linux is disabled:&lt;br /&gt;
&lt;br /&gt;
 rfkill&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable rfkill-block@bluetooth&lt;br /&gt;
&lt;br /&gt;
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select &amp;lt;i&amp;gt;plugins&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;PowerManager&amp;lt;/i&amp;gt;, then &amp;lt;i&amp;gt;configuration&amp;lt;/i&amp;gt; and then deselect the &amp;lt;i&amp;gt;auto power on&amp;lt;/i&amp;gt; option&lt;br /&gt;
&lt;br /&gt;
== LCD Panel ==&lt;br /&gt;
* Model: BOE NV140FHM-N49&lt;br /&gt;
* 14.0&amp;quot; (35.56&amp;amp;nbsp;cm) diagonal size&lt;br /&gt;
* 1920x1080 resolution&lt;br /&gt;
* 60&amp;amp;nbsp;Hz refresh rate&lt;br /&gt;
* IPS technology&lt;br /&gt;
* 1000:1 contrast&lt;br /&gt;
* 250&amp;amp;nbsp;nit brightness&lt;br /&gt;
* 63% sRGB coverage&lt;br /&gt;
* 6-bit color&lt;br /&gt;
* 30-pin eDP connection&lt;br /&gt;
&lt;br /&gt;
Some people have tested hardware video decode using the following;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External ports list ==&lt;br /&gt;
Here are a list of the external ports. See [[Pinebook_Pro#Expansion_Ports|Technical Reference - Expansion Ports]] for port specifications.&lt;br /&gt;
* Left side&lt;br /&gt;
** Barrel jack for power, (with LED)&lt;br /&gt;
** USB 3, Type A&lt;br /&gt;
** USB 3, Type C&lt;br /&gt;
* Right side&lt;br /&gt;
** USB 2, Type A&lt;br /&gt;
** Standard headset jack&lt;br /&gt;
** MicroSD card slot&lt;br /&gt;
&lt;br /&gt;
== Using the UART ==&lt;br /&gt;
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. Swapping the tx and rx around from this also works and is more traditional. See the official [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 document].]]&lt;br /&gt;
&lt;br /&gt;
UART output is enabled by flipping the UART switch to the ON position (item 9). To do so you need to remove the Pinebook Pro's bottom cover - please follow [[Pinebook_Pro#Disassembly_and_Reassembly|proper disassembly and reassembly protocol]]. The OFF position is towards the touchpad, the ON position is towards the display hinges.&lt;br /&gt;
&lt;br /&gt;
With the UART switch in the ON position, console is relayed via the audiojack and the laptop's sound is turned OFF. Please ensure that you are using a 3.3&amp;amp;nbsp;V interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3&amp;amp;nbsp;V and 5&amp;amp;nbsp;V variants) to avoid damage to the CPU.  Older version of the serial console cable sold by Pine64 uses wrong voltage level and should not be used; see [https://forum.pine64.org/showthread.php?tid=9367 this forum thread] for further information.  Recent version of the same cable uses the right voltage level.&lt;br /&gt;
&lt;br /&gt;
Insert the USB plug of the cable into an open USB port on the machine which will monitor, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro audio port. Run the following in a terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ lsusb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you should find a line similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serial output should now be accessible using screen, picocom or minicom (and others).&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
screen /dev/ttyUSB0 1500000&lt;br /&gt;
&lt;br /&gt;
picocom /dev/ttyUSB0 -b 1500000&lt;br /&gt;
&lt;br /&gt;
minicom -D /dev/ttyUSB0 -b 1500000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old versions of U-Boot do not use the UART for console output. &amp;lt;strike&amp;gt;The console function is activated by the Linux kernel. Thus, if you use a non-Pinebook Pro Linux distro and want the UART as a console, you have to manually enable it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the optional NVMe adapter ==&lt;br /&gt;
The optional NVMe adapter allows the use of M.2 cards that support the NVMe standard, (but not SATA standard). The optional NVMe M.2 adapter supports '''M''' &amp;amp; '''M'''+'''B''' keyed devices, in both 2242 &amp;amp; 2280 physical sizes, the most common ones available. In addition, 2230 &amp;amp; 2260 are also supported, though NVMe devices that use those sizes are rare.&lt;br /&gt;
&lt;br /&gt;
Once you have fitted and tested your NVMe drive, please add a note to this page [[Pinebook Pro Hardware Accessory Compatibility]] to help build a list of tried and tested devices.&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in PineBook Pro.&lt;br /&gt;
&lt;br /&gt;
=== Installing the adapter ===&lt;br /&gt;
The V2.1-2019-0809 SSD adapter that shipped with the initial Pinebook Pro batches had significant issues. A repair kit will be shipped to address those issues.&lt;br /&gt;
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&amp;amp;pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)&lt;br /&gt;
&lt;br /&gt;
The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with touchpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.&lt;br /&gt;
&lt;br /&gt;
This is the link to the Pinebook Pro accessories in the store: [[https://pine64.com/?v=0446c16e2e66]]&lt;br /&gt;
&lt;br /&gt;
Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found [https://eli.gladman.cc/blog/2020/06/23/pine-book-pro-nvme.html here].&lt;br /&gt;
&lt;br /&gt;
=== Post NVMe install power limiting ===&lt;br /&gt;
Some NVMe SSDs allow reducing the maximum amount of power. Doing so may reduce the speed, but it may be needed in the Pinebook Pro to both improve reliability at lower battery levels. And to reduce power used, to maintain battery life.&lt;br /&gt;
Here are the commands to obtain and change the power settings. The package 'nvme-cli' is required to run these commands. The example shows how to find the available power states, and then sets it to the lowest, non-standby setting, (which is 3.8 watts for the device shown);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme id-ctrl /dev/nvme0&lt;br /&gt;
NVME Identify Controller:&lt;br /&gt;
...&lt;br /&gt;
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0&lt;br /&gt;
         rwt:0 rwl:0 idle_power:- active_power:-&lt;br /&gt;
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1&lt;br /&gt;
         rwt:1 rwl:1 idle_power:- active_power:-&lt;br /&gt;
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2&lt;br /&gt;
         rwt:2 rwl:2 idle_power:- active_power:-&lt;br /&gt;
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3&lt;br /&gt;
         rwt:3 rwl:3 idle_power:- active_power:-&lt;br /&gt;
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4&lt;br /&gt;
         rwt:4 rwl:4 idle_power:- active_power:-&lt;br /&gt;
&lt;br /&gt;
$ sudo nvme get-feature /dev/nvme0 -f 2&lt;br /&gt;
get-feature:0x2 (Power Management), Current value:00000000&lt;br /&gt;
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s&lt;br /&gt;
set-feature:02 (Power Management), value:0x000002&amp;lt;/pre&amp;gt;&lt;br /&gt;
Some NVMe SSDs don't appear to allow saving the setting with &amp;quot;-s&amp;quot; option. In those cases, leave off the &amp;quot;-s&amp;quot; and use a startup script to set the non-default power state at boot.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want to test performance without saving the new power setting semi-permanantly, then leave off the &amp;quot;-s&amp;quot; option.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving &amp;amp; transitions based on usage. To check if you have a NVMe SSD with this feature;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo nvme get-feature -f 0x0c -H /dev/nvme0&amp;lt;/pre&amp;gt;&lt;br /&gt;
Information for this feature, (on a Pinebook Pro), is a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Using as data drive ===&lt;br /&gt;
As long as the kernel in use has both the PCIe and NVMe drivers, you should be able to use a NVMe drive as a data drive. It can automatically mount when booting from either the eMMC or an SD card. This applies to Linux, FreeBSD, and Chromium, using the normal partitioning and file system creation tools. Android requires testing.&lt;br /&gt;
&lt;br /&gt;
=== Using as OS root drive ===&lt;br /&gt;
The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the [https://github.com/mrfixit2001/updates_repo/blob/v1.1/pinebook/filesystem/mrfixit_update.sh U-Boot update script] from the mrfixit2001 Debian or [https://pastebin.com/raw/EeK074XB Arglebargle's modified script], and [https://github.com/pcm720/rockchip-u-boot/releases the modified u-boot images] provided by forum user pcm720, you can now add support to boot from an NVMe drive. Binary images are useable with SD, eMMC, and [[Pinebook_Pro_SPI|SPI flash]]. For OS images using the mainline kernel, there are a few variants of U-Boot available that also support NVMe as the OS drive. Though these may require writing the U-Boot to the SPI flash for proper use of the NVMe as the OS drive.&lt;br /&gt;
&lt;br /&gt;
The current boot order, per last testing, for this modified U-Boot is:&lt;br /&gt;
*MicroSD&lt;br /&gt;
*eMMC&lt;br /&gt;
*NVMe&lt;br /&gt;
&lt;br /&gt;
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&amp;amp;pid=53764#pid53764 the forum post.]&lt;br /&gt;
&lt;br /&gt;
It is also possible to initially boot off an eMMC or SD card, then transfer to a root file system on the NVMe. Currently, it is necessary to have the U-Boot code on an eMMC or SD card.  (A forum member [https://forum.pine64.org/showthread.php?tid=8439 posted here] about using a modified version of U-Boot with NVMe drivers, that uses &amp;lt;code&amp;gt;/boot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; off the NVMe drive. So this may change in the future.)&lt;br /&gt;
&lt;br /&gt;
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].&lt;br /&gt;
&lt;br /&gt;
== Caring for the PineBook Pro ==&lt;br /&gt;
=== Bypass Cables ===&lt;br /&gt;
The mainboard features two (disconnected by default) bypass cables that are only to be used with the battery disconnected. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run the laptop without a battery. Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice].  &lt;br /&gt;
&lt;br /&gt;
'''Note that despite the bypass cable being a two conductor cable, it is only used as one. Both wires being soldered together on either side is normal!'''&lt;br /&gt;
&lt;br /&gt;
{{warning|Do not connect the bypass cables with the battery connected.  Using the bypass cables with the battery connected can permanently damage the computer.}}&lt;br /&gt;
&lt;br /&gt;
=== Pinebook Service Step-by-Step Guides ===&lt;br /&gt;
&lt;br /&gt;
Under [[Pinebook_Service_Step_by_Step_Guides|Service Guides for Pinebook]] you can find instructions guides concerning disassembly of:&lt;br /&gt;
&lt;br /&gt;
* The installation process on Pinebook Pro similar to 14&amp;quot; Pinebook&lt;br /&gt;
* The installation process is the reverse order of removal guide:&lt;br /&gt;
** 14″ Pinebook Lithium Battery Pack Removal Guide&lt;br /&gt;
** 14″ Pinebook LCD Panel Screen Removal Guide&lt;br /&gt;
** 14″ Pinebook eMMC Module Removal Guide&lt;br /&gt;
&lt;br /&gt;
== Using the SPI flash device ==&lt;br /&gt;
&lt;br /&gt;
See [[Pinebook Pro SPI]] for details.&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro comes with a 128Mbit, (16MByte), flash device suitable for initial boot target, to store the bootloader. The SoC used on the Pinebook Pro boots from this SPI flash device first, before eMMC or SD card. At present, April 19, 2020, the Pinebook Pros ship without anything programmed in the SPI flash device. So the SoC moves on to the next potential boot device, the eMMC. ARM/ARM64 computers do not have a standardized BIOS, yet.&lt;br /&gt;
&lt;br /&gt;
Here is some information on using the SPI flash device:&lt;br /&gt;
&lt;br /&gt;
* You need the kernel built with SPI flash device support, which will supply a device similar to: code&amp;gt;/dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The Linux package below, will need to be available: &amp;lt;code&amp;gt;mtd-utils&amp;lt;/code&amp;gt;&lt;br /&gt;
* You can then use this program from the package to write the SPI device: &amp;lt;code&amp;gt;flashcp &amp;amp;lt;filename&amp;amp;gt; /dev/mtd0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even if you need to recover from a defective bootloader written to the SPI flash, you can simply short pin 6 of the SPI flash to GND and boot. This will render the SoC bootrom unable to read from the SPI flash and have it fall back to reading the bootloader from other boot media like the eMMC or Micro SD card.&lt;br /&gt;
&lt;br /&gt;
The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware. At present, April 19th, 2020, there is no good bootloader image to flash into the SPI flash device. This is expected to change, as there are people working on issue.&lt;br /&gt;
&lt;br /&gt;
= Software tuning guide =&lt;br /&gt;
Details on how to get the most out of a Pinebook Pro &amp;amp; its RK3399 SoC.&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's default Manjaro KDE system ==&lt;br /&gt;
=== Watching DRM content (Netflix, etc.) ===&lt;br /&gt;
Most paid online streaming services use Widevine DRM to make their content more difficult to pirate. Widevine is not directly supported on Manjaro KDE, however it is still possible to watch DRM content via the &amp;quot;chromium-docker&amp;quot; package which downloads a 32-bit ARM container and installs Chromium with Widevine inside of that. While not space-efficient, or efficient in general, it's the recommended solution for watching this content on your Pinebook Pro. You can install this package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy chromium-docker&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checking GPU capabilities ===&lt;br /&gt;
To see what versions of OpenGL and OpenGL ES are supported by the Pinebook Pro, what driver is in use, and what version of the driver is loaded, install the &amp;quot;mesa-demos&amp;quot; package with:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo pacman -Sy mesa-demos&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then run:&lt;br /&gt;
&amp;lt;pre&amp;gt;glxinfo | grep OpenGL&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will give detailed information about your graphics card and driver, useful for debugging.&lt;br /&gt;
&lt;br /&gt;
=== Better GPU compatibility and performance ===&lt;br /&gt;
For better graphics performance, you may install the &amp;quot;mesa-git&amp;quot; package, built and supplied in the Manjaro ARM repos. This lets you bring in the latest features, optimizations, and bugfixes for the graphics driver used by the Pinebook Pro. Installation is as simple as:&lt;br /&gt;
&amp;lt;pre&amp;gt;pacman -Sy mesa-git&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then you may reboot to load the newer driver.&lt;br /&gt;
&lt;br /&gt;
With Mesa 20.2 there is no longer much reason to use this over the standard mesa package, and applications may occasionally break with mesa-git.&lt;br /&gt;
&lt;br /&gt;
[https://docs.mesa3d.org/bugs.html Reporting bugs] to the Mesa project will help make sure any problems are quickly fixed.&lt;br /&gt;
&lt;br /&gt;
=== OpenGL 3.3 support ===&lt;br /&gt;
By default, with the current state of the Panfrost GPU driver, the Pinebook Pro supports OpenGL 2.1 and OpenGL ES 3.0. If you want to use OpenGL 3.3, you need to set the system-wide environment variable, open the '''/etc/environment''' file with:&lt;br /&gt;
&amp;lt;pre&amp;gt;kate /etc/environment&amp;lt;/pre&amp;gt;&lt;br /&gt;
And then at the bottom of the file, on a new line, add:&lt;br /&gt;
&amp;lt;pre&amp;gt;PAN_MESA_DEBUG=&amp;quot;gl3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then save the file, entering your password when prompted, and reboot the system. When you check your GPU capabilities, it should report OpenGL 3.3 and applications that rely on it should function properly. Note that GL 3.3 support is incomplete and some rendering features do not work yet, notably geometry shaders.&lt;br /&gt;
&lt;br /&gt;
=== Install Anbox on Pinebook Pro Manjaro 20.10 ===&lt;br /&gt;
[https://www.youtube.com/watch?v=EU8_Q11dATs Youtube video on installing Anbox on Pienbook Pro Manjaro Build 20.10 by LivingLinux]&lt;br /&gt;
&lt;br /&gt;
== Customizing the Pinebook Pro's previously-default Debian system ==&lt;br /&gt;
Here are some hints on what you can do to customize the Pinebook Pro's previous factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])&lt;br /&gt;
&lt;br /&gt;
=== Initial user changes, password, name, etc ===&lt;br /&gt;
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.&lt;br /&gt;
&lt;br /&gt;
* Reboot (this is just to ensure all background processes belong to the user are not running... there are other ways to achieve this but this way is easy)&lt;br /&gt;
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal&lt;br /&gt;
* Login as root (login: root, password: root)&lt;br /&gt;
* Set a strong password for the root user using the following command and it's prompts:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd (and follow prompts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock user to your prefered username (replace myself with whatever you like):&lt;br /&gt;
&amp;lt;pre&amp;gt;# usermod -l myself -d /home/myself -m rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Rename the rock group to match your preferred username:&lt;br /&gt;
&amp;lt;pre&amp;gt;# groupmod -n myself rock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Put your name in the account, (replace &amp;quot;John A Doe&amp;quot; with your name):&lt;br /&gt;
&amp;lt;pre&amp;gt;# chfn -f &amp;quot;John A Doe&amp;quot; myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set a strong password for the normal user:&lt;br /&gt;
&amp;lt;pre&amp;gt;# passwd myself&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Log out of the text terminal:&lt;br /&gt;
&amp;lt;pre&amp;gt;# logout&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user&lt;br /&gt;
* Open text terminal to fix login error: &amp;quot;Configured directory for incoming files does not exist&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ blueman-services&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select &amp;quot;Transfer&amp;quot; tab and set &amp;quot;Incoming Folder&amp;quot; to myself&lt;br /&gt;
OR&lt;br /&gt;
If adduser is in distro, this is MUCH easier&lt;br /&gt;
sudo adduser $USER ,, fill out requested data&lt;br /&gt;
Then,, sudo adduser $USER $GROUP,,, 1 group at a time&lt;br /&gt;
To see which groups to add,,, id $USER,  id rock&lt;br /&gt;
&lt;br /&gt;
=== Changing the default hostname ===&lt;br /&gt;
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl&lt;br /&gt;
   Static hostname: Debian-Desktop&lt;br /&gt;
         Icon name: computer&lt;br /&gt;
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb&lt;br /&gt;
           Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99&lt;br /&gt;
  Operating System: Debian GNU/Linux 9 (stretch)&lt;br /&gt;
            Kernel: Linux 4.4.210&lt;br /&gt;
      Architecture: arm64&amp;lt;/pre&amp;gt;&lt;br /&gt;
To change, use this, (with &amp;quot;My_Hostname&amp;quot; used as the example);&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo hostnamectl set-hostname My_Hostname&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whence done, you can re-verify using the first example.&lt;br /&gt;
&lt;br /&gt;
Then you should backup and edit your &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; entry's name;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`&lt;br /&gt;
$ sudo vi /etc/hosts&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
127.0.0.1	My_Hostname&lt;br /&gt;
::1		localhost ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0		ip6-localnet&lt;br /&gt;
ff00::0		ip6-mcastprefix&lt;br /&gt;
ff02::1		ip6-allnodes&lt;br /&gt;
ff02::2		ip6-allrouters&lt;br /&gt;
127.0.1.1       linaro-alip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable Chromium browser's prompt for passphrase &amp;amp; password storage ===&lt;br /&gt;
&lt;br /&gt;
Perform the following steps:&lt;br /&gt;
&lt;br /&gt;
* On the tool bar, hover over the Chromium icon&lt;br /&gt;
* Using the right mouse button, select '''Properties'''&lt;br /&gt;
* In the '''Command:''' line section, add &amp;lt;code&amp;gt;--password-store=basic&amp;lt;/code&amp;gt; before the &amp;lt;code&amp;gt;%U&amp;lt;/code&amp;gt;&lt;br /&gt;
* Use the '''x Close''' button to save the change&lt;br /&gt;
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.&lt;br /&gt;
&lt;br /&gt;
=== Changing the boot splash picture ===&lt;br /&gt;
&lt;br /&gt;
The default boot splash picture can be replaced using the following instructions:&lt;br /&gt;
&lt;br /&gt;
* Install '''ImageMagick''' which will do the conversion&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo apt-get install imagemagick&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).&lt;br /&gt;
* From the directory in which your new image is stored run the following commands&lt;br /&gt;
* Convert your image to the bootsplash raw format using imagemagick convert.&lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create a backup copy of your current splash screen&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Copy your new splash screen into place&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo cp splash.fb /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Set the correct permissions on the splash.fb file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo chmod 644 /usr/share/backgrounds/splash.fb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed&lt;br /&gt;
&lt;br /&gt;
=== Watching Amazon Prime videos with Chromium ===&lt;br /&gt;
When you create a new user, it will be necessary to launch the Chromium browswer with a specific user agent like below;&lt;br /&gt;
&amp;lt;pre&amp;gt;chromium-browser --user-agent=&amp;quot;Mozilla/5.0 (X11; CrOS armv7l 6946.63.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There may be more tweaks needed.&lt;br /&gt;
&lt;br /&gt;
=== Enabling text boot time messages ===&lt;br /&gt;
&lt;br /&gt;
By default, most Linux distros have a boot screen with a picture. To see all the boot time messages, use one of the following;&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /etc/default/u-boot.`date +%Y%m%d`&lt;br /&gt;
 vi /etc/default/u-boot&lt;br /&gt;
&lt;br /&gt;
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.&lt;br /&gt;
&lt;br /&gt;
* Update the U-Boot configuration:&lt;br /&gt;
&lt;br /&gt;
 u-boot-update&lt;br /&gt;
&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ====&lt;br /&gt;
* Backup and edit the U-Boot configuration file:&lt;br /&gt;
&lt;br /&gt;
 cp -p /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 chmod a-w /boot/extlinux/extlinux.conf.`date +%Y%m%d`&lt;br /&gt;
 vi /boot/extlinux/extlinux.conf&lt;br /&gt;
&lt;br /&gt;
* Change '''console=ttyS2,1500000''' to '''console=tty1'''&lt;br /&gt;
* Remove the '''bootsplash.bootfile''' option and it's parameter.&lt;br /&gt;
* You can add verbose logging by appending '''ignore_loglevel''' to the line where boot splash was.&lt;br /&gt;
* Leave everything else alone.&lt;br /&gt;
* Test and verify you get what you think you should be seeing.&lt;br /&gt;
&lt;br /&gt;
== Improving readability ==&lt;br /&gt;
&lt;br /&gt;
Some people find that a 14&amp;quot; LCD screen with 1080p, (1920 x 1080), has text and icons a bit too small. There are things you can do to make the screen easier to use and read.&amp;lt;br&amp;gt;&lt;br /&gt;
* Increase the font size&lt;br /&gt;
* Use a font with more pronounced features&lt;br /&gt;
* Increase the various window manager sizes (e.g. increase the height of the tool bar)&lt;br /&gt;
* Change the color scheme to be easier on the eyes. Higher contrast can help usability.&lt;br /&gt;
* Change the window manager's decorations (e.g. use larger icons)&lt;br /&gt;
* Use a workspace manager, with one application per workspace&lt;br /&gt;
* When at home or office, use an external monitor&lt;br /&gt;
* Change the X-Windows DPI. One such method that someone used successfully, is:&amp;lt;br&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;echo &amp;quot;Xft.dpi: 150&amp;quot; &amp;gt;&amp;gt; ~/.Xresources&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;Change the 150 as desired to get the size adjustment you want.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
However, do not change the resolution of the LCD screen, otherwise you may end up with a blank / black screen. If that happens, see this troubleshooting section for the fix:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]&lt;br /&gt;
&lt;br /&gt;
== Chromium tweaks ==&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--disable-low-res-tiling \&lt;br /&gt;
--num-raster-threads=6 \&lt;br /&gt;
--profiler-timing=0 \&lt;br /&gt;
--disable-composited-antialiasing \&lt;br /&gt;
--test-type \&lt;br /&gt;
--show-component-extension-options \&lt;br /&gt;
--ignore-gpu-blacklist \&lt;br /&gt;
--use-gl=egl \&lt;br /&gt;
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \&lt;br /&gt;
--ppapi-flash-version=32.0.0.255 \&lt;br /&gt;
--enable-pinch \&lt;br /&gt;
--flag-switches-begin \&lt;br /&gt;
--enable-gpu-rasterization \&lt;br /&gt;
--enable-oop-rasterization \&lt;br /&gt;
--flag-switches-end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that in some cases, this may also decrease performance substantially, as observed when using these flags on the Manjaro KDE desktop. Feel free to experiment to find what is smoothest for you personally.&lt;br /&gt;
&lt;br /&gt;
== gVim has performance issue ==&lt;br /&gt;
It appears that using GTK3 can cause very slow scrolling, while Vim in a terminal window works fine.&amp;lt;br/&amp;gt;&lt;br /&gt;
Simply revert back to using GTK2, (how to do so is somewhat Linux distro-specific).&lt;br /&gt;
&lt;br /&gt;
Another solution may be to run gVim with &lt;br /&gt;
&lt;br /&gt;
 GDK_RENDERING=image&lt;br /&gt;
&lt;br /&gt;
environment variable set. It seems that this improves the performance by reverting back to software-only rendering.&lt;br /&gt;
&lt;br /&gt;
== Kernel options ==&lt;br /&gt;
Here are some Pinebook Pro &amp;amp; its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.&lt;br /&gt;
&lt;br /&gt;
To see if a specific feature is enabled in the current kernel, you can use something like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep -i rockchip_pcie /proc/config.gz&lt;br /&gt;
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set&lt;br /&gt;
CONFIG_PHY_ROCKCHIP_PCIE=m&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If it's listed as &amp;lt;code&amp;gt;=m&amp;lt;/code&amp;gt;, then it's a module. You can see if the module is loaded with;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep -i rockchip_pcie&lt;br /&gt;
phy_rockchip_pcie      16384  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note modules are not loaded until needed. Thus, we sometimes check the kernel configuration instead to see if a feature is configured first, then see if it's a module.&lt;br /&gt;
&lt;br /&gt;
=== Hardware video decoding ===&lt;br /&gt;
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.&amp;lt;br&amp;gt;&lt;br /&gt;
Older systems, such as the previously-default Debian desktop, use the Rockchip-supplied kernel module &amp;lt;code&amp;gt;rk-vcodec&amp;lt;/code&amp;gt;. To check, something like this can be used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsmod | grep rk-vcodec&lt;br /&gt;
    or&lt;br /&gt;
$ zgrep RK_VCODEC /proc/config.gz&lt;br /&gt;
CONFIG_RK_VCODEC=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that in the above example, the Rockchip video CODEC is not built as a module, but included into the kernel. Thus, it does not show up in the list modules check.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer systems may use a different option as in the configuration below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ zgrep HANTRO /proc/config.gz&lt;br /&gt;
CONFIG_VIDEO_HANTRO=m&lt;br /&gt;
CONFIG_VIDEO_HANTRO_ROCKCHIP=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting guide =&lt;br /&gt;
&lt;br /&gt;
Do not to panic if something goes wrong or in an unexpected way.  Instead, stop and consider carefully how to undo something, or how to redo it.  This particularly applies when flashing a new operating system, or flashing new firmware to the keyboard or touchpad.  If everything fails, consider reporting the issue on the forums, with as many relevant details as available.&lt;br /&gt;
&lt;br /&gt;
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.&lt;br /&gt;
&lt;br /&gt;
= Hardware/Accessory Compatibility =&lt;br /&gt;
Please contribute to the [[Pinebook Pro Hardware Accessory Compatibility|hardware/accessory compatibility page]], which lists the status of hardware tested with the Pinebook Pro.  Available hardware categories include the following:&lt;br /&gt;
&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]&lt;br /&gt;
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]&lt;br /&gt;
&lt;br /&gt;
= Technical Reference =&lt;br /&gt;
== Disassembly and Reassembly  == &lt;br /&gt;
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]&lt;br /&gt;
&lt;br /&gt;
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]&lt;br /&gt;
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]&lt;br /&gt;
&lt;br /&gt;
There are a few '''mandatory''' precautions to be taken:&lt;br /&gt;
&lt;br /&gt;
* Do not open the laptop by lifting the lid while the Pinebook Pro bottom cover is removed - this can cause structural damage to the hinges and/or other plastic components of the chassis such as the IO port cut-outs.&lt;br /&gt;
* When removing the back cover plate, *do not, under any circumstances, slide your fingertips between the metal shell and the plastic frame!* The back cover plate edges are sharp, and when combined with the pressure and movement generated from, specifically, attempting to slide the tips of your fingers along the bottom edge of the plate along the lid-hinge, they *will* slice open the tips of your fingers like a knife.&lt;br /&gt;
* When removing the back cover plate, use care to avoid damaging the speakers. They can be stuck to the back cover with double-sided tape, and the thin wires are very delicate. Newer Pinebook Pro laptops (as of the May 2021 batch, and perhaps earlier) seem to lack the double-sided tape to the rear cover, instead opting for tape or glue that makes them stick to the front cover. Nevertheless, be gentle when removing the back cover.&lt;br /&gt;
&lt;br /&gt;
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]&lt;br /&gt;
&lt;br /&gt;
When disassembling the laptop make sure that it is powered off and folded closed. To remove the bottom cover of the Pinebook Pro, first remove the ten (10) Phillips head screws that hold the bottom section of the laptop in place. There are four (4) short screws along the front edge, and six (6) long screws along the 3 remaining sides. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis. The aluminum case is held on only by screws. There are no plastic snaps, and the shell should pull away without any effort. If you experience any resistance at all stop and ensure all ten (10) screws are accounted for.&lt;br /&gt;
&lt;br /&gt;
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. Before replacing the aluminum back-plate, ensure that the speakers are properly seated by pressing gently on the hard plastic edge of the speaker module. Slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the touchpad is located) in place using the short screws in the front left and right corners. Then proceed to pop in the bottom panel into place. Secure the bottom section (where hinges are located) by screwing in the left and right corners. Then screw in the remaining screws and run your finger though the rim on the chassis to make sure its fitted correctly. Note that the front uses the remaining 4 short screws.&lt;br /&gt;
&lt;br /&gt;
The screws are small and should only be finger tight. Too much force will strip the threads. If after installing screws the back cover plate has not seated properly on one side (which may be caused by the aforementioned misseating of the speakers), open the display and hold the base on either side of the keyboard and gently flex the base with both hands in opposing directions. Once the side pops further in, then recheck the screws on that side. If it does not pop back in, re-open the machine and check for misseated components.&lt;br /&gt;
&lt;br /&gt;
A basic 3D model to print replacement standoffs for the back cover screws is [https://www.thingiverse.com/thing:4226648 available on Thingiverse], until the official drawings or 3D models are made available.&lt;br /&gt;
&lt;br /&gt;
====Display Disassembly====&lt;br /&gt;
It is not recommended to adjust the position of the lid when the bottom cover is removed, because the bottom cover provides structural strength, so the lid should be open fully as the first step, before starting any disassembly of the laptop.  After opening the lid, remove the bottom cover by following the instruction found in the section above.  Alternatively, you can keep the lid closed and remove the screws that hold the hinges to the main laptop body, as described in [[Pinebook Service Step by Step Guides]].&lt;br /&gt;
&lt;br /&gt;
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plactic U-shaped cover that snaps in place using latches.  Use a dedicated plastic prying tool or a guitar pick to gently pry the cover and remove it, starting from the outer edge.  Once you pry the cover to a certain extent, it should be possible to remove it fully using only your hands.  The U-shaped cover is rather sturdy, but still be careful not to break or bend it.&lt;br /&gt;
&lt;br /&gt;
There are two small screws hidden underneath the two small rubber nubs on the upper part of the screen bezel, so first gently remove the nubs and then remove the screws.  The screen bezel is held in place with a combination of latches and some adhesive tape, which is there to prevent dust ingress.  The adhesive isn't very strong, and the bezel is capable of flexing back into shape after being twisted to a certain extent.  There is more adhesive on the bottom part of the screen bezel, so be more careful while prying that section apart.  Use the same prying tool that you used for the U-shaped cover, and work it around the outer edges of the screen bezel.&lt;br /&gt;
&lt;br /&gt;
== Internal Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Main chips ===&lt;br /&gt;
* RK3399 system-on-chip (1)&lt;br /&gt;
* LPDDR4 SDRAM (21)&lt;br /&gt;
* SPI NOR flash memory (29)&lt;br /&gt;
* eMMC flash memory (26)&lt;br /&gt;
* WiFi/BT module (27)&lt;br /&gt;
&lt;br /&gt;
=== Mainboard Switches and Buttons ===&lt;br /&gt;
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack. &lt;br /&gt;
&lt;br /&gt;
The Reset and Recovery buttons (28): the reset button performs an immediate reset of the laptop. The Recovery button is used to place the device in maskrom mode; this mode allows flashing eMMC using Rockchip tools (e.g. rkflashtools). &lt;br /&gt;
&lt;br /&gt;
[[File:PBPL_S.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Key Internal Parts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Numbered parts classification and description&lt;br /&gt;
! Number&lt;br /&gt;
! Type&lt;br /&gt;
! Descriptor&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 1&lt;br /&gt;
| Component || RK3399 System-On-Chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 2&lt;br /&gt;
| Socket || PCIe x4 slot for optional NVMe adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 3&lt;br /&gt;
| Socket || Speakers socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 4&lt;br /&gt;
| Socket || Touchpad socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 5&lt;br /&gt;
| Component || Left speaker &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 6&lt;br /&gt;
| Connector || Power bridge connector &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 7&lt;br /&gt;
| Socket || Keyboard Socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 8&lt;br /&gt;
| Component || Optional NVMe SSD adapter&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 9&lt;br /&gt;
| Switch || UART/Audio switch - outputs UART via headphone jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 10&lt;br /&gt;
| Socket || Power bridge socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 11&lt;br /&gt;
| Socket || Battery socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 12&lt;br /&gt;
| Component || Touchpad&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 13&lt;br /&gt;
| Component || Battery&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 14&lt;br /&gt;
| Component || Right speaker&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 15&lt;br /&gt;
| Socket || MicroSD card slot&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 16&lt;br /&gt;
| Socket || Headphone / UART jack&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 17&lt;br /&gt;
| Socket || USB 2.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 18&lt;br /&gt;
| Socket || Daughterboard-to-mainboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 19&lt;br /&gt;
| Cable || Daughterboard-to-mainboard ribbon cable&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 20&lt;br /&gt;
| Component || microphone&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 21&lt;br /&gt;
| Component || LPDDR4 RAM&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 22&lt;br /&gt;
| Socket || Mainboard-to-daughterboard ribbon cable socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 23&lt;br /&gt;
| Socket || Microphone socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 24&lt;br /&gt;
| Switch || Switch to hardware disable eMMC&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 25&lt;br /&gt;
| Antenna || BT/WiFI antenna&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 26&lt;br /&gt;
| Component || eMMC flash memory module &lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 27&lt;br /&gt;
| Component ||BT/WiFi module chip&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 28&lt;br /&gt;
| Buttons || Reset and recovery buttons&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 29&lt;br /&gt;
| Component || SPI flash storage&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 30&lt;br /&gt;
| Socket || eDP LCD socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 31&lt;br /&gt;
| Socket || Power in barrel socket&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 32&lt;br /&gt;
| Socket || USB 3.0 Type A&lt;br /&gt;
|-&lt;br /&gt;
! scope=row | 33&lt;br /&gt;
| Socket || USB 3.0 Type C &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Smallboard detailed picture ===&lt;br /&gt;
&lt;br /&gt;
[[File:Pinebook_pro_smallboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Bootable Storage ==&lt;br /&gt;
&lt;br /&gt;
=== Boot sequence details ===&lt;br /&gt;
The RK3399's mask 32KB ROM boot code looks for the next stage of code at byte off-set 32768, (sector 64 if using 512 byte sectors). This is where U-Boot code would reside on any media that is bootable.&amp;lt;br&amp;gt;&lt;br /&gt;
[[RK3399_boot_sequence|RK3399 boot sequence]]&lt;br /&gt;
&lt;br /&gt;
=== Boot devices ===&lt;br /&gt;
&lt;br /&gt;
The Pinebook Pro is capable of booting from eMMC, USB 2.0, USB 3.0, or an SD card. It cannot boot from USB-C.  The boot order of the hard-coded ROM of its RK3399 SoC is: SPI NOR, eMMC, SD, USB OTG. &lt;br /&gt;
&lt;br /&gt;
At this time, the Pinebook Pro ships with a Manjaro + KDE build with [https://www.denx.de/wiki/U-Boot/ u-boot] on the eMMC.  Its boot order is: SD, USB, then eMMC.&lt;br /&gt;
&lt;br /&gt;
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other OSes from an SD card. In order to update, fully charge the battery, establish an internet connection, click the update icon in the toolbar, and then reboot your Pinebook Pro.  Please see [https://forum.pine64.org/showthread.php?tid=7830 this log] for details.)&lt;br /&gt;
&lt;br /&gt;
Please note that PCIe, the interface used for NVMe SSD on the Pinebook Pro, is not bootable on the RK3399 and therefore is not a part of the boot hierarchy. It is possible to run the desired OS from NVMe by pointing extlinux on the eMMC to rootfs on the SSD. This requires uboot, the Kernel image, DTB, and extlinux.conf&lt;br /&gt;
in a /boot partition on the eMMC.&lt;br /&gt;
&lt;br /&gt;
=== eMMC information ===&lt;br /&gt;
The eMMC appears to be hot-pluggable. This can be useful if trying to recover data or a broken install. Best practice is probably to turn the eMMC switch to off position before changing modules. Note that the enable/disable label on the silkscreen is incorrect on some board revisions (known bad on v2.1).&lt;br /&gt;
&lt;br /&gt;
The eMMC storage will show up as multiple block devices:&lt;br /&gt;
*mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB&lt;br /&gt;
*mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB&lt;br /&gt;
*mmcblk1rpmb - eMMC standard secure data partition, may be 16MB&lt;br /&gt;
*mmcblk1 - This block contains the user areas&lt;br /&gt;
&lt;br /&gt;
Only the last is usable as regular storage device in the Pinebook Pro.&lt;br /&gt;
The device number of &amp;quot;1&amp;quot; shown above may vary, depending on kernel.&lt;br /&gt;
&lt;br /&gt;
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user &amp;quot;root&amp;quot;;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo fe330000.sdhci &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/unbind&lt;br /&gt;
echo fe330000.sdhci &amp;gt;/sys/bus/platform/drivers/sdhci-arasan/bind&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case Dimensions and Data ==&lt;br /&gt;
* Dimensions: 329mm x 220mm x 12mm (WxDxH)&lt;br /&gt;
* Weight: 1.26Kg&lt;br /&gt;
* Screws&lt;br /&gt;
** Philips head type screws&lt;br /&gt;
** M2 flat head machine screws (measurements in mm)&lt;br /&gt;
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1,  Overall length - 3.05&lt;br /&gt;
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85&lt;br /&gt;
* Rubber Feet&lt;br /&gt;
** 18mm diameter&lt;br /&gt;
** 3mm height&lt;br /&gt;
** Dome shaped&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specification ==&lt;br /&gt;
[[File:Rockchip_RK3399.png|right]]&lt;br /&gt;
* Based on Rockchip RK3399&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU&lt;br /&gt;
** Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)&lt;br /&gt;
** ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
** ARMv8 Cryptography Extensions&lt;br /&gt;
** VFPv4 floating point unit supporting single and double-precision operations&lt;br /&gt;
** Hardware virtualization support&lt;br /&gt;
** TrustZone technology support&lt;br /&gt;
** Full CoreSight debug solution&lt;br /&gt;
** One isolated voltage domain to support DVFS&lt;br /&gt;
* Cortex-A72 (big cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]&lt;br /&gt;
** Superscalar, variable-length, out-of-order pipeline&lt;br /&gt;
** L1 cache 48KB Icache and 32KB Dcache for each A72 &lt;br /&gt;
** L2 cache 1024KB for big cluster &lt;br /&gt;
* Cortex-A53 (little cluster):&lt;br /&gt;
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]&lt;br /&gt;
** In-order pipeline with symmetric dual-issue of most instructions &lt;br /&gt;
** L1 cache 32KB Icache and 32KB Dcache for each A53&lt;br /&gt;
** L2 cache 512KB for little cluster&lt;br /&gt;
* Cortex-M0 (control processors):&lt;br /&gt;
** [https://developer.arm.com/ip-products/processors/cortex-m/cortex-m0 Cortex-M0 CPU]&lt;br /&gt;
** Two Cortex-M0 cooperate with the central processors&lt;br /&gt;
** Architecture: Armv6-M&lt;br /&gt;
** Thumb/Thumb2 instruction set&lt;br /&gt;
** 32 bit only&lt;br /&gt;
&lt;br /&gt;
=== GPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]&lt;br /&gt;
* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provide stunning visuals for UHD content.&lt;br /&gt;
* Frequency 	650MHz &lt;br /&gt;
* Throughput 	1300Mtri/s, 10.4Gpix/s&lt;br /&gt;
* Graphic interface standards:&lt;br /&gt;
** OpenGL® ES 1.1, 1.2, 2.0, 3.0, 3.1, 3.2. (Panfrost has initial support of 3.0 beginning 2020/02/27)&lt;br /&gt;
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)&lt;br /&gt;
** OpenCL™ 1.1, 1.2&lt;br /&gt;
** DirectX® 11 FL11_1&lt;br /&gt;
** RenderScript™&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory:&lt;br /&gt;
** LPDDR4&lt;br /&gt;
** 800MHz, (limited by RK3399)&lt;br /&gt;
** Dual memory channels on the CPU, each 32 bits wide&lt;br /&gt;
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel&lt;br /&gt;
** 4GB as a single 366 pin mobile RAM chip&lt;br /&gt;
* Storage Memory: &lt;br /&gt;
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)&lt;br /&gt;
** eMMC version 5.1, HS400, 8 bit on RK3399 side&lt;br /&gt;
** Bootable&lt;br /&gt;
* SPI flash:&lt;br /&gt;
** [[Pinebook Pro SPI]]&lt;br /&gt;
** 128Mbit / 16MByte&lt;br /&gt;
** 1 bit interface&lt;br /&gt;
** Bootable, (first boot device, ahead of eMMC &amp;amp; SD card)&lt;br /&gt;
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.&lt;br /&gt;
&lt;br /&gt;
=== Video out ===&lt;br /&gt;
* USB-C Alt mode DP&lt;br /&gt;
* Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* MicroSD card:&lt;br /&gt;
** Bootable&lt;br /&gt;
** Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.&lt;br /&gt;
** Version SD3.0, (MMC 4.5), up to 50MB/s&lt;br /&gt;
** SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS&lt;br /&gt;
* USB ports:&lt;br /&gt;
** 1 x USB 2.0 Type-A Host Port, bootable&lt;br /&gt;
** 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable&lt;br /&gt;
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable&lt;br /&gt;
** Note that high power USB devices may not work reliably on a PBP. Or they may draw enough power to drain the battery even when the PBP is plugged into A.C. One alternative is externally powered USB devices.&lt;br /&gt;
* Headphone jack switchable to UART console mux circuit&lt;br /&gt;
&lt;br /&gt;
== Additional hardware ==&lt;br /&gt;
Hardware that is not part of the SoC.&lt;br /&gt;
&lt;br /&gt;
=== Battery ===&lt;br /&gt;
* Lithium Polymer Battery (10,000 mAH)&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
* 14.0&amp;quot; 1920x1080 IPS LCD panel&lt;br /&gt;
=== Lid closed magnet ===&lt;br /&gt;
There is a magnet to detect when the laptop lid is closed, so action can be taken like sleep. This meets up with the Hall sensor on the daughter / small board to detect lid closed.&lt;br /&gt;
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.&lt;br /&gt;
&lt;br /&gt;
=== Webcam ===&lt;br /&gt;
* Internal USB attached Webcam&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
* 3.5mm stereo earphone/microphone plug&lt;br /&gt;
* Built-in microphone&lt;br /&gt;
* Built-in stereo speakers:&lt;br /&gt;
** Oval in design&lt;br /&gt;
** 3 mm high x 20 mm x 30 mm&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
* WiFi:&lt;br /&gt;
** 802.11 b/g/n/ac&lt;br /&gt;
** Dual band: 2.4Ghz &amp;amp; 5Ghz&lt;br /&gt;
** Single antenna&lt;br /&gt;
* Bluetooth 5.0&lt;br /&gt;
&lt;br /&gt;
=== Optional NVMe adapter ===&lt;br /&gt;
* PCIe 1.1, 2.5 GT/s per lane&lt;br /&gt;
** Note that due to errata, PCIe is limited to Gen1. See [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm64/boot/dts/rockchip/rk3399.dtsi?id=712fa1777207c2f2703a6eb618a9699099cbe37b this commit].&lt;br /&gt;
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards&lt;br /&gt;
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too&lt;br /&gt;
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260&lt;br /&gt;
* Power: 2.5&amp;amp;nbsp;W continuous, 8.25&amp;amp;nbsp;W peak momentary&lt;br /&gt;
* Does not support SATA M.2 cards&lt;br /&gt;
* Does not support USB M.2 cards&lt;br /&gt;
&lt;br /&gt;
== Pinebook Pro Schematics and Certifications ==&lt;br /&gt;
* Pinebook Pro Main Board Schematic And Silkscreen:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]&lt;br /&gt;
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]&lt;br /&gt;
* Pinebook Pro Daughter Board Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]&lt;br /&gt;
* Optional Pinebook Pro NVMe Adapter Schematic:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]&lt;br /&gt;
* Serial Console Earphone Jack Pinout:&lt;br /&gt;
** [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinkbook Serial Console Earphone Jack Pinout]&lt;br /&gt;
* Pinebook Pro Case:&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]&lt;br /&gt;
** [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]&lt;br /&gt;
* Pinebook Pro Certifications:&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3399 SoC information:&lt;br /&gt;
** [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]&lt;br /&gt;
** [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]&lt;br /&gt;
** [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.3, part 1] and [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf part 2]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]&lt;br /&gt;
* LPDDR4 SDRAM (366-pin BGA):&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 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 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://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (updated)]&lt;br /&gt;
* Wireless and Bluetooth information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]&lt;br /&gt;
* Audio codec:&lt;br /&gt;
** [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]&lt;br /&gt;
* LCD panel:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14&amp;quot; 1920x1080 IPS LCD Panel datasheet]&lt;br /&gt;
* USB-related information:&lt;br /&gt;
** Internal USB 2.0 hub: [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub Datasheet]&lt;br /&gt;
** USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]&lt;br /&gt;
* Touchpad information:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]&lt;br /&gt;
* Keyboard information:&lt;br /&gt;
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]&lt;br /&gt;
** US ANSI: XK-HS002 MB27716023&lt;br /&gt;
* Full HD camera sensor:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]&lt;br /&gt;
* Battery-related information:&lt;br /&gt;
** Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&amp;amp;ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]&lt;br /&gt;
** Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification]&lt;br /&gt;
* Power path device:&lt;br /&gt;
** [https://wiki.pine64.org/images/9/99/Sis412dn.pdf N-MOS / MOSFET]&lt;br /&gt;
* NVMe adapter:&lt;br /&gt;
** [https://wiki.pine64.org/images/d/d0/Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]&lt;br /&gt;
&lt;br /&gt;
== Versions ==&lt;br /&gt;
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The &amp;quot;first batch&amp;quot; (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]&lt;br /&gt;
&lt;br /&gt;
=Skinning and Case Customization=&lt;br /&gt;
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.&lt;br /&gt;
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]&lt;br /&gt;
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]&lt;br /&gt;
&lt;br /&gt;
= Other Resources =&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]&lt;br /&gt;
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]&lt;br /&gt;
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (no login required to read)&lt;br /&gt;
* IRC Server: irc.pine64.org Channel: PineBook&lt;br /&gt;
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]&lt;br /&gt;
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]&lt;br /&gt;
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]&lt;br /&gt;
* [[Pinebook Pro/Freepascal and Lazarus IDE on Manjaro|Freepascal and Lazarus IDE on Pinebook Pro]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PineBook Pro]]&lt;br /&gt;
[[Category:Rockchip RK3399]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11838</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11838"/>
		<updated>2021-11-21T19:29:19Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: Config Options: mention reason for autoloading being broken&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:LightYellow; text-align:center;&amp;quot;|In review&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/list/?series=581709]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchipdrm/VOP-v2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Also needs the DTS changes by mriesch&amp;lt;sup&amp;gt;[https://patchwork.kernel.org/project/linux-rockchip/patch/20211117154429.2274443-1-michael.riesch@wolfvision.net/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | 3D Acceleration &lt;br /&gt;
| 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=526661]&amp;lt;/sup&amp;gt;&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;
| GPU is basically already supported in mainline but needs some device tree changes for this particular SoC&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;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; | Audio &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b058698f723e3c2087af7069c0da082a3ecbe1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-spdif&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dac825b6a6bdca41347e25f07354ad94fdc97445]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d6a04da9b25b9a7cf2cac5f5079e3296d3bee0f]&amp;lt;/sup&amp;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:#F99; 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; rowspan=&amp;quot;4&amp;quot; | Device Tree&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| Quartz64 Model A&lt;br /&gt;
| As of 5.16&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b33a22a1e7c4248608e533fc4fa524258b3fae84]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| Quartz64 Model B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs submitting&lt;br /&gt;
| SOQuartz&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs writing&lt;br /&gt;
| PineNote&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;gpio-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=936ee2675eee1faca0dcdfa79165c7990422e0fc]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;pcie-dw-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e898eb8df4e34c7b129452444eb7cef68a11f43]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domains&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3568-pmu-io-voltage-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28b05a64e47cbceebb8a5f3f643033148d5c06c3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=536233]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.15&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;. Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&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=530823]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Combo PHY&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=569391]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;naneng-combphy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | RGA&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs fixing&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-rga&amp;lt;/code&amp;gt;&lt;br /&gt;
| [[User:CounterPillow]] experimentally enabled it&amp;lt;sup&amp;gt;[https://gist.github.com/CounterPillow/6bea809f15ada7ddd3a3d7a4994fdc4e]&amp;lt;/sup&amp;gt; in the device tree and ran gstreamer's v4l2convert through it to test, resulting in a completely garbled output.&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&lt;br /&gt;
* GPU&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;
** [[User:CounterPillow]] noticed some weirdness with NVMe devices disconnecting during heavy write operations, needs investigating&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;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Analog audio works&lt;br /&gt;
** SPDIF works&lt;br /&gt;
** no HDMI yet&lt;br /&gt;
* Video Output &amp;amp;mdash; only at 1920x1080p60 and nothing else, very buggy and rough around more than just the edges&lt;br /&gt;
&lt;br /&gt;
=== Confirmed Broken ===&lt;br /&gt;
&lt;br /&gt;
* USB 3.0 &amp;amp;mdash; only works with very short cables and depends on the device. This is due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&lt;br /&gt;
** Hardware design changes have been suggested to engineers, it's in their hands now.&lt;br /&gt;
* Module autoloading for the Ethernet PHY. The Motorcomm PHY does not have a vendor ID written into the appropriate hardware block, so there is no canonical way to identify the device.&lt;br /&gt;
&lt;br /&gt;
=== Needs Testing ===&lt;br /&gt;
&lt;br /&gt;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== Investigate MCU ===&lt;br /&gt;
&lt;br /&gt;
The RK3566 comes with an integrated RISC-V microcontroller (MCU). It communicates with the A55 host through the Mailbox system driven by the rockchip-mailbox driver. Since this MCU would be quite useful for things such as low power standby mode, investigating how it can be turned on and have firmware flashed to it should greatly enhance the power saving features of the PineNote.&lt;br /&gt;
&lt;br /&gt;
=== Mainline U-Boot Work ===&lt;br /&gt;
&lt;br /&gt;
Currently, mainline U-Boot does not have support for the RK3566 SoC used on the Quartz64. That's why we currently use the &amp;quot;downstream&amp;quot; Rockchip U-Boot, which is based on an old version of U-Boot and contains vendor specific patches that have not undergone the same level of code review as they'd have done had they been submitted upstream.&lt;br /&gt;
&lt;br /&gt;
While the lack of ATF sources mean that using mainline U-Boot would still require the use of Rockchip provided binaries for the firmware, the mainline U-Boot works needs to be done eventually anyway, and even with Rockchip blobs, a more modern version of U-Boot will be much nicer to use.&lt;br /&gt;
&lt;br /&gt;
Someone needs to get on the task of investigating what minimally needs to be ported to get the board booting with mainline U-Boot, port those changes, and submit them for review.&lt;br /&gt;
&lt;br /&gt;
==== List of Useful Resources for this Task ====&lt;br /&gt;
* Downstream Rockchip U-Boot repository with Quartz64 specific patches: https://gitlab.com/pgwipeout/u-boot-rockchip/-/tree/quartz64&lt;br /&gt;
* Mainline Rockchip custodian U-Boot repository: https://source.denx.de/u-boot/custodians/u-boot-rockchip&lt;br /&gt;
* U-Boot Mailing List: https://lists.denx.de/listinfo/u-boot&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Config Options ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_I2S_TDM&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog and (in the future) HDMI audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_RK817&amp;lt;/code&amp;gt;&lt;br /&gt;
** for Analog audio on the Model A&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_STMMAC_ETH&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DWMAC_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** Ethernet, set this one to Y, m won't work as module autoloading does not work for this specific PHY (the vendor ID is zeroed out)&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MMC_DW_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** MMC/SD&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PCIE_ROCKCHIP_DW_HOST&amp;lt;/code&amp;gt;&lt;br /&gt;
** PCIe&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** PHY for PCIe/SATA/USB3, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_DRM_PANFROST&amp;lt;/code&amp;gt;&lt;br /&gt;
** GPU&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_SND_SOC_ROCKCHIP_SPDIF&amp;lt;/code&amp;gt;&lt;br /&gt;
** SPDIF audio&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_DW_HDMI&amp;lt;/code&amp;gt;&lt;br /&gt;
** HDMI PHY&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_VOP2&amp;lt;/code&amp;gt;&lt;br /&gt;
** Video output, not yet upstream&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ARCH_ROCKCHIP&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PHY&amp;lt;/code&amp;gt;&lt;br /&gt;
** General SoC support&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_PHY_ROCKCHIP_INNO_USB2&amp;lt;/code&amp;gt;&lt;br /&gt;
** USB 2&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_RTC_DRV_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_COMMON_CLK_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Real-time Clock&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_MFD_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Various things relating to the RK817 chip&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_REGULATOR_RK808&amp;lt;/code&amp;gt;&lt;br /&gt;
** Voltage regulators&lt;br /&gt;
* &amp;lt;code&amp;gt;CONFIG_ROCKCHIP_PM_DOMAINS&amp;lt;/code&amp;gt;&lt;br /&gt;
** Power management domains&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-v5.15-rc1&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11006</id>
		<title>Quartz64 Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64_Development&amp;diff=11006"/>
		<updated>2021-08-10T16:38:47Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* Upstreaming Status */ Change color of u-boot status&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;
| Necessary device tree changes [https://patchwork.kernel.org/project/linux-rockchip/patch/20210719225806.26680-1-ezequiel@collabora.com/ in review]&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;rockchip-i2s-tdm&amp;lt;/code&amp;gt;&lt;br /&gt;
| [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/c66ee6a77083475afce9039b30d81c6265fbbb81 i2s] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/a02f20c268bb8672596e24ee1ffa84e0a26ebb57 i2s fix] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/df340d70a0b9c0bda00a8025594a65aa899d84a7 vad] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/b08d29a90fd5aaf705743ac332fab99e621bbfaf pdm] [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/commit/051faf3a861f84347ef8e76c16bbb093d86e93b1 spdif] A [https://github.com/CounterPillow/linux/compare/quartz64-5.14...CounterPillow:quartz-audio port of the i2s-tdm driver for mainline exists], but the code quality isn't good enough for submitting it upstream.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-codec&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&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:#F99; 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;|Basic Quartz64 Model A device tree in 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=80055186c461b631e6a14f9a8948acdbfeb8b3b9]&amp;lt;/sup&amp;gt;&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rk3566-gmac&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3bb3d6b1c1957e88bfc5e77a4557f7e6ba761fe3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;yt8511-phy&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48e8c6f1612b3d2dccaea2285231def830cc5b8e]&amp;lt;/sup&amp;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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-iommu&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c55356c534aa651ccc3053ef2d5d8d810adacf5f]&amp;lt;/sup&amp;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/patch/20210726013529.1634738-1-jay.xu@rock-chips.com/]&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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-thermal&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b14c055a6f644cbeb1156ba24647e92fe51ec69]&amp;lt;/sup&amp;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/20210624021548.447301-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:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-pm-domain&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1782c87b44a0b1a527f01a6a184677c58ccbf9c7]&amp;lt;/sup&amp;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; | SPI &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;  style=&amp;quot;background:PaleGreen; text-align:center;&amp;quot;|Linux Mainline&lt;br /&gt;
| &amp;lt;code&amp;gt;spi-rockchip&amp;lt;/code&amp;gt;&lt;br /&gt;
| As of 5.14&amp;lt;sup&amp;gt;[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d74d99229f4d48f42d674f7a8a1137179efd67ac]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Battery&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=528837]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rk817-charger&amp;lt;/code&amp;gt;&lt;br /&gt;
| In the BSP tree this is handled by [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_battery.c rk817_battery.c] and [https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux/-/blob/quartz64/drivers/power/supply/rk817_charger.c rk817_charger.c]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Microphone&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/next/linux-next.git/commit/drivers/iio/adc/rockchip_saradc.c?h=next-20210730&amp;amp;id=7786da3b5ae167c17f35e22ba35e06006338c2f6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-saradc&amp;lt;/code&amp;gt;&lt;br /&gt;
| Headphone jack mic seems to connect to &amp;lt;code&amp;gt;SARADC_VIN2_HP_HOOK&amp;lt;/code&amp;gt;, so I'm pretty sure that the dtsi and driver changes are needed for that mic to work&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | USB 2.0&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=522639]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;rockchip-usb2phy&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | e-Ink&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#F99; text-align:center;&amp;quot;|Needs reversing&lt;br /&gt;
| &amp;lt;code&amp;gt;ebc-dev&amp;lt;/code&amp;gt;?&lt;br /&gt;
| See [[RK3566 EBC Reverse-Engineering]]&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;
According to pgwipeout, I/O device performance is within expected ranges now.&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;
* Battery&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; only works with very short cables and depends on the device. This is likely due to a hardware design issue relating to the coupling capacitors needed for SATA, which shares the same lines as USB 3.0.&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;
* [https://developer.arm.com/architectures/system-architectures/system-components/arm-generic-interrupt-controller GIC] &amp;amp;mdash; needs errata published by Rockchip to get upstream to add device-specific workarounds&amp;lt;sup&amp;gt;[https://lore.kernel.org/linux-rockchip/CAMdYzYrQ5f-mv_VmTq_CRf9tR=j3mwRpKHNLmPFgCF9whsGFRw@mail.gmail.com/]&amp;lt;/sup&amp;gt;&lt;br /&gt;
* Audio&lt;br /&gt;
** Simple port of downstream i2s-tdm driver for analog audio output exists and works. Needs cleanup/rewrite before it's worthy of being submitted upstream.&lt;br /&gt;
** no HDMI or SPDIF yet&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;
* E-Paper &amp;amp;mdash; needs EBC driver&lt;br /&gt;
* SPI&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
=== i2s-tdm Cleanup ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-i2s-tdm i2s-tdm driver] needs cleanup before it can be submitted upstream. For example, the probe function needs to be rewritten, the &amp;lt;code&amp;gt;udelay(150)&amp;lt;/code&amp;gt; clear calls should be factored out into a function instead of repeated several times in the code, and other strange things in the code need to be cleaned up.&lt;br /&gt;
&lt;br /&gt;
=== ebc-dev Reverse Engineering and Development ===&lt;br /&gt;
&lt;br /&gt;
The [https://gitlab.com/pine64-org/quartz-bsp/linux-next/-/tree/rk356x-ebc-dev driver for the eInk panel] needs to both be reverse engineered and then rewritten as C. In its current form, it is mostly an assembly dump produced by gcc with debug symbols. See [[RK3566 EBC Reverse-Engineering]] for details.&lt;br /&gt;
&lt;br /&gt;
=== VOP2 Porting ===&lt;br /&gt;
&lt;br /&gt;
The VOP2 portion of the &amp;lt;code&amp;gt;rockchip-drm&amp;lt;/code&amp;gt; driver needs to be ported from the downstream kernel. This driver enables video output. Preliminary research has determined that this is a fairly big task.&lt;br /&gt;
&lt;br /&gt;
Rumour has it that Collabora has written an unfinished port, but to our knowledge it was never published anywhere.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* pgwipeout's kernel tree&lt;br /&gt;
** https://gitlab.com/pgwipeout/linux-next/-/tree/quartz64-5.14&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;
* Downstream rockchip-linux kernel tree&lt;br /&gt;
** https://gitlab.com/pine64-org/quartz-bsp/rockchip-linux&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;
* SD-Card&lt;br /&gt;
* eMMC&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>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=11005</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=11005"/>
		<updated>2021-08-10T16:37:36Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* SoC and Memory Specifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Quartz64 is the most recent Single Board Computer offering from PINE64, initially released in June of 2021. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open ended slot (model A) or m.2 (model B) using one Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 has three LPDDR4 system memory options: 2GB, 4GB or 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM ===&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Manjaro ARM is a user friendly rolling release distribution, based on Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ARM with no desktop ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-bsp-images/releases Weekly images on Github]&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
* [https://www.cnx-software.com/2020/12/01/rockchip-rk3568-processor-to-power-edge-computing-and-nvr-applications 22nm process, believed to be FD-SOI]&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 4GB, 8GB LPDDR4.&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 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port)&lt;br /&gt;
* optional eMMC module from 16GB up to 128GB&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART on model A, build in Wifi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability). As an example, PCIe-to-PCI bridges work, whereas they didn't on the ROCKPro64.&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are multiplexed, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [https://wiki.pine64.org/images/3/31/Quartz64_model-A_schematic_v1.0_20201215.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board 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.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic not yet available&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64%20model-B%20PCB%20placement.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Certifications:&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 submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3566 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
* LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 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;
* E-ink Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&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]&lt;br /&gt;
* WiFi/BT module info:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet]]&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;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== BSP Linux SDK ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux SDK ver 4.19 for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_BSP%20Linux.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 24554419aec29700add97167a3a4c9ed&lt;br /&gt;
** File Size: 32.67.00GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android SDK ==&lt;br /&gt;
&lt;br /&gt;
=== Android 11 SDK for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 77c2ff57ea3372fb04da7fb49e17d12b&lt;br /&gt;
** File Size: 79.00GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 Production Test Build for Quart64 model A SBC ===&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Stock Image [eMMC Boot] using DD method [20210604] ====&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
* DD image for 8GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): e4365753e584d9fce1b8f10f095eede6&lt;br /&gt;
*** File Size: 819MB&lt;br /&gt;
* DD image for 16GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 491c5f7744b0ca0b74ae76e607051836&lt;br /&gt;
*** File Size: 1.10GB&lt;br /&gt;
* DD image for 32GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 47a6f0cdac8bad06cb920743849a8894&lt;br /&gt;
*** File Size: 846MB&lt;br /&gt;
* DD image for 64GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4e2fed6f5db0d55afdc8a142fc0c4fe1&lt;br /&gt;
*** File Size: 884MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Production Test Build for Quart64 model A SBC [eMMC Boot] using ROCKChip tools method [20210604] ====&lt;br /&gt;
* Please unzip first and then using [https://files.pine64.org/os/Quartz64//android/RKDevTool_Release_v2.84.zip Rockchip Android tool ver 2.84] to flash in&lt;br /&gt;
* For Windows OS environment, please install the [https://files.pine64.org/os/Quartz64/android/DriverAssitant_v5.1.1.zip DriverAssistant v5.11] driver first &lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* The OTG port located at top USB 2.0 port on top of USB 3.0 port, needs USB type A to type A cable.&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_20210604_stock_android11_emmcboot.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 800f867fdd0d1b2bd7822c156b6067e3&lt;br /&gt;
*** File Size: 812MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 eink SDK for Quart64 model A SBC  ===&lt;br /&gt;
* The is the Android SDK build for 10.3&amp;quot; eink panel on Quartz64 model A SBC. &lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_eink.android11_SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 293a550584298de4fb95ceae18103672&lt;br /&gt;
** File Size: 72.88GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur.&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work as the PHY chip lacks its manufacturer ID.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the &amp;quot;Model A&amp;quot; Acrylic Case. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimetres.&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
	<entry>
		<id>https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=11004</id>
		<title>Quartz64</title>
		<link rel="alternate" type="text/html" href="https://wiki.pine64.org/index.php?title=Quartz64&amp;diff=11004"/>
		<updated>2021-08-10T16:37:00Z</updated>

		<summary type="html">&lt;p&gt;CameronNemo: /* CPU Architecture */ Add process info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Quartz64 is the most recent Single Board Computer offering from PINE64, initially released in June of 2021. It is powered by a Rockchip RK3566 Quad-Core ARM Cortex A55 64-Bit Processor with a MALI G-52 GPU.&lt;br /&gt;
&lt;br /&gt;
Key features include a PCIe x4 open ended slot (model A) or m.2 (model B) using one Gen2 lane electrically, and the use of LPDDR4 RAM.&lt;br /&gt;
&lt;br /&gt;
The Quartz64 has three LPDDR4 system memory options: 2GB, 4GB or 8GB. For booting, there is an eMMC module socket (supporting up to 128GB) and microSD slot, as well as a footprint to solder on an SPI flash chip. The board is equipped with HDMI, 1x USB 3.0 type A Host, 3x USB 2.0 Host, Gigabit Ethernet, SATA (model A), GPIO Bus, MiPi DSI interface, e-ink interface (model A), eDP interface (model A), touch Panel interface (model A), MiPi CSI interface, as well as many other device interfaces such as UART, SPI, I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, for makers to integrate with sensors and other peripherals. Many different Operating Systems (OS) are freely available from the open source community, such as Linux (Ubuntu, Debian, Arch), BSD, and Android.&lt;br /&gt;
&lt;br /&gt;
== Software and OS Image Downloads ==&lt;br /&gt;
&lt;br /&gt;
=== Manjaro ARM ===&lt;br /&gt;
[[File:Manjaro.png|right|100px]]&lt;br /&gt;
&lt;br /&gt;
Manjaro ARM is a user friendly rolling release distribution, based on Arch Linux ARM.&lt;br /&gt;
&lt;br /&gt;
==== Manjaro ARM with no desktop ====&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/manjaro-arm/quartz64-bsp-images/releases Weekly images on Github]&lt;br /&gt;
&lt;br /&gt;
== SoC and Memory Specifications ==&lt;br /&gt;
* Based on [https://www.rock-chips.com/a/en/products/RK35_Series/2021/0113/1274.html Rockchip RK3566]&lt;br /&gt;
[[File:RK3566_icon.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== CPU Architecture ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/processors/cortex-a/cortex-a55 Quad-core ARM Cortex-A55@1.8GHz]&lt;br /&gt;
* AArch32 for full backwards compatibility with ARMv7&lt;br /&gt;
* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation&lt;br /&gt;
* Includes VFP hardware to support single and double-precision operations&lt;br /&gt;
* ARMv8 Cryptography Extensions&lt;br /&gt;
* Integrated 32KB L1 instruction cache and 32KB L1 data cache per core&lt;br /&gt;
* 512KB unified system L3 cache&lt;br /&gt;
* [https://developer.arm.com/ip-products/security-ip/trustzone TrustZone] technology support&lt;br /&gt;
* [https://www.cnx-software.com/2020/12/01/rockchip-rk3568-processor-to-power-edge-computing-and-nvr-applications 22nm process], believed to be FD-SOI&lt;br /&gt;
&lt;br /&gt;
=== GPU (Graphics Processing Unit) Capabilities ===&lt;br /&gt;
* [https://developer.arm.com/ip-products/graphics-and-multimedia/mali-gpus/mali-g52-gpu Mali-G52 2EE Bifrost GPU@800MHz]&lt;br /&gt;
* 4x Multi-Sampling Anti-Aliasing (MSAA) with minimal performance drop &lt;br /&gt;
* 128KB L2 Cache configurations&lt;br /&gt;
* Supports OpenGL ES 1.1, 2.0, and 3.2&lt;br /&gt;
* Supports Vulkan 1.0 and 1.1&lt;br /&gt;
* Supports OpenCL 2.0 Full Profile&lt;br /&gt;
* Supports 1600 Mpix/s fill rate when at 800MHz clock frequency&lt;br /&gt;
* Supports 38.4 GLOP/s when at 800MHz clock frequency   &lt;br /&gt;
&lt;br /&gt;
=== NPU (Neural Processing Unit) Capabilities ===&lt;br /&gt;
* Neural network acceleration engine with processing performance of up to 0.8 TOPS&lt;br /&gt;
* Supports integer 8 and integer 16 convolution operations&lt;br /&gt;
* Supports the following deep learning frameworks: TensorFlow, TF-lite, Pytorch, Caffe, ONNX, MXNet, Keras, Darknet&lt;br /&gt;
&lt;br /&gt;
=== System Memory ===&lt;br /&gt;
* RAM Memory Variants: 4GB, 8GB LPDDR4.&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 5.0 (optional on model A, built in on model B)&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
* microSD - bootable, supports SDHC and SDXC, storage up to 2TB&lt;br /&gt;
* USB&lt;br /&gt;
** Model A: 2 USB 2.0 host ports, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
** Model B: 1 USB 2.0 host port, 1 USB 2.0 OTG port, 1 USB 3.0 host port&lt;br /&gt;
* one native SATA 3.0 6Gb/s Port (only on model A, shared with USB 3.0 host port)&lt;br /&gt;
* optional eMMC module from 16GB up to 128GB&lt;br /&gt;
&lt;br /&gt;
=== Expansion Ports ===&lt;br /&gt;
* HDMI&lt;br /&gt;
* eDP - 4 lanes of 2.7Gbps, up to 2560x1600@60Hz (only on model A)&lt;br /&gt;
* DSI - Display Serial Interface, 4 lanes MiPi, up to 1440P on model A, 2 lanes MiPi, up to 1080p on model B &lt;br /&gt;
* CSI - CMOS Camera Interface, 4 lanes MiPi up to 8 mega pixel on model A, 2 lanes MiPi up to 5 mega pixel on model B &lt;br /&gt;
* TP - Touch Panel Port, SPI with interrupt on model A&lt;br /&gt;
* RTC - Real Time Clock Battery Connector&lt;br /&gt;
* VBAT - Lithium Battery Connector with temperature sensor input on model A&lt;br /&gt;
* Wifi/BT Module Header - SDIO 3.0 and UART on model A, build in Wifi/BT Module on model B&lt;br /&gt;
* 2x20 pins &amp;quot;Pi2&amp;quot; GPIO Header on model B, 2x10 pins GPO header on model A&lt;br /&gt;
* PCIe x4 open ended slot on model A, m.2 slot on model B, one Gen2 lane due to SoC constraints&lt;br /&gt;
&lt;br /&gt;
The PCIe implementation on the RK3566 is much more compatible with a wide range of devices compared to the one on the RK3399 used on the ROCKPro64. This means a lot more devices should work (excluding dGPUs due to a lack of cache snooping ability). As an example, PCIe-to-PCI bridges work, whereas they didn't on the ROCKPro64.&lt;br /&gt;
&lt;br /&gt;
==== Combo PHYs ====&lt;br /&gt;
&lt;br /&gt;
[[File:rk3566 phy.png]]&lt;br /&gt;
&lt;br /&gt;
Several of the I/O options on the RK3566 used in the Quartz64 are multiplexed, meaning that they cannot be used at the same time. The above diagram illustrates how they are connected.&lt;br /&gt;
&lt;br /&gt;
In particular, USB 3.0 and the SATA connector on the board are mutually exclusive, and the PCI-e 2.0 lane can be reconfigured into a second SATA port, though an adapter cable needs to be fashioned for this to be useful.&lt;br /&gt;
&lt;br /&gt;
=== GPIO Pins (Quartz64 Model A) ===&lt;br /&gt;
&lt;br /&gt;
Attention! GPIOs are 3.3V!&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; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Pin Nr.&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:20em;&amp;quot; | Assigned To&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| 3.3 V&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 2&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SDA_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 3&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 4&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 5 V&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| I2C3_SCL_M0 &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a,b&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 5&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 6&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| CPU_REFCLK_OUT&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 7&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 8&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_TX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 9&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 10&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART2_RX_M0_DEBUG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MOSI_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 11&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 12&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_TX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_MISO_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 13&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 14&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| UART0_RX &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;a&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CLK_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 15&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 16&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| GND&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| SPI1_CS0_M1&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 17&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 18&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| SPDIF_OUT &amp;lt;sup style=&amp;quot;font-style:italic;color:green&amp;quot;&amp;gt;c&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot;| GND&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 19&lt;br /&gt;
| style=&amp;quot;text-align:center; background-color:black; color:gold; font-weight:bold;&amp;quot;| 20&lt;br /&gt;
| style=&amp;quot;text-align:left;&amp;quot;| 3.3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Notes====&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-alpha&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;can be a PWM pin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;pulled high to 3.3V through 2.2kOhm resistor&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;low-pass filtered with cutoff of 220 MHz&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: Page 28 of [https://wiki.pine64.org/images/3/31/Quartz64_model-A_schematic_v1.0_20201215.pdf the board schematics].&lt;br /&gt;
&lt;br /&gt;
== Quartz64 Board 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.5mmOD/2.1mmID center-positive Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_schematic_v2.0_20210427.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC Schematic ver 2.0 20210427 PDF file]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64_model-A_V2.0_connector_placement.pdf Quartz64 Model &amp;quot;A&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Model &amp;quot;B&amp;quot; Baseboard Dimensions: 85mm x 56mm x 18.8mm&lt;br /&gt;
* Input Power: DC 5V @ 3A 3.5mmOD/1.35mmID Barrel DC Jack connector&lt;br /&gt;
&lt;br /&gt;
* Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic and PCB Board Resource:&lt;br /&gt;
** Quartz64 Model &amp;quot;B&amp;quot; SBC Schematic not yet available&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Quartz64%20model-B%20PCB%20placement.pdf Quartz64 Model &amp;quot;B&amp;quot; SBC PCB Connector placement PDF file]&lt;br /&gt;
&lt;br /&gt;
* Certifications:&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 submit the SBC for FCC and CE certification and obtain the certificates to proof that SBC board is capable on passing the testing. Please note a final commercial product needs to performs its owns testing and obtains its owns certificates.&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20CE%20certification-S21051101701001.pdf Quartz64 model-A FCC Certificate]&lt;br /&gt;
** [https://files.pine64.org/doc/cert/Quartz64%20Model-A%20FCC%20certification-S21051101702001.pdf Quartz64 model-A CE Certificate]&lt;br /&gt;
&lt;br /&gt;
== Datasheets for Components and Peripherals ==&lt;br /&gt;
* Rockchip RK3566 SoC information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Rockchip%20RK3566%20Datasheet%20V1.0-20201210.pdf Rockchip RK3566 ver 1.0 datasheet, already got release permission from Rockchip]&lt;br /&gt;
* LPDDR4 (200 Balls) SDRAM:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/SM512M32Z01MD2BNP(200BALL).pdf Micron LPDDR4 Mobile LPDDR4 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;
* E-ink Panel information:&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-754-V3_ES103TC1%20Specification%20V3.0(Signed)-20190702.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Flex Panel Specification]&lt;br /&gt;
** [https://files.pine64.org/doc/quartz64/Eink%20P-511-828-V1_ED103TC2%20Formal%20Spec%20V1.0_20190514.pdf Eink 10.3&amp;quot; 1872x1404 ES103TC1 Glass Panel Specification]&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]&lt;br /&gt;
* WiFi/BT module info:&lt;br /&gt;
** [https://files.pine64.org/doc/datasheet/rockpro64/AP6256%20datasheet_V1.3_12202017.pdf AMPAK AP6256 11AC WiFi + Bluetooth5.0 Datasheet]]&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;
&lt;br /&gt;
== Development efforts ==&lt;br /&gt;
&lt;br /&gt;
{{SeeMainArticle|Quartz64 Development}}&lt;br /&gt;
&lt;br /&gt;
Information and resources of the ongoing development effort for the Quartz64 can be found on the [[Quartz64 Development]] page, where the current status of various board functions can be found, and whether they have landed in upstream.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.com/pine64-org/quartz-bsp Quartz64 BSP Gitlab Page]&lt;br /&gt;
&lt;br /&gt;
== BSP Linux SDK ==&lt;br /&gt;
&lt;br /&gt;
=== BSP Linux SDK ver 4.19 for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_BSP%20Linux.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 24554419aec29700add97167a3a4c9ed&lt;br /&gt;
** File Size: 32.67.00GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android SDK ==&lt;br /&gt;
&lt;br /&gt;
=== Android 11 SDK for Quart64 model A SBC  ===&lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64_SDK_android11.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 77c2ff57ea3372fb04da7fb49e17d12b&lt;br /&gt;
** File Size: 79.00GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 Production Test Build for Quart64 model A SBC ===&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Stock Image [eMMC Boot] using DD method [20210604] ====&lt;br /&gt;
* DD image to eMMC module using USB adapter for eMMC module and boot. Highly recommend using [https://etcher.io/ Etcher]&lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
* DD image for 8GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-8GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): e4365753e584d9fce1b8f10f095eede6&lt;br /&gt;
*** File Size: 819MB&lt;br /&gt;
* DD image for 16GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-16GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 491c5f7744b0ca0b74ae76e607051836&lt;br /&gt;
*** File Size: 1.10GB&lt;br /&gt;
* DD image for 32GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-32GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 47a6f0cdac8bad06cb920743849a8894&lt;br /&gt;
*** File Size: 846MB&lt;br /&gt;
* DD image for 64GB eMMC module&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_dd_20210604_stock_android11_emmcboot-64GB.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 4e2fed6f5db0d55afdc8a142fc0c4fe1&lt;br /&gt;
*** File Size: 884MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Android 11 Production Test Build for Quart64 model A SBC [eMMC Boot] using ROCKChip tools method [20210604] ====&lt;br /&gt;
* Please unzip first and then using [https://files.pine64.org/os/Quartz64//android/RKDevTool_Release_v2.84.zip Rockchip Android tool ver 2.84] to flash in&lt;br /&gt;
* For Windows OS environment, please install the [https://files.pine64.org/os/Quartz64/android/DriverAssitant_v5.1.1.zip DriverAssistant v5.11] driver first &lt;br /&gt;
* This is test build that used during product testing&lt;br /&gt;
* The OTG port located at top USB 2.0 port on top of USB 3.0 port, needs USB type A to type A cable.&lt;br /&gt;
* Please allow 3-5 minutes boot up time on first time for initialization&lt;br /&gt;
** [https://files.pine64.org/os/Quartz64/android/Quartz64_model-A_20210604_stock_android11_emmcboot.img.gz Direct download from pine64.org]&lt;br /&gt;
*** MD5 (GZip file): 800f867fdd0d1b2bd7822c156b6067e3&lt;br /&gt;
*** File Size: 812MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Android 11 eink SDK for Quart64 model A SBC  ===&lt;br /&gt;
* The is the Android SDK build for 10.3&amp;quot; eink panel on Quartz64 model A SBC. &lt;br /&gt;
* [http://files.pine64.org/SDK/Quartz64/QUARTZ64-model-A_eink.android11_SDK.tar.gz Direct Download from pine64.org]&lt;br /&gt;
** MD5 (TAR-GZip file): 293a550584298de4fb95ceae18103672&lt;br /&gt;
** File Size: 72.88GB&lt;br /&gt;
** Just the boot blobs (&amp;lt;1MB): [[File:Rk35-blobs.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Stability/Boot Issues With Missing Battery Shunt ===&lt;br /&gt;
&lt;br /&gt;
If there is no battery plugged into the board, the jumper labelled &amp;quot;ON/OFF_BATT&amp;quot; must be in place. If this is set wrong, stability issues such as failures to boot will occur.&lt;br /&gt;
&lt;br /&gt;
=== No Ethernet Connectivity ===&lt;br /&gt;
&lt;br /&gt;
Make sure the kernel is built with &amp;lt;code&amp;gt;CONFIG_MOTORCOMM_PHY&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. Building it as a module (&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;) and then relying on module auto-loading is unlikely to work as the PHY chip lacks its manufacturer ID.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Model A&amp;quot; Acrylic Case Doesn't Fit ===&lt;br /&gt;
&lt;br /&gt;
The Quartz64 does not really fit onto the bottom plate of the &amp;quot;Model A&amp;quot; Acrylic Case. This is because the &amp;quot;Mic&amp;quot; connector at the bottom of the board interferes with one of the posts. A workaround is to find out which post that is (you have a 50% chance of guessing it right, accounting for rotating the board) and then filing away the corner of the post pointing inwards by a few millimetres.&lt;br /&gt;
&lt;br /&gt;
An alternate solution may be to place plastic spacers with a smaller outer diameter in between the acrylic bottom plate posts and the SBC board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Quartz64]]&lt;/div&gt;</summary>
		<author><name>CameronNemo</name></author>
	</entry>
</feed>