Difference between revisions of "Pinebook Pro"

From PINE64
Jump to navigation Jump to search
(bypass cable note)
m (bt / wifi versions)
 
(306 intermediate revisions by 58 users not shown)
Line 1: Line 1:
= User Guide =
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running Debian with MATE]]
== Introducing PineBook Pro ==
[[File:PBP.jpg|400px|thumb|right|Pinebook Pro running stock Debian with MATE]]


The Pinebook Pro is a Linux and *BSD ARM laptop from [https://www.pine64.org/ PINE64]
The '''Pinebook Pro''' is an ARM laptop from PINE64 for Linux and *BSD. It is designed to be a compelling open alternative to mid-ranged Chromebooks that people convert into Linux laptops.


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.  
The Pinebook Pro features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, eMMC storage, a 10,000mAh (9,600mAh in later batches) capacity battery, and the modularity that only an open source project can deliver with the dimensions of 329mm x 220mm x 12mm (WxDxH). Key features include the Rockchip RK3399 SoC, USB-C (data, DP 1.2 video out, and power in (2.5A at 5V), privacy switches for the microphone, BT5/WiFi4 SDIO module, 2MP camera, and PCIe x4 gen1 expansion with an optional adapter via ribbon cable.


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 4x) with an optional adapter.
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, 16MB (128Mbit) SPI flash for boot, eMMC connector (up to 128GB flash storage module), and SSD with optional adapter. The I/O includes: micro SD card reader (bootable), USB 2.0 A, USB 3.0 A, USB 3.0 Type-C host with DP 1.2 and power-in, PCI Express x4 for an M.2 NVMe SSD drive (requires an optional adapter), and serial console UART (via the headphone jack by setting an internal switch). The keyboard and touchpad both use the USB 2.0 protocol. The LCD panel uses the eDP MiPi display protocol.
 
The Pinebook Pro is equipped with 4GB LPDDR4 system memory, high capacity eMMC flash storage, and 128Mb SPI boot Flash. The I/O includes: 1x micro SD card reader (bootable), 1x USB 2.0, 1x USB 3.0, 1x USB type C Host with DP 1.2 and power-in, PCIe 4x for an NVMe SSD drive (requires an optional adapter), and UART (via the headphone jack by setting an internal switch).  
 
The keyboard and trackpad both use the USB 2.0 protocol. The LCD panel uses eDP MiPi display protocol.
 
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.  


== Software and OS Image Downloads ==
== Software and OS Image Downloads ==


=== Default Debian MATE Desktop Quick Start ===
Many different Operating Systems (OS) are freely available from the open source community and partner projects. These include various flavors of GNU/Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.


The default Operating system that ships with the Pinebook Pro is Debian 9 with MATE desktop. It has been built by a community developer called MrFixIt2001, who can be reached on the PINE64 forum or in the chats.
=== Default Manjaro KDE Desktop Quick Start ===
The newest release of the build can downloaded directly from [https://github.com/mrfixit2001/debian_desktop/releases MrFixIt2001's GitHub].


'''The default username and password is:'''
When you first get your Pinebook Pro and boot it up for the first time, it should come with Manjaro using the KDE desktop installed on a 64GB eMMC module. 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.]
* Username: rock
* Password: rock


You can change the default ''rock'' username and ''rock'' home directory by logging into root (credentials root/root) instead of the default 'rock' user and running the following in root terminal and substituting desired username for NewUser:
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 "name" 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. "pbpro").
[[File:UpdateScript.png|350px|thumb|right|Location of update script applet icon on stock Debian with MATE]]
<pre>
usermod -l NewUser -d /home/NewUser -m rock
</pre>


Once you log back into your new user, Bluetooth will complain about no transfer folder location. To fix this open terminal and type:
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 [[#Privacy Switches|privacy switch]] is not disabled.
<pre>
blueman-services
</pre>


From here, select incoming folder under the 'transfer' tab.
=== Pinebook Pro images ===
Under [[Pinebook Pro Software Releases]] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software.


The build includes a custom updater capable of updating uboot, the Linux kernel and numerous packages. The update script can be ran from both the userspace and the commandline. You will find a small 'Update Script' applet icon in the bottom panel, next to time and date applet.    
=== Linux, the kernel, downstream source ===
Although the current upstream version boots and works, the development of new features and other improvements is still ongoing. The results (including detailed changelogs) are published on [https://github.com/megous/linux/tags megi's tree].


You can run the script from the terminal using:
=== Hardware-accelerated video decoding ===
<pre>
Drivers for accelerated video decoding are available in the current kernels but to use the ''v4l2-request'' API with ''FFmpeg'' (and the apps that depend on it) one needs to build [https://github.com/jernejsk/FFmpeg/branches a fork]. With ''mpv'' built against it and the integrated ''yt-dlp'' support watching YouTube and similar sources is possible without stressing the CPU. Read more at [[Mainline Hardware Decoding]].
sudo /usr/bin/mrfixit_update.sh
</pre>


More information about the default OS build and version history can be found on the [https://forum.pine64.org/showthread.php?tid=7830 Default OS update log] PINE64 forum thread.
== Keyboard ==
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.


=== [[Pinebook Pro_Software_Release|Pinebook Pro images]] ===
The keyboard firmware binary can be flashed from userspace using the provided open source utility.
Under [[Pinebook Pro Software Release|'Pinebook Pro Software and OS Image Download Section']] you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software.  


The list includes OS images and descriptions of:
{{warning|DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has. 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 step 1 is flashed, see the [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to ''U23'' on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable.}}


[{{fullurl:PinebookPro_Software_Release#Debian_Desktop}} http://files.pine64.org/sw/pine64_installer/json/debian.png] [[PinebookPro_Software_Release#Debian Desktop|'''Debian Desktop (microSD and eMMC Boot)''']]
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]] and details regarding the assembly can be found under [[Pinebook Pro Keyboard Assembly]].


[{{fullurl:PinebookPro_Software_Release#Bionic_LXDE}} http://files.pine64.org/sw/pine64_installer/json/lxde.png] [[PinebookPro_Software_Release#Bionic LXDE|'''Bionic LXDE (microSD and eMMC Boot)''']]
=== Typing special characters ===
 
The 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.
[{{fullurl:PinebookPro_Software_Release#Bionic_Mate}} http://files.pine64.org/sw/pine64_installer/json/mate.png] [[PinebookPro_Software_Release#Bionic Mate|'''Bionic Mate (microSD and eMMC Boot)''']]
 
[{{fullurl:PinebookPro_Software_Release#Manjaro_ARM}} http://files.pine64.org/sw/pine64_installer/json/fedora.png] [[PinebookPro_Software_Release#Fedora|'''Fedora (microSD and eMMC Boot)''']]
 
[{{fullurl:PinebookPro_Software_Release#Manjaro_ARM}} http://files.pine64.org/sw/pine64_installer/json/manjaro.png] [[PinebookPro_Software_Release#Manjaro ARM|'''Manjaro ARM (microSD and eMMC Boot)''']]
 
note: When upgrading from a prior release of Manjaro to version 20.1, you may need to increase the backlight as the number of steps for the backlight exposed by the kernel was changed from 256 to 4096
 
[{{fullurl:PinebookPro_Software_Release#Manjaro_ARM}} http://files.pine64.org/sw/pine64_installer/json/opensuse.png] [[PinebookPro_Software_Release#OpenSUSE|'''OpenSUSE (microSD and eMMC Boot)''']]
 
[{{fullurl:PinebookPro_Software_Release#Q4OS}} http://files.pine64.org/sw/pine64_installer/json/q4os.png] [[PinebookPro_Software_Release#Q4OS|'''Q4OS (microSD and eMMC Boot)''']]
 
[{{fullurl:PinebookPro_Software_Release#Armbian}} http://files.pine64.org/sw/pine64_installer/json/armbian.png] [[PinebookPro_Software_Release#Armbian|'''Armbian (microSD and eMMC Boot)''']]


[{{fullurl:PinebookPro_Software_Release#NetBSD}} http://files.pine64.org/sw/pine64_installer/json/netbsd.png] [[PinebookPro_Software_Release#NetBSD|'''NetBSD (microSD and eMMC Boot)''']]
[{{fullurl:Pinebook_Pro_Software_Release#OpenBSD}} [[File:Puffy_mascot_openbsd.png|125px]]] [[Pinebook_Pro_Software_Release#OpenBSD|'''OpenBSD release for ARM64''']]
[{{fullurl:PinebookPro_Software_Release#Chropmium}} http://files.pine64.org/sw/pine64_installer/json/chromium.jpg] [[PinebookPro_Software_Release#Chromium|'''Chromium (microSD and eMMC Boot)''']]
[{{fullurl:PinebookPro_Software_Release#Android_7.1_microSD}} http://files.pine64.org/sw/pine64_installer/json/android_7.png] [[PinebookPro_Software_Release#Android_7.1_microSD|'''Android 7.1 (microSD Boot)''']] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [{{fullurl:PinebookPro_Software_Release#Android_7.1_eMMC}} http://files.pine64.org/sw/pine64_installer/json/android_7.png] [[PinebookPro_Software_Release#Android_7.1_eMMC|'''Android 7.1 (eMMC)''']]
[{{fullurl:PinebookPro_Software_Release#Debian_Installer_for_Pinebook_Pro}} http://files.pine64.org/sw/pine64_installer/json/debian.png] [[PinebookPro_Software_Release#Debian_Installer_for_Pinebook_Pro|'''Debian Installer for Pinebook Pro''']]
[{{fullurl:Pinebook_Pro_Software_Release#Gentoo_Script_for_Pinebook_Pro}} http://files.pine64.org/sw/pine64_installer/json/gentoo.png]
[[Pinebook_Pro_Software_Release#Gentoo_Script_for_Pinebook_Pro|'''Gentoo Script for Pinebook Pro''']]
[{{fullurl:PinebookPro_Software_Release#Kali}} [[File:Kali.jpeg|125px]]] [[PinebookPro_Software_Release#Kali|'''Kali Script for Pinebook Pro (microSD and eMMC Boot)''']]
=== Quick Links to OS Images Build Sources===
'''Some of the provided OS images are still in <span style="color:#FF0000">beta or nightly build</span> and only fit for testing purposes. These images ought to be avoided for normal usage - use them at <span style="color:#FF0000">your own risk</span>'''
* [https://github.com/ayufan-rock64/linux-build/releases/ ayufan's Linux build repo]
* [https://github.com/ayufan-rock64/chromiumos-build/releases ayufan's Chromium OS build repo]
* [https://github.com/mrfixit2001/debian_desktop/releases mrfixit2001's Linux debian desktop build repo]
== Keyboard ==
The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both the keyboard and trackpad 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, trackpad 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. 
The keyboard firmware binary can be flashed from userspace using the provided open source utility.
Documentation for the keyboard can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]].
=== Typing special characters ===
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.
{| class="wikitable"
{| class="wikitable"
!Character
!Character
Line 106: Line 45:
|-
|-
|Ä, Ö, Ü, ä, ö, ü
|Ä, Ö, Ü, ä, ö, ü
|[[Wikipedia:AltGr_key|[AltGr]]]+'[' followed by [A], [O], [U], [a], [o] or [u]
|[AltGr]+'[' followed by [A], [O], [U], [a], [o] or [u]
|-
|-
Line 138: Line 77:
|-
|-
! scope=row | PINE64 logo key+F10
! scope=row | PINE64 logo key+F10
| Microphone Privacy switch || CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled
| Microphone Privacy switch
| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled
|-
|-
! scope=row | PINE64 logo key+F11
! scope=row | PINE64 logo key+F11
| WiFi Privacy switch || NUM lock LED blinks. 2 blinks = WiFi enabled / killswitch disabled, 3 blinks = WiFi disabled / killswitch enabled.
| WiFi Privacy switch
| '''Re-enabling requires reboot''' (or a [//forum.pine64.org/showthread.php?tid=8313&pid=52645#pid52645 command line hack to bind/unbind]).
| NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled.
| Re-enabling requires reboot (or a [//forum.pine64.org/showthread.php?tid=8313&pid=52645#pid52645 command line hack to bind/unbind]).
|-
|-
! scope=row | PINE64 logo key+F12
! scope=row | PINE64 logo key+F12
| Camera privacy switch || CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled
| Camera privacy switch
| CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled
| Can use tools like <code>lsusb</code> to detect camera's presence. If not detected, check privacy switch.
|}
|}


'''(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)'''
(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)
 
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.
 
=== Basic summary of replacing keyboard ===
 
This guide is very basic and should be fleshed out with (better) pictures. There just isn't a list of steps anywhere else yet.
 
Here's what the replacement keyboard looks like:
 
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (front)]]
[[File:Pinebook_Pro_new_keyboard-front.jpg|300px|Replacement keyboard (back)]]
 
''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).
 
''Step 1'': The remove back back panel.
 
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.
 
[[File:Pinebook_Pro_keyboard-replacement-screws.jpg|300px|Remove the back panel]]
 
''Step 2'': Places to unscrew.
 
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.
 
[[File:Pinebook_Pro_new_keyboard-back-removed.jpg|300px|Remove the back panel]]
 
''Step 3'': Remove the battery.
 
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.
 
[[File:Pinebook_Pro_new_keyboard-zoom-mainboard.jpg.jpg|300px|Zoom on the mainboard]]
[[File:Pinebook_Pro_new_keyboard-zoom-daughterboard.jpg|300px|Zoom on the daughterboard]]
 
''Step 4'': Unplug the ribbon cables.
 
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.
 
There are several ribbon cables. To remove, flip up the tab and gentle pull the ribbon out.
 
* 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.
* One cable runs between the touchpad and the mainboard. Detach from both ends, and also set aside.
* 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.
* One cable from the LCD attaches near the lid hinge. It should be just unplugged.
 
''Step 5'': Detach microphone, speakers, and antenna.
 
[[File:Pinebook_Pro_microphone_removed.jpg|300px|thumb|right|One of the Pinebook Pro microphones after removal]]
 
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.
 
''Step 6'': Remove mainboard and daughterboard.
 
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.)
 
[[File:Pinebook_Pro_new_keyboard-all-boards-removed.jpg|300px|All boards removed]]
 
''Step 7'': Detach the LCD panel.
 
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.
 
[[File:Pinebook_Pro_new_keyboard-detached-display.jpg|300px|Display detached]]
[[File:Pinebook_Pro_new_keyboard-detached-display2.jpg|300px|Display detached (front)]]
 
''Step 8'': Try not to break your touchpad
 
'''NOTE This section really feels like you're going to break something.'''
 
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.
 
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.
 
[[File:Pinebook_Pro_new_keyboard-touchpad1.jpg|300px|Unmouting the touchpad]]
[[File:Pinebook_Pro_new_keyboard-touchpad2.jpg|300px|Unmouting the touchpad]]
[[File:Pinebook_Pro_new_keyboard-touchpad3.jpg|300px|Unmouting the touchpad]]
 
''Step 9'': Over the hill, touchpad goes into new shell.
 
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.
 
[[File:Pinebook_Pro_new_keyboard-install-touchpad.jpg|300px|Install the touchpad]]
 
''Step 10'': Reattach the LCD panel.
 
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.
 
''Step 11'': Tape it out.
 
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.
 
''Step 12'': Board install.
 
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.
 
''Step 13'': Microphone, speaker, and antenna install.
 
Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker "out" faces up, and the microphone cables as connected must face up (these are opposite directions.)
 
''Step 14'': Reattach other ribbon cables.
 
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.
 
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.
 
''Step 15'': Reattach the battery, and final re-tape.
 
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.
 
''Step 16'': Reattach the back panel.
 
Put the back panel back on, and reattach the 10 screws.
 
''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.
 
== Touchpad (trackpad) ==
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:
 
* 2 actuating buttons.
 
* multi-touch functionality.


The keyboard uses special firmware that operates separately of the operating system. It detects if either the F10, F11 or F12 key, and the Pine key were pressed for 3 seconds. This disables the peripherals as listed above by cutting off their power. Which has the same result 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 a 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.
* A matte finish that your finger can slide along easily.


== Trackpad ==
* A reasonable size (96mm × 64mm; diagonal: 115.378mm or 4.542”).
The trackpad is a reasonable size, has a matte finish that that your finger can slide along easily, and two actuating buttons. It is the only component of the Pinebook Pro held in place with strong adhesive tape. It supports multi-touch functionality.
Documentation for the trackpad can be found in [[#Datasheets for Components and Peripherals|Datasheets for Components and Peripherals]].
The trackpad firmware binary can be flashed from userspace using the provided open source utility (https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater). A fork with more recent changes is also available (https://github.com/jackhumbert/pinebook-pro-keyboard-updater) and may want to be considered instead while feature parity is different.


=== Troubleshooting ===


'''Everyone with a Pinebook Pro produced in 2019 should update their keyboard and trackpad firmware.'''  
If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:


Before you start:
* Update the firmware.


Please refer to original documentation for details.
* Keep your 2 fingers spread apart rather than close together.


Your Pinebook Pro should be either fully charged or, preferably, running of mains. This utility will be writing chips on the keyboard and trackpad, so a loss of power during any stage of the update can result in irrecoverable damage to your trackpad or keyboard.
* Individual programs might need to be configured specially.


The scripts ought to work on all OSs available for the Pinebook Pro. Some OSs may, however, require installation of relevant dependencies.
:* For smooth scrolling and gestures under X-Windows, ''Firefox'' should be launched with with the following environment variable assignment:


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.  
::: <code>MOZ_USE_XINPUT2=1</code>
FW update steps for both models are listed below.
 
* 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.
 
=== Firmware ===
The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and its 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's firmware binary can be flashed from userspace using the following open source command-line utility:
 
* Kamil Trzciński's [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater pinebook-pro-keyboard-updater].
 
Naturally, forks have begun to appear:
 
* Jack Humbert's [https://github.com/jackhumbert/pinebook-pro-keyboard-updater fork]
 
* Dragan Simic's [https://github.com/dragan-simic/pinebook-pro-keyboard-updater fork]. This one has recently delivered a much improved firmware from the vendor one, 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.
 
'''All Pinebook Pros shipped from the factory have the old buggy version installed so consider updating the keyboard and touchpad firmware with the latest fixes from Dragan.'''
 
{{warning| DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has. 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 step 1 (see below) is flashed. See [https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/ Reddit SH61F83 thread]. The keyboard IC corresponds to ''U23'' on the [[#Pinebook_Pro_Schematics_and_Certifications|top layer silkscreen of the main board]]. It is located under the keyboard flat flexible cable. All the PBPs from the post-pandemic batches have ''SH61F83'' but TL Lim claimed they can be flashed just the same. No updated datasheet or a statement from the MCU vendor was provided though, so proceed at your own risk. Experience shows flashing those works for at least one time.}}
 
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.
 
The scripts ought to work on all operating systems available for the Pinebook Pro. Some operating systems 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.
 
There are two keyboard versions of the Pinebook Pro: ISO (vertical Enter key) and ANSI (horizontal Enter key). You need to know which model you have prior to running the updater.
Firmware update steps for both models are listed below.


What you will need:
What you will need:


*Your Pinebook Pro fully charged or running off of mains power
* Connection to internet for getting dependencies, either through WiFi or wired ethernet (USB dongle).
*Connection to WiFi
* Your Pinebook Pro fully charged or running from mains power.
*An external USB keyboard & mouse. Or access to the Pinebebook Pro via SSH
* An external USB keyboard and 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 or UART serial console).
 
==== ISO Model ====
 
From the terminal command line:
 
(Debian distros)
 
git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make


'''ISO Model'''
(Arch distros: eg Manjaro -- NOTE:[https://www.garron.me/en/bits/build-essential-arch-linux.html build-essential], [https://aur.archlinux.org/packages/xxd-standalone xxd] are named differently. Arch linux [https://bbs.archlinux.org/viewtopic.php?id=44950 does not split its packages] as foo and foo-dev)


From the terminal command line:  
git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo pacman -Syu base-devel xxd-standalone libusb
make


<pre>
The next steps are identical for both Debian and Arch distros.
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make
</pre>


Step 1
Step 1
<pre>
cd pinebook-pro-keyboard-updater
sudo ./updater step-1 iso
sudo reboot
</pre>


Step 2 (after reboot)
cd pinebook-pro-keyboard-updater
<pre>
sudo ./updater step-1
cd pinebook-pro-keyboard-updater
sudo poweroff # do not use 'reboot'
sudo ./updater step-2 iso
 
sudo reboot
Step 2 (after booting)
</pre>
 
cd pinebook-pro-keyboard-updater
sudo ./updater step-2 iso
sudo poweroff # do not use 'reboot'
 
==== ANSI Model ====
 
{{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!}}
 
From the terminal command line:


----
(Debian distros)


'''ANSI Model'''
git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make


*<b>NOTE:</b> Running step-1 on the ansi keyboard model will make the keyboard and trackpad inaccessible until step-2 is run, so an external keyboard must be connected to complete the update on this model!
(Arch distros: eg Manjaro -- NOTE:[https://www.garron.me/en/bits/build-essential-arch-linux.html build-essential], [https://aur.archlinux.org/packages/xxd-standalone xxd] are named differently. Arch linux [https://bbs.archlinux.org/viewtopic.php?id=44950 does not split its packages] as foo and foo-dev)


From the terminal command line:  
git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo pacman -Syu base-devel xxd-standalone libusb
make


<pre>
The next steps are identical for both Debian and Arch distros.
git clone https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make
</pre>


Step 1
Step 1
<pre>
cd pinebook-pro-keyboard-updater
sudo ./updater step-1 ansi
sudo reboot
</pre>


Step 2 (after reboot)
cd pinebook-pro-keyboard-updater
<pre>
sudo ./updater step-1
cd pinebook-pro-keyboard-updater
sudo poweroff # do not use 'reboot'
sudo ./updater step-2 ansi
 
sudo reboot
Step 2 (after booting)
</pre>
 
When done, if some of the keys produce in-correct characters, please check your OSes' language settings. For ANSI users, the default OS shipped with English UK as the default language. You can change it to English US if desired.
cd pinebook-pro-keyboard-updater
sudo ./updater step-2 ansi
sudo poweroff # do not use 'reboot'
 
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.
 
==== Revised Firmware ====
 
In addition, you might consider using revised firmware data. This is one final step that should not require a reboot:
 
Step 3: '''ISO''' (after booting)
 
sudo ./updater flash-kb firmware/default_iso.hex
 
Step 3: '''ANSI''' (after booting)
 
sudo ./updater flash-kb firmware/default_ansi.hex
 
=== X Window System Configuration ===
 
{{Info|Before making adjustments, consider updating the firmware. Reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.}}
 
When using X.Org display server the touchpad can be handled either by ''libinput'' or ''synaptic'' input drivers. The former allows to have shared configuration for both X.Org and Wayland but the latter provides more tunables (e.g. configurable edge scrolling, circular scrolling, mapping of multi-touch events to mouse buttons etc.)
 
Some forum members have found that an adjustment to X11 will allow finer motion in the touchpad. If you use the ''synaptic'' mouse/touchpad driver, use this command to make the change live:
 
synclient MinSpeed=0.2
 
You may experiment with different settings, but 0.25 was tested as helping noticeably.
 
To make the change persist across reboots, change the file '''/etc/X11/xorg.conf''' similar to below:


=== X-Windows & trackpad settings ===
Section "InputClass"
Some forum members have found that an adjustment to X-Windows will allow finer motion in the trackpad. If you use the '''Synaptic''' mouse/trackpad driver use this command to make the change live;
<pre>synclient MinSpeed=0.25</pre>
You may experiment with different settings, but 0.25 was tested as helping noticably.<br>
<br>
To make the change persist across reboots, change the file <code>/etc/X11/xorg.conf</code> similar to below;
<pre>    Section "InputClass"
         Identifier "touchpad catchall"
         Identifier "touchpad catchall"
         Driver "synaptics"
         Driver "synaptics"
         MatchIsTouchpad "on"
         MatchIsTouchpad "on"
         MatchDevicePath "/dev/input/event*"
         MatchDevicePath "/dev/input/event*"
         Option "MinSpeed" "0.25"
         '''Option "MinSpeed" "0.25"'''
    EndSection</pre>
EndSection
The line <code>Option "MinSpeed" "0.25"</code> is the change.<br>
 
<br>
The line "Option "MinSpeed" "0.25"" is changed here.
 
Another forum user built on the above settings a little, and have found these to be very good:
Another forum user built on the above settings a little, and have found these to be very good:
<pre>synclient MinSpeed=0.25
synclient FingerLow=30
synclient PalmDetect=1
synclient VertScrollDelta=64
synclient HorizScrollDelta=64</pre>


<code>FingerLow</code> 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 not sure if synaptic works like this.
synclient MinSpeed=0.25
synclient TapButton1=1
synclient TapButton2=3
synclient TapButton3=2
synclient FingerLow=30
synclient PalmDetect=1
synclient VertScrollDelta=64
synclient HorizScrollDelta=64
 
''FingerLow'' 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.
You may find this config to be comfortable for daily use.
You may find this config to be comfortable for daily use.
<br>


The <code>right mouse click</code> is emulated by tapping with two fingers on the trackpad. If you feel that this is not very responsive you can try this value:
''TabButton'' allows to just tab the touchpad instead of physically pressing it down (to get this click noise).
<pre> synclient MaxTapTime=250 </pre>.
<br>


== Power Supply ==
The right mouse click is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:
* Input Power: 5V DC @ 3A
 
* Mechanical: 3.5mm OD / 1.35mm ID, Barrel jack
synclient MaxTapTime=250
* USB-C 15W PD quickcharge
 
* Only use one power input at a time, barrel jack OR USB-C
Some users may encounter an issue with the mouse jumping when typing when using libinput driver due to their hand hitting the touchpad which can be fixed by updating the X.Org settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the X.Org config simliar to the previous example.
 
        Option "DisableWhileTyping" "on"
 
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. Make sure you have libinput version 1.19.0 or later installed as it includes the necessary quirk.


== LEDs ==
Synaptic driver users can add ''syndaemon'' to their X11 session for the same effect.
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:


:1. The red LED next to the barrel-port indicates charging. It will illuminate when mains power is supplied to the Pinebook Pro from either the standard power supply unit or a USB-C smartphone charger.
== Power Supply ==
* Input Power: 5&nbsp;V DC, 15&nbsp;W (current limit 3&nbsp;A, see also inside photos of the factory-provided DC adapter: [[:File:Pbp_charger_top.jpg|top]], [[:File:Pbp_charger_bottom.jpg|bottom]])
* Mechanical: 3.5&nbsp;mm OD&nbsp;/ 1.35&nbsp;mm ID, barrel jack (also known as DC 35135 socket)
* USB-C 5&nbsp;V, 12.5&nbsp;W (current limit is at 2.5&nbsp;A regardless of the USB PD negotiations result)
* Only use one power input at a time, barrel jack '''or''' USB-C (note: some powerful Type-C adapters have rather limited current for 5&nbsp;V operation, and e.g. 2&nbsp;A won't be enough to run the system and charge the battery at the same time, so check the specs)


:2. The power indicator LED on the Pinebook Pro supports three different colours: green, amber and red. It is also capable of flashing/blinking to indicate activity. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused).  
[[Pinebook Pro power and charging]] explains how exactly external power supply is used to run the system and charge the battery, as there are several counter-intuitive details about the process.


:3. The Num lock, green LED.
== LEDs ==
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:


:4. The Caps lock, green LED.
# The red LED next to the barrel port indicates charging, in three ways. First, it will illuminate steadily when either the barrel jack power supply or a USB Type-C charger is connected to the Pinebook Pro, and the charging is active (that means power is supplied to the battery and system in parallel, and if it's not enough the battery can still be discharging). Second, if the battery is at 100&nbsp;%, the LED will remain turned off regardless of the connected power input (however, this is not possible for more than a split-second when the system is running). Third, this LED will flash at 0.5&nbsp;Hz if there are any problems that prevent charging, such as the [[Pinebook_Pro_power_and_charging#Battery_temperature_fix|battery becoming too hot]]. To fully understand all the nuances, read the [[Pinebook_Pro_power_and_charging#Charging_indicator_LED|corresponding article]].
# 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, with proper software support. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused).
# The green NumLock LED, above the keyboard.
# The green CapsLock LED, above the keyboard.


(The Num and Caps lock LEDs have a secondary function. When the privacy switches get activated they blink to confirm that switch has been activated.)
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.


== Webcam ==
== Webcam ==
* Streaming video resolutions supported, (un-compressed):
{{Hint| You can use Cheese to test the Camera functionality}}
** 320 x 240  
* Streaming video resolutions supported, (uncompressed):
** 320 x 240
** 640 x 480
** 640 x 480
** 800 x 600
** 800 x 600
Line 292: Line 422:
** 176 x 144
** 176 x 144
** 320 x 240
** 320 x 240
** 352 x 288  
** 352 x 288
** 640 x 480
** 640 x 480
** 800 x 600
** 800 x 600
** 1280 x 720
** 1280 x 720
** 1600 x 1200
** 1600 x 1200
* Some people test with the application Cheese
WIP


== Microphones ==
== Audio ==
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.
=== ALSA configuration ===
If you do not have the integrated sound card selected as the default, create <code>/etc/asound.conf</code> with the following contents:
 
<pre>
defaults.pcm.!card rockchipes8316c
defaults.ctl.!card rockchipes8316c
</pre>
 
If you want to enable software mixing (dmix) by default for all ALSA apps (works without Pipewire or PulseAudio), make <code>/usr/share/alsa/cards/simple-card.conf</code> file contain this:
 
<pre>
# default with dmix/dsnoop
simple-card.pcm.default {
@args [ CARD ]
@args.CARD {
type string
}
type asym
playback.pcm {
type plug
slave.pcm {
@func concat
strings [ "dmix:CARD=" $CARD ",RATE=44100" ]
}
}
capture.pcm {
type plug
slave.pcm {
@func concat
strings [ "dsnoop:CARD=" $CARD ",RATE=44100" ]
}
}
}
</pre>
 
=== Pop/click suppression workaround ===
 
If you're annoyed by loud popping and clicking sounds, which occur a few seconds after the sound playback stops as a result of the components of the audio chain being turned on and off automatically by the Linux kernel, you can execute the following command manually, or automatically on boot using the <code>tmpfiles.d</code> systemd feature, for example:


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.
: <code>echo 50 > /sys/kernel/debug/asoc/rockchip,es8316-codec/dapm_pop_time</code>


This is a workaround because it effectively (ab)uses a built-in debugging feature of the Linux kernel's audio subsystem, and one of the downsides is that a lot of messages are produced in the kernel log whenever the components of the audio chain are turned on and off automatically by the kernel.


=== Speaker polarity workaround ===
On newer Pinebook Pro batches, the inverted built-in speaker polarity issue has been fixed. On these units, the speaker polarity can be made reversed again by the <code>alsa-ucm-conf</code> package, which configures ALSA devices continuously. One workaround would be to remove the package, and the speaker polarity will no longer be set incorrectly. However, this also prevents the built-in speakers from being muted when an output device is plugged into the aux port.


'''Microphones not working?'''
Another workaround is to edit file <code>/usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf</code> and change all instances of <code>R Invert</code> to <code>Normal</code>. This is a workaround because it's likely to be overwritten and lost if the <code>alsa-ucm-conf</code> package is updated.


If pavucontrol input doesn't show microphone activity try the [[Pinebook_Pro#Privacy_Switches]]; once that is set to on do the below; if that still hasn't fixed it you may want to check that the microphone connector is plugged in (see the [[Pinebook_Pro#Technical_Reference]]).
== Microphones ==
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.


<pre>
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.
run alsamixer from the command line > hit F6 and select the es8316 > 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 with input
=== Built-in microphones not working ===
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 <code>alsamixer</code> from the command line, hit F6 and select the <code>es8316</code>, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0&nbsp;dB, 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]]).


Additionally:
=== External wired microphone not working ===
you may want to modify ADC PGA to get the levels to where you want them
If you connect a headset with a microphone, you might need to open <code>alsamixer</code>, change card to <code>es8316</code>, and change option <code>Differential Mux</code> from <code>lin1-rin1</code> to <code>lin2-rin2</code>.
</pre>


== Bluetooth and WiFi ==
== Bluetooth and WiFi ==
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]
[[File:PinebookPro_WirelessIC_Location.jpg|400px|thumb|right|The Pinebook Pro's AP6256 wireless module]]
===Hardware Overview===
===Hardware Overview===
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.  
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.


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 capabilites are usable under operating systems that do not support SDIO.
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.


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.
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.
Line 336: Line 506:
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.
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.


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.
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. This might vary depending on the country you specify in the wireless settings, see ''iw reg get; iw list''.


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.
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.
Line 342: Line 512:
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.
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.


Be aware that Linux userspace utilities, such as <code>iw</code>, 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.
Be aware that Linux userspace utilities, such as <code>iw</code>, 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. That said, if a certain feature is not reported by ''iw'' it means the currently running kernel driver plus firmware combination doesn't support it, even when the hardware is capable.
 
WPA3 PSK support should be possible with ''iwd'' but not ''wpa_supplicant'', see [https://github.com/raspberrypi/linux/issues/4718#issuecomment-1279951709 this ticket] for details.


===Bluetooth Capabilities===
===Bluetooth Capabilities===
Line 350: Line 522:


===Disabling Bluetooth===
===Disabling Bluetooth===
<pre>
#disable bluetooth once
sudo rfkill block bluetooth &&


#confirm
To disable Bluetooth under Linux once:
rfkill
 
</pre>
sudo rfkill block bluetooth
 
To confirm if Bluetooth under Linux is disabled:
 
rfkill


<pre>
To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):
#disable bluetooth on boot**
sudo systemctl enable rfkill-block@bluetooth
</pre>


<nowiki>**This does not do what one might want on certain distros, Manjaro XFCE for example. Try the below.</nowiki>
sudo systemctl enable rfkill-block@bluetooth


<pre>
To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select <i>plugins</i>, then <i>PowerManager</i>, then <i>configuration</i> and then deselect the <i>auto power on</i> option
right click on the bluetooth panel icon > select 'plugins' > PowerManager > configuration > deselect the auto power on option
</pre>


== LCD Panel ==
== LCD Panel ==
* Model: BOE NV140FHM-N49
* Model: BOE NV140FHM-N49
* 14.0" (35.56cm) diagonal size
* 14.0" (35.56 cm) diagonal size
* 1920x1080 resolution
* 1920x1080 resolution
* 60hz refresh rate
* 60 Hz refresh rate
* IPS
* IPS technology
* 1000:1 contrast
* 1000:1 contrast
* 250nt brightness
* 250 nit brightness
* 63% sRGB coverage
* 63% sRGB coverage
* 6 bit colour
* 6-bit color
* 30 pin eDP connection
* 30-pin eDP connection
 
Some people have tested hardware video decode using the following;
<pre>ffmpeg -benchmark -c:v h264_rkmpp -i file.mp4 -f null -</pre>


== External ports list ==
== External ports list ==
Line 395: Line 560:
** MicroSD card slot
** MicroSD card slot


== Using the UART ==
== Using the serial console UART ==
[[File:PBPUART.jpeg|400px|thumb|right|Headphone jack UART wiring reference.
[[File:PinePhone_Serial_Cable.png|400px|thumb|right|Pinout of the serial adapter. This shows signals from the Pinebook Pro's point of view, so connect the adapter's RX to ring 1, and TX to the tip. See also the [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pine64 official document] describing this.]]
<br> Swapping the tx and rx around from this also works and is more traditional.
<br> See [http://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf this] official Pine64 .pdf.]]


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 [https://wiki.pine64.org/index.php/Pinebook_Pro_Main_Page#Accessing_the_Internals_-_Disassembly_and_Reassembly proper disassembly and reassembly protocol]. The OFF position is towards the touchpad, the ON position is towards the display hinges.
Serial console UART 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 by following the [[Pinebook_Pro#Disassembly_and_Reassembly|disassembly and reassembly guidelines]]. The OFF position is towards the touchpad, while the ON position is towards the display hinges.


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.3v interface (such as the CH340, FTDI-232R, or PL2303, which are sold in both 3.3v and 5v variants) to avoid damage to the CPU.  
With the UART switch in the ON position, the console is relayed via the headset jack, on which the audio output is no longer available. Please ensure that you are using a 3.3&nbsp;V UART interface (such as the CH340, FTDI-232R, or PL2303, which are available in both 3.3&nbsp;V and 5&nbsp;V variants) to avoid damage to the RK3399 SoC. Older version of the serial console cable sold by the Pine Store used 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, which can also be checked by measuring the voltage on the TX ring.


Insert the USB plug of the cable into an open USB port on the machine which will monitor. Run the following in a terminal:
Insert the USB plug of the cable into a USB port on the machine that you will use to monitor the Pinebook Pro's serial console, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro's headphone port. Run <code>lsusb</code> in a terminal and you should see a line similar to this:


<code>
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
$ lsusb
</code>


you should find a line similar to this:
Serial console output should now be accessible on the respective machine using a terminal emulator, such as screen, picocom or minicom. Here are a few examples of how to invoke a terminal emuator:


<code>
* <code>screen /dev/ttyUSB0 1500000</code>
Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
* <code>picocom /dev/ttyUSB0 -b 1500000</code>
</code>
* <code>minicom -D /dev/ttyUSB0 -b 1500000</code>


You may have to clean the USB contacts of the Serial cable to get a good connection if you do not find that line.
== Using the optional NVMe adapter ==
The optional NVMe adapter allows the use of M.2 SSDs that support the NVMe standard (SATA is not supported).  The adapter supports '''M''' and '''M'''+'''B''' keyed devices, in both 2242 and 2280 physical sizes, which are the most commonly available. In addition, 2230 and 2260 sizes are also supported, though NVMe devices that use those sizes are rare.


The audio jack of the Serial cable should be fully inserted into the Pinebook Pro audio port.
Make sure to read the notes in [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives]] before selecting an M.2 SSD for your Pinebook Pro, because there are certain limitations. Once you have fitted and tested your NVMe drive, please consider adding a note to that page


Serial output should now be accessible using screen, picocom or minicom (and others).
Please see [[Pinebook Pro Troubleshooting Guide#NVMe SSD issues|a separate section]] that describes reported issues with the NVMe drives in Pinebook Pro.
Examples:


<code>
=== Installing the adapter ===
screen /dev/ttyUSB0 1500000
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.
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)


picocom /dev/ttyUSB0 -b 1500000
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.


minicom -D /dev/ttyUSB0 -b 1500000</code>
This is the link to the Pinebook Pro accessories in the store: https://pine64.com/?v=0446c16e2e66


Old versions of U-Boot do not use the UART for console output. <strike>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.</strike>
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].


== Using the optional NVMe adapter ==
=== Post NVMe install power limiting ===
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''' & '''M'''+'''B''' keyed devices, in both 2242 & 2280 physical sizes, the most common ones available. In addition, 2230 & 2260 are also supported, though NVMe devices that use those sizes are rare.
{{Warning|Newer versions of the '''nvme-cli''' package have been [https://github.com/linux-nvme/nvme-cli/commit/254ff3d007a11ef5b9513d8906b5f1fe35074a84 changed] to use '''-V''' (uppercase) instead of '''-v''' (lowercase) as the option name for specifying values.  Please update the parameter names used in the commands below, if your Linux distribution packages a newer version.}}
 
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.
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):
 
$ sudo nvme id-ctrl /dev/nvme0
NVME Identify Controller:
...
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0
          rwt:0 rwl:0 idle_power:- active_power:-
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1
          rwt:1 rwl:1 idle_power:- active_power:-
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2
          rwt:2 rwl:2 idle_power:- active_power:-
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3
          rwt:3 rwl:3 idle_power:- active_power:-
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4
          rwt:4 rwl:4 idle_power:- active_power:-
$ sudo nvme get-feature /dev/nvme0 -f 2
get-feature:0x2 (Power Management), Current value:00000000
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s
set-feature:02 (Power Management), value:0x000002
 
Some NVMe SSDs don't appear to allow saving the setting with "-s" option. In those cases, leave off the "-s" and use a startup script to set the non-default power state at boot. If you want to test performance without saving the new power setting semi-permanantly, then leave off the "-s" option.
 
On systemd based distributions like Manjaro, a non-default 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. An example systemd service, nvme-throttle.service, is shown below:
 
[Unit]
Description=Throttles NVME to lesss power hungry mode
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
Type=oneshot
ExecStart=/usr/bin/nvme set-feature /dev/nvme0 -f 2 -v 1
[Install]
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target


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.
Here the value after "-v" is the maximum power state that you want your SSD to use. This will be executed at system startup, and every time your system exits any suspend mode that might reset the SSD to default values.


=== Installing the adapter ===
This file needs to be placed in the /etc/systemd/system directory. Afterwards, to activate the service, run:
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.
(If necessary, it can be modified to work. There is [https://forum.pine64.org/showthread.php?tid=8322&pid=52700#pid52700 an unofficial tutorial on the forums] describing these modifications.)


The updated SSD adapter, labeled V2-2019-1107, takes into account the prior problems with trackpad interference. New orders as of Feb. 22nd, 2020 will be the updated adapter.
systemctl daemon-reload
systemctl enable --now nvme-throttle.service


Actual installation instructions are a work in progress.
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving & transitions based on usage. To check if you have a NVMe SSD with this feature:


=== Post NVMe install power limiting ===
$ sudo nvme get-feature -f 0x0c -H /dev/nvme0
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.
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);
<pre>$ sudo nvme id-ctrl /dev/nvme0
NVME Identify Controller:
...
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0
        rwt:0 rwl:0 idle_power:- active_power:-
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1
        rwt:1 rwl:1 idle_power:- active_power:-
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2
        rwt:2 rwl:2 idle_power:- active_power:-
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3
        rwt:3 rwl:3 idle_power:- active_power:-
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4
        rwt:4 rwl:4 idle_power:- active_power:-


$ sudo nvme get-feature /dev/nvme0 -f 2
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.
get-feature:0x2 (Power Management), Current value:00000000
On some NVME SSDS (WD), APST is compatible with limiting NVME maximum power: APST will work and not exceed maximum power state defined using
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s
previous method.
set-feature:02 (Power Management), value:0x000002</pre>
Some NVMe SSDs don't appear to allow saving the setting with "-s" option. In those cases, leave off the "-s" and use a startup script to set the non-default power state at boot.<br>
If you want to test performance without saving the new power setting semi-permanantly, then leave off the "-s" option.<br/>
<br/>
There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving & transitions based on usage. To check if you have a NVMe SSD with this feature;
<pre>$ sudo nvme get-feature -f 0x0c -H /dev/nvme0</pre>
Information for this feature, (on a Pinebook Pro), is a work in progress.


=== Using as data drive ===
=== Using as data drive ===
Line 480: Line 656:


The current boot order, per last testing, for this modified U-Boot is:
The current boot order, per last testing, for this modified U-Boot is:
*MicroSD
* MicroSD
*eMMC
* eMMC
*NVMe
* NVMe


For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&pid=53764#pid53764 the forum post.]
For more information, please refer to [https://forum.pine64.org/showthread.php?tid=8439&pid=53764#pid53764 the forum post.]


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 <code>/boot</code> and <code>/</code> off the NVMe drive. So this may change in the future.)
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 '''/boot''' and '''/''' off the NVMe drive. So this may change in the future.)


Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].
Please see [[Pinebook_Pro#Bootable Storage|Bootable Storage]].


== Caring for the PineBook Pro ==
== Caring for the Pinebook Pro ==
 
=== Bypass Cables ===
=== Bypass Cables ===
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 [http://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice]. 
{{Warning|'''Do not connect the bypass cables with the battery connected.'''  Using the bypass cables with the battery connected can permanently damage your Pinebook Pro.  After you're done with using the bypass cables and want to return to the default setup, make sure to affix the bypass cables to the main body of the laptop using adhesive tape, in the same way as it was done in the factory.  This ensures that the exposed leads in the connectors on the bypass cables don't touch any conductive surface inside the laptop, which may cause a short.}}


'''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!'''
The mainboard features two bypass cables that are to be used only with the battery disconnected.  The two bypass cables are disconnected by default.  The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run your Pinebook Pro with no battery.  Please refer to this [https://files.pine64.org/doc/PinebookPro/PinebookPro_Engineering_Notice.pdf engineering notice] for more details.


WARNING: Do not connect the bypass cables with the battery connectedUsing the bypass cables with the battery connected can permanently damage the computer.
Connecting the bypass cables together effectively connects the charger input where the battery output is, which also bypasses the charging circuit inside the Pinebook ProThus, with the bypass cables connected together, the charger powers the Pinebook Pro directly, just like the battery does it when the laptop is running on battery power.  This also means that no input current limiting is any longer in place, making it possible to draw more than 3&nbsp;A from the charger, and to trigger its overcurrent protection, which may cause operating system instability and crashes.


=== [[Pinebook_Service_Step_by_Step_Guides|Pinebook Service Step-by-Step Guides]] ===
Despite the bypass cables having two conductors, they are used as a single conductor.  Having both wires soldered together on either side of the bypass cables is normal, and such load-sharing design allows use of a compact connector on the bypass cables.
<span style="color:#FF0000">Placeholder for Pinebook Pro specific guides</span>


Under [[Pinebook_Service_Step_by_Step_Guides|'Service Guides for Pinebook']] you can find instructions guides concerning disassembly of:
When removing the large RF shield found on the mainboard, for example when shorting the pins on the SPI chip, make absolutely sure to align it correctly while putting it back.  Failing to do so can result in shorting the battery to the ground, due to the close proximity of the solder pads for the bypass cables, which would prevent the normal operation and effectively cause a fire hazard.  It is highly recommended to disconnect the battery before removing the RF shield, and before putting it back.


'''Note: The installation process on Pinebook Pro similar to 14" Pinebook'''
=== Self-Service Step-by-Step Guides ===
These are self-service instruction guides for the disassembly of the 14-inch Pinebook, but they still almost directly apply to the Pinebook Pro:


'''Note: The installation process is the reverse order of removal guide'''
* [http://files.pine64.org/doc/pinebook/guide/Pinebook_14-Battery_Removal_Guide.pdf Lithium Battery Pack Removal Guide]
* [http://files.pine64.org/doc/pinebook/guide/Pinebook_14-Screen_Removal_Guide.pdf LCD Panel Screen Removal Guide]
* [http://files.pine64.org/doc/pinebook/guide/Pinebook_14-eMMC_Removal_Guide.pdf eMMC Module Removal Removal Guide]


* 14″ Pinebook Lithium Battery Pack Removal Guide
Assembling it back requires the described steps to be performed in the reverse order.
* 14″ Pinebook LCD Panel Screen Removal Guide
* 14″ Pinebook eMMC Module Removal Guide


== Using the SPI flash device ==
== Using the SPI flash device ==
{{Warning|'''When removing the large RF shield found on the mainboard, to be able to short the pins on the SPI chip, make absolutely sure to align it correctly while putting it back.'''  Failing to do so can result in shorting the battery to the ground, due to the close proximity of the solder pads for the bypass cables, which would prevent the normal operation and effectively cause a fire hazard.  It is highly recommended to disconnect the battery before removing the RF shield, and before putting it back.}}
See [[Pinebook Pro SPI]] for details.
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.
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.


Here is some information on using the SPI flash device:
Here is some information on using the SPI flash device:


* You need the kernel built with SPI flash device support, which will supply a device similar to:<br><br><code>/dev/mtd0</code><br><br>
* You need the kernel built with SPI flash device support, which will supply a device similar to: '''/dev/mtd0'''
* The Linux package below, will need to be available:<br><br><code>mtd-utils</code><br><br>
* The Linux package below, will need to be available: ''mtd-utils''
* You can then use this program from the package to write the SPI device:<br><br><code>flashcp &lt;filename&gt; /dev/mtd0</code><br><br>
* You can then use this program from the package to write the SPI device: <code>flashcp <filename> /dev/mtd0</code>


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.
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.


The procedures described above are a lot less risky than attaching an external SPI flasher and do not require any additional hardware.<br>
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.
<br>
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.


== FAQ ==
== Software tuning guide ==
What cool software works out of the box? [[Pinebook Pro OTB Experience]]


= Software tuning guide =
The software tuning guides can be found in the article [[Pinebook Pro Software Tuning Guide]].
Details on how to get the most out of a Pinebook Pro & its RK3399 SoC.


== Customizing Pinebook Pro's factory OS ==
== Troubleshooting guide ==
Here are some hints on what you can do to customize the Pinebook Pro's factory image (aka [https://github.com/mrfixit2001/debian_desktop mrfixit2001 debian build])


=== Initial user changes, password, name, etc ===
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.
When you first get your Pinebook Pro, you should consider setting strong passwords and making the default account your own.


* 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)
Please, have a look at the [[Pinebook Pro Troubleshooting Guide]], which details a number of issues you may encounter.
* Once the machine reboots press Alt-Ctrl-F1 to bring up a text terminal
* Login as root (login: root, password: root)
* Set a strong password for the root user using the following command and it's prompts:
<pre># passwd (and follow prompts)</pre>
* Rename the rock user to your prefered username (replace myself with whatever you like):
<pre># usermod -l myself -d /home/myself -m rock</pre>
* Rename the rock group to match your preferred username:
<pre># groupmod -n myself rock</pre>
* Put your name in the account, (replace "John A Doe" with your name):
<pre># chfn -f "John A Doe" myself</pre>
* Set a strong password for the normal user:
<pre># passwd myself</pre>
* Log out of the text terminal:
<pre># logout</pre>
* Press Alt-Ctrl-F7 to go back to the login screen and then login as the normal user
* Open text terminal to fix login error: "Configured directory for incoming files does not exist";
<pre>$ blueman-services</pre>
Select "Transfer" tab and set "Incoming Folder" to myself
OR
If adduser is in distro, this is MUCH easier
sudo adduser $USER ,, fill out requested data
Then,, sudo adduser $USER $GROUP,,, 1 group at a time
To see which groups to add,,, id $USER,  id rock


=== Changing the default hostname ===
== Hardware/Accessory Compatibility ==
Debian 9 has a command to allow you to change the hostname. You can see the current settings using;
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:
<pre>> sudo hostnamectl
  Static hostname: Debian-Desktop
        Icon name: computer
        Machine ID: dccbddccbdccbdccbdccbdccbdccbccb
          Boot ID: ea99ea99ea99ea99ea99ea99ea99ea99
  Operating System: Debian GNU/Linux 9 (stretch)
            Kernel: Linux 4.4.210
      Architecture: arm64</pre>
To change, use this, (with "My_Hostname" used as the example);
<pre>> sudo hostnamectl set-hostname My_Hostname</pre>
Whence done, you can re-verify using the first example.


Then you should backup and edit your <code>/etc/hosts</code> entry's name;
* [[Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives|NVMe SSD drives]]
<pre>> sudo cp -p /etc/hosts /etc/hosts.`date +%Y%m%d`
* [[Pinebook Pro Hardware Accessory Compatibility#USB hardware|USB hardware]]
> sudo vi /etc/hosts
* [[Pinebook Pro Hardware Accessory Compatibility#USB C alternate mode DP|USB-C alternate mode DP]]
127.0.0.1 localhost
* [[Pinebook Pro Hardware Accessory Compatibility#Other hardware|Other hardware]]
127.0.0.1 My_Hostname
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1      linaro-alip</pre>


=== Disable Chromium browser's prompt for passphrase & password storage ===
== Disassembly and Reassembly ==
 
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]
Perform the following steps:


* On the tool bar, hover over the Chromium icon
[[File:Hinges_cover_removed_1.jpeg|300px|thumb|right|Hinge area of the Pinebook Pro lid with the cover removed]]
* Using the right mouse button, select '''Properties'''
[[File:Hinges_cover_removed_2.jpeg|300px|thumb|right|Close-up of a Pinebook Pro lid hinge]]
* In the '''Command:''' line section, add <code>--password-store=basic</code> before the <code>%U</code>
* Use the '''x Close''' button to save the change
This will of course, use basic password storage, meaning any saved passwords are not encrypted. Perfectly fine if you never use password storage.


=== Changing the boot splash picture ===
There are a few '''mandatory''' precautions to be taken:


The default boot splash picture can be replaced using the following instructions:
* 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.
* 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.
* 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.


* Install '''ImageMagick''' which will do the conversion
[[File:PinebookProScrewGuide.png|400px|thumb|right|Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)]]
<pre>$ sudo apt-get install imagemagick</pre>
* Create a 1920 x 1080 picture. For the best results, use a PNG image (It supports lossless compression).
* From the directory in which your new image is stored run the following commands
* Convert your image to the bootsplash raw format using imagemagick convert.
<pre>$ convert yoursplashimage.png -separate +channel -swap 0,2 -combine -colorspace sRGB RGBO:splash.fb</pre>
* Create a backup copy of your current splash screen
<pre>$ sudo cp /usr/share/backgrounds/splash.fb /usr/share/backgrounds/splash_original.fb</pre>
* Copy your new splash screen into place
<pre>$ sudo cp splash.fb /usr/share/backgrounds/splash.fb</pre>
* Set the correct permissions on the splash.fb file
<pre>$ sudo chmod 644 /usr/share/backgrounds/splash.fb</pre>
* If you do not want to see kernel console text messages, make sure you don't have '''Plymouth''' installed


=== Enabling text boot time messages ===
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.


By default most Linux distros have a boot screen with a picture. To see all the messages, use the following;
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.


* Backup and edit the U-Boot configuration file:
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.
<pre>cp -p /etc/default/u-boot /etc/default/u-boot.`date +%Y%m%d`
chmod a-w /etc/default/u-boot.`date +%Y%m%d`
vi /etc/default/u-boot</pre>
Remove the '''quiet''' and '''splash''' parameters. Leave everything else alone.
* Update the U-Boot configuration:
<pre>u-boot-update</pre>
* Test and verify you get what you think you should be seeing.


== Improving readability ==
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.


Some people find that a 14" 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 & read.<br>
Many units come with the hinges too stiff from the factory. You can tell if it affects your device by carefully observing if operating the lid on a fully assembled notebook flexes the case. This repeated flexing can lead to plastic and metal fatigue and eventually broken parts. Consider carefully using a flat screwdriver or similar object to unbend the hinges a bit by wedging it into the slot (requires the display part to be fully detached from the main body).
* Increase the font size
* Use a font with more pronounce features
* Increase the various window manager sizes, (like increase the height of the tool bar)
* Change the color scheme to be easier on the eyes, (even though it may not be bigger, proper contrast can help usability)
* Change the window manager's decorations, (like using larger icons)
* Use a workspace manager, (so one application per workspace)
* When at home or office, use an external monitor
* Changing the X-Window's DPI, (Dot's Per Inch), can help too
<br>
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 trouble shooting section for the fix:<br>
[[Pinebook_Pro#After_changing_builtin_LCD_resolution.2C_blank_screen|Blank screen after changing builtin LCD resolution]]


== Chromium tweaks ==
=== Display Disassembly===
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 [[#Caring for the PineBook Pro|Pinebook Service Step by Step Guides]].


=== Flags ===
Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plastic 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.


From the [https://github.com/mrfixit2001/updates_repo/blob/v1.8/pinebook/filesystem/default official Debian image]:
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.


<pre>
== Internal Layout ==
--disable-low-res-tiling \
--num-raster-threads=6 \
--profiler-timing=0 \
--disable-composited-antialiasing \
--test-type \
--show-component-extension-options \
--ignore-gpu-blacklist \
--use-gl=egl \
--ppapi-flash-path=/usr/lib/chromium-browser/pepper/libpepflashplayer.so \
--ppapi-flash-version=32.0.0.255 \
--enable-pinch \
--flag-switches-begin \
--enable-gpu-rasterization \
--enable-oop-rasterization \
--flag-switches-end
</pre>


== GVIM has performance issue ==
It appears that using GTK3 can cause very slow scolling, while VIM in a terminal window works fine.<br/>
Simply revert back to using GTK2, (how to do so, is somewhat Linux distro specific).
== Kernel options ==
Here are some Pinebook Pro & its RK3399 SoC Linux specific options. If kernel version, (or version range specific), it should list that information in the description.
To see if a specific feature is enabled in the current kernel, you can use something like this;
<pre>
$ zgrep -i rockchip_pcie /proc/config.gz
# CONFIG_ROCKCHIP_PCIE_DMA_OBJ is not set
CONFIG_PHY_ROCKCHIP_PCIE=m
</pre>
If it's listed as <code>=m</code>, then it's a module. You can see if the module is loaded with;
<pre>
$ lsmod | grep -i rockchip_pcie
phy_rockchip_pcie      16384  0
</pre>
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.
=== Hardware video decoding ===
Here is a method to check for hardware video decoding by the VPU. There are special Linux kernel modules that perform this function.<br>
The default Debian uses Rockchip supplied kernel module <code>rk-vcodec</code>. To check, something like this can be used;
<pre>
$ lsmod | grep rk-vcodec
    or
$ zgrep RK_VCODEC /proc/config.gz
CONFIG_RK_VCODEC=y
</pre>
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.<br>
<br>
Later kernels may use a different option in the configuration as below;
<pre>
$ zgrep HANTRO /proc/config.gz
CONFIG_VIDEO_HANTRO=m
CONFIG_VIDEO_HANTRO_ROCKCHIP=y
</pre>
&nbsp;<br>
= Troubleshooting guide =
Tips, tricks and other information for troubleshooting your Pinebook Pro
=== New from the factory - Pinebook Pro won't boot / power on ===
* Some Pinebook Pros came from the factory with the eMMC switch in the disabled position. It should be switched towards the back / hinge to enable the eMMC.<br>
* The eMMC may have come loose during shipment. [https://wiki.pine64.org/index.php/Pinebook_Pro_Main_Page#Accessing_the_Internals_-_Disassembly_and_Reassembly Open]  the back and verify that the eMMC is firmly seated.<br>
* You may want to try unplugging the SD card daughterboard ribbon cable and see if it powers on (remove the battery and peel off a bit of the tape before unplugging it to avoid damage). If it does, try reseating it on both sides. It might have come loose during shipping.
* It's possible that your eMMC is empty from the factory. Simply create a bootable SD card and see if your Pinebook Pro boots. If so, you can then write an OS image to the eMMC.
=== Pinebook Pro will not power on after toggling the eMMC enable/disable switch ===
* This may happen if you meant to toggle the UART/Headphone switch (9) towards touchpad for headphone use and instead you toggled the eMMC enable/disable switch (24).
* After reenabling eMMC by toggling switch (24) towards hinge, if Pinebook Pro does not turn on then press the RESET button (28). It is clearly marked 'reset' on the PCB board.
=== Pinebook Pro will not power on after removing and replacing EMI shielding ===
* Closely inspect that the shielding is firmly seated in the clips on all sides. You can be seated in the clips on one axis, and have missed on an another axis.
=== Pinebook Pro won't boot when using UART console cable ===
* If you're using the UART cable sold on the Pine Store, you may want to see if it boots after you disconnect it. Some users report that custom-made cables based on FTDI UART adapters do not cause this issue.
* Make sure your USB to serial UART device is 3.3v. Many are 5v and some even +-12v. Pinebook Pro's only support 3.3v and may act eratically when using higher voltage. Further, higher voltage could permananetly damage the Pinebook Pro's SoC.
=== WiFi issues ===
* First, check the privacy switches to make sure your WiFi is enabled. They are persistant. See [[Pinebook_Pro_Main_Page#Privacy_Switches|Privacy Switches]]
* Next, you may have to modify the <code>/etc/NetworkManager/NetworkManager.conf</code> as root user, and replace <code>managed=false</code> with <code>managed=true</code>. Then reboot.
* For connections that drop and resume too often, it might be due to WiFi power management from earlier OS releases. Later OS releases either removed WiFi power management, or default to full power. (Power management can be turned off via command line with <code>iw dev wlan0 set power_save off</code> or <code>iwconfig wlan0 power off</code>, although it is not persistent through re-boot.)
* For connections that drop under load on the default Debian, remove <code>iwconfig wlan0 power off</code> in the file <code>/etc/rc.local</code>.
* If WiFi is un-usable or often crashes when using an alternate OS, then it might because its WiFi firmware is not appropriate for the WiFi chip in the Pinebook Pro. Try the latest firmware patch from [https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm https://gitlab.manjaro.org/tsys/pinebook-firmware/tree/master/brcm]
* After re-enabling WiFi via the privacy switch, you have to reboot to restore function. There is a work around for the default Debian, (and may work with others);
&nbsp; &nbsp; &nbsp; &nbsp; <code>sudo tee /sys/bus/platform/drivers/dwmmc_rockchip/{un,}bind <<< 'fe310000.dwmmc'</code>
=== Bluetooth issues ===
* When connecting a Bluetooth device, such as a Bluetooth mouse, it does not automatically re-connect on re-boot. In the Bluetooth connection GUI, there is a yellow star for re-connect on boot. Use that button to enable a persistent connection. It can be changed back later.
* Bluetooth-attached speakers or headset require the <b>pulseaudio-module-bluetooth</b> package. If not already installed, it can be installed with a package manager or with:<br>
<pre>sudo apt-get install pulseaudio-module-bluetooth</pre>
* When using Bluetooth-attached speakers or headset and 2.4Ghz WiFi at the same time, you may experience stuttering of the audio. One solution is to use 5Ghz WiFi if you can. Or you may try using a different 2.4Ghz channel, perhaps channel 1 or the top channel, (11 in the USA, or 13/14 in some other countries).
=== Sound issues ===
* Many reports of no sound are due to the OS, incorrect settings, or other software problems (eg. PulseAudio). So first test to see if it is a software or hardware problem, by trying another OS via SD card.  (For example, if Debian is installed on the eMMC, try Ubuntu on SD.)
* If you cannot get sound from the headphone jack, but can get sound from the speakers, then the headphone / UART console switch may be set to the UART mode. You can open the back and check the position of the switch. If set to UART mode, switch it to headphone mode. See the parts layout for the location and correct position of the switch.
* When using the USB C alternate DisplayPort mode, it is possible that the audio has been re-directed through this path. If your monitor has speakers, see if they work.
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/asound.state manjaro-arm/pinebookpro-post-install /var/lib/alsa/asound.state] for some ALSA tweaks.
* See [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-audio manjaro-arm/pinebookpro-audio] for how to handle 3.5mm jack plug/unplug events with ACPID.
* Serveral users have reported that one internal speaker had reversed polarity. Thus, sound from the speakers is like an echo effect.
** Their is a software fix using alsamixer and then enable either "R invert" or "L invert", however, now the headphones have incorrect audio.
** The permanent fix is to re-wire one speaker, though this requires soldering small wires.
=== USB docks & USB C alternate mode video ===
The Pinebook Pro uses the RK3399 SoC (System on a Chip). It supports a video pass through mode on the USB C port using DisplayPort alternate mode. This DisplayPort output comes from the same GPU used to display the built-in LCD.
Here are some selection criteria for successfully using the USB C alternate mode for video:
* The device must use USB C alternate mode DisplayPort. Not USB C alternate mode HDMI, or other.
* The device can have a HDMI, DVI, or VGA connector, if it uses an active translater.
* If USB 3 is also desired from a USB dock, the maximum resolution, frame rate and pixel depth is reduced to half the bandwidth. For example, 4K @ 30hz instead of 60hz.
* USB docks that also use USB C alternate mode DisplayPort will always have USB 2 available, (480Mbps, half-duplex).
=== Keys not registering / missing keys when typing ===
This issue occurs when your thumb or edge of the palm makes contact with left or right tip of the trackpad when you type. This is due to the palm rejection firmware being too forceful.  Instead of only disabling the trackpad, so your cursor does not move all over the screen, it disables both the trackpad and the keyboard.
Using Fn+F7 to disable the touchpad will keep it from also disabling the keyboard.
A [[Pinebook_Pro#Trackpad|firmware update]] has been released to address this.
=== Key Mapping ===
* See this [https://gitlab.manjaro.org/manjaro-arm/packages/community/pinebookpro-post-install/blob/master/10-usb-kbd.hwdb /etc/udev/hwdb.d/10-usb-kbd.hwdb] for some key mapping tweaks
=== Pinebook Pro gets stuck after first reboot in Trackpad Firmware Update ===
This refers to the firmware update shown here:
https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater#update-all-firmwares
* If the system is not responding after the 1st reboot, it's might be easiest to do a system restore, and follow up by running the second step of the trackpad firmware update.
* System restore https://forum.pine64.org/showthread.php?tid=8229
* Firmware update https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater#update-all-firmwares
=== ANSI Fn + F keys wrong for F9, F10, F11 and F12 ===
There appears to be a minor firmware issue for ANSI keyboard models of the Pinebook Pro. Some discussion and fixes have been proposed;
* Discussion thread [https://forum.pine64.org/showthread.php?tid=8744&pid=57678#pid57678  Fn + F keys screwy for F9, F10, F11 and F12]
* Proposed fix [https://github.com/ayufan-rock64/pinebook-pro-keyboard-updater/issues/14#issuecomment-576825396 (ANSI) Fn + F(9-12) has wrong assignment after firmware update #14]
&nbsp;<br>
=== After changing builtin LCD resolution, blank screen ===
Some people find that the text or icons are too small, so they attempt to change the resolution of the built-in display. Afterwards, the display is blank.<br>
Use the following to fix when logged into a text console as yourself, (Control-Alt-F1 through F6). After listing the resolutions, select the native resolution, (1920x1080 aka 1080p).
<pre>export DISPLAY=:0.0
xrandr -q
xrandr -s [resolution]</pre>
Once your resolution is restored, try using the Tweak app to set scaling, instead.<br>
<br>
If the above fix did not work, you can try this:
* Using a text console, (Control-Alt-F1), login with your normal user ID
* Edit the file <code>nano ~/.config/monitors.xml</code>
* Change the "width" value to "1920"
* Change the "height" value to "1080"
* If there is more than one monitor configuration listed, edit that one too.<br>Be careful to make no other changes. If needed, exit without saving and re-edit.
* Save the file and exit.
* Login using the GUI and test
* If you are still loggied in via the GUI, you will have to reboot using <code>sudo shutdown -r now</code><br>After the reboot, you should be able to login to the GUI login and have the resolution back to normal.
When you have restored usability to your Pinebook Pro's graphical screen, see this section on improving readability and usability:<br>
[[Pinebook_Pro#Improving_readability|Improving readability]]
=== Cracks in the plastic ===
There have been multiple reports of cracks in the plastic keyboard & trackpad part of the case. These are generally near here;
* Hinges
* USB ports
* Top side, around the corners
This seems to apply to the first batches in 2019. Later versions of the keyboard & trackpad have used better plastic. With replacements now in the Pine64 Store, it's possible to simply order a replacement.<br>
<br>
There have been a few reports of cracks in the plastic around the LCD display, but these appear to be less common. There are replacement LCDs with bezel available in the Pine64 Store.
= [[Pinebook_Pro_Hardware_Accessory_Compatibility|PineBookPro Hardware Compatibility]] =
Please contribute to the hardware compatibility page, which lists hardware which has been tested with the PBP, whether successful or not!
* [[Pinebook_Pro_Hardware_Accessory_Compatibility#NVMe_SSD_drives|NVMe SSD drives]]
* [[Pinebook_Pro_Hardware_Accessory_Compatibility#USB_hardware|USB hardware]]
* [[Pinebook_Pro_Hardware_Accessory_Compatibility#USB_C_alternate_mode_DP|USB C alternate mode DP]]
* [[Pinebook_Pro_Hardware_Accessory_Compatibility#Other_hardware|Other hardware]]
&nbsp;<br/>
&nbsp;
= Technical Reference =
== Accessing the Internals - Disassembly and Reassembly  ==
[[File:Standoffs.png|400px|thumb|right|Pinebook Screw stand-offs correct placement and location]]
'''WARNING:''' 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.
'''WARNING:''' When removing the back cover plate, use care if sliding fingertips between back cover plate and palm rest assembly. The back cover plate edges are sharp.
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. Remove the cover from the back where the hinges are situated by lifting it up and away from the rest of the chassis.
During reassembly, make sure that the back-screw standoffs are in place and seated correctly. To reassemble the Pinebook Pro, slide the bottom section into place so it meets the front lip of the keyboard section. Secure the front section (where the trackpad 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 2 short screws.
NOTE: 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, 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, just let it be.
NOTE: a basic 3d model to print replacement back-screw standoffs is available on Thingiverse [https://www.thingiverse.com/thing:4226648] pending release of something more definitive
== Pinebook Pro Internal Layout ==
=== Main chips ===
=== Main chips ===
* RK3399 system-on-chip (1)
* RK3399 system-on-chip (1)
* LPDDR4 SDRAM (21)
* LPDDR4 SDRAM (21)
* SPI NOR flash memory (29)
* SPI NOR flash memory (29)
* eMMC flash memory (26)
* eMMC flash memory module (26; Note: Some datasheets indicate a low supported number of mating cycles.)
* WiFi/BT module (27)
* WiFi/BT module (27)


=== Mainboard Switches and Buttons ===
=== Mainboard Switches and Buttons ===
There are two switches on the main board: disabling the eMMC (24), and enabling UART (9) via headphone jack.  
There are two switches on the main board: disabling the eMMC module (24), and enabling serial console UART (9) via headphone jack.


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).  
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).


[[File:PBPL_S.jpg]]
[[File:PBPL_S.jpg|500px]]


=== Key Internal Parts ===
=== Key Internal Parts ===
Line 868: Line 781:
|-
|-
! scope=row | 2
! scope=row | 2
| Socket || PCIe 4X socket for optional NVMe adapter
| Socket || PCIe x4 slot for optional NVMe adapter
|-
|-
! scope=row | 3
! scope=row | 3
Line 874: Line 787:
|-
|-
! scope=row | 4
! scope=row | 4
| Socket || Trackpad socket
| Socket || Touchpad socket
|-
|-
! scope=row | 5
! scope=row | 5
| Component || Left speaker  
| Component || Left speaker
|-
|-
! scope=row | 6
! scope=row | 6
| Connector || Male power bridge connector  
| Connector || Power bridge connector
|-
|-
! scope=row | 7
! scope=row | 7
Line 889: Line 802:
|-
|-
! scope=row | 9
! scope=row | 9
| Switch || UART/Audio switch - outputs UART via headphone jack
| Switch || UART/Audio switch - enables serial console UART via headphone jack
|-
|-
! scope=row | 10
! scope=row | 10
| Socket || Female power bridge socket
| Socket || Power bridge socket
|-
|-
! scope=row | 11
! scope=row | 11
Line 898: Line 811:
|-
|-
! scope=row | 12
! scope=row | 12
| Component || Trackpad
| Component || Touchpad
|-
|-
! scope=row | 13
! scope=row | 13
Line 910: Line 823:
|-
|-
! scope=row | 16
! scope=row | 16
| Socket || Headphone / UART jack
| Socket || Headphone / serial console UART jack
|-
|-
! scope=row | 17
! scope=row | 17
Line 940: Line 853:
|-
|-
! scope=row | 26
! scope=row | 26
| Component || eMMC flash memory module  
| Component || eMMC flash memory module
|-
|-
! scope=row | 27
! scope=row | 27
Line 966: Line 879:
=== Smallboard detailed picture ===
=== Smallboard detailed picture ===


[[File:Pinebook_pro_smallboard.jpg]]
[[File:Pinebook_pro_smallboard.jpg|600px]]


== Bootable Storage ==
== Bootable Storage ==
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.


At this time, the Pinebook Pro ships with a Debian + MATE build with [https://www.denx.de/wiki/U-Boot/ uboot] on the eMMC.  Its boot order is: SD, then eMMC. Booting off USB storage is not currently available, but will be in the future.
[[File:Pbp_emmc_disable_sw.jpg|480px|thumb|The PineBook Pro eMMC module and switch, shown in 'enabled' position]]


(An update has been pushed for the default Debian + MATE build that improves compatibility with booting other OSs 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.)
=== Boot sequence details ===
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, [[RK3399_boot_sequence|RK3399 boot sequence]]
 
=== Boot devices ===
 
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.
 
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.
 
(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other operating systems 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.)


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
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
Line 979: Line 900:


=== eMMC information ===
=== eMMC information ===
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.
 
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).


The eMMC storage will show up as multiple block devices:
The eMMC storage will show up as multiple block devices:
Line 990: Line 912:
The device number of "1" shown above may vary, depending on kernel.
The device number of "1" shown above may vary, depending on kernel.


If the eMMC module is enabled after boot from an SD card, you can detect this change with the following command:
If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user "root":
<pre>
 
echo 'fe330000.sdhci' | tee /sys/bus/platform/drivers/sdhci-arasan/unbind
echo fe330000.mmc >/sys/bus/platform/drivers/sdhci-arasan/unbind
echo 'fe330000.sdhci' | tee /sys/bus/platform/drivers/sdhci-arasan/bind
echo fe330000.mmc >/sys/bus/platform/drivers/sdhci-arasan/bind
</pre>


=== Boot sequence details ===
(Note: with the device trees coming with older kernels (Linux < 5.11), the device name may be fe330000.sdhci instead of fe330000.mmc)
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.


== Pinebook Pro Dimensions ==
== Case Dimensions and Data ==
* Dimensions: 329mm x 220mm x 12mm (WxDxH)
* Dimensions: 329&nbsp;mm&nbsp;x 220&nbsp;mm&nbsp;x 12&nbsp;mm (W&nbsp;x D&nbsp;x H)
* Weight: 1.26Kg
* Weight: 1.26&nbsp;kg
* Screws
* Screws on the bottom lid
** Philips head type screws
** Philips-head type screws
** M2 flat head machine screws (measurements in mm)
** M2 flat-head machine screws
** 4 x Small screws (used along the front edge): Head - 3.44, Thread Diameter - 1.97, Thread Length - 2.1, Overall length - 3.05
** 4 x short screw (used along the front edge): head diameter - 3.44&nbsp;mm, thread diameter - 1.97&nbsp;mm, thread length - 2.1&nbsp;mm, overall length - 3.05&nbsp;mm
** 6 x Large screws: Head - 3.44, Thread Diameter - 1.97, Thread Length - 4.41, Overall Length - 5.85
** 6 x long screw (used elsewhere): head diameter - 3.44&nbsp;mm, thread diameter - 1.97&nbsp;mm, thread length - 4.41&nbsp;mm, overall length - 5.85&nbsp;mm
* Rubber Feet
* Rubber feet
** 18mm diameter
** 18&nbsp;mm diameter
** 3mm height
** 3&nbsp;mm height
** Dome shaped
** Dome shaped


Line 1,029: Line 949:
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]
** [https://developer.arm.com/products/processors/cortex-a/cortex-a72 Dual-core Cortex-A72 up to 2.0GHz CPU]
** Superscalar, variable-length, out-of-order pipeline
** Superscalar, variable-length, out-of-order pipeline
** L1 cache 48KB Icache and 32KB Dcache for each A72  
** L1 cache 48KB Icache and 32KB Dcache for each A72
** L2 cache 1024KB for big cluster  
** L2 cache 1024KB for big cluster
* Cortex-A53 (little cluster):
* Cortex-A53 (little cluster):
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]
** [https://developer.arm.com/products/processors/cortex-a/cortex-a53 Quad-core Cortex-A53 up to 1.5GHz CPU]
** In-order pipeline with symmetric dual-issue of most instructions  
** In-order pipeline with symmetric dual-issue of most instructions
** L1 cache 32KB Icache and 32KB Dcache for each A53
** L1 cache 32KB Icache and 32KB Dcache for each A53
** L2 cache 512KB for little cluster
** L2 cache 512KB for little cluster
Line 1,046: Line 966:
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]
* [https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus ARM Mali-T860MP4 Quad-core GPU]
* 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.
* 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.
* Frequency 650MHz  
* Frequency 650MHz
* Throughput 1300Mtri/s, 10.4Gpix/s  
* Throughput 1300Mtri/s, 10.4Gpix/s
* OpenGL® ES 1.1, 1.2, 2.0, 3.1, 3.2., Vulkan 1.0*., OpenCL™ 1.1, 1.2., DirectX® 11 FL11_1., RenderScript™.
* Graphic interface standards:
** 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)
** Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)
** OpenCL™ 1.1, 1.2
** DirectX® 11 FL11_1
** RenderScript™


=== System Memory ===
=== System Memory ===
* RAM Memory:
* RAM Memory:
** LPDDR4
** LPDDR4
** 800MHz, (limited by RK3399)
** Dual memory channels on the CPU, each 32 bits wide
** Dual memory channels on the CPU, each 32 bits wide
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel
** Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel
** 4GB as a single 366 pin mobile RAM chip
** 4GB as a single 366 pin mobile RAM chip
* Storage Memory:  
* Storage Memory:
** 64GB eMMC module, can be upgraded to a 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)
** 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)
** eMMC version 5.1, HS400, 8 bit on RK3399 side
** eMMC version 5.1, HS400, 8 bit on RK3399 side
** Bootable
* SPI flash:
** [[Pinebook Pro SPI]]
** 128Mbit / 16MByte
** 1 bit interface
** Bootable, (first boot device, ahead of eMMC & SD card)
** U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.


=== Video out ===
=== Video out ===
Line 1,075: Line 1,008:
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable
** 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable
** 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.
** 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.
* Headphone jack switchable to UART console mux circuit
* Headphone jack switchable to UART serial console mux circuit


== Additional hardware ==
== Additional hardware ==
Line 1,081: Line 1,014:


=== Battery ===
=== Battery ===
* Lithium Polymer Battery (10,000 mAH)
* Lithium Polymer Battery (10,000 mAh; 9,600 mAh in later batches)
* Monitored by CW2015 which only measures the current voltage; reported state (charging/discharging), capacity (State-Of-Charge), remaining runtime and current are (poor) estimates


=== Display ===
=== Display ===
* 14.0" 1920x1080 IPS LCD panel
* 14.0" 1920x1080 IPS LCD panel
=== Lid closed magnet ===
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.
* The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.
=== Webcam ===
* Internal USB attached Webcam


=== Audio ===
=== Audio ===
* 3.5mm stereo earphone/microphone plug
* 3.5mm stereo earphone/microphone plug
* Built-in microphone
* Built-in stereo speakers:
* Built-in stereo speakers:
** Oval in design
** Oval in design
Line 1,100: Line 1,041:


=== Optional NVMe adapter ===
=== Optional NVMe adapter ===
* PCIe 2.x, 5GT/s per lane
* PCIe 1.1, 2.5 GT/s per lane
* 4 PCIe lanes, can not be bifurcated, (however, can be used with 1 or 2 lane NVMe cards)
** 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].
* Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too
* '''M''' keyed, though '''M'''+'''B''' keyed devices will work too
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260
* Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260
* Power: 2.5W continuous, 8.25W peak momentary
* Power: 2.5 W (continuous)
* Does not support SATA M.2 cards
* Does not support SATA M.2 cards
* Does not support USB M.2 cards
* Does not support USB M.2 cards


== Pinebook Pro Schematics and Certifications ==
== Pinebook Pro Schematics and Certifications ==
* Pinebook Pro Main Board Schematic And Silkscreen:
Pinebook Pro Main Board Schematic And Silkscreen:
** [http://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic]
* [https://files.pine64.org/doc/PinebookPro/pinebookpro_schematic_v21a_20220419.pdf Pinebook Pro Main Board ver 2.1a Schematic 20220419]
** [https://wiki.pine64.org/images/3/30/Pinebookpro-v2.1-top-ref.pdf Pinebook Pro ver 2.1 Top Layer Silkscreen]
* [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_mainboard_schematic.pdf Pinebook Pro Main Board ver 2.1 Schematic 20190905]
** [https://wiki.pine64.org/images/b/b7/Pinebookpro-v2.1-bottom-ref.pdf Pinebook Pro ver 2.1 Bottom Layer Silkscreen]
* [[file:Pinebookpro-v2.1-top-ref.pdf|Pinebook Pro ver 2.1 Top Layer Silkscreen]]
* Pinebook Pro Daughter Board Schematic:
* [[file:Pinebookpro-v2.1-bottom-ref.pdf|Pinebook Pro ver 2.1 Bottom Layer Silkscreen]]
** [http://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]
 
* Optional Pinebook Pro NVMe Adapter Schematic:
Pinebook Pro Daughter Board Schematic:
** [http://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]
* [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_daughterboard_schematic.pdf Pinebook Pro Daughter Board ver 2.1 Schematic]
* Serial Console Earphone Jack Pinout:
 
** [http://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinkbook Serial Console Earphone Jack Pinout]
Optional Pinebook Pro NVMe Adapter Schematic:
* Pinebook Pro Case:
* [https://files.pine64.org/doc/PinebookPro/pinebookpro_v2.1_NVMe-adapter_schematic.pdf Pinebook Pro NVMe Adapter Board ver 2.1 Schematic]
** [https://send.firefox.com/download/b34c14f3e0a3d66d/#15Cx1vBaGKmJr57y85U2qQ AutoCAD DWG File]
 
* Pinebook Pro Certifications:
Serial Console Earphone Jack Pinout:
** [http://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]
* [https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf Pinebook Serial Console Earphone Jack Pinout]
** [http://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]
 
** [http://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]
Pinebook Pro Case:
* [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.pdf AutoCAD PDF File ]
* [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.ai AutoCAD AI File ]
* [https://files.pine64.org/doc/PinebookPro/drawings/Pinebook%20Pro%20Principle%20Views.dwg AutoCAD DWG File ]
 
Pinebook Pro Certifications:
* [https://files.pine64.org/doc/cert/Pinebook%20Pro%20FCC%20Certificate-S19071103501001.pdf Pinebook Pro FCC Certificate]
* [https://files.pine64.org/doc/cert/Pinebook%20Pro%20CE%20RED%20Certificate-S19051404304.pdf Pinebook Pro CE Certificate]
* [https://files.pine64.org/doc/cert/Pinebook%20Pro%20ROHS%20Compliance%20Certificate.pdf Pinebook Pro RoHS Certificate]


== Datasheets for Components and Peripherals ==
== Datasheets for Components and Peripherals ==
* Rockchip RK3399 SoC information:
Rockchip RK3399 SoC information:
** [http://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]
* [https://www.rock-chips.com/a/en/products/RK33_Series/2016/0419/758.html Rockchip RK3399 SoC Brief]
** [http://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet V2.1]
* [https://opensource.rock-chips.com/images/d/d7/Rockchip_RK3399_Datasheet_V2.1-20200323.pdf Rockchip RK3399 Datasheet v2.1]
** [http://opensource.rock-chips.com/images/e/ee/Rockchip_RK3399TRM_V1.4_Part1-20170408.pdf Rockchip RK3399 Technical Reference Manual part 1]
* [https://www.rockchip.fr/Rockchip%20RK3399%20TRM%20V1.4%20Part1.pdf Rockchip RK3399 Technical Reference Manual v1.4, part 1]
** [http://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet V0.8]
* [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]
* LPDDR4 (366 Balls) SDRAM:
* [https://files.pine64.org/doc/datasheet/rockpro64/RK808%20datasheet%20V0.8.pdf Rockchip RK808 Datasheet v0.8]
** [http://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 Datasheet]
 
* eMMC information:
LPDDR4 SDRAM (366-pin BGA):
** [http://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]
* [https://files.pine64.org/doc/datasheet/PinebookPro/micron%20SM512M64Z01MD4BNK-053FT%20LPDDR4%20(366Ball).pdf Micron 366 balls Mobile LPDDR4 Datasheet]
** [http://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]
 
** [http://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]
eMMC information:
** [http://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf SanDisk eMMC Datasheet]
* [https://files.pine64.org/doc/rock64/PINE64_eMMC_Module_20170719.pdf PINE64 eMMC module schematic]
* SPI NOR Flash information:
* [https://files.pine64.org/doc/rock64/usb%20emmc%20module%20adapter%20v2.pdf PINE64 USB adapter for eMMC module V2 schematic]
** [http://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]
* [https://files.pine64.org/doc/rock64/USB%20adapter%20for%20eMMC%20module%20PCB.tar PINE64 USB adapter for eMMC module PCB in JPEG]
** [https://wiki.pine64.org/images/b/b9/Ds-00220-gd25q127c-rev1-df2f4.pdf GigaDevice 128Mb SPI Flash Datasheet (UPDATED)]
* [https://files.pine64.org/doc/datasheet/pine64/SDINADF4-16-128GB-H%20data%20sheet%20v1.13.pdf 64GB/128GB SanDisk eMMC Datasheet]
* Wireless related info:
 
** [http://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]
SPI NOR Flash information:
* Audio Codec (ES8316)
* [https://files.pine64.org/doc/datasheet/pine64/w25q128jv%20spi%20revc%2011162016.pdf WinBond 128Mb SPI Flash Datasheet]
** [http://everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec]
* [[file:Ds-00220-gd25q127c-rev1-df2f4.pdf|GigaDevice 128Mb SPI Flash Datasheet (updated)]]
* LCD Panel:
 
** [http://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14" 1920x1080 IPS LCD Panel datasheet]
Wireless and Bluetooth information:
* Internal USB 2 hub:
* [https://files.pine64.org/doc/datasheet/PinebookPro/AP6256%20datasheet_V1.7_12282018.pdf AMPAK AP6256 11AC Wi-Fi + Bluetooth5 Datasheet]
** [https://wiki.pine64.org/images/3/39/GL850G_USB_Hub_1.07.pdf GL850G USB Hub 1.07.pdf]
 
* Touchpad information:
Audio codec:
** [http://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf Touchpad Specification for Pinebook Pro model]
* [http://www.everest-semi.com/pdf/ES8316%20PB.pdf Everest ES8316 Audio Codec Datasheet]
* Keyboard information:
* [https://forum.pine64.org/attachment.php?aid=1935 Everest ES8316 User Guide with register-level description]
** [https://wiki.pine64.org/images/b/b0/SH68F83V2.0.pdf Sinowealth SH68F83 Datasheet]
 
** US ANSI: XK-HS002 MB27716023
LCD panel:
* Full HD Camera sensor:
* [https://files.pine64.org/doc/datasheet/PinebookPro/NV140FHM-N49_Rev.P0_20160804_201710235838.pdf 14" 1920x1080 IPS LCD Panel datasheet]
** [http://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification in Chinese]
 
** [http://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Data Sheet]
USB-related information:
* Lithium Battery information:
* Internal USB 2.0 hub: [[File:GL850G_USB_Hub_1.07.pdf|GL850G USB Hub Datasheet]]
** [http://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000mAH Lithium Battery Specification for 14" model]
* USB Type-C Controller: [https://www.onsemi.com/pub/Collateral/FUSB302-D.PDF ON Semiconductor FUSB302 Datasheet]
* NVMe adapter:
 
** [https://datasheet.octopart.com/FH26W-35S-0.3SHW%2860%29-Hirose-datasheet-26676825.pdf Compatible, not OEM! Use FH26-35S-0.3SHW flat flex connector]
Touchpad information:
* [https://files.pine64.org/doc/datasheet/PinebookPro/YX%20HK-9562%20HID%20I2C%20Specification.pdf PineBook Pro Touchpad Specification]
 
Keyboard information:
* [[file:SH68F83V2.0.pdf|Sinowealth SH68F83 Datasheet]]
* US ANSI: XK-HS002 MB27716023
 
Full HD camera sensor:
* [https://files.pine64.org/doc/datasheet/PinebookPro/HK-2145-263.pdf Full HD Camera module specification (in Chinese)]
* [https://files.pine64.org/doc/datasheet/PinebookPro/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf GalaxyCore GC2145 Full HD Camera Sensor Datasheet]
 
Battery-related information:
* Battery charging IC: [https://www.ti.com/lit/ds/symlink/bq24171.pdf?ts=1607068456825&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ24171 Texas Instruments BQ24171 Datasheet]
* Battery monitoring IC: [https://cdn.datasheetspdf.com/pdf-down/C/W/2/CW2015-Cellwise.pdf Cellwise CW2015 Datasheet]
* [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%2010000mAh规格书-14.pdf 10000 mAh Lithium Battery Specification]
* [https://files.pine64.org/doc/datasheet/pinebook/40110175P%203.8V%209600mAh%20Lithium%20Battery%20Specification.pdf 9600 mAh / 36.48 Wh model WYC40110175P Lithium Battery Specification], used in later batches
 
 
Power path device:
* [[file:Sis412dn.pdf|N-MOS / MOSFET]]
 
NVMe adapter:
* [[file:Hirose-FH26W-35S-0.3SHW%2860%29-datasheet.pdf|FH26-35S-0.3SHW flat flex connector (compatible, not OEM)]]


== Versions ==
== Versions ==
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The "first batch" (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]  
Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The "first batch" (First 100 forum preorders) onward are v2.1. [https://forum.pine64.org/showthread.php?tid=8111]
 
== Skinning and Case Customization ==
Template files for creating custom skins. Each includes template layers for art placement, and CUT lines:


=Skinning and Case Customization=
* [[File:Pbp_template_case_bottom.pdf|Case Lid Template]]
* Template files for creating custom skins. Each includes template layers for art placement, and CUT lines.
* [[File:Pbp_template_case_lid.pdf|Case Bottom Template]]
**[https://drive.google.com/open?id=1UKFlC53DO0GJm3Hz1E_669n_HhI45e4n Case Lid Template]
* [[File:Pbp_template_case_palmrest.pdf|Case Palmrest Template]]
**[https://drive.google.com/open?id=1Q6bKGarMDhvWz3HdGvhL5qDhyHb546ve Case Bottom Template]
**[https://drive.google.com/open?id=1ugI74ygNJ3EN5jXks5jKvdpEAoxIzHo4 Case Palmrest Template]


= Other Resources =
== Other Resources ==
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]
* [https://forum.pine64.org/forumdisplay.php?fid=111 Pinebook Pro Forum]
* [https://forum.pine64.org/forumdisplay.php?fid=98 ROCKPro64 Forum]
* [[RockPro64 Guides]]
* [https://riot.im/app/#/room/#pinebook:matrix.org Matrix Channel] (No login required to read)
* [http://www.pine64.xyz:9090/?channels=ROCK64 ROCK64/ROCKPro64 IRC Channel]
* [https://discordapp.com/channels/463237927984693259/622348681538043924 Discord Channel]
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]
* [https://github.com/rockchip-linux Rockchip Linux GitHub Repo]
* [http://opensource.rock-chips.com/ Rockchip Open Source Wiki]
* [https://opensource.rock-chips.com/ Rockchip Open Source Wiki]
 
[[Category:Pinebook Pro]]
[[Category:Rockchip RK3399]]

Latest revision as of 21:50, 15 November 2024

Pinebook Pro running Debian with MATE

The Pinebook Pro is an ARM laptop from PINE64 for Linux and *BSD. It is designed to be a compelling open alternative to mid-ranged Chromebooks that people convert into Linux laptops.

The Pinebook Pro features an IPS 1080p 14″ LCD panel, a premium magnesium alloy shell, eMMC storage, a 10,000mAh (9,600mAh in later batches) capacity battery, and the modularity that only an open source project can deliver with the dimensions of 329mm x 220mm x 12mm (WxDxH). Key features include the Rockchip RK3399 SoC, USB-C (data, DP 1.2 video out, and power in (2.5A at 5V), privacy switches for the microphone, BT5/WiFi4 SDIO module, 2MP camera, and PCIe x4 gen1 expansion with an optional adapter via ribbon cable.

The Pinebook Pro is equipped with 4GB LPDDR4 system memory, 16MB (128Mbit) SPI flash for boot, eMMC connector (up to 128GB flash storage module), and SSD with optional adapter. The I/O includes: micro SD card reader (bootable), USB 2.0 A, USB 3.0 A, USB 3.0 Type-C host with DP 1.2 and power-in, PCI Express x4 for an M.2 NVMe SSD drive (requires an optional adapter), and serial console UART (via the headphone jack by setting an internal switch). The keyboard and touchpad both use the USB 2.0 protocol. The LCD panel uses the eDP MiPi display protocol.

Software and OS Image Downloads

Many different Operating Systems (OS) are freely available from the open source community and partner projects. These include various flavors of GNU/Linux (Ubuntu, Debian, Manjaro, etc.) and *BSD.

Default Manjaro KDE Desktop Quick Start

When you first get your Pinebook Pro and boot it up for the first time, it should come with Manjaro using the KDE desktop installed on a 64GB eMMC module. The Pinebook Pro is officially supported by the Manjaro ARM project, and support can be found on the Manjaro ARM forums.

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 "name" 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. "pbpro").

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 privacy switch is not disabled.

Pinebook Pro images

Under Pinebook Pro Software Releases you will find a complete list of currently supported Operating System images that work with the Pinebook as well as other related software.

Linux, the kernel, downstream source

Although the current upstream version boots and works, the development of new features and other improvements is still ongoing. The results (including detailed changelogs) are published on megi's tree.

Hardware-accelerated video decoding

Drivers for accelerated video decoding are available in the current kernels but to use the v4l2-request API with FFmpeg (and the apps that depend on it) one needs to build a fork. With mpv built against it and the integrated yt-dlp support watching YouTube and similar sources is possible without stressing the CPU. Read more at Mainline Hardware Decoding.

Keyboard

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.

The keyboard firmware binary can be flashed from userspace using the provided open source utility.

Warning: DO NOT update the keyboard firmware before checking which keyboard IC your Pinebook Pro has. 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 step 1 is flashed, see the Reddit SH61F83 thread. The keyboard IC corresponds to U23 on the top layer silkscreen of the main board. It is located under the keyboard flat flexible cable.

Documentation for the keyboard can be found in Datasheets for Components and Peripherals and details regarding the assembly can be found under Pinebook Pro Keyboard Assembly.

Typing special characters

The 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.

Character Key combination/sequence
Ä, Ö, Ü, ä, ö, ü [AltGr]+'[' followed by [A], [O], [U], [a], [o] or [u]
µ [AltGr]+[m]
Ø, ø [AltGr]+[O], [AltGr]+[o]
@ [AltGr]+[q] (as on the German layout)
ß [AltGr]+[s]
§ [AltGr]+[S]
° [AltGr]+[)]

Privacy Switches

There are three privacy switches mapped to the F10, F11 and F12 keys on the Pinebook Pro keyboard. They de/activate the following:

Privacy switch function and description
Combination Effect Description Notes
PINE64 logo key+F10 Microphone Privacy switch CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled
PINE64 logo key+F11 WiFi Privacy switch NUM lock LED blinks. 2 blinks = WiFi enabled / privacy switch disabled, 3 blinks = WiFi disabled / privacy switch enabled. Re-enabling requires reboot (or a command line hack to bind/unbind).
PINE64 logo key+F12 Camera privacy switch CAPs lock and NUM lock LEDs blink together. 2 blinks = enabled, 3 blinks = disabled Can use tools like lsusb to detect camera's presence. If not detected, check privacy switch.

(Press the PINE64 logo key plus F10/F11/F12) for 3 seconds)

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.

Basic summary of replacing keyboard

This guide is very basic and should be fleshed out with (better) pictures. There just isn't a list of steps anywhere else yet.

Here's what the replacement keyboard looks like:

Replacement keyboard (front) Replacement keyboard (back)

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).

Step 1: The remove back back panel.

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.

Remove the back panel

Step 2: Places to unscrew.

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.

Remove the back panel

Step 3: Remove the battery.

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.

Zoom on the mainboard Zoom on the daughterboard

Step 4: Unplug the ribbon cables.

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.

There are several ribbon cables. To remove, flip up the tab and gentle pull the ribbon out.

  • 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.
  • One cable runs between the touchpad and the mainboard. Detach from both ends, and also set aside.
  • 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.
  • One cable from the LCD attaches near the lid hinge. It should be just unplugged.

Step 5: Detach microphone, speakers, and antenna.

One of the Pinebook Pro microphones after removal

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.

Step 6: Remove mainboard and daughterboard.

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.)

All boards removed

Step 7: Detach the LCD panel.

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.

Display detached Display detached (front)

Step 8: Try not to break your touchpad

NOTE This section really feels like you're going to break something.

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.

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.

Unmouting the touchpad Unmouting the touchpad Unmouting the touchpad

Step 9: Over the hill, touchpad goes into new shell.

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.

Install the touchpad

Step 10: Reattach the LCD panel.

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.

Step 11: Tape it out.

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.

Step 12: Board install.

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.

Step 13: Microphone, speaker, and antenna install.

Reattach the microphones, antenna, and speakers to their respective areas, making sure that both are properly oriented - the speaker "out" faces up, and the microphone cables as connected must face up (these are opposite directions.)

Step 14: Reattach other ribbon cables.

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.

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.

Step 15: Reattach the battery, and final re-tape.

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.

Step 16: Reattach the back panel.

Put the back panel back on, and reattach the 10 screws.

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.

Touchpad (trackpad)

Documentation for the touchpad can be found in 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:

  • 2 actuating buttons.
  • multi-touch functionality.
  • A matte finish that your finger can slide along easily.
  • A reasonable size (96mm × 64mm; diagonal: 115.378mm or 4.542”).

Troubleshooting

If you are having trouble using 2 fingers to scroll or emulate the click of a mouse's right-button, then try these solutions:

  • Update the firmware.
  • Keep your 2 fingers spread apart rather than close together.
  • Individual programs might need to be configured specially.
  • For smooth scrolling and gestures under X-Windows, Firefox should be launched with with the following environment variable assignment:
MOZ_USE_XINPUT2=1
  • Experiment with other settings, via 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.

Firmware

The touchpad controller is connected to the keyboard controller. All touchpad events go through the keyboard controller and its 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's firmware binary can be flashed from userspace using the following open source command-line utility:

Naturally, forks have begun to appear:

  • Dragan Simic's fork. This one has recently delivered a much improved firmware from the vendor one, which greatly improves the control of the cursor (see this thread for discussion). Before installing this update, consider resetting to the defaults any configuration of your touchpad.

All Pinebook Pros shipped from the factory have the old buggy version installed so consider updating the keyboard and touchpad firmware with the latest fixes from Dragan.

Warning: DO NOT update the touchpad firmware before checking which keyboard IC your Pinebook Pro has. 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 step 1 (see below) is flashed. See Reddit SH61F83 thread. The keyboard IC corresponds to U23 on the top layer silkscreen of the main board. It is located under the keyboard flat flexible cable. All the PBPs from the post-pandemic batches have SH61F83 but TL Lim claimed they can be flashed just the same. No updated datasheet or a statement from the MCU vendor was provided though, so proceed at your own risk. Experience shows flashing those works for at least one time.

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.

The scripts ought to work on all operating systems available for the Pinebook Pro. Some operating systems 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.

There are two keyboard versions of the Pinebook Pro: ISO (vertical Enter key) and ANSI (horizontal Enter key). You need to know which model you have prior to running the updater. Firmware update steps for both models are listed below.

What you will need:

  • Connection to internet for getting dependencies, either through WiFi or wired ethernet (USB dongle).
  • Your Pinebook Pro fully charged or running from mains power.
  • An external USB keyboard and 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 or UART serial console).

ISO Model

From the terminal command line:

(Debian distros)

git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make

(Arch distros: eg Manjaro -- NOTE:build-essential, xxd are named differently. Arch linux does not split its packages as foo and foo-dev)

git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo pacman -Syu base-devel xxd-standalone libusb
make

The next steps are identical for both Debian and Arch distros.

Step 1

cd pinebook-pro-keyboard-updater
sudo ./updater step-1
sudo poweroff # do not use 'reboot'

Step 2 (after booting)

cd pinebook-pro-keyboard-updater
sudo ./updater step-2 iso
sudo poweroff # do not use 'reboot'

ANSI Model

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!

From the terminal command line:

(Debian distros)

git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo apt-get install build-essential libusb-1.0-0-dev xxd
make

(Arch distros: eg Manjaro -- NOTE:build-essential, xxd are named differently. Arch linux does not split its packages as foo and foo-dev)

git clone https://github.com/dragan-simic/pinebook-pro-keyboard-updater
cd pinebook-pro-keyboard-updater
sudo pacman -Syu base-devel xxd-standalone libusb
make

The next steps are identical for both Debian and Arch distros.

Step 1

cd pinebook-pro-keyboard-updater
sudo ./updater step-1
sudo poweroff # do not use 'reboot'

Step 2 (after booting)

cd pinebook-pro-keyboard-updater
sudo ./updater step-2 ansi
sudo poweroff # do not use 'reboot'

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.

Revised Firmware

In addition, you might consider using revised firmware data. This is one final step that should not require a reboot:

Step 3: ISO (after booting)

sudo ./updater flash-kb firmware/default_iso.hex

Step 3: ANSI (after booting)

sudo ./updater flash-kb firmware/default_ansi.hex

X Window System Configuration

Note: Before making adjustments, consider updating the firmware. Reset your adjustments before updating the firmware, so that your adjustments do not interfere with new functionality.

When using X.Org display server the touchpad can be handled either by libinput or synaptic input drivers. The former allows to have shared configuration for both X.Org and Wayland but the latter provides more tunables (e.g. configurable edge scrolling, circular scrolling, mapping of multi-touch events to mouse buttons etc.)

Some forum members have found that an adjustment to X11 will allow finer motion in the touchpad. If you use the synaptic mouse/touchpad driver, use this command to make the change live:

synclient MinSpeed=0.2

You may experiment with different settings, but 0.25 was tested as helping noticeably.

To make the change persist across reboots, change the file /etc/X11/xorg.conf similar to below:

Section "InputClass"
       Identifier "touchpad catchall"
       Driver "synaptics"
       MatchIsTouchpad "on"
       MatchDevicePath "/dev/input/event*"
       Option "MinSpeed" "0.25"
EndSection

The line "Option "MinSpeed" "0.25"" is changed here.

Another forum user built on the above settings a little, and have found these to be very good:

synclient MinSpeed=0.25
synclient TapButton1=1
synclient TapButton2=3
synclient TapButton3=2
synclient FingerLow=30
synclient PalmDetect=1
synclient VertScrollDelta=64
synclient HorizScrollDelta=64

FingerLow 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. You may find this config to be comfortable for daily use.

TabButton allows to just tab the touchpad instead of physically pressing it down (to get this click noise).

The right mouse click is emulated by tapping with two fingers on the touchpad. If you feel that this is not very responsive you can try this value:

synclient MaxTapTime=250

Some users may encounter an issue with the mouse jumping when typing when using libinput driver due to their hand hitting the touchpad which can be fixed by updating the X.Org settings to disable it while typing. One can disable the touchpad while typing by setting the below option in the X.Org config simliar to the previous example.

        Option "DisableWhileTyping" "on"

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. Make sure you have libinput version 1.19.0 or later installed as it includes the necessary quirk.

Synaptic driver users can add syndaemon to their X11 session for the same effect.

Power Supply

  • Input Power: 5 V DC, 15 W (current limit 3 A, see also inside photos of the factory-provided DC adapter: top, bottom)
  • Mechanical: 3.5 mm OD / 1.35 mm ID, barrel jack (also known as DC 35135 socket)
  • USB-C 5 V, 12.5 W (current limit is at 2.5 A regardless of the USB PD negotiations result)
  • Only use one power input at a time, barrel jack or USB-C (note: some powerful Type-C adapters have rather limited current for 5 V operation, and e.g. 2 A won't be enough to run the system and charge the battery at the same time, so check the specs)

Pinebook Pro power and charging explains how exactly external power supply is used to run the system and charge the battery, as there are several counter-intuitive details about the process.

LEDs

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:

  1. The red LED next to the barrel port indicates charging, in three ways. First, it will illuminate steadily when either the barrel jack power supply or a USB Type-C charger is connected to the Pinebook Pro, and the charging is active (that means power is supplied to the battery and system in parallel, and if it's not enough the battery can still be discharging). Second, if the battery is at 100 %, the LED will remain turned off regardless of the connected power input (however, this is not possible for more than a split-second when the system is running). Third, this LED will flash at 0.5 Hz if there are any problems that prevent charging, such as the battery becoming too hot. To fully understand all the nuances, read the corresponding article.
  2. 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, with proper software support. In the default Debian with MATE build, green LED means power and red means suspend (amber is unused).
  3. The green NumLock LED, above the keyboard.
  4. The green CapsLock LED, above the keyboard.

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.

Webcam

You can use Cheese to test the Camera functionality
  • Streaming video resolutions supported, (uncompressed):
    • 320 x 240
    • 640 x 480
    • 800 x 600
    • 1280 x 720
    • 1600 x 1200
  • Still frame resolutions supported:
    • 160 x 120
    • 176 x 144
    • 320 x 240
    • 352 x 288
    • 640 x 480
    • 800 x 600
    • 1280 x 720
    • 1600 x 1200

Audio

ALSA configuration

If you do not have the integrated sound card selected as the default, create /etc/asound.conf with the following contents:

defaults.pcm.!card rockchipes8316c
defaults.ctl.!card rockchipes8316c

If you want to enable software mixing (dmix) by default for all ALSA apps (works without Pipewire or PulseAudio), make /usr/share/alsa/cards/simple-card.conf file contain this:

# default with dmix/dsnoop
simple-card.pcm.default {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type asym
	playback.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dmix:CARD=" $CARD ",RATE=44100" ]
		}
	}
	capture.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dsnoop:CARD=" $CARD ",RATE=44100" ]
		}
	}
}

Pop/click suppression workaround

If you're annoyed by loud popping and clicking sounds, which occur a few seconds after the sound playback stops as a result of the components of the audio chain being turned on and off automatically by the Linux kernel, you can execute the following command manually, or automatically on boot using the tmpfiles.d systemd feature, for example:

echo 50 > /sys/kernel/debug/asoc/rockchip,es8316-codec/dapm_pop_time

This is a workaround because it effectively (ab)uses a built-in debugging feature of the Linux kernel's audio subsystem, and one of the downsides is that a lot of messages are produced in the kernel log whenever the components of the audio chain are turned on and off automatically by the kernel.

Speaker polarity workaround

On newer Pinebook Pro batches, the inverted built-in speaker polarity issue has been fixed. On these units, the speaker polarity can be made reversed again by the alsa-ucm-conf package, which configures ALSA devices continuously. One workaround would be to remove the package, and the speaker polarity will no longer be set incorrectly. However, this also prevents the built-in speakers from being muted when an output device is plugged into the aux port.

Another workaround is to edit file /usr/share/alsa/ucm2/Rockchip/es8316/HiFi.conf and change all instances of R Invert to Normal. This is a workaround because it's likely to be overwritten and lost if the alsa-ucm-conf package is updated.

Microphones

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.

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.

Built-in microphones not working

If pavucontrol input doesn't show microphone activity try changing the privacy switches. If the switches are in the correct place and microphone input isn't working you can run alsamixer from the command line, hit F6 and select the es8316, hit F4 to get to the capture screen, select the bar labeled ADC, increase the gain to 0 dB, 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).

External wired microphone not working

If you connect a headset with a microphone, you might need to open alsamixer, change card to es8316, and change option Differential Mux from lin1-rin1 to lin2-rin2.

Bluetooth and WiFi

The Pinebook Pro's AP6256 wireless module

Hardware Overview

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.

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.

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.

Issues

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.

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.

Wi-Fi Capabilities

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.

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. This might vary depending on the country you specify in the wireless settings, see iw reg get; iw list.

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.

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.

Be aware that Linux userspace utilities, such as iw, 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. That said, if a certain feature is not reported by iw it means the currently running kernel driver plus firmware combination doesn't support it, even when the hardware is capable.

WPA3 PSK support should be possible with iwd but not wpa_supplicant, see this ticket for details.

Bluetooth Capabilities

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.

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.

Disabling Bluetooth

To disable Bluetooth under Linux once:

sudo rfkill block bluetooth

To confirm if Bluetooth under Linux is disabled:

rfkill

To disable Bluetooth on boot (note: for distributions such as Manjaro XFCE see the step below):

sudo systemctl enable rfkill-block@bluetooth

To disable Bluetooth on certain distributions, such as Manjaro XFCE, right click on the Bluetooth panel icon, select plugins, then PowerManager, then configuration and then deselect the auto power on option

LCD Panel

  • Model: BOE NV140FHM-N49
  • 14.0" (35.56 cm) diagonal size
  • 1920x1080 resolution
  • 60 Hz refresh rate
  • IPS technology
  • 1000:1 contrast
  • 250 nit brightness
  • 63% sRGB coverage
  • 6-bit color
  • 30-pin eDP connection

External ports list

Here are a list of the external ports. See Technical Reference - Expansion Ports for port specifications.

  • Left side
    • Barrel jack for power, (with LED)
    • USB 3, Type A
    • USB 3, Type C
  • Right side
    • USB 2, Type A
    • Standard headset jack
    • MicroSD card slot

Using the serial console UART

Pinout of the serial adapter. This shows signals from the Pinebook Pro's point of view, so connect the adapter's RX to ring 1, and TX to the tip. See also the Pine64 official document describing this.

Serial console UART 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 by following the disassembly and reassembly guidelines. The OFF position is towards the touchpad, while the ON position is towards the display hinges.

With the UART switch in the ON position, the console is relayed via the headset jack, on which the audio output is no longer available. Please ensure that you are using a 3.3 V UART interface (such as the CH340, FTDI-232R, or PL2303, which are available in both 3.3 V and 5 V variants) to avoid damage to the RK3399 SoC. Older version of the serial console cable sold by the Pine Store used wrong voltage level and should not be used, see this forum thread for further information. Recent version of the same cable uses the right voltage level, which can also be checked by measuring the voltage on the TX ring.

Insert the USB plug of the cable into a USB port on the machine that you will use to monitor the Pinebook Pro's serial console, ensuring that the audio jack of the serial cable is be fully inserted into the Pinebook Pro's headphone port. Run lsusb in a terminal and you should see a line similar to this:

Bus 001 Device 058: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Serial console output should now be accessible on the respective machine using a terminal emulator, such as screen, picocom or minicom. Here are a few examples of how to invoke a terminal emuator:

  • screen /dev/ttyUSB0 1500000
  • picocom /dev/ttyUSB0 -b 1500000
  • minicom -D /dev/ttyUSB0 -b 1500000

Using the optional NVMe adapter

The optional NVMe adapter allows the use of M.2 SSDs that support the NVMe standard (SATA is not supported). The adapter supports M and M+B keyed devices, in both 2242 and 2280 physical sizes, which are the most commonly available. In addition, 2230 and 2260 sizes are also supported, though NVMe devices that use those sizes are rare.

Make sure to read the notes in Pinebook Pro Hardware Accessory Compatibility#NVMe SSD drives before selecting an M.2 SSD for your Pinebook Pro, because there are certain limitations. Once you have fitted and tested your NVMe drive, please consider adding a note to that page

Please see a separate section that describes reported issues with the NVMe drives in Pinebook Pro.

Installing the adapter

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. (If necessary, it can be modified to work. There is an unofficial tutorial on the forums describing these modifications.)

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.

This is the link to the Pinebook Pro accessories in the store: https://pine64.com/?v=0446c16e2e66

Actual installation instructions are a work in progress. Unofficial instructions for installing V2-2019-1107 can be found here.

Post NVMe install power limiting

Warning: Newer versions of the nvme-cli package have been changed to use -V (uppercase) instead of -v (lowercase) as the option name for specifying values. Please update the parameter names used in the commands below, if your Linux distribution packages a newer version.

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. 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):

$ sudo nvme id-ctrl /dev/nvme0
NVME Identify Controller:
...
ps    0 : mp:9.00W operational enlat:0 exlat:0 rrt:0 rrl:0
         rwt:0 rwl:0 idle_power:- active_power:-
ps    1 : mp:4.60W operational enlat:0 exlat:0 rrt:1 rrl:1
         rwt:1 rwl:1 idle_power:- active_power:-
ps    2 : mp:3.80W operational enlat:0 exlat:0 rrt:2 rrl:2
         rwt:2 rwl:2 idle_power:- active_power:-
ps    3 : mp:0.0450W non-operational enlat:2000 exlat:2000 rrt:3 rrl:3
         rwt:3 rwl:3 idle_power:- active_power:-
ps    4 : mp:0.0040W non-operational enlat:6000 exlat:8000 rrt:4 rrl:4
         rwt:4 rwl:4 idle_power:- active_power:-

$ sudo nvme get-feature /dev/nvme0 -f 2
get-feature:0x2 (Power Management), Current value:00000000
$ sudo nvme set-feature /dev/nvme0 -f 2 -v 2 -s
set-feature:02 (Power Management), value:0x000002

Some NVMe SSDs don't appear to allow saving the setting with "-s" option. In those cases, leave off the "-s" and use a startup script to set the non-default power state at boot. If you want to test performance without saving the new power setting semi-permanantly, then leave off the "-s" option.

On systemd based distributions like Manjaro, a non-default 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. An example systemd service, nvme-throttle.service, is shown below:

[Unit]
Description=Throttles NVME to lesss power hungry mode
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target

[Service]
Type=oneshot
ExecStart=/usr/bin/nvme set-feature /dev/nvme0 -f 2 -v 1

[Install]
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target

Here the value after "-v" is the maximum power state that you want your SSD to use. This will be executed at system startup, and every time your system exits any suspend mode that might reset the SSD to default values.

This file needs to be placed in the /etc/systemd/system directory. Afterwards, to activate the service, run:

systemctl daemon-reload
systemctl enable --now nvme-throttle.service

There is another power saving feature for NVMes, APST, (Autonomous Power State Transitions). This performs the power saving & transitions based on usage. To check if you have a NVMe SSD with this feature:

$ sudo nvme get-feature -f 0x0c -H /dev/nvme0

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. On some NVME SSDS (WD), APST is compatible with limiting NVME maximum power: APST will work and not exceed maximum power state defined using previous method.

Using as data drive

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.

Using as OS root drive

The SoC does not include the NVMe boot code, so the NVMe is not in the SoC's boot order. However, using the U-Boot update script from the mrfixit2001 Debian or Arglebargle's modified script, and 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 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.

The current boot order, per last testing, for this modified U-Boot is:

  • MicroSD
  • eMMC
  • NVMe

For more information, please refer to the forum post.

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 posted here about using a modified version of U-Boot with NVMe drivers, that uses /boot and / off the NVMe drive. So this may change in the future.)

Please see Bootable Storage.

Caring for the Pinebook Pro

Bypass Cables

Warning: Do not connect the bypass cables with the battery connected. Using the bypass cables with the battery connected can permanently damage your Pinebook Pro. After you're done with using the bypass cables and want to return to the default setup, make sure to affix the bypass cables to the main body of the laptop using adhesive tape, in the same way as it was done in the factory. This ensures that the exposed leads in the connectors on the bypass cables don't touch any conductive surface inside the laptop, which may cause a short.

The mainboard features two bypass cables that are to be used only with the battery disconnected. The two bypass cables are disconnected by default. The female (10) male (6) ends of the bypass cables can be connected to provide power to the mainboard if you need to run your Pinebook Pro with no battery. Please refer to this engineering notice for more details.

Connecting the bypass cables together effectively connects the charger input where the battery output is, which also bypasses the charging circuit inside the Pinebook Pro. Thus, with the bypass cables connected together, the charger powers the Pinebook Pro directly, just like the battery does it when the laptop is running on battery power. This also means that no input current limiting is any longer in place, making it possible to draw more than 3 A from the charger, and to trigger its overcurrent protection, which may cause operating system instability and crashes.

Despite the bypass cables having two conductors, they are used as a single conductor. Having both wires soldered together on either side of the bypass cables is normal, and such load-sharing design allows use of a compact connector on the bypass cables.

When removing the large RF shield found on the mainboard, for example when shorting the pins on the SPI chip, make absolutely sure to align it correctly while putting it back. Failing to do so can result in shorting the battery to the ground, due to the close proximity of the solder pads for the bypass cables, which would prevent the normal operation and effectively cause a fire hazard. It is highly recommended to disconnect the battery before removing the RF shield, and before putting it back.

Self-Service Step-by-Step Guides

These are self-service instruction guides for the disassembly of the 14-inch Pinebook, but they still almost directly apply to the Pinebook Pro:

Assembling it back requires the described steps to be performed in the reverse order.

Using the SPI flash device

Warning: When removing the large RF shield found on the mainboard, to be able to short the pins on the SPI chip, make absolutely sure to align it correctly while putting it back. Failing to do so can result in shorting the battery to the ground, due to the close proximity of the solder pads for the bypass cables, which would prevent the normal operation and effectively cause a fire hazard. It is highly recommended to disconnect the battery before removing the RF shield, and before putting it back.

See Pinebook Pro SPI for details.

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.

Here is some information on using the SPI flash device:

  • You need the kernel built with SPI flash device support, which will supply a device similar to: /dev/mtd0
  • The Linux package below, will need to be available: mtd-utils
  • You can then use this program from the package to write the SPI device: flashcp <filename> /dev/mtd0

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.

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.

Software tuning guide

The software tuning guides can be found in the article Pinebook Pro Software Tuning Guide.

Troubleshooting guide

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.

Please, have a look at the Pinebook Pro Troubleshooting Guide, which details a number of issues you may encounter.

Hardware/Accessory Compatibility

Please contribute to the hardware/accessory compatibility page, which lists the status of hardware tested with the Pinebook Pro. Available hardware categories include the following:

Disassembly and Reassembly

Pinebook Screw stand-offs correct placement and location
Hinge area of the Pinebook Pro lid with the cover removed
Close-up of a Pinebook Pro lid hinge

There are a few mandatory precautions to be taken:

  • 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.
  • 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.
  • 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.
Pinebook Pro external screws (this particular unit has suffered damage on screw (4)L)

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.

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.

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.

A basic 3D model to print replacement standoffs for the back cover screws is available on Thingiverse, until the official drawings or 3D models are made available.

Many units come with the hinges too stiff from the factory. You can tell if it affects your device by carefully observing if operating the lid on a fully assembled notebook flexes the case. This repeated flexing can lead to plastic and metal fatigue and eventually broken parts. Consider carefully using a flat screwdriver or similar object to unbend the hinges a bit by wedging it into the slot (requires the display part to be fully detached from the main body).

Display Disassembly

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.

Parts of the hinge mechanism, as well as the screws that hold the hinges to the lid, are hidden behind an elongated plastic 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.

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.

Internal Layout

Main chips

  • RK3399 system-on-chip (1)
  • LPDDR4 SDRAM (21)
  • SPI NOR flash memory (29)
  • eMMC flash memory module (26; Note: Some datasheets indicate a low supported number of mating cycles.)
  • WiFi/BT module (27)

Mainboard Switches and Buttons

There are two switches on the main board: disabling the eMMC module (24), and enabling serial console UART (9) via headphone jack.

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).

PBPL S.jpg

Key Internal Parts

Numbered parts classification and description
Number Type Descriptor
1 Component RK3399 System-On-Chip
2 Socket PCIe x4 slot for optional NVMe adapter
3 Socket Speakers socket
4 Socket Touchpad socket
5 Component Left speaker
6 Connector Power bridge connector
7 Socket Keyboard Socket
8 Component Optional NVMe SSD adapter
9 Switch UART/Audio switch - enables serial console UART via headphone jack
10 Socket Power bridge socket
11 Socket Battery socket
12 Component Touchpad
13 Component Battery
14 Component Right speaker
15 Socket MicroSD card slot
16 Socket Headphone / serial console UART jack
17 Socket USB 2.0 Type A
18 Socket Daughterboard-to-mainboard ribbon cable socket
19 Cable Daughterboard-to-mainboard ribbon cable
20 Component microphone
21 Component LPDDR4 RAM
22 Socket Mainboard-to-daughterboard ribbon cable socket
23 Socket Microphone socket
24 Switch Switch to hardware disable eMMC
25 Antenna BT/WiFI antenna
26 Component eMMC flash memory module
27 Component BT/WiFi module chip
28 Buttons Reset and recovery buttons
29 Component SPI flash storage
30 Socket eDP LCD socket
31 Socket Power in barrel socket
32 Socket USB 3.0 Type A
33 Socket USB 3.0 Type C

Smallboard detailed picture

Pinebook pro smallboard.jpg

Bootable Storage

The PineBook Pro eMMC module and switch, shown in 'enabled' position

Boot sequence details

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, RK3399 boot sequence

Boot devices

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.

At this time, the Pinebook Pro ships with a Manjaro + KDE build with u-boot on the eMMC. Its boot order is: SD, USB, then eMMC.

(An update has been pushed for the older Debian + MATE build that improves compatibility with booting other operating systems 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 this log for details.)

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 in a /boot partition on the eMMC.

eMMC information

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).

The eMMC storage will show up as multiple block devices:

  • mmcblk1boot0 - eMMC standard boot0 partition, may be 4MB
  • mmcblk1boot1 - eMMC standard boot1 partition, may be 4MB
  • mmcblk1rpmb - eMMC standard secure data partition, may be 16MB
  • mmcblk1 - This block contains the user areas

Only the last is usable as regular storage device in the Pinebook Pro. The device number of "1" shown above may vary, depending on kernel.

If the eMMC module is enabled after boot from an SD card, you can detect this change with the following commands as user "root":

echo fe330000.mmc >/sys/bus/platform/drivers/sdhci-arasan/unbind
echo fe330000.mmc >/sys/bus/platform/drivers/sdhci-arasan/bind

(Note: with the device trees coming with older kernels (Linux < 5.11), the device name may be fe330000.sdhci instead of fe330000.mmc)

Case Dimensions and Data

  • Dimensions: 329 mm x 220 mm x 12 mm (W x D x H)
  • Weight: 1.26 kg
  • Screws on the bottom lid
    • Philips-head type screws
    • M2 flat-head machine screws
    • 4 x short screw (used along the front edge): head diameter - 3.44 mm, thread diameter - 1.97 mm, thread length - 2.1 mm, overall length - 3.05 mm
    • 6 x long screw (used elsewhere): head diameter - 3.44 mm, thread diameter - 1.97 mm, thread length - 4.41 mm, overall length - 5.85 mm
  • Rubber feet
    • 18 mm diameter
    • 3 mm height
    • Dome shaped

SoC and Memory Specification

Rockchip RK3399.png
  • Based on Rockchip RK3399

CPU Architecture

  • big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU
    • Full implementation of the ARM architecture v8-A instruction set (both AArch64 and AArch32)
    • ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation
    • ARMv8 Cryptography Extensions
    • VFPv4 floating point unit supporting single and double-precision operations
    • Hardware virtualization support
    • TrustZone technology support
    • Full CoreSight debug solution
    • One isolated voltage domain to support DVFS
  • Cortex-A72 (big cluster):
  • Cortex-A53 (little cluster):
    • Quad-core Cortex-A53 up to 1.5GHz CPU
    • In-order pipeline with symmetric dual-issue of most instructions
    • L1 cache 32KB Icache and 32KB Dcache for each A53
    • L2 cache 512KB for little cluster
  • Cortex-M0 (control processors):
    • Cortex-M0 CPU
    • Two Cortex-M0 cooperate with the central processors
    • Architecture: Armv6-M
    • Thumb/Thumb2 instruction set
    • 32 bit only

GPU Architecture

  • ARM Mali-T860MP4 Quad-core GPU
  • 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.
  • Frequency 650MHz
  • Throughput 1300Mtri/s, 10.4Gpix/s
  • Graphic interface standards:
    • 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)
    • Vulkan 1.0, using the Mali binary blob. (Panfrost does not support Vulkan as of 2020/06/24)
    • OpenCL™ 1.1, 1.2
    • DirectX® 11 FL11_1
    • RenderScript™

System Memory

  • RAM Memory:
    • LPDDR4
    • 800MHz, (limited by RK3399)
    • Dual memory channels on the CPU, each 32 bits wide
    • Quad memory channels on the RAM chip, each 16 bits wide, 2 bonded together for each CPU channel
    • 4GB as a single 366 pin mobile RAM chip
  • Storage Memory:
    • 64GB eMMC module, can be upgraded to an 128GB eMMC module. (The initial PINE64 community build version shipped with a 128GB eMMC.)
    • eMMC version 5.1, HS400, 8 bit on RK3399 side
    • Bootable
  • SPI flash:
    • Pinebook Pro SPI
    • 128Mbit / 16MByte
    • 1 bit interface
    • Bootable, (first boot device, ahead of eMMC & SD card)
    • U-Boot images can be made to work, but as of 2020/06/24 there is no standardized image available.

Video out

  • USB-C Alt mode DP
  • Up to 3840x2160 p60, dependant on adapter, (2 lanes verses 4 lanes)

Expansion Ports

  • MicroSD card:
    • Bootable
    • Supports SD, SDHC and SDXC cards, up to 512GB tested. SDXC standard says 2TB is the maximum.
    • Version SD3.0, (MMC 4.5), up to 50MB/s
    • SD card Application Performance Class 1 (A1), (or better), recommended by some users, for better IOPS
  • USB ports:
    • 1 x USB 2.0 Type-A Host Port, bootable
    • 1 x USB 3.0 Type-A Host Port, 5Gbps, is not bootable
    • 1 x USB 3.0 Type-C OTG Port, 5Gbps, (includes laptop charging function), is not bootable
    • 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.
  • Headphone jack switchable to UART serial console mux circuit

Additional hardware

Hardware that is not part of the SoC.

Battery

  • Lithium Polymer Battery (10,000 mAh; 9,600 mAh in later batches)
  • Monitored by CW2015 which only measures the current voltage; reported state (charging/discharging), capacity (State-Of-Charge), remaining runtime and current are (poor) estimates

Display

  • 14.0" 1920x1080 IPS LCD panel

Lid closed magnet

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.

  • The magnet is located on the LCD panel right side, around 1.5 inches up measure from bottom edge.

Webcam

  • Internal USB attached Webcam

Audio

  • 3.5mm stereo earphone/microphone plug
  • Built-in microphone
  • Built-in stereo speakers:
    • Oval in design
    • 3 mm high x 20 mm x 30 mm

Network

  • WiFi:
    • 802.11 b/g/n/ac
    • Dual band: 2.4Ghz & 5Ghz
    • Single antenna
  • Bluetooth 5.0

Optional NVMe adapter

  • PCIe 1.1, 2.5 GT/s per lane
    • Note that due to errata, PCIe is limited to Gen1. See this commit.
  • Four PCIe lanes, which can not be bifurcated, but can be used with one- or two-lane NVMe cards
  • M keyed, though M+B keyed devices will work too
  • Maximum length for M.2 card is 80mm (M.2 2280). The following sizes will also work: 2230, 2242, 2260
  • Power: 2.5 W (continuous)
  • Does not support SATA M.2 cards
  • Does not support USB M.2 cards

Pinebook Pro Schematics and Certifications

Pinebook Pro Main Board Schematic And Silkscreen:

Pinebook Pro Daughter Board Schematic:

Optional Pinebook Pro NVMe Adapter Schematic:

Serial Console Earphone Jack Pinout:

Pinebook Pro Case:

Pinebook Pro Certifications:

Datasheets for Components and Peripherals

Rockchip RK3399 SoC information:

LPDDR4 SDRAM (366-pin BGA):

eMMC information:

SPI NOR Flash information:

Wireless and Bluetooth information:

Audio codec:

LCD panel:

USB-related information:

Touchpad information:

Keyboard information:

Full HD camera sensor:

Battery-related information:


Power path device:

NVMe adapter:

Versions

Pinebook Pro v1 and v2 were prototype models that did not make it to the public. The "first batch" (First 100 forum preorders) onward are v2.1. [1]

Skinning and Case Customization

Template files for creating custom skins. Each includes template layers for art placement, and CUT lines:

Other Resources