diff --git a/content/documentation/Clusterboard/Layout.adoc b/content/documentation/Clusterboard/Layout.adoc deleted file mode 100644 index 676bcb3c..00000000 --- a/content/documentation/Clusterboard/Layout.adoc +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: "Layout" -draft: false -menu: - docs: - title: - parent: "Clusterboard" - identifier: "Clusterboard/Layout" - weight: 1 ---- - -{{< figure src="/documentation/Clusterboard/images/clusterboard_labels.png" title="The Clusterboard with labels" width="400" >}} - -[cols="1,1"] -|=== -|Label -|Description - -| 1 -| Barrel-type DC jack (6.3 mm outer diameter, 3.0 mm inner diameter) for a +5 V, 15 A power supply - -| 2 -| Gigabit Ethernet port - -| 3 -| Reset button, for all seven modules - -| 4 -| Holder for two non-rechargeable 1.5 V AA-size batteries, providing backup for the real-time clock (RTC) on all modules - -| 5 -| Connector for an eMMC module, for the first SOPINE or SOEDGE module - -| 6 -| Slot for a SOPINE or SOEDGE module - -| 7 -| USB 2.0 Type-A socket - -| 8 -| MicroUSB Type-B USB 2.0 socket - -| 9 -| Activity LED - -| 10 -| 20-pin expansion connector - -| 11 -| Three-pin connector for a lithium battery - -| 12 -| RTL8211E Gigabit Ethernet PHY, with two status LEDs - -| 13 -| Gigabit Ethernet Switch (RTL8370N) - -| 14 -| 24-pin ATX Power Connector - -| 15 -| Two-pin connector for a switch/button that turns on connected ATX power supply - -| 16 -| 5 V power output for hard disk drives (optional) - -| 17 -| Places for soldering two resistors (optional, for use with an ATX power suppply that requires dummy load on 3.3 V and 12 V rails) -|=== - -For the part 4, please see the important note in the link:/documentation/Clusterboard/Further_information/Specifications[specifications] page. For the part 11, please see the notes in the link:/documentation/Clusterboard/Further_information/Revisions[hardware revisions] page. Parts 6 to 12 exist separately for each of all seven SOPINE or SOEDGE modules. - -== 20-pin Expansion Connector - -The 20-pin expansion connector is the part 10 decribed in the section above, available for each SOPINE or SOEDGE module. There is an unofficial description of the pinout in https://forum.pine64.org/showthread.php?tid=5713[this forum thread]. The unofficial pinout is also visible directly in https://forum.pine64.org/attachment.php?aid=1111[this picture]. - -== SOPINE Module - -{{< figure src="/documentation/SOPINE/images/sopine_front_labels.png" title="Front view of the SOPINE module with labels" width="400" >}} - -{{< figure src="/documentation/SOPINE/images/sopine_back_labels.png" title="Rear view of the SOPINE module with labels" width="400" >}} - -[cols="1,1"] -|=== -|Label -|Description - -| 1 -| A64 SoC - -| 2 -| 2 GB of DDR3 RAM - -| 3 -| AXP803 PMIC - -| 4 -| Edge connector, the same as on SO-DIMM modules - -| 5 -| Power LED - -| 6 -| microSD card slot - -| 7 -| SPI flash memory -|=== - diff --git a/content/documentation/Clusterboard/Layout.md b/content/documentation/Clusterboard/Layout.md new file mode 100644 index 00000000..f6340444 --- /dev/null +++ b/content/documentation/Clusterboard/Layout.md @@ -0,0 +1,54 @@ +--- +title: "Layout" +draft: false +menu: + docs: + title: + parent: "Clusterboard" + identifier: "Clusterboard/Layout" + weight: 1 +--- + +{{< figure src="/documentation/Clusterboard/images/clusterboard_labels.png" title="The Clusterboard with labels" width="400" >}} + +| Label | Description | +| --- | --- | +| 1 | Barrel-type DC jack (6.3 mm outer diameter, 3.0 mm inner diameter) for a +5 V, 15 A power supply | +| 2 | Gigabit Ethernet port | +| 3 | Reset button, for all seven modules | +| 4 | Holder for two non-rechargeable 1.5 V AA-size batteries, providing backup for the real-time clock (RTC) on all modules | +| 5 | Connector for an eMMC module, for the first SOPINE or SOEDGE module | +| 6 | Slot for a SOPINE or SOEDGE module | +| 7 | USB 2.0 Type-A socket | +| 8 | MicroUSB Type-B USB 2.0 socket | +| 9 | Activity LED | +| 10 | 20-pin expansion connector | +| 11 | Three-pin connector for a lithium battery | +| 12 | RTL8211E Gigabit Ethernet PHY, with two status LEDs | +| 13 | Gigabit Ethernet Switch (RTL8370N) | +| 14 | 24-pin ATX Power Connector | +| 15 | Two-pin connector for a switch/button that turns on connected ATX power supply | +| 16 | 5 V power output for hard disk drives (optional) | +| 17 | Places for soldering two resistors (optional, for use with an ATX power suppply that requires dummy load on 3.3 V and 12 V rails) | + +For the part 4, please see the important note in the [specifications](/documentation/Clusterboard/Further_information/Specifications) page. For the part 11, please see the notes in the [hardware revisions](/documentation/Clusterboard/Further_information/Revisions) page. Parts 6 to 12 exist separately for each of all seven SOPINE or SOEDGE modules. + +## 20-pin Expansion Connector + +The 20-pin expansion connector is the part 10 decribed in the section above, available for each SOPINE or SOEDGE module. There is an unofficial description of the pinout in [this forum thread](https://forum.pine64.org/showthread.php?tid=5713). The unofficial pinout is also visible directly in [this picture](https://forum.pine64.org/attachment.php?aid=1111). + +## SOPINE Module + +{{< figure src="/documentation/SOPINE/images/sopine_front_labels.png" title="Front view of the SOPINE module with labels" width="400" >}} + +{{< figure src="/documentation/SOPINE/images/sopine_back_labels.png" title="Rear view of the SOPINE module with labels" width="400" >}} + +| Label | Description | +| --- | --- | +| 1 | A64 SoC | +| 2 | 2 GB of DDR3 RAM | +| 3 | AXP803 PMIC | +| 4 | Edge connector, the same as on SO-DIMM modules | +| 5 | Power LED | +| 6 | microSD card slot | +| 7 | SPI flash memory | diff --git a/content/documentation/General/Mainline_Hardware_Decoding.adoc b/content/documentation/General/Mainline_Hardware_Decoding.adoc index 3d2582c3..6e89ce1e 100644 --- a/content/documentation/General/Mainline_Hardware_Decoding.adoc +++ b/content/documentation/General/Mainline_Hardware_Decoding.adoc @@ -9,7 +9,9 @@ menu: weight: --- -TIP: This page is incomplete, you're welcome to improve it. +{{% admonition type="note" %}} +This page is incomplete, you're welcome to improve it. +{{% /admonition %}} *Mainline Hardware Decoding* refers to video decoding done using hardware accelerators on the mainline Linux kernel (i.e. what sits in Linus' tree). diff --git a/content/documentation/General/Overclocking.adoc b/content/documentation/General/Overclocking.adoc index 4aa6c5a3..ac435df3 100644 --- a/content/documentation/General/Overclocking.adoc +++ b/content/documentation/General/Overclocking.adoc @@ -13,9 +13,13 @@ menu: There is the possibility of damaging your equipment by overclocking. Do so at your own risk! {{< /admonition >}} -TIP: This page is incomplete, you're welcome to improve it. +{{% admonition type="note" %}} +This page is incomplete, you're welcome to improve it. +{{% /admonition %}} -TIP: All information regarding clock speeds, voltages and more are stored in the DTB (Device Tree Blob). You can learn more about it https://elinux.org/Device_Tree_Reference[here]. +{{% admonition type="note" %}} +All information regarding clock speeds, voltages and more are stored in the DTB (Device Tree Blob). You can learn more about it https://elinux.org/Device_Tree_Reference[here]. +{{% /admonition %}} Overclocking is a way to get more performance out of the system by running it at higher clock speeds than the factory default, usually while putting out more heat and using more power (You can also downclock to possibly reduce power consumption and thermals at the cost of performance). It is highly recommended that you avoid overvolting the device, as that has a high risk of damaging the hardware, hence the warning at the beginning of this page. However, just some slight overclocks without the added voltage can not only improve performance, but not carry as much risk (Still: Do at your own risk!). It should be noted however that overclocking can cause instability, so you will need to test and see what values work best with your device (There is a silicon lottery for the Pinephone's hardware). @@ -59,9 +63,13 @@ Save the DTS file, and recompile the DTB. In order to check if the overclock was The file may be slightly different and you may need to enter the values as hexadecimals {{< /admonition >}} -TIP: The GPU appears to run stable overclocked to 540 Mhz, however more testing with a wider group of devices is needed. +{{% admonition type="note" %}} +The GPU appears to run stable overclocked to 540 Mhz, however more testing with a wider group of devices is needed. +{{% /admonition %}} -TIP: Remember to run a benchmark tool (such as glmark2-es2) to help check stability. +{{% admonition type="note" %}} +Remember to run a benchmark tool (such as glmark2-es2) to help check stability. +{{% /admonition %}} === CPU @@ -107,7 +115,9 @@ The table above shows the valid voltages provided by the AXP803 PMIC on DCDC2 (u The user _somefoo_ was able to undervolt the PinePhone at each frequency operation point by at least -100mv. The A64 set to 1.152Ghz runs at 1.18v instead of the standard 1.3v, dropping the power usage by ~0.7w under full single threaded load|The silicon lottery will dictate how well you can undervolt. {{< /admonition >}} -TIP: The exact voltages and frequencies that you can achieve will depend on your device. Make sure to run stress tests (such as _stress-ng_) to ensure stability. +{{% admonition type="note" %}} +The exact voltages and frequencies that you can achieve will depend on your device. Make sure to run stress tests (such as _stress-ng_) to ensure stability. +{{% /admonition %}} === DRAM @@ -115,9 +125,13 @@ TIP: The exact voltages and frequencies that you can achieve will depend on your It is not recommended to exceed 667 MHz clockspeed on the DRAM. 648MHz is likely the upper limit. {{< /admonition >}} -TIP: Make sure to set your DRAM to a multiple of 24. +{{% admonition type="note" %}} +Make sure to set your DRAM to a multiple of 24. +{{% /admonition %}} -TIP: The current frequency your DRAM is running at can be found using this command: `cat /proc/device-tree/memory/ram_freq` +{{% admonition type="note" %}} +The current frequency your DRAM is running at can be found using this command: `cat /proc/device-tree/memory/ram_freq` +{{% /admonition %}} When overclocking the GPU, it is a good idea to also overclock the DRAM, as the main bottleneck of the A64 SOC is the memory. The A64's maximum ram clockspeed falls just short of 667MHz. This may be unstable on your device however. diff --git a/content/documentation/General/PineModems.adoc b/content/documentation/General/PineModems.adoc deleted file mode 100644 index 0fc11dbf..00000000 --- a/content/documentation/General/PineModems.adoc +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: "PineModems" -draft: false -menu: - docs: - title: - parent: "General" - identifier: "General/PineModems" - weight: ---- - -== PINE64 position on alternative firmware - -PINE64 ships the PinePhone with a stock version of the Quectel EG25-G modem's firmware. Some administrative regions, in the EU and Asia in particular, require the entirety of the modem's firmware to be licensed. Therefore, the PinePhone cannot ship with an unlicensed firmware, and the PINE64 project cannot, officially encourage its userbase to use alternative modem firmware. - -== Quectel EG25-G Modem - -Quectel EG25-G is an LTE Cat 4 module optimized specially for M2M and IoT applications. It is used in the link:/documentation/PinePhone[PinePhone]. - -* Specifications: https://wiki.pine64.org/wiki/File:Quectel_EG25-G_LTE_Standard_Specification_V1.3.pdf -* Hardware design: https://wiki.pine64.org/wiki/File:Quectel_EG25-G_Hardware_Design_V1.4.pdf -* AT Interface reference manual: -** 1.3 for EC25: https://wiki.pine64.org/wiki/File:Quectel_EC25&EC21_AT_Commands_Manual_V1.3.pdf -** 2.0 for EC25 and EG25-G: https://wiki.pine64.org/wiki/File:Quectel_EC2x&EG9x&EG2x-G&EM05_Series_AT_Commands_Manual_V2.0.pdf -* AT Interface file operations: https://wiki.pine64.org/wiki/File:Quectel_EC2xEG25-GEG9xEM05_FILE_AT_Commands_Manual_V1.0.pdf -* GNSS Application note: https://wiki.pine64.org/wiki/File:Quectel_EC2x&EG9x&EG2x-G&EM05_Series_GNSS_Application_Note_V1.3.pdf - -=== Specifications - -[cols="1,1"] -|=== -| Processor Family -| Qualcomm MDM9607 - -| CPU -| Qualcomm MDM9207 - -| Cores -| 1 ACPU Core, Qualcomm Hexagon DSP - -| Total RAM -| 256Mb - -| Total flash space -| 256Mb - -| Available RAM for the ACPU -| 160Mb -|=== - -=== NAND Partition table layout - -[cols="1,1,1"] -|=== -|Index -|Name -|Description - -| MTD0 -| `SBL` -| Secondary Bootloader, called from the BootROM. Used to start the TrustZone kernel and the Application Bootloader (LK). Also used to enter Quectel's recovery mode - -| MTD1 -| `mibib` -| NAND Partition table - -| MTD2 -| `EFS2` -| IMEI and settings used by the ADSP are stored here - -| MTD3 -| `sys_rev` -| Unexplored - -| MTD4 -| `rawdata` -| This is where FOTA update data exists before being commited to system or recoveryfs partitions - -| MTD5 -| `tz` -| TrustZone kernel - -| MTD6 -| `rpm` -| Resource / Power Manager - -| MTD7 -| `cust_info` -| Unexplored - -| MTD8 -| `aboot` -| Application Bootloader. Uses https://github.com/littlekernel/lk[LK] (LittleKernel, LK embedded kernel) as the bootloader. By default it allows flashing unsigned images but won't allow booting them, soft-bricking the modem until you enter EDL mode - -| MTD9 -| `boot` -| https://www.openembedded.org/wiki/Main_Page[OpenEmbedded] boot kernel + DTB - -| MTD10 -| `recovery` -| Recovery kernel (used for FOTA updates) - -| MTD11 -| `modem` -| ADSP firmware blobs - -| MTD12 -| `misc` -| Some settings are stored here, along with commands that need to be picked by LK on next boot (to reboot to fastboot or recovery mode) - -| MTD13 -| `recoveryfs` -| Recovery filesystem image (FOTA updates) - -| MTD14 -| `usr_data` -| User data partition (`/data` when mounted by OpenEmbedded) - -| MTD15 -| `sec` -| Used to blow fuses in the mdm9207 from images generated by Qualcomm Sectools - -| MTD16 -| `system` -| Linux OpenEmbedded root image, formatted in UBIFS (Unsorted Block Image File System, https://en.wikipedia.org/wiki/UBIFS[Wikipedia]) -|=== - -=== Firmware Recovery - -{{< admonition type="warning" >}} - The following instructions are directed towards expert-level users and developers! -{{< /admonition >}} - -The System partition is mounted as read-only mode, but the data partition is writable. It might be possible, if there's an unexpected reset or power is lost while running, that the data partition gets corrupt and thus unable to boot. - -{{< figure src="/documentation/images/Pinephone-EG25-Recovery.jpg" title="PinePhone USB_BOOT test points" >}} - -The modem has 4 different boot modes: - -* Normal boot -* Recovery mode (used by the modem usually to install a FOTA update) -* Fastboot mode -* Qualcomm EDL Mode - -If the modem is unable to boot, depending on the type of crash, it might: - -* not show anywhere (USB device missing) -* or malfunction (no radio but USB working) -* or enter EDL mode, if the entire flash is corrupt. - -*Boot the device in EDL mode* - -To check if the device is booted in EDL mode, run `lsusb` (a part of the `usbutils` package) in a terminal and inspect the output. You should see the following device listed: - - Bus 003 Device 003: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode) - -In any scenario, the modem can be triggered to enter EDL mode by shorting two test pins on the PinePhone motherboard. - -. Power off the phone -. short the two test points -. boot the phone while keeping the test points shorted until fully booted up, at least until you hear the camera clicking twice (which is normally when the modem is powered). - -*Get the Firmware Recovery Package* - -The Firmware Recovery Package is at: https://github.com/Biktorgj/quectel_eg25_recovery - -Either clone its repo with git, or download its archive & unzip it. - -As you should have no access to the Internet on PinePhone when its modem need a Recovery, you can fetch it on other devices and copy it to the Pinephone. - -*Execute the Quectel QFirehose utility* - -Once in EDL mode, open a terminal, navigate to the root directory of the recovery package, and run: - -* If you use an ARM64 distribution (most likely): `sudo ./qfirehose -f ./` or `sudo ./qfirehose_arm64 -f ./` -* If you use an ARMHF (32 bit) distribution: `sudo ./qfirehose_armhf -f ./` - -It will reboot the modem after finished. After about 30 seconds, it will get back up and running. To check the firmware version after that, use an AT command `AT+QGMR` like at link:/documentation/PinePhone/Modem/#firmware_update[PinePhone]. - -=== Bootloader unlocking - -{{< admonition type="warning" >}} - The following instructions are directed towards expert-level users and developers! -{{< /admonition >}} - -The Modem has a locked bootloader. It won't allow to boot unsigned Kernel images, but will allow to flash them, making it easy to brick the modem. To fix this, you can flash an unlocked bootloader, which will then allow you to do as you please with the hardware. - -Unlocked bootloader: - -* Source code: https://github.com/Biktorgj/quectel_lk -* Prebuilt binary releases: https://github.com/Biktorgj/quectel_lk/releases - -=== Custom Kernels and system images - -{{< admonition type="warning" >}} - The following instructions are directed towards expert-level users and developers! -{{< /admonition >}} - -Custom kernel builds and system images can be created for the modem, though they require a couple of things to be correctly built and be bootable. - -* The source code release for the kernel provided by the manufacturer is incomplete and won't build -* Common Android tools like mkbootimg and dtbtool won't build a bootable image, even if the kernel is correctly compiled and all the DTBs attached. -* Further, there's no source for the OpenEmbedded parts, so building a new system image must be done from scratch, and retrieving the mandatory binary blobs to use the ADSP part of the modem. - -There's a *work in progress* SDK to allow creating custom kernels and system images, which can be downloaded from the following repository: https://github.com/Biktorgj/pinephone_modem_sdk - -See its readme for infomations and instructions. Once downloaded, you should run the `init.sh` script, which will create all the base directories and download all the different repositories required to build. After the initial setup is complete, run`make` without arguments to list the available options. - -=== Upgrade/switch firmware via fwupd - -https://fwupd.org/ is an open-source tool for managing the installation of firmware on Linux systems. - -fwupd >= 1.7.6 (with the ModemManager plugin) supports writing/upgrading the https://github.com/Biktorgj/pinephone_modem_sdk firmware on the Quectel EG25-G modem. - -https://wiki.postmarketos.org/wiki/Fwupd discusses how to use fwupd to do this. - -More context: - -* https://dylanvanassche.be/blog/2022/pinephone-modem-upgrade/ -* https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2760 -* https://gitlab.com/linux-mobile/tracker/-/issues/11 - -=== Modem management - -To allow PinePhones to receive calls while the PinePhone is suspended, the modem should be kept running. ModemManager and a eg25-specific manager must be used for the eg25-manager to work correctly. - -==== ModemManager - -https://www.freedesktop.org/wiki/Software/ModemManager/[ModemManager] "is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections". Distributions should enable the `--test-quick-suspend-resume` flag, per https://gitlab.com/linux-mobile/tracker/-/issues/12. - -Context: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/321 - -==== eg25-specific manager - -Some functionality is not built into ModemManager, and is instead managed via eg25-specific software. There are two variants of this, but only one should be used. - -* https://gitlab.com/mobian1/devices/eg25-manager[eg25-manager] *recommended*, used in most distributions. -* https://xnux.eu/devices/feature/modem-pp.html[modem-power] - -==== Testing - -When a distribution makes a significant change to their modem management setup, they should consider testing the following: - -* Modem is recognized by ModemManager on boot. -* Can make a call -* Can receive a call -* Can receive a call when asleep: `systemctl suspend` - -== See also - -* https://dylanvanassche.be/blog/2021/pinephone-modem-myths/["PinePhone modem myths" by Dylan Van Assche] - diff --git a/content/documentation/General/PineModems.md b/content/documentation/General/PineModems.md new file mode 100644 index 00000000..f7c885b2 --- /dev/null +++ b/content/documentation/General/PineModems.md @@ -0,0 +1,184 @@ +--- +title: "PineModems" +draft: false +menu: + docs: + title: + parent: "General" + identifier: "General/PineModems" + weight: +--- + +## PINE64 position on alternative firmware + +PINE64 ships the PinePhone with a stock version of the Quectel EG25-G modem’s firmware. Some administrative regions, in the EU and Asia in particular, require the entirety of the modem’s firmware to be licensed. Therefore, the PinePhone cannot ship with an unlicensed firmware, and the PINE64 project cannot, officially encourage its userbase to use alternative modem firmware. + +## Quectel EG25-G Modem + +Quectel EG25-G is an LTE Cat 4 module optimized specially for M2M and IoT applications. It is used in the [PinePhone](/documentation/PinePhone). + +* Specifications: https://wiki.pine64.org/wiki/File:Quectel_EG25-G_LTE_Standard_Specification_V1.3.pdf +* Hardware design: https://wiki.pine64.org/wiki/File:Quectel_EG25-G_Hardware_Design_V1.4.pdf +* AT Interface reference manual: + * 1.3 for EC25: https://wiki.pine64.org/wiki/File:Quectel_EC25&EC21_AT_Commands_Manual_V1.3.pdf + * 2.0 for EC25 and EG25-G: https://wiki.pine64.org/wiki/File:Quectel_EC2x&EG9x&EG2x-G&EM05_Series_AT_Commands_Manual_V2.0.pdf +* AT Interface file operations: https://wiki.pine64.org/wiki/File:Quectel_EC2xEG25-GEG9xEM05_FILE_AT_Commands_Manual_V1.0.pdf +* GNSS Application note: https://wiki.pine64.org/wiki/File:Quectel_EC2x&EG9x&EG2x-G&EM05_Series_GNSS_Application_Note_V1.3.pdf + +### Specifications + +| | | +| --- | --- | +| Processor Family | Qualcomm MDM9607 | +| CPU | Qualcomm MDM9207 | +| Cores | 1 ACPU Core, Qualcomm Hexagon DSP | +| Total RAM | 256Mb | +| Total flash space | 256Mb | +| Available RAM for the ACPU | 160Mb | + +### NAND Partition table layout + +| Index | Name | Description | +| --- | --- | --- | +| MTD0 | `SBL` | Secondary Bootloader, called from the BootROM. Used to start the TrustZone kernel and the Application Bootloader (LK). Also used to enter Quectel’s recovery mode | +| MTD1 | `mibib` | NAND Partition table | +| MTD2 | `EFS2` | IMEI and settings used by the ADSP are stored here | +| MTD3 | `sys_rev` | Unexplored | +| MTD4 | `rawdata` | This is where FOTA update data exists before being commited to system or recoveryfs partitions | +| MTD5 | `tz` | TrustZone kernel | +| MTD6 | `rpm` | Resource / Power Manager | +| MTD7 | `cust_info` | Unexplored | +| MTD8 | `aboot` | Application Bootloader. Uses [LK](https://github.com/littlekernel/lk) (LittleKernel, LK embedded kernel) as the bootloader. By default it allows flashing unsigned images but won’t allow booting them, soft-bricking the modem until you enter EDL mode | +| MTD9 | `boot` | [OpenEmbedded](https://www.openembedded.org/wiki/Main_Page) boot kernel + DTB | +| MTD10 | `recovery` | Recovery kernel (used for FOTA updates) | +| MTD11 | `modem` | ADSP firmware blobs | +| MTD12 | `misc` | Some settings are stored here, along with commands that need to be picked by LK on next boot (to reboot to fastboot or recovery mode) | +| MTD13 | `recoveryfs` | Recovery filesystem image (FOTA updates) | +| MTD14 | `usr_data` | User data partition (`/data` when mounted by OpenEmbedded) | +| MTD15 | `sec` | Used to blow fuses in the mdm9207 from images generated by Qualcomm Sectools | +| MTD16 | `system` | Linux OpenEmbedded root image, formatted in UBIFS (Unsorted Block Image File System, [Wikipedia](https://en.wikipedia.org/wiki/UBIFS)) | + +### Firmware Recovery + +{{< admonition type="warning" >}} + The following instructions are directed towards expert-level users and developers! +{{< /admonition >}} + +The System partition is mounted as read-only mode, but the data partition is writable. It might be possible, if there’s an unexpected reset or power is lost while running, that the data partition gets corrupt and thus unable to boot. + +{{< figure src="/documentation/images/Pinephone-EG25-Recovery.jpg" title="PinePhone USB_BOOT test points" >}} + +The modem has 4 different boot modes: + +* Normal boot +* Recovery mode (used by the modem usually to install a FOTA update) +* Fastboot mode +* Qualcomm EDL Mode + +If the modem is unable to boot, depending on the type of crash, it might: + +* not show anywhere (USB device missing) +* or malfunction (no radio but USB working) +* or enter EDL mode, if the entire flash is corrupt. + +**Boot the device in EDL mode** + +To check if the device is booted in EDL mode, run `lsusb` (a part of the `usbutils` package) in a terminal and inspect the output. You should see the following device listed: + + Bus 003 Device 003: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode) + +In any scenario, the modem can be triggered to enter EDL mode by shorting two test pins on the PinePhone motherboard. + +1. Power off the phone +2. short the two test points +3. boot the phone while keeping the test points shorted until fully booted up, at least until you hear the camera clicking twice (which is normally when the modem is powered). + +**Get the Firmware Recovery Package** + +The Firmware Recovery Package is at: https://github.com/Biktorgj/quectel_eg25_recovery + +Either clone its repo with git, or download its archive & unzip it. + +As you should have no access to the Internet on PinePhone when its modem need a Recovery, you can fetch it on other devices and copy it to the Pinephone. + +**Execute the Quectel QFirehose utility** + +Once in EDL mode, open a terminal, navigate to the root directory of the recovery package, and run: + +* If you use an ARM64 distribution (most likely): `sudo ./qfirehose -f ./` or `sudo ./qfirehose_arm64 -f ./` +* If you use an ARMHF (32 bit) distribution: `sudo ./qfirehose_armhf -f ./` + +It will reboot the modem after finished. After about 30 seconds, it will get back up and running. To check the firmware version after that, use an AT command `AT+QGMR` like at [PinePhone](/documentation/PinePhone/Modem/#firmware_update). + +### Bootloader unlocking + +{{< admonition type="warning" >}} + The following instructions are directed towards expert-level users and developers! +{{< /admonition >}} + +The Modem has a locked bootloader. It won’t allow to boot unsigned Kernel images, but will allow to flash them, making it easy to brick the modem. To fix this, you can flash an unlocked bootloader, which will then allow you to do as you please with the hardware. + +Unlocked bootloader: + +* Source code: https://github.com/Biktorgj/quectel_lk +* Prebuilt binary releases: https://github.com/Biktorgj/quectel_lk/releases + +### Custom Kernels and system images + +{{< admonition type="warning" >}} + The following instructions are directed towards expert-level users and developers! +{{< /admonition >}} + +Custom kernel builds and system images can be created for the modem, though they require a couple of things to be correctly built and be bootable. + +* The source code release for the kernel provided by the manufacturer is incomplete and won’t build +* Common Android tools like mkbootimg and dtbtool won’t build a bootable image, even if the kernel is correctly compiled and all the DTBs attached. +* Further, there’s no source for the OpenEmbedded parts, so building a new system image must be done from scratch, and retrieving the mandatory binary blobs to use the ADSP part of the modem. + +There’s a **work in progress** SDK to allow creating custom kernels and system images, which can be downloaded from the following repository: https://github.com/Biktorgj/pinephone_modem_sdk + +See its readme for infomations and instructions. Once downloaded, you should run the `init.sh` script, which will create all the base directories and download all the different repositories required to build. After the initial setup is complete, run`make` without arguments to list the available options. + +### Upgrade/switch firmware via fwupd + +https://fwupd.org/ is an open-source tool for managing the installation of firmware on Linux systems. + +fwupd >= 1.7.6 (with the ModemManager plugin) supports writing/upgrading the https://github.com/Biktorgj/pinephone_modem_sdk firmware on the Quectel EG25-G modem. + +https://wiki.postmarketos.org/wiki/Fwupd discusses how to use fwupd to do this. + +More context: + +* https://dylanvanassche.be/blog/2022/pinephone-modem-upgrade/ +* https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2760 +* https://gitlab.com/linux-mobile/tracker/-/issues/11 + +### Modem management + +To allow PinePhones to receive calls while the PinePhone is suspended, the modem should be kept running. ModemManager and a eg25-specific manager must be used for the eg25-manager to work correctly. + +#### ModemManager + +[ModemManager](https://www.freedesktop.org/wiki/Software/ModemManager/) "is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections". Distributions should enable the `--test-quick-suspend-resume` flag, per https://gitlab.com/linux-mobile/tracker/-/issues/12. + +Context: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/321 + +#### eg25-specific manager + +Some functionality is not built into ModemManager, and is instead managed via eg25-specific software. There are two variants of this, but only one should be used. + +* [eg25-manager](https://gitlab.com/mobian1/devices/eg25-manager) **recommended**, used in most distributions. +* [modem-power](https://xnux.eu/devices/feature/modem-pp.html) + +#### Testing + +When a distribution makes a significant change to their modem management setup, they should consider testing the following: + +* Modem is recognized by ModemManager on boot. +* Can make a call +* Can receive a call +* Can receive a call when asleep: `systemctl suspend` + +## See also + +* ["PinePhone modem myths" by Dylan Van Assche](https://dylanvanassche.be/blog/2021/pinephone-modem-myths/) diff --git a/content/documentation/PineCube/GPIO.adoc b/content/documentation/PineCube/GPIO.adoc deleted file mode 100644 index 592f593c..00000000 --- a/content/documentation/PineCube/GPIO.adoc +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: "GPIO" -draft: false -menu: - docs: - title: - parent: "PineCube" - identifier: "PineCube/GPIO" - weight: 4 ---- - -GPIO header pin table: - -|=== -|Pin |Name |Physical Pin (Designation) |Linux GPIO |Alternate Func 1 |Alternate Func 2 |Interrupt - -|1 -| 3V3 | DCDC3 | | | | - -|2 -| 5V | PS | | | | - -|3 -| TWI1_SDA | PB9 | 41 | TWI1_SDA | UART0_RX | PB_EINT9 - -|4 -| 5V | PS | | | | - -|5 -| TWI1_SCK | PB8 | 40 | TWI1_SCK | UART0_TX | PB_EINT8 - -|6 -| GND | GND | | | | - -|7 -| PWM1 | PB5 | 37 | PWM1 | | PB_EINT5 - -|8 -| UART_TXD | PB0 | 32 | UART2_TXD | | PB_EINT0 - -|9 -| GND | GND | | | | - -|10 -| UART_RXD | PB1 | 33 | UART2_RX | | PB_EINT1 - -|11 -| GPIO17 | PC5 | 69 | | SDC2_D2 | - -|12 -| GPIO18 | PC6 | 70 | | SDC2_D3 | - -|13 -| GPIO27 | PC7 | 71 | | SDC2_D4 | - -|14 -| GND | GND | | | | - -|15 -| GPIO22 | PC8 | 72 | | SDC2_D5 | - -|16 -| GPIO23 | PC9 | 73 | | SDC2_D6 | - -|17 -| 3V3 | DCDC3 | | | | - -|18 -| GPIO24 | PC10 | 74 | | SDC2_D7 | - -|19 -| SPI-MOSI | PC3 | 67 | SPI0_MOSI | SDC2_D0 | - -|20 -| GND | GND | | | | - -|21 -| SPI-MISO | PC0 | 64 | SPI0_MISO | SDC2_CLK | - -|22 -| PWM0 | PB4 | 36 | PWM0 | | PB_EINT4 - -|23 -| SPI-CLK | PC1 | 65 | SPI0_CLK | SDC2_CMD | - -|24 -| SPI_CE0 | PC2 | 66 | SPI0_CS | SDC2_RST | - -|25 -| GND | GND | | | | - -|26 -| SPI_CE1 | PC4 | 68 | | SDC2_D1 | -|=== - -Important notes: - -* First ball is marked with white dot -* SPI is multiplexed also with SPI flash -* SPI_CE1 is normal GPIO pin" - diff --git a/content/documentation/PineCube/GPIO.md b/content/documentation/PineCube/GPIO.md new file mode 100644 index 00000000..308950de --- /dev/null +++ b/content/documentation/PineCube/GPIO.md @@ -0,0 +1,47 @@ +--- +title: "GPIO" +draft: false +menu: + docs: + title: + parent: "PineCube" + identifier: "PineCube/GPIO" + weight: 4 +--- + +GPIO header pin table: + +| Pin | Name | Physical Pin (Designation) | Linux GPIO | Alternate Func 1 | Alternate Func 2 | Interrupt | +| --- | --- | --- | --- | --- | --- | --- | +| 1 | 3V3 | DCDC3 | | | | | +| 2 | 5V | PS | | | | | +| 3 | TWI1_SDA | PB9 | 41 | TWI1_SDA | UART0_RX | PB_EINT9 | +| 4 | 5V | PS | | | | | +| 5 | TWI1_SCK | PB8 | 40 | TWI1_SCK | UART0_TX | PB_EINT8 | +| 6 | GND | GND | | | | | +| 7 | PWM1 | PB5 | 37 | PWM1 | | PB_EINT5 | +| 8 | UART_TXD | PB0 | 32 | UART2_TXD | | PB_EINT0 | +| 9 | GND | GND | | | | | +| 10 | UART_RXD | PB1 | 33 | UART2_RX | | PB_EINT1 | +| 11 | GPIO17 | PC5 | 69 | | SDC2_D2 | | +| 12 | GPIO18 | PC6 | 70 | | SDC2_D3 | | +| 13 | GPIO27 | PC7 | 71 | | SDC2_D4 | | +| 14 | GND | GND | | | | | +| 15 | GPIO22 | PC8 | 72 | | SDC2_D5 | | +| 16 | GPIO23 | PC9 | 73 | | SDC2_D6 | | +| 17 | 3V3 | DCDC3 | | | | | +| 18 | GPIO24 | PC10 | 74 | | SDC2_D7 | | +| 19 | SPI-MOSI | PC3 | 67 | SPI0_MOSI | SDC2_D0 | | +| 20 | GND | GND | | | | | +| 21 | SPI-MISO | PC0 | 64 | SPI0_MISO | SDC2_CLK | | +| 22 | PWM0 | PB4 | 36 | PWM0 | | PB_EINT4 | +| 23 | SPI-CLK | PC1 | 65 | SPI0_CLK | SDC2_CMD | | +| 24 | SPI_CE0 | PC2 | 66 | SPI0_CS | SDC2_RST | | +| 25 | GND | GND | | | | | +| 26 | SPI_CE1 | PC4 | 68 | | SDC2_D1 | | + +Important notes: + +* First ball is marked with white dot +* SPI is multiplexed also with SPI flash +* SPI_CE1 is normal GPIO pin" diff --git a/content/documentation/PineNote/Development/Flashing.adoc b/content/documentation/PineNote/Development/Flashing.adoc deleted file mode 100644 index be853de6..00000000 --- a/content/documentation/PineNote/Development/Flashing.adoc +++ /dev/null @@ -1,349 +0,0 @@ ---- -title: "Flashing" -draft: false -menu: - docs: - title: - parent: "PineNote/Development" - identifier: "PineNote/Development/Flashing" - weight: 2 ---- - -{{% docs/construction %}} - -{{< admonition type="note" >}} - These instructions are directed towards experienced developers only! -{{< /admonition >}} - -This page contains information on flashing software to the PineNote. - -The general process is as follows: - -. Take a backup of all important data on the PineNote -. Modify the partition layout to make space for your desired Linux distribution -. Instantiate a root filesystem (rootfs) in the new partition space -. Install your Linux distribution to the boot partition -. Modify the boot process to boot the Linux distribution by default - -There are multiple possible methods of executing these steps, and this page attempts to document all of them. - -You can use: - -. `rkdeveloptool`, a command line utility for modifying https://en.wikipedia.org/wiki/Rockchip[Rockchip] devices over USB -. The link:/documentation/PineNote/Development/UART[UART] shell -. https://en.wikipedia.org/wiki/Android_Debug_Bridge[Android Debug Bridge] -. https://en.wikipedia.org/wiki/Fastboot[Fastboot] - -== Getting rkdeveloptool - -Most flashing operations on the PineNote are done through `rkdeveloptool`, a command line utility built on libusb. PINE64 maintains its own fork https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool[here] that you will need to get. The repo's README contains a list of dependencies (libusb 1.0) and instructions for building the tool. - -Installing (not just building) `rkdeveloptool` will configure PAM to elevate privileges where necessary on your system; you can configure this manually as follows: - ----- -sudo cp 99-rk-rockusb.rules /etc/udev/rules.d/ -sudo udevadm control --reload ----- - -== Entering Maskrom/Rockusb mode - -Interfacing with the PineNote over USB using `rkdeveloptool` requires first booting the PineNote into http://opensource.rock-chips.com/wiki_Rockusb[an alternative operating mode] called Maskrom or Rockusb mode. - -=== Possible methods - -There are three possible methods of entering Maskrom/Rockusb mode: - -==== Hardware magnet switch - -. Connect the PineNote to your computer via USB and boot the PineNote into Android -. Locate & identify the small circular marking on the back of the PineNote, in the top right quadrant; have the PineNote pen close at hand, or any other small magnet -. Hold the PineNote power button to bring up the reboot/shutdown menu; select reboot, then place the PineNote face down with the "eraser" end of the pen (or your magnet) resting on the small circular marking - -==== U-Boot terminal - -This method requires a link:/documentation/PineNote/Development/UART#usb_passthrough[UART dongle with passthrough] allowing simultaneous UART & USB connections. - -It is nice because you can easily switch back & forth between U-Boot and Rockusb without having to physically manipulate the PineNote or its connectors; this is especially helpful when trying to develop U-Boot. - -. Connect to the PineNote via UART and USB simultaneously -. Interrupt the U-Boot startup using `ctrl+c` sent over UART -. In the U-Boot terminal over UART, run `rockusb 0 mmc 0` - -The UART terminal should print `RKUSB` then a spinner will appear. You can exit back to the U-Boot terminal by sending `ctrl+c` again. - -==== Shorting test points - -If the bootloader is broken/corrupted, you cannot get to Maskrom without opening up the device (it can be opened using spudger and a bit of patience). - -Once inside, short TP1301 (GND) and TP1302 (eMMC_D0/FLASH_D0) with a small tweezers, this is how it looks on board view (credit to Caleb): - -{{< figure src="/documentation/PineNote/images/PineNote_Maskrom_TP.png" width="500px" >}} - -=== Success - -No matter what approach you take, you can tell whether you succeeded by running the `lsusb` command on your computer: - -* If you find the entry `2207:0018 Fuzhou Rockchip Electronics Company rk3566_eink` in the list, the process did not succeed; reboot and retry -* The entry `2207:350a Fuzhou Rockchip Electronics Company` will occur if you detach then reattach the USB-C cable while the PineNote is in Maskrom/Rockusb mode; `rkdeveloptool` won't work and you will have to do a hard reboot (hold down power button for 30 seconds to shutdown) -* If you find the entry `2207:350a Fuzhou Rockchip Electronics Company USB download gadget` then the process succeeded - -You can also look at the output of the `rkdeveloptool list` command: - -* If this prints out `No devices in rockusb mode found` the process did not succeed; reboot and retry -* If this prints out `DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=305 Maskrom` then you probably detached/reattached the USB-C cable while in Maskrom/Rockusb mode and `rkdeveloptool` won't work; perform a hard reboot to fix -* If this prints out `DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=303 Loader` then the process succeeded - -=== Exiting - -You can boot the PineNote back into its normal mode of operation by powercycling the PineNote with its hardware power switch, or running the `rkdeveloptool reboot` command. If you used the magnetic switch method be sure to remove the pen/magnet before rebooting. - -== Backup - -A backup of the content of the internal eMMC before anything gets messed up is **mandatory**. - -Especially the _waveform_ partition contains data **unique** to your PineNote and is a prime candidate for backup. - -Other partitions like U-Boot (need for any operation of the device) or the un-partitioned space at the beginning containing the GPT partition table (and presumably the VCOM setting for the e-ink display and maybe device mac addresses) contain data you may also wish to backup. - -Depending of your personal level of data hoarder you may want to backup more than this or even just everything (the large _userdata_ partition is supposed to be able to be repopulated as empty space by Android) - -In any case it is easier to restore/extract data from a backup than not having one if you need one. - -This process was developed by Dorian Rudolph, originally described https://github.com/DorianRudolph/pinenotes[here]. - -=== List partitions - -First, run `rkdeveloptool list-partitions` to print out your PineNote's partitions to get an idea of what you're dealing with. -The stock PineNote has a fairly standard https://source.android.com/docs/core/architecture/partitions[Android partition setup]: - - -[cols="1,2,1,4"] -|=== -| Number | Name | Size | Purpose - -| 0 -| uboot -| 4 MB -| The https://en.wikipedia.org/wiki/Das_U-Boot[U-Boot] embedded systems bootloader - -| 1 -| trust -| 4 MB -| Secrets that can be encrypted with a key stored in the https://en.wikipedia.org/wiki/Trusted_Platform_Module[TPM] - -| 2 -| waveform -| 2 MB -| Important files controlling the e-ink screen's state changes - -| 3 -| misc -| 4 MB -| Data used by the recovery partition - -| 4 -| dtbo -| 4 MB -| https://en.wikipedia.org/wiki/Devicetree[Device Tree Blob for Overlay], files describing the PineNote's hardware configuration - -| 5 -| vbmeta -| 1 MB -| Data required for https://android.googlesource.com/platform/external/avb/+/master/README.md[verified boot] - -| 6 -| boot -| 42 MB -| The kernel image & ramdisk to boot - -| 7 -| security -| 4 MB -| - -| 8 -| recovery -| 134 MB -| The recovery image, booted during Android updates - -| 9 -| backup -| 400 MB -| - -| 10 -| cache -| 1 GB -| Stores temporary data; can be used to install a minimal Linux distribution! - -| 11 -| metadata -| 17 MB -| Used for disk encryption - -| 12 -| super -| 3.25 GB -| Android itself is installed here - -| 13 -| logo -| 17 MB -| Splash image displayed during boot - -| 14 -| device -| 67 MB -| - -| 15 -| userdata -| 119 GB -| The big one; user-installed Android apps and files live here -|=== - -=== Patch U-Boot - -Before we can back up our partitions, we have a problem to solve. The version of U-Boot installed on the stock PineNote contains a bug where it can't dump partitions beyond 32 MB (above that limit all bytes in the dump are just `0xCC`), meaning the PineNote must be flashed with a fixed version of U-Boot before it is possible to take a backup of the larger partitions. It is possible to extract and modify the U-Boot image from your PineNote if you're interested in some light reverse-engineering (following Dorian's notes), or you can simply download a patched U-Boot image directly https://github.com/DorianRudolph/pinenotes/blob/main/static/uboot_patched.img[here]. - -Once you've acquired a patched U-Boot image, run: - -. `rkdeveloptool read-partition uboot uboot_backup.img` -. `rkdeveloptool write-partition uboot uboot_patched.img` -. `rkdeveloptool reboot` - -=== Taking the backup - -With U-Boot patched, you can back up every partition except for super and userdata; run: - -`rkdeveloptool read-partition partition_name partition_name_backup.img` - -Unfortunately the super and userdata partitions run into a second limitation preventing dumping partitions larger than 2 GB, this time originating in `rkdeveloptool` itself. This means if you have a large number of documents in the Android userdata partition they might not all make it into the backup. If you don't have many documents (or don't care about losing them) this should not be a problem. If you do have a lot of documents, workarounds include: - -* A possible patch written by Thomas exists https://github.com/tpwrules/nixos-pinenote/blob/96d2c9158edb9da59afcb952cc864fada18382f9/nix/rkdeveloptool/0001-fix-large-dumps.patch[here] but has not yet been upstreamed; consider investigating how to get the patch tested & upstreamed, or just apply it to your own local copy of `rkdeveloptool` -* Use https://github.com/talpadk/pinenote-backup[this] Python script written by Visti Andresen (talpadk) to automatically backup your entire partition by splitting reads into 2 GB chunks - -See https://github.com/m-weigand/pinenote-debian-recipes/releases/tag/v0.1[instructions on this artifact]. It will instruct you on extracting the rootfs into an empty ext4 partition. This can be done from Linux or Android. Further instructions on building your own rootfs https://github.com/m-weigand/pinenote-debian-recipes[can be found here]. - -=== Using a user installed Linux - -A Linux installed to the cache partition should be able to easily backup everything over WiFi or to a USB stick/disk using _dd_. - -However the user would need to backup the cache partition themself (if they want that). - -And more importantly they would only be getting the backup _after_ they started playing with the content of the eMMC. - -== Side-by-side setup - -It is possible to set up a partition for mainline development without disturbing the factory Android installation. This allows updating a mainline kernel, DTB, and initramfs over Wi-Fi until WiFi or USB OTG is working in mainline Linux. - -=== Without Repartitioning - -The recommended partition for this is _mmcblk0p11_ aka _/cache_. It is large and already formatted as _ext4_, so it is readable from U-Boot. Here are some general steps: - -. From the UART or adb shell, set up your chroot in _/cache_. I used the Alpine Linux rootfs tarball. -. Copy in your kernel and DTB, using for example _scp_ or _wget_ inside the chroot. -. Finally, create and boot an `extlinux.conf` as described below. - -=== With Repartitioning - -It is possible to shrink the _userdata_ partition, and create a new partition at the end for use with mainline Linux. This provides much more space than _cache_. However, because _userdata_ is formatted with _f2fs_, and that filesystem cannot be shrunk, resizing the partition requires wiping _userdata_. - -. Back up any necessary files from userdata -. Boot to a mainline kernel from _mmcblk0p11_, either using that partition as rootfs (see above), or using an initramfs with repartitioning tools -. Modify the partition table with your favorite tool, e.g. _fdisk_, _gdisk_, or _parted_ -. Reboot into _fastboot_ and wipe _userdata_. -. Reboot into Android, where you can now chroot in and install your favorite distribution to the new partition. - -== Using rkdeveloptool - -=== Building Downstream U-Boot - -While in maskrom mode, we need to have a u-boot to download onto the device for any of the other commands to work. To build you'll also need to install device-tree-compiler. - -You also need to install Python and pyelftools. - -{{< admonition type="note" >}} - The rkbin is a >5GB download! This will take some time to clone and process the deltas. -{{< /admonition >}} - ----- -git clone -b quartz64 https://gitlab.com/pgwipeout/u-boot-rockchip.git -git clone -b rkbin https://github.com/JeffyCN/rockchip_mirrors.git rkbin -cd u-boot-rockchip -# If using Arch Linux, export CROSS_COMPILE=aarch64-linux-gnu- -export CROSS_COMPILE=aarch64-none-linux-gnu- -make rk3566-quartz64_defconfig -./make.sh ----- - -[quote] -____ -In the current version (current as of 2022-01-02), there might have to be made a change to one line to get a clean compilation: - ----- -diff --git a/lib/avb/libavb/avb_slot_verify.c b/lib/avb/libavb/avb_slot_verify.c -index 123701fc3b..64a1ce6450 100644 ---- a/lib/avb/libavb/avb_slot_verify.c -+++ b/lib/avb/libavb/avb_slot_verify.c -@@ -296,7 +296,7 @@ static AvbSlotVerifyResult load_and_verify_hash_partition( - bool image_preloaded = false; - uint8_t* digest; - size_t digest_len; -- const char* found; -+ const char* found = NULL; - uint64_t image_size; - size_t expected_digest_len = 0; - uint8_t expected_digest_buf[AVB_SHA512_DIGEST_SIZE]; ----- - -For systems where the global python executable points to python2, compilation fails with an error related to pyelftools not being installed (even if it is). To fix this: - ----- -diff --git a/make.sh b/make.sh -index 2bba05b4e4..cfe5b0afd5 100755 ---- a/make.sh -+++ b/make.sh -@@ -758,7 +758,7 @@ function pack_fit_image() - fi - - if [ "${ARM64_TRUSTZONE}" == "y" ]; then -- if ! python -c "import elftools" ; then -+ if ! python3 -c "import elftools" ; then - echo "ERROR: No python 'pyelftools', please: pip install pyelftools" - exit 1 - fi ----- -____ - -You can now download u-boot onto the PineNote: - - ./rkdeveloptool boot ../u-boot-rockchip/rk356x_spl_loader_v1.08.111.bin - -This should output "_Downloading bootloader succeeded_". - -We can now verify that this worked using e.g. the "read flash info" command: - - ./rkdeveloptool read-flash-info - -{{< admonition type="note" >}} - Section needs to be finished -{{< /admonition >}} - -=== Creating a mainline boot image - -You can create a filesystem image that replaces the Android boot or recovery partition by doing roughly the following: - -. Erase boot and dtbo with rkdeveloptool or fastboot (back them up first!!!) -. Create an ext2 partition image and mount it (fallocate, mkfs.ext2) -. Build your mainline kernel -. Copy the kernel, dtb and an initramfs to the root of the mounted image (use any old postmarketOS initramfs) -. Create a file in the root of the mounted image called `extlinux.conf` as described below -. Unmount the image and then use rkdeveloptool to flash it to the "recovery" partition on the pinenote (it's about the right size until we get around to replacing the partition layout). - -== Using fastboot - -Follow the steps for link:#creating_a_mainline_boot_image[Creating a mainline boot image], but instead of flashing it with _rkdeveloptool_, use _fastboot_. You can enter fastboot in either of two ways: - -* Use "reboot bootloader" from adb or a UART console or -* get a U-Boot prompt and run `fastboot usb 0`. \ No newline at end of file diff --git a/content/documentation/PineNote/Development/Flashing.md b/content/documentation/PineNote/Development/Flashing.md new file mode 100644 index 00000000..8df5def2 --- /dev/null +++ b/content/documentation/PineNote/Development/Flashing.md @@ -0,0 +1,279 @@ +--- +title: "Flashing" +draft: false +menu: + docs: + title: + parent: "PineNote/Development" + identifier: "PineNote/Development/Flashing" + weight: 2 +--- + +{{% docs/construction %}} + +{{< admonition type="note" >}} + These instructions are directed towards experienced developers only! +{{< /admonition >}} + +This page contains information on flashing software to the PineNote. + +The general process is as follows: + +1. Take a backup of all important data on the PineNote +2. Modify the partition layout to make space for your desired Linux distribution +3. Instantiate a root filesystem (rootfs) in the new partition space +4. Install your Linux distribution to the boot partition +5. Modify the boot process to boot the Linux distribution by default + +There are multiple possible methods of executing these steps, and this page attempts to document all of them. + +You can use: + +1. `rkdeveloptool`, a command line utility for modifying [Rockchip](https://en.wikipedia.org/wiki/Rockchip) devices over USB +2. The [UART](/documentation/PineNote/Development/UART) shell +3. [Android Debug Bridge](https://en.wikipedia.org/wiki/Android_Debug_Bridge) +4. [Fastboot](https://en.wikipedia.org/wiki/Fastboot) + +## Getting rkdeveloptool + +Most flashing operations on the PineNote are done through `rkdeveloptool`, a command line utility built on libusb. PINE64 maintains its own fork [here](https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool) that you will need to get. The repo’s README contains a list of dependencies (libusb 1.0) and instructions for building the tool. + +Installing (not just building) `rkdeveloptool` will configure PAM to elevate privileges where necessary on your system; you can configure this manually as follows: + +``` +sudo cp 99-rk-rockusb.rules /etc/udev/rules.d/ +sudo udevadm control --reload +``` + +## Entering Maskrom/Rockusb mode + +Interfacing with the PineNote over USB using `rkdeveloptool` requires first booting the PineNote into [an alternative operating mode](http://opensource.rock-chips.com/wiki_Rockusb) called Maskrom or Rockusb mode. + +### Possible methods + +There are three possible methods of entering Maskrom/Rockusb mode: + +#### Hardware magnet switch + +1. Connect the PineNote to your computer via USB and boot the PineNote into Android +2. Locate & identify the small circular marking on the back of the PineNote, in the top right quadrant; have the PineNote pen close at hand, or any other small magnet +3. Hold the PineNote power button to bring up the reboot/shutdown menu; select reboot, then place the PineNote face down with the "eraser" end of the pen (or your magnet) resting on the small circular marking + +#### U-Boot terminal + +This method requires a [UART dongle with passthrough](/documentation/PineNote/Development/UART#usb_passthrough) allowing simultaneous UART & USB connections. + +It is nice because you can easily switch back & forth between U-Boot and Rockusb without having to physically manipulate the PineNote or its connectors; this is especially helpful when trying to develop U-Boot. + +1. Connect to the PineNote via UART and USB simultaneously +2. Interrupt the U-Boot startup using `ctrl+c` sent over UART +3. In the U-Boot terminal over UART, run `rockusb 0 mmc 0` + +The UART terminal should print `RKUSB` then a spinner will appear. You can exit back to the U-Boot terminal by sending `ctrl+c` again. + +#### Shorting test points + +If the bootloader is broken/corrupted, you cannot get to Maskrom without opening up the device (it can be opened using spudger and a bit of patience). + +Once inside, short TP1301 (GND) and TP1302 (eMMC_D0/FLASH_D0) with a small tweezers, this is how it looks on board view (credit to Caleb): + +{{< figure src="/documentation/PineNote/images/PineNote_Maskrom_TP.png" width="500px" >}} + +### Success + +No matter what approach you take, you can tell whether you succeeded by running the `lsusb` command on your computer: + +* If you find the entry `2207:0018 Fuzhou Rockchip Electronics Company rk3566_eink` in the list, the process did not succeed; reboot and retry +* The entry `2207:350a Fuzhou Rockchip Electronics Company` will occur if you detach then reattach the USB-C cable while the PineNote is in Maskrom/Rockusb mode; `rkdeveloptool` won’t work and you will have to do a hard reboot (hold down power button for 30 seconds to shutdown) +* If you find the entry `2207:350a Fuzhou Rockchip Electronics Company USB download gadget` then the process succeeded + +You can also look at the output of the `rkdeveloptool list` command: + +* If this prints out `No devices in rockusb mode found` the process did not succeed; reboot and retry +* If this prints out `DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=305 Maskrom` then you probably detached/reattached the USB-C cable while in Maskrom/Rockusb mode and `rkdeveloptool` won’t work; perform a hard reboot to fix +* If this prints out `DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=303 Loader` then the process succeeded + +### Exiting + +You can boot the PineNote back into its normal mode of operation by powercycling the PineNote with its hardware power switch, or running the `rkdeveloptool reboot` command. If you used the magnetic switch method be sure to remove the pen/magnet before rebooting. + +## Backup + +A backup of the content of the internal eMMC before anything gets messed up is ***mandatory***. + +Especially the _waveform_ partition contains data ***unique*** to your PineNote and is a prime candidate for backup. + +Other partitions like U-Boot (need for any operation of the device) or the un-partitioned space at the beginning containing the GPT partition table (and presumably the VCOM setting for the e-ink display and maybe device mac addresses) contain data you may also wish to backup. + +Depending of your personal level of data hoarder you may want to backup more than this or even just everything (the large _userdata_ partition is supposed to be able to be repopulated as empty space by Android) + +In any case it is easier to restore/extract data from a backup than not having one if you need one. + +This process was developed by Dorian Rudolph, originally described [here](https://github.com/DorianRudolph/pinenotes). + +### List partitions + +First, run `rkdeveloptool list-partitions` to print out your PineNote’s partitions to get an idea of what you’re dealing with. +The stock PineNote has a fairly standard [Android partition setup](https://source.android.com/docs/core/architecture/partitions): + +| Number | Name | Size | Purpose | +| --- | --- | --- | --- | +| 0 | uboot | 4 MB | The [U-Boot](https://en.wikipedia.org/wiki/Das_U-Boot) embedded systems bootloader | +| 1 | trust | 4 MB | Secrets that can be encrypted with a key stored in the [TPM](https://en.wikipedia.org/wiki/Trusted_Platform_Module) | +| 2 | waveform | 2 MB | Important files controlling the e-ink screen’s state changes | +| 3 | misc | 4 MB | Data used by the recovery partition | +| 4 | dtbo | 4 MB | [Device Tree Blob for Overlay](https://en.wikipedia.org/wiki/Devicetree), files describing the PineNote’s hardware configuration | +| 5 | vbmeta | 1 MB | Data required for [verified boot](https://android.googlesource.com/platform/external/avb/+/master/README.md) | +| 6 | boot | 42 MB | The kernel image & ramdisk to boot | +| 7 | security | 4 MB | | +| 8 | recovery | 134 MB | The recovery image, booted during Android updates | +| 9 | backup | 400 MB | | +| 10 | cache | 1 GB | Stores temporary data; can be used to install a minimal Linux distribution! | +| 11 | metadata | 17 MB | Used for disk encryption | +| 12 | super | 3.25 GB | Android itself is installed here | +| 13 | logo | 17 MB | Splash image displayed during boot | +| 14 | device | 67 MB | | +| 15 | userdata | 119 GB | The big one; user-installed Android apps and files live here | + +### Patch U-Boot + +Before we can back up our partitions, we have a problem to solve. The version of U-Boot installed on the stock PineNote contains a bug where it can’t dump partitions beyond 32 MB (above that limit all bytes in the dump are just `0xCC`), meaning the PineNote must be flashed with a fixed version of U-Boot before it is possible to take a backup of the larger partitions. It is possible to extract and modify the U-Boot image from your PineNote if you’re interested in some light reverse-engineering (following Dorian’s notes), or you can simply download a patched U-Boot image directly [here](https://github.com/DorianRudolph/pinenotes/blob/main/static/uboot_patched.img). + +Once you’ve acquired a patched U-Boot image, run: + +1. `rkdeveloptool read-partition uboot uboot_backup.img` +2. `rkdeveloptool write-partition uboot uboot_patched.img` +3. `rkdeveloptool reboot` + +### Taking the backup + +With U-Boot patched, you can back up every partition except for super and userdata; run: + +`rkdeveloptool read-partition partition_name partition_name_backup.img` + +Unfortunately the super and userdata partitions run into a second limitation preventing dumping partitions larger than 2 GB, this time originating in `rkdeveloptool` itself. This means if you have a large number of documents in the Android userdata partition they might not all make it into the backup. If you don’t have many documents (or don’t care about losing them) this should not be a problem. If you do have a lot of documents, workarounds include: + +* A possible patch written by Thomas exists [here](https://github.com/tpwrules/nixos-pinenote/blob/96d2c9158edb9da59afcb952cc864fada18382f9/nix/rkdeveloptool/0001-fix-large-dumps.patch) but has not yet been upstreamed; consider investigating how to get the patch tested & upstreamed, or just apply it to your own local copy of `rkdeveloptool` +* Use [this](https://github.com/talpadk/pinenote-backup) Python script written by Visti Andresen (talpadk) to automatically backup your entire partition by splitting reads into 2 GB chunks + +See [instructions on this artifact](https://github.com/m-weigand/pinenote-debian-recipes/releases/tag/v0.1). It will instruct you on extracting the rootfs into an empty ext4 partition. This can be done from Linux or Android. Further instructions on building your own rootfs [can be found here](https://github.com/m-weigand/pinenote-debian-recipes). + +### Using a user installed Linux + +A Linux installed to the cache partition should be able to easily backup everything over WiFi or to a USB stick/disk using _dd_. + +However the user would need to backup the cache partition themself (if they want that). + +And more importantly they would only be getting the backup _after_ they started playing with the content of the eMMC. + +## Side-by-side setup + +It is possible to set up a partition for mainline development without disturbing the factory Android installation. This allows updating a mainline kernel, DTB, and initramfs over Wi-Fi until WiFi or USB OTG is working in mainline Linux. + +### Without Repartitioning + +The recommended partition for this is _mmcblk0p11_ aka _/cache_. It is large and already formatted as _ext4_, so it is readable from U-Boot. Here are some general steps: + +1. From the UART or adb shell, set up your chroot in _/cache_. I used the Alpine Linux rootfs tarball. +2. Copy in your kernel and DTB, using for example _scp_ or _wget_ inside the chroot. +3. Finally, create and boot an `extlinux.conf` as described below. + +### With Repartitioning + +It is possible to shrink the _userdata_ partition, and create a new partition at the end for use with mainline Linux. This provides much more space than _cache_. However, because _userdata_ is formatted with _f2fs_, and that filesystem cannot be shrunk, resizing the partition requires wiping _userdata_. + +1. Back up any necessary files from userdata +2. Boot to a mainline kernel from _mmcblk0p11_, either using that partition as rootfs (see above), or using an initramfs with repartitioning tools +3. Modify the partition table with your favorite tool, e.g. _fdisk_, _gdisk_, or _parted_ +4. Reboot into _fastboot_ and wipe _userdata_. +5. Reboot into Android, where you can now chroot in and install your favorite distribution to the new partition. + +## Using rkdeveloptool + +### Building Downstream U-Boot + +While in maskrom mode, we need to have a u-boot to download onto the device for any of the other commands to work. To build you’ll also need to install device-tree-compiler. + +You also need to install Python and pyelftools. + +{{< admonition type="note" >}} + The rkbin is a >5GB download! This will take some time to clone and process the deltas. +{{< /admonition >}} + +``` +git clone -b quartz64 https://gitlab.com/pgwipeout/u-boot-rockchip.git +git clone -b rkbin https://github.com/JeffyCN/rockchip_mirrors.git rkbin +cd u-boot-rockchip +# If using Arch Linux, export CROSS_COMPILE=aarch64-linux-gnu- +export CROSS_COMPILE=aarch64-none-linux-gnu- +make rk3566-quartz64_defconfig +./make.sh +``` + +> In the current version (current as of 2022-01-02), there might have to be made a change to one line to get a clean compilation: +> +> ``` +> diff --git a/lib/avb/libavb/avb_slot_verify.c b/lib/avb/libavb/avb_slot_verify.c +> index 123701fc3b..64a1ce6450 100644 +> --- a/lib/avb/libavb/avb_slot_verify.c +> +++ b/lib/avb/libavb/avb_slot_verify.c +> @@ -296,7 +296,7 @@ static AvbSlotVerifyResult load_and_verify_hash_partition( +> bool image_preloaded = false; +> uint8_t* digest; +> size_t digest_len; +> - const char* found; +> + const char* found = NULL; +> uint64_t image_size; +> size_t expected_digest_len = 0; +> uint8_t expected_digest_buf[AVB_SHA512_DIGEST_SIZE]; +> ``` +> +> For systems where the global python executable points to python2, compilation fails with an error related to pyelftools not being installed (even if it is). To fix this: +> +> ``` +> diff --git a/make.sh b/make.sh +> index 2bba05b4e4..cfe5b0afd5 100755 +> --- a/make.sh +> +++ b/make.sh +> @@ -758,7 +758,7 @@ function pack_fit_image() +> fi +> +> if [ "${ARM64_TRUSTZONE}" == "y" ]; then +> - if ! python -c "import elftools" ; then +> + if ! python3 -c "import elftools" ; then +> echo "ERROR: No python 'pyelftools', please: pip install pyelftools" +> exit 1 +> fi +> ``` + +You can now download u-boot onto the PineNote: + + ./rkdeveloptool boot ../u-boot-rockchip/rk356x_spl_loader_v1.08.111.bin + +This should output "_Downloading bootloader succeeded_". + +We can now verify that this worked using e.g. the "read flash info" command: + + ./rkdeveloptool read-flash-info + +{{< admonition type="note" >}} + Section needs to be finished +{{< /admonition >}} + +### Creating a mainline boot image + +You can create a filesystem image that replaces the Android boot or recovery partition by doing roughly the following: + +1. Erase boot and dtbo with rkdeveloptool or fastboot (back them up first!!!) +2. Create an ext2 partition image and mount it (fallocate, mkfs.ext2) +3. Build your mainline kernel +4. Copy the kernel, dtb and an initramfs to the root of the mounted image (use any old postmarketOS initramfs) +5. Create a file in the root of the mounted image called `extlinux.conf` as described below +6. Unmount the image and then use rkdeveloptool to flash it to the "recovery" partition on the pinenote (it’s about the right size until we get around to replacing the partition layout). + +## Using fastboot + +Follow the steps for [Creating a mainline boot image](#creating_a_mainline_boot_image), but instead of flashing it with _rkdeveloptool_, use _fastboot_. You can enter fastboot in either of two ways: + +* Use "reboot bootloader" from adb or a UART console or +* get a U-Boot prompt and run `fastboot usb 0`. diff --git a/content/documentation/PinePhone/Accessory.adoc b/content/documentation/PinePhone/Accessory.adoc deleted file mode 100644 index 9daee5dc..00000000 --- a/content/documentation/PinePhone/Accessory.adoc +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "Accessory" -draft: false -menu: - docs: - title: - parent: "PinePhone" - identifier: "PinePhone/Accessory" - weight: ---- - -== Add-ons - -The PinePhone (and PinePhone Pro) is compatible with the official add-on cases, such as the keyboard, the LoRa add-on, the Qi wireless charging add-on and the fingerprint reader add-on. Details can be found under: - -* link:/documentation/Phone_Accessories/[Accessories] -* link:/documentation/Phone_Accessories/Keyboard[Keyboard] - -== USB - -The USB-C can be used to power the device, and offers USB2 host and OTG capabilities, and also can make use of the USB-C capability to integrate HDMI signals. Some USB-C hubs are available that offer power throughput, USB connection, an HDMI port and Ethernet connection. - -== Pogo pins - -{{< figure src="/documentation/images/Pinephone_pogo.png" title="The pogo pins, as visible under the back cover." width="400" >}} - -The PinePhone has six pogo pins on the back allowing for custom hardware extensions such as wireless charging, an IR blaster, a keyboard extension or extended battery case. The pogo pins provide access to an interrupt line, power inputs/outputs and an I2C interface. - -[cols="1,1,1"] -|=== -| Interrupt -| SDA -| SCL - -| DCIN -| USB-5V -| GND -|=== - -DCIN and USB-5V are the names used in the schematics. The actual behavior of these pogo pins is not obvious based on their names. DCIN is connected both to the VBUS line of the USB Type-C connector and to the ACIN/VBUS inputs on the PMIC. This means that, depending on a number of factors, DCIN may be at 0 V or 5 V. USB-5V is connected at the output of an LP6226 DC/DC boost converter (5 V), which in turn is fed by the PS output of the PMIC. The boost converter is enabled or disabled by a GPIO output from the A64 SoC, controlled by software (e.g. the Linux kernel). Depending on inputs and decision made by the PMIC, PS may be at the battery voltage (fed "directly" by the battery through a https://www.zxcompo.com/[transistor] controlled by the PMIC), or at the "USB" voltage (fed by the PMIC's ACIN/VBUS inputs). This means that depending on a number of factors, USB-5V may be at battery voltage (between 3.0 V and 4.3 V), or at 5 V. - -Because the PinePhone may act as a USB host (providing 5 V at the USB Type-C connector's VBUS to a connected device) or as a USB device (drawing from a 5 V source on the USB Type-C connector's VBUS), DCIN is actually not strictly an input nor an output. Some community analysis of the PinePhone schematic (and some testing) indicates that you can connect a 5 V power supply to DCIN in order to power the phone at the PMIC's ACIN/VBUS inputs (and, as a side effect, charge the battery). This may not be safe to do in all conditions, e.g., when the phone is acting as a USB host to a connected USB device. It should also be safe to use DCIN as a power output from the PinePhone, e.g., when a USB Type-C charger is connected, you can draw current directly from the USB Type-C port's VBUS, which is provided by the charger. Please note that, when using DCIN as an output from the PinePhone, DCIN isn't "always on"; it may be 0 V. It is currently not documented on how much current can be safely drawn. - -USB-5V should be safe to use as an "always on" power output from the PinePhone. Depending on a number of factors, voltage may be from 3 V to 5 V; thus, if you are using USB-5V to power your pogo-pins expansion board, you will probably need to use DC/DC converters/regulators as appropriate. USB-5V is on even while the A64 SoC is powered down. - -The I2C and interrupt lines have pull-ups on the phone side. The I2C lines are pulled up to 3v3 by the phone. - -For a breakout board see https://github.com/SMR404/PinephonePogoBreakout[here]. For an example project see Martijn's blog post https://blog.brixit.nl/making-a-backcover-extension-for-the-pinephone/[_"Making a backcover extension for the PinePhone"_]. - -PINE64 store currently sells the https://pine64.com/product/pinephone-flex-break-out-board/?v=0446c16e2e66[PinePhone Flex Breakout Board]. With the pitch being 2.54 mm, this Flex Breakout Board may have leads soldered directly to the contacts for use in a solderless board. A non-soldered solution would be to use a https://www.digikey.com/en/products/detail/te-connectivity-amp-connectors/5-520315-6/2258879[TE AMP Connector] that will accept a Flat Flexible Cable 2.54 mm pitch. - -== Back cover - -A step file for the back cover for creating custom cases is freely available https://files.pine64.org/doc/PinePhone/PinePhone%20Back%20Cover%20ver%200.5.stp[here]. - -== Serial console - -{{< figure src="/documentation/images/PinePhone_Serial_Cable.png" title="Pinout of the serial adapter." width="400" >}} - -The PinePhone has a serial port in the headphone connector, it's activated by the 6th contact on the dipswitch. If the switch is set to "on", the headphone connector is in audio mode, if it is set to "off" it's in UART mode. The UART serial connection can also be used for communication with other devices from the PinePhone. - -The UART is 115200n8. - -The pinout for the serial connector is: - -* Tip: RX -* Ring: TX -* Sleeve: GND - -You can buy a serial debug cable from the https://pine64.com/product/pinebook-pinephone-pinetab-serial-console/[PINE64 Store]. The store cable uses a 4 ring plug, as seen in the https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf[here], but a 3 ring plug works just as well. The cable uses a CH340 chipset based serial to USB converter, but any 3.3v serial connection can be used. Because it is a "host"/DTE it means that you need a _cross modem cable_ (https://en.wikipedia.org/wiki/Null_modem[Null Modem]) with TX on Tip to be connected to RX. A cable like e.g. https://www.ftdichip.com/Products/Cables/USBTTLSerial.htm[FTDI TTL-232R-3V3-AJ] which has TX on Tip and RX on Ring fits perfectly. - diff --git a/content/documentation/PinePhone/Accessory.md b/content/documentation/PinePhone/Accessory.md new file mode 100644 index 00000000..470b6c8b --- /dev/null +++ b/content/documentation/PinePhone/Accessory.md @@ -0,0 +1,64 @@ +--- +title: "Accessory" +draft: false +menu: + docs: + title: + parent: "PinePhone" + identifier: "PinePhone/Accessory" + weight: +--- + +## Add-ons + +The PinePhone (and PinePhone Pro) is compatible with the official add-on cases, such as the keyboard, the LoRa add-on, the Qi wireless charging add-on and the fingerprint reader add-on. Details can be found under: + +* [Accessories](/documentation/Phone_Accessories/) +* [Keyboard](/documentation/Phone_Accessories/Keyboard) + +## USB + +The USB-C can be used to power the device, and offers USB2 host and OTG capabilities, and also can make use of the USB-C capability to integrate HDMI signals. Some USB-C hubs are available that offer power throughput, USB connection, an HDMI port and Ethernet connection. + +## Pogo pins + +{{< figure src="/documentation/images/Pinephone_pogo.png" title="The pogo pins, as visible under the back cover." width="400" >}} + +The PinePhone has six pogo pins on the back allowing for custom hardware extensions such as wireless charging, an IR blaster, a keyboard extension or extended battery case. The pogo pins provide access to an interrupt line, power inputs/outputs and an I2C interface. + +| | | | +| --- | --- | --- | +| Interrupt | SDA | SCL | +| DCIN | USB-5V | GND | + +DCIN and USB-5V are the names used in the schematics. The actual behavior of these pogo pins is not obvious based on their names. DCIN is connected both to the VBUS line of the USB Type-C connector and to the ACIN/VBUS inputs on the PMIC. This means that, depending on a number of factors, DCIN may be at 0 V or 5 V. USB-5V is connected at the output of an LP6226 DC/DC boost converter (5 V), which in turn is fed by the PS output of the PMIC. The boost converter is enabled or disabled by a GPIO output from the A64 SoC, controlled by software (e.g. the Linux kernel). Depending on inputs and decision made by the PMIC, PS may be at the battery voltage (fed "directly" by the battery through a [transistor](https://www.zxcompo.com/) controlled by the PMIC), or at the "USB" voltage (fed by the PMIC’s ACIN/VBUS inputs). This means that depending on a number of factors, USB-5V may be at battery voltage (between 3.0 V and 4.3 V), or at 5 V. + +Because the PinePhone may act as a USB host (providing 5 V at the USB Type-C connector’s VBUS to a connected device) or as a USB device (drawing from a 5 V source on the USB Type-C connector’s VBUS), DCIN is actually not strictly an input nor an output. Some community analysis of the PinePhone schematic (and some testing) indicates that you can connect a 5 V power supply to DCIN in order to power the phone at the PMIC’s ACIN/VBUS inputs (and, as a side effect, charge the battery). This may not be safe to do in all conditions, e.g., when the phone is acting as a USB host to a connected USB device. It should also be safe to use DCIN as a power output from the PinePhone, e.g., when a USB Type-C charger is connected, you can draw current directly from the USB Type-C port’s VBUS, which is provided by the charger. Please note that, when using DCIN as an output from the PinePhone, DCIN isn’t "always on"; it may be 0 V. It is currently not documented on how much current can be safely drawn. + +USB-5V should be safe to use as an "always on" power output from the PinePhone. Depending on a number of factors, voltage may be from 3 V to 5 V; thus, if you are using USB-5V to power your pogo-pins expansion board, you will probably need to use DC/DC converters/regulators as appropriate. USB-5V is on even while the A64 SoC is powered down. + +The I2C and interrupt lines have pull-ups on the phone side. The I2C lines are pulled up to 3v3 by the phone. + +For a breakout board see [here](https://github.com/SMR404/PinephonePogoBreakout). For an example project see Martijn’s blog post [_"Making a backcover extension for the PinePhone"_](https://blog.brixit.nl/making-a-backcover-extension-for-the-pinephone/). + +PINE64 store currently sells the [PinePhone Flex Breakout Board](https://pine64.com/product/pinephone-flex-break-out-board/?v=0446c16e2e66). With the pitch being 2.54 mm, this Flex Breakout Board may have leads soldered directly to the contacts for use in a solderless board. A non-soldered solution would be to use a [TE AMP Connector](https://www.digikey.com/en/products/detail/te-connectivity-amp-connectors/5-520315-6/2258879) that will accept a Flat Flexible Cable 2.54 mm pitch. + +## Back cover + +A step file for the back cover for creating custom cases is freely available [here](https://files.pine64.org/doc/PinePhone/PinePhone%20Back%20Cover%20ver%200.5.stp). + +## Serial console + +{{< figure src="/documentation/images/PinePhone_Serial_Cable.png" title="Pinout of the serial adapter." width="400" >}} + +The PinePhone has a serial port in the headphone connector, it’s activated by the 6th contact on the dipswitch. If the switch is set to "on", the headphone connector is in audio mode, if it is set to "off" it’s in UART mode. The UART serial connection can also be used for communication with other devices from the PinePhone. + +The UART is 115200n8. + +The pinout for the serial connector is: + +* Tip: RX +* Ring: TX +* Sleeve: GND + +You can buy a serial debug cable from the [PINE64 Store](https://pine64.com/product/pinebook-pinephone-pinetab-serial-console/). The store cable uses a 4 ring plug, as seen in the [here](https://files.pine64.org/doc/pinebook/guide/Pinebook_Earphone_Serial_Console_Developer_Guide.pdf), but a 3 ring plug works just as well. The cable uses a CH340 chipset based serial to USB converter, but any 3.3v serial connection can be used. Because it is a "host"/DTE it means that you need a _cross modem cable_ ([Null Modem](https://en.wikipedia.org/wiki/Null_modem)) with TX on Tip to be connected to RX. A cable like e.g. [FTDI TTL-232R-3V3-AJ](https://www.ftdichip.com/Products/Cables/USBTTLSerial.htm) which has TX on Tip and RX on Ring fits perfectly. diff --git a/content/documentation/PinePhone/Battery.adoc b/content/documentation/PinePhone/Battery.md similarity index 66% rename from content/documentation/PinePhone/Battery.adoc rename to content/documentation/PinePhone/Battery.md index dac94f79..fd0f2c41 100644 --- a/content/documentation/PinePhone/Battery.adoc +++ b/content/documentation/PinePhone/Battery.md @@ -9,13 +9,13 @@ menu: weight: --- -The phone ships with a protective plastic sticker between the battery and the phone to protect the device from turning on during shipping. You need to gently open the back cover, then remove the battery and finally remove the sticker and check that the pins aren't bent. Note: If the battery is stuck inside the phone, the mid screw in the lower part of the midframe needs to be slightly loosened, see link:/documentation/PinePhone/FAQ#the_battery_is_stuck_inside_the_phone[here]. +The phone ships with a protective plastic sticker between the battery and the phone to protect the device from turning on during shipping. You need to gently open the back cover, then remove the battery and finally remove the sticker and check that the pins aren’t bent. Note: If the battery is stuck inside the phone, the mid screw in the lower part of the midframe needs to be slightly loosened, see [here](/documentation/PinePhone/FAQ#the_battery_is_stuck_inside_the_phone). {{< admonition type="note" >}} - The EG25-G modem and the RTL8723CS WiFi and Bluetooth do not work without a battery and with a drained battery, even when enough power is supplied to the PinePhone via the USB Type-C port. Most operating systems won't boot without a battery or with a drained battery. + The EG25-G modem and the RTL8723CS WiFi and Bluetooth do not work without a battery and with a drained battery, even when enough power is supplied to the PinePhone via the USB Type-C port. Most operating systems won’t boot without a battery or with a drained battery. {{< /admonition >}} -The https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery%20Specification.pdf[supplied battery] is meant to be compatible with Samsung part number EB-BJ700BBC / BBE / CBE from the 2015 J7 phone. The extended life aftermarket BBU does fit, although it is a tight fit. +The [supplied battery](https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery%20Specification.pdf) is meant to be compatible with Samsung part number EB-BJ700BBC / BBE / CBE from the 2015 J7 phone. The extended life aftermarket BBU does fit, although it is a tight fit. {{< admonition type="warning" >}} Using an aftermarket battery with a higher capacity is done at own risk. Batteries with a higher capacity especially in combination with an external charger can lead to overvoltage, which fries the modem and/or the Bluetooth and WiFi chip. @@ -23,13 +23,8 @@ The https://files.pine64.org/doc/datasheet/pinephone/PinePhone%20QZ01%20Battery% The battery terminals, from the nearest to the battery edge to the nearest to the middle of battery, are as follows: -[cols="1,1,1,1"] -|=== -| +ve -| thermistor -| -ve -| not connected -|=== +| | | | | +| --- | --- | --- | --- | +| +ve | thermistor | -ve | not connected | The battery includes a protection circuit that isolates it in a number of fault conditions, including if it is discharged too far. The fully discharged battery can be recharged by connecting the phone to a charger with a sufficient output. Once it has charged sufficiently you will be able to boot the phone. - diff --git a/content/documentation/PinePhone/FAQ.adoc b/content/documentation/PinePhone/FAQ.md similarity index 51% rename from content/documentation/PinePhone/FAQ.adoc rename to content/documentation/PinePhone/FAQ.md index 2f3869cb..d14dbd59 100644 --- a/content/documentation/PinePhone/FAQ.adoc +++ b/content/documentation/PinePhone/FAQ.md @@ -11,64 +11,64 @@ menu: A list of frequently asked question. -== Hardware +## Hardware -=== Revisions +### Revisions -==== What are Community Editions? -Community Editions of the PinePhone were versions of the PinePhone which came preinstalled with the operating system of a partner project and featured the logo of the project on the back panel. The Community Edition was intended to help partner projects developing these systems: "Community editions are meant to bring exposure to partner-projects operating systems and communities, as well as help finance ongoing development.", https://www.pine64.org/2020/04/02/pinephone-ubports-community-edition-pre-orders-now-open/[source]. +#### What are Community Editions? +Community Editions of the PinePhone were versions of the PinePhone which came preinstalled with the operating system of a partner project and featured the logo of the project on the back panel. The Community Edition was intended to help partner projects developing these systems: "Community editions are meant to bring exposure to partner-projects operating systems and communities, as well as help finance ongoing development.", [source](https://www.pine64.org/2020/04/02/pinephone-ubports-community-edition-pre-orders-now-open/). -==== Is the Community Edition hardware the latest revision? +#### Is the Community Edition hardware the latest revision? The Community Edition program (featuring the mainboard numbers 1.2 through 1.2b and branded back covers) which provided the branded PinePhones has since ended, and a Beta Edition has since been released. The only difference between each Community Edition is the inclusion of crucial bug fixes, with the last issue being fixed with the 1.2b motherboard shipping with the Manjaro CE PinePhones. The 1.2b motherboard is also currently used in the Beta Edition PinePhones, however the Beta Edition units do not ship with any back cover branding. There are currently no plans for further hardware revisions. Aside from the back cover, the only other difference between each Community Edition is that starting with the postmarketOS PinePhone, a convergence package option was released that adds another gigabyte of ram to the phone and a 32GB eMMC instead of a 16GB eMMC. Convergence packages also included a dock for plugging in USB peripherals and connecting to an HDMI monitor, however you can purchase a generic USB-C dock to use with a 2GB PinePhone. -The predecessor to the Convergence Edition PinePhones was the Braveheart Edition intended for developers to bring up the platform, which had the version number 1.1. For more details about the topic see link:/documentation/PinePhone/Revisions[PinePhone]. +The predecessor to the Convergence Edition PinePhones was the Braveheart Edition intended for developers to bring up the platform, which had the version number 1.1. For more details about the topic see [PinePhone](/documentation/PinePhone/Revisions). -==== Will there be other Community Editions? +#### Will there be other Community Editions? -Five Community Editions have been announced: https://www.pine64.org/2020/04/02/pinephone-ubports-community-edition-pre-orders-now-open/[UBports], https://www.pine64.org/2020/06/15/june-update-postmarketos-ce-pinephone-shipping-pine64-cluster/[postmarketOS], https://www.pine64.org/2020/08/31/pinephone-manjaro-community-edition/[Manjaro], https://www.pine64.org/2020/12/01/kde-community-edition-is-now-available/[KDE], and https://www.pine64.org/2021/01/17/mobian-community-edition/[Mobian]. Since the release of the Mobian edition, the Beta Edition PinePhones have been released and the Community Edition Program has ended. +Five Community Editions have been announced: [UBports](https://www.pine64.org/2020/04/02/pinephone-ubports-community-edition-pre-orders-now-open/), [postmarketOS](https://www.pine64.org/2020/06/15/june-update-postmarketos-ce-pinephone-shipping-pine64-cluster/), [Manjaro](https://www.pine64.org/2020/08/31/pinephone-manjaro-community-edition/), [KDE](https://www.pine64.org/2020/12/01/kde-community-edition-is-now-available/), and [Mobian](https://www.pine64.org/2021/01/17/mobian-community-edition/). Since the release of the Mobian edition, the Beta Edition PinePhones have been released and the Community Edition Program has ended. -==== In simple terms, what are the differences between Braveheart and the new Community Edition? +#### In simple terms, what are the differences between Braveheart and the new Community Edition? -The Braveheart PinePhone was the first public revision of the PinePhone which was intended solely for developers and Linux enthusiasts. The UBports Community Edition was the next revision of the PinePhone with an updated mainboard based on feedback from the Braveheart Edition, see link:/documentation/PinePhone/Revisions[PinePhone]. All current revisions of the PinePhone continue to be intended for developers and enthusiasts, however, PINE64 will be starting to offer partnered retail units of the PinePhone which will have a better warranty and technical support (keep in mind even then it is not intended for a broader audience at this time, as the software still needs work and the hardware does not hold up well to modern consumer standards). +The Braveheart PinePhone was the first public revision of the PinePhone which was intended solely for developers and Linux enthusiasts. The UBports Community Edition was the next revision of the PinePhone with an updated mainboard based on feedback from the Braveheart Edition, see [PinePhone](/documentation/PinePhone/Revisions). All current revisions of the PinePhone continue to be intended for developers and enthusiasts, however, PINE64 will be starting to offer partnered retail units of the PinePhone which will have a better warranty and technical support (keep in mind even then it is not intended for a broader audience at this time, as the software still needs work and the hardware does not hold up well to modern consumer standards). -==== Will there be a newer revision after the Community Editions? +#### Will there be a newer revision after the Community Editions? Starting with the UBports Community Edition the PinePhone has gotten CE and FCC certifications, repeating the certification process due to changes in the hardware design is very expensive, so the 1.2b motherboard is viewed as the final revision. The PinePhone (and parts for them) will be produced and sold for at least 5 years. -==== Will there be hardware differences between the Community Editions? +#### Will there be hardware differences between the Community Editions? Besides the varied back covers, starting with the launch of the PostmarketOS CE there has been the release of a convergence package option for the PinePhone which includes more ram and storage, and an included dock for convenience. There has also been minor hardware changes with the UBports CE (mainboard 1.2) and the Manjaro CE (mainboard revision 1.2b). -=== General +### General -==== How powerful is the PinePhone's hardware? +#### How powerful is the PinePhone's hardware? -The PinePhone is about on par with a Raspberry Pi 3 in terms of CPU performance, however it's Mali 400 MP2 is much weaker than the Pi 3's VideoCore IV. The Mali 400 was the first mobile OpenGL ES 2.0 GPU on the market back in 2008 when it was released, compared to the much newer Videocore IV released in 2010. The PinePhone has been shown to handle smooth H.264 1440p30 video playback using Cedrus and gstreamer as documented https://xnux.eu/log/#toc-2020-09-17-video-acceleration-experiments-with-pinephone[here]. The device should be more than capable of a smooth phone experience when used in conjunction with well optimized software that makes use of its hardware features. It is also capable of running many light games (including 3D ones such as SuperTuxKart), and retro gaming. Expect further speed improvements over time as the drivers are improved, and in the meanwhile you can look into slightly link:/documentation/General/Overclocking[Overclocking] the device (at your own risk). +The PinePhone is about on par with a Raspberry Pi 3 in terms of CPU performance, however it’s Mali 400 MP2 is much weaker than the Pi 3’s VideoCore IV. The Mali 400 was the first mobile OpenGL ES 2.0 GPU on the market back in 2008 when it was released, compared to the much newer Videocore IV released in 2010. The PinePhone has been shown to handle smooth H.264 1440p30 video playback using Cedrus and gstreamer as documented [here](https://xnux.eu/log/#toc-2020-09-17-video-acceleration-experiments-with-pinephone). The device should be more than capable of a smooth phone experience when used in conjunction with well optimized software that makes use of its hardware features. It is also capable of running many light games (including 3D ones such as SuperTuxKart), and retro gaming. Expect further speed improvements over time as the drivers are improved, and in the meanwhile you can look into slightly [Overclocking](/documentation/General/Overclocking) the device (at your own risk). -=== Sound +### Sound The default ringtone for Mobian Phosh can be found at /usr/share/sounds/freedesktop/stereo/phone-incoming-call.oga -=== Bluetooth +### Bluetooth -For some reason, using pipewire-pulse with bluetooth headphones (In my case, Sony WH1000X-M3) using the default LDAC codec causes the headphones to constantly connect and disconnect until they eventually give up pairing. A work around I've found is to quickly go into Sound settings and switch the codec to "SBC". +For some reason, using pipewire-pulse with bluetooth headphones (In my case, Sony WH1000X-M3) using the default LDAC codec causes the headphones to constantly connect and disconnect until they eventually give up pairing. A work around I’ve found is to quickly go into Sound settings and switch the codec to "SBC". -=== Modem +### Modem -==== The modem isn't working +#### The modem isn't working In order to use the modem and Wi-Fi/Bluetooth, you need to ensure the battery is inside the device and has a sufficient charge. Even when supplying the phone with enough power, the modem and Wi-Fi chip will not work without a connected battery. Further, double check that you have not put the SD card into the sim card slot, or vice versa. -==== Does the PinePhone only wake up from sleep for calls and texts? +#### Does the PinePhone only wake up from sleep for calls and texts? Yes. Unless the PinePhone is configured to wake up every few minutes from deep sleep in Crust (At the cost of battery life. However, in the future there may be other solutions), then there is not any way to get any notifications for applications. The modem on the PinePhone will wake the device for incoming calls and texts however, and the real-time clock is also capable of waking the device for alarms. -=== Battery +### Battery -==== The battery is stuck inside the phone +#### The battery is stuck inside the phone The battery can be stuck in the phone if the screws of the frame are overtightened. @@ -76,13 +76,13 @@ First, try loosening the screws to the left and right of the battery compartment If your battery is still stuck inside the PinePhone, completely unscrew all the screws of the midframe. Then pull out the battery (you may have to fully take off the midframe in some cases to get it out). And then rescrew the midframe, but only tighten the screws to the point where they are just barely tight to hold. This should allow you to remove the battery easily. -==== The battery is discharging while the phone is powered off (Braveheart Edition) +#### The battery is discharging while the phone is powered off (Braveheart Edition) -The issue is not present on the Community Edition. Due to a hardware bug, after power off, the phone still consumes 20–30mA which drains the battery in 3-4 days. A manual procedure to fix the hardware bug is described https://xnux.eu/devices/pp-pmic-fix.jpg[here]. +The issue is not present on the Community Edition. Due to a hardware bug, after power off, the phone still consumes 20–30mA which drains the battery in 3-4 days. A manual procedure to fix the hardware bug is described [here](https://xnux.eu/devices/pp-pmic-fix.jpg). -==== The battery only charges to ~84% +#### The battery only charges to ~84% -Some pre-made operating systems using megi's kernel limit the maximum amount of charge to roughly ~84% in the hope of prolonging the battery life, as repeatedly reaching the upper level of battery charge reduces the battery's lifetime (this is *not* a safety feature!). The same effect however also applies when repeatedly draining the battery to a low level - users are therefore advised to consider if that setting is reasonable depending on their usage. The setting can be overwritten via Sysfs, to let the battery fully charge (this can lower the replaceable battery's lifetime considerably depending on the charging behavior!): +Some pre-made operating systems using megi’s kernel limit the maximum amount of charge to roughly ~84% in the hope of prolonging the battery life, as repeatedly reaching the upper level of battery charge reduces the battery’s lifetime (this is **not** a safety feature!). The same effect however also applies when repeatedly draining the battery to a low level - users are therefore advised to consider if that setting is reasonable depending on their usage. The setting can be overwritten via Sysfs, to let the battery fully charge (this can lower the replaceable battery’s lifetime considerably depending on the charging behavior!): {{< admonition type="warning" >}} The following instructions are directed towards expert-level users and developers! @@ -90,183 +90,155 @@ Some pre-made operating systems using megi's kernel limit the maximum amount of `echo 4350000 > /sys/class/power_supply/axp20x-battery/voltage_max_design` -=== Privacy Switches +### Privacy Switches -==== What are the privacy switches doing? +#### What are the privacy switches doing? -[cols="1,1,1,1"] -|=== -|Number -|Name -|Explanation -|Description +| | | | | +| --- | --- | --- | --- | +| Number | Name | Explanation | Description | +| 1 | Modem | Pulls Q1501 gate up (FET disabling modem power) | "On" enables cellular communication and GNSS hardware, "off" disables it. | +| 2 | Wi-Fi / Bluetooth | Pulls up CHIP_EN | "On" enables Wi-Fi and Bluetooth communication hardware, "off" disables it. | +| 3 | Microphone | Breaks microphone bias voltage from the SoC | "On" enables audio input from on-board microphones (not 3.5mm jack), "off" disables it. | +| 4 | Rear camera | Pulls up PWDN on OV5640 | "On" enables the rear camera, "off" disables it. | +| 5 | Front camera | Pulls up PWDN on GC2145 | "On" enables the front camera, "off" disables it. | +| 6 | Headphone | Pulls up IN2 on analog switch BCT4717ETB | "On" enables audio input and output via the 3.5mm audio jack, "off" switches the jack to hardware UART mode. | -| 1 -| Modem -| Pulls Q1501 gate up (FET disabling modem power) -| "On" enables cellular communication and GNSS hardware, "off" disables it. +### Memory -| 2 -| Wi-Fi / Bluetooth -| Pulls up CHIP_EN -| "On" enables Wi-Fi and Bluetooth communication hardware, "off" disables it. - -| 3 -| Microphone -| Breaks microphone bias voltage from the SoC -| "On" enables audio input from on-board microphones (not 3.5mm jack), "off" disables it. - -| 4 -| Rear camera -| Pulls up PWDN on OV5640 -| "On" enables the rear camera, "off" disables it. - -| 5 -| Front camera -| Pulls up PWDN on GC2145 -| "On" enables the front camera, "off" disables it. - -| 6 -| Headphone -| Pulls up IN2 on analog switch BCT4717ETB -| "On" enables audio input and output via the 3.5mm audio jack, "off" switches the jack to hardware UART mode. -|=== - -=== Memory - -==== What's the speed difference between the eMMC and SD cards? +#### What's the speed difference between the eMMC and SD cards? Maximum transfer speed of the eMMC is around 85 MB/s, while SD cards are limited to approximately 23 MB/s (even with faster cards). -=== GPS +### GPS -==== GPS doesn't work +#### GPS doesn't work -Like almost all smartphones, the PinePhone GPS antenna is small and can only get a first fix unassisted if the GPS signal is very strong. To make first fix faster and more reliable, phones download assistance data either from the phone network or from the internet. The GPS in the PinePhone modem supports the internet based assistance method, as detailed in the modem documentation, but this is currently only supported by a few distributions, and a https://gist.github.com/alastair-dm/263209b54d01209be28828e555fa6628[proof of concept script] that shows it can work. +Like almost all smartphones, the PinePhone GPS antenna is small and can only get a first fix unassisted if the GPS signal is very strong. To make first fix faster and more reliable, phones download assistance data either from the phone network or from the internet. The GPS in the PinePhone modem supports the internet based assistance method, as detailed in the modem documentation, but this is currently only supported by a few distributions, and a [proof of concept script](https://gist.github.com/alastair-dm/263209b54d01209be28828e555fa6628) that shows it can work. -Until aGPS support becomes standard you'll have to make some manual changes - see for example https://wiki.mobian.org/doku.php?id=location[Mobian wiki] +Until aGPS support becomes standard you’ll have to make some manual changes - see for example [Mobian wiki](https://wiki.mobian.org/doku.php?id=location) -==== GPS can't determine direction +#### GPS can't determine direction -Currently, due to the magnetometer not being hooked up in software at this time, it is not possible for GPS software to use the phone's compass functionality. This means while you are walking it will not be possible to determine the direction of travel. This is not as much of an issue for vehicles as the faster speeds mean that it is possible to estimate the direction of travel, however it will still be an issue should the vehicle travel through a tunnel and lose GPS signal. +Currently, due to the magnetometer not being hooked up in software at this time, it is not possible for GPS software to use the phone’s compass functionality. This means while you are walking it will not be possible to determine the direction of travel. This is not as much of an issue for vehicles as the faster speeds mean that it is possible to estimate the direction of travel, however it will still be an issue should the vehicle travel through a tunnel and lose GPS signal. -== Software +## Software -=== Installation +### Installation -==== How can I install an operating system on the SD card / eMMC? +#### How can I install an operating system on the SD card / eMMC? -See link:/documentation/PinePhone/Installation_instructions[Installation instructions]. +See [Installation instructions](/documentation/PinePhone/Installation_instructions). -=== Updating +### Updating -Read the link:/documentation/PinePhone/Software/Updating_instructions[Update instructions]. +Read the [Update instructions](/documentation/PinePhone/Software/Updating_instructions). -=== Booting +### Booting -==== What's the boot order for SD cards and eMMC? +#### What's the boot order for SD cards and eMMC? The PinePhone will automatically boot from microSD if a bootable card is inserted. If no (bootable) microSD is found, it will boot from eMMC. -==== How can I select different operating systems at boot? +#### How can I select different operating systems at boot? There was a project by Danct12 which allowed the user to select different operating systems at boot, but the repository has since been archived: https://github.com/dreemurrs-embedded/Pineloader. -==== I turned on my Manjaro CE PinePhone. The red LED and screen backlight are briefly lit, then both are not and it will not boot. +#### I turned on my Manjaro CE PinePhone. The red LED and screen backlight are briefly lit, then both are not and it will not boot. This can be the result of at least one situation: -. The eMMC installation became corrupt or otherwise unbootable -. An SD card is present but not bootable (consider link:/documentation/PinePhone/Troubleshooting[PinePhone Troubleshooting]) +1. The eMMC installation became corrupt or otherwise unbootable +2. An SD card is present but not bootable (consider [PinePhone Troubleshooting](/documentation/PinePhone/Troubleshooting)) -If there is an installation of Manjaro on both the eMMC & an SD card, the SD card will always boot first on the device. Try taking the SD card out and booting the installation that is on the eMMC. If the problem persists, it is likely there is an issue with both installations and you will need to reinstall your distribution. You may also want to check with your distribution's maintainers if boot issues are a common problem in a recent update. +If there is an installation of Manjaro on both the eMMC & an SD card, the SD card will always boot first on the device. Try taking the SD card out and booting the installation that is on the eMMC. If the problem persists, it is likely there is an issue with both installations and you will need to reinstall your distribution. You may also want to check with your distribution’s maintainers if boot issues are a common problem in a recent update. -==== I did not install an update in Ubuntu Touch and I'm stuck on the PINE64 logo after rebooting. +#### I did not install an update in Ubuntu Touch and I'm stuck on the PINE64 logo after rebooting. -. Use a USB A-C cable to plug your phone into your PC -. Hold the PinePhone's power button for 4 seconds or more to power it off. -. Wait 5 seconds -. Hold the Volume Up and Power buttons on the PinePhone to boot into recovery. You should see the LED light red, then yellow, then green. The "Installing update" screen will appear, but a progress bar to indicate update progress will not. Ignore the "Installing update" part. -. Your PC may automatically mount the PinePhone's partitions. If it does, Safely Remove or Eject all of them. -. Open a terminal on your PC. Type `telnet 172.16.42.1` -. You should receive the text 'Welcome to Rescue SD Shell|' -. In the new Rescue SD shell, type `umount /dev/mmcblk2p10; e2fsck -fy /dev/mmcblk2p10 && sync` -. Once this command pipeline finishes, type `sync && reboot -f` +1. Use a USB A-C cable to plug your phone into your PC +2. Hold the PinePhone’s power button for 4 seconds or more to power it off. +3. Wait 5 seconds +4. Hold the Volume Up and Power buttons on the PinePhone to boot into recovery. You should see the LED light red, then yellow, then green. The "Installing update" screen will appear, but a progress bar to indicate update progress will not. Ignore the "Installing update" part. +5. Your PC may automatically mount the PinePhone’s partitions. If it does, Safely Remove or Eject all of them. +6. Open a terminal on your PC. Type `telnet 172.16.42.1` +7. You should receive the text 'Welcome to Rescue SD Shell|' +8. In the new Rescue SD shell, type `umount /dev/mmcblk2p10; e2fsck -fy /dev/mmcblk2p10 && sync` +9. Once this command pipeline finishes, type `sync && reboot -f` Your PinePhone should reboot into Ubuntu Touch. Now head to Settings - Updates and install the new update! -If these steps did not solve your issue, please create a new thread here on the PINE64 forums, note what the problem looks like, then say that you've tried these steps already. +If these steps did not solve your issue, please create a new thread here on the PINE64 forums, note what the problem looks like, then say that you’ve tried these steps already. This is caused by corruption on the userdata partition. Normally this should be fixed by 'e2fsck' in the initramfs, however, an error in image creation means that that version of e2fsck is unable to correct the corruption. This has been fixed in all new PinePhone updates, so if you update from the factory image to any other image available to the PinePhone now, you will not experience this issue any longer. -==== The PinePhone does not boot +#### The PinePhone does not boot -Most operating systems on the PinePhone do not boot if the battery is not connected or if it is fully drained. If you received a new PinePhone make sure to remove the battery isolator as explained under link:/documentation/PinePhone/Getting_started[PinePhone Getting started]. +Most operating systems on the PinePhone do not boot if the battery is not connected or if it is fully drained. If you received a new PinePhone make sure to remove the battery isolator as explained under [PinePhone Getting started](/documentation/PinePhone/Getting_started). -If you removed the battery isolator and the battery contacts are intact, the battery is either fully drained or there is no valid OS (or a corrupted OS or bootloader) installed on the eMMC or the SD card. Make sure to charge the phone with a compatible charger (500 mAh is not enough for modern phones), as well as the installation instruction under link:/documentation/PinePhone/Installation_instructions[Installation instructions]. If the OS got corrupted it is highly recommend to simply reflash. +If you removed the battery isolator and the battery contacts are intact, the battery is either fully drained or there is no valid OS (or a corrupted OS or bootloader) installed on the eMMC or the SD card. Make sure to charge the phone with a compatible charger (500 mAh is not enough for modern phones), as well as the installation instruction under [Installation instructions](/documentation/PinePhone/Installation_instructions). If the OS got corrupted it is highly recommend to simply reflash. -If nothing works please don't hesitate to contact the community, they are eager to help and booting issues are usually very easy to solve (as they are typically either battery or installation related). The phones itself are all tested individually at the factory. Do not contact PINE64's support for booting issues. +If nothing works please don’t hesitate to contact the community, they are eager to help and booting issues are usually very easy to solve (as they are typically either battery or installation related). The phones itself are all tested individually at the factory. Do not contact PINE64’s support for booting issues. {{< figure src="/documentation/images/Pinephone_warning.png" title="A protection foil isolates the battery for the shipping." >}} {{< figure src="/documentation/images/Pinephone_backside.png" title="The microSD belongs in the upper slot, the micro SIM in the lower slot." >}} -==== Can I install a different OS on my Community Edition? +#### Can I install a different OS on my Community Edition? -Yes. While all the Community Edition PinePhones come with an OS preinstalled, you are free to use any OS on the integrated storage (the eMMC) or an SD card, see link:/documentation/PinePhone/Installation_instructions[Installation instructions] and link:/documentation/PinePhone/Software/Releases[Operating systems] on how to install them. +Yes. While all the Community Edition PinePhones come with an OS preinstalled, you are free to use any OS on the integrated storage (the eMMC) or an SD card, see [Installation instructions](/documentation/PinePhone/Installation_instructions) and [Operating systems](/documentation/PinePhone/Software/Releases) on how to install them. -=== Other +### Other -==== How can I enable SSH? +#### How can I enable SSH? In Ubuntu Touch you can run "sudo start ssh" to get a one-time start, or edit /etc/init/ssh.override and remove the manual line to make it auto-start. In other distributions you may have to install SSH through its package manager and then proceed to use its init system to enable it. For Manjaro, Arch, and Mobian you can use "systemctl enable sshd" and "systemctl start sshd" command to enable and start the ssh daemon. -==== What works, what doesn't? +#### What works, what doesn't? For Ubuntu Touch see https://gitlab.com/ubports/community-ports/pinephone#what-works-what-doesnt. Other distributions will have different levels of functionality. Please refer to the release page of your chosen distribution for further information. -==== I can't connect to a 2.4Ghz Wi-Fi network in Ubuntu Touch. +#### I can't connect to a 2.4Ghz Wi-Fi network in Ubuntu Touch. Reboot your device by holding the power button until the "Power" dialog appears, then pressing "Restart". If that does not fix the issue, note that all the following conditions must be met to use Wi-Fi on the PinePhone: -. The plastic tab between the battery and the device's battery contacts has been removed -. The battery is installed -. The Wi-Fi privacy switch (switch number two) on the rear of the device is switched "ON" +1. The plastic tab between the battery and the device’s battery contacts has been removed +2. The battery is installed +3. The Wi-Fi privacy switch (switch number two) on the rear of the device is switched "ON" Wi-Fi in the PinePhone only seems stable after a warm reboot like this. -==== What's the status of Android for the PinePhone? +#### What's the status of Android for the PinePhone? -Currently, there isn't any major push to get Android running well on the PinePhone. The developer Icenowy did get a partially working Android image, but it was slow and buggy, lacking some major functions. As of now, use Anbox as an alternative for your android apps, which is currently not included in Ubuntu Touch. In other distributions your millage may vary on what applications will run and how well. +Currently, there isn’t any major push to get Android running well on the PinePhone. The developer Icenowy did get a partially working Android image, but it was slow and buggy, lacking some major functions. As of now, use Anbox as an alternative for your android apps, which is currently not included in Ubuntu Touch. In other distributions your millage may vary on what applications will run and how well. -==== Why are my apps loading slower than on my Android phone? +#### Why are my apps loading slower than on my Android phone? Android has multiple techniques in place to speed up launching applications after the first launch, such as the "Dalvik cache". Using an alternative filesystem such as F2FS on the eMMC (which is considerably faster than running software on the SD card) may help improve performance slightly. Over time you can expect further optimizations and improvements in various distributions that will help speed up the PinePhone. -==== How can I turn on the backlight? +#### How can I turn on the backlight? On some devices the default calibration of the backlight is not sufficient and the minimum setting of the brightness of the used OS can be too low, causing the backlight to completely shut down. In that case it is recommended to connect the phone to a charger and/or to shine a flashlight at the screen to adjust the brightness to a higher setting again. On many Linux distributions the brightness setting is an integer between 0 and 1000 and available at runtime in /sys/class/backlight/backlight/brightness and stored at shutdown and loaded at boot from /var/lib/systemd/backlight/platform-backlight:backlight:backlight by systemd-backlight@backlight:backlight.service. Changing the brightness setting can be done at runtime, for example over SSH, by executing as root `echo 500 > /sys/class/backlight/backlight/brightness`. The stored brightness setting can be modified using another system, by mounting the root filesystem of the system you want to fix and by executing `echo 500 > [MOUNT LOCATION]/var/lib/systemd/backlight/platform-backlight\:backlight\:backlight`. -==== How can I contribute regarding the WiFi and Bluetooth firmware? +#### How can I contribute regarding the WiFi and Bluetooth firmware? -The PinePhone uses https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf[Realtek RTL8723CS] for its Wi-Fi and Bluetooth connectivity. Unfortunately, just like the other Realtek wireless chipsets _(https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers[see more info])_ - the RTL8723CS chipset requires proprietary firmware for Wi-Fi and Bluetooth functionality. For those who want to create replacement free software firmware, resources like https://libreplanet.org/wiki/Group:Hardware/research/e-readers/Kobo/Aura_H2O_Edition_2#Firmwares[this] and https://8051enthusiast.github.io/2021/07/05/002-wifi_fun.html[this] (different chipsets, but still Realtek) could be a great starting point for further research. +The PinePhone uses [Realtek RTL8723CS](https://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf) for its Wi-Fi and Bluetooth connectivity. Unfortunately, just like the other Realtek wireless chipsets _([see more info](https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers))_ - the RTL8723CS chipset requires proprietary firmware for Wi-Fi and Bluetooth functionality. For those who want to create replacement free software firmware, resources like [this](https://libreplanet.org/wiki/Group:Hardware/research/e-readers/Kobo/Aura_H2O_Edition_2#Firmwares) and [this](https://8051enthusiast.github.io/2021/07/05/002-wifi_fun.html) (different chipsets, but still Realtek) could be a great starting point for further research. -=== SMS +### SMS -==== The phone does not receive SMS +#### The phone does not receive SMS Sometimes incoming SMS messages are not being received, but outgoing ones, phone calls and data are working fine. One cause of this is if ModemManager fails to receive messages from the modem and they build up. These messages are not cleared by either rebooting reflashing the phone. -New versions of the https://github.com/the-modem-distro/pinephone_modem_sdk[(mostly) foss community firmware] implement a workaround that helps ModemManager receive stuck messages. +New versions of the [(mostly) foss community firmware](https://github.com/the-modem-distro/pinephone_modem_sdk) implement a workaround that helps ModemManager receive stuck messages. Most UIs (at least phosh, plasma, and sxmo) use ModemManager to communicate with the modem including for phone calls, cellular data, GPS and SMS. @@ -282,48 +254,48 @@ Any messages that are listed have gotten stuck, they can be deleted like this: For more information on the messaging related actions available in mmcli you can check the help with `mmcli --help-messaging.` This article is also helpful in learning: https://electronproton.com/mmcli-command-examples/. -== Shipping +## Shipping -=== I did not receive an order confirmation -Check your "spam" folder. It was reported that some users did not receive an order confirmation. You will also still get a shipping notification when the device ships out, even if you didn't get an order confirmation email. +### I did not receive an order confirmation +Check your "spam" folder. It was reported that some users did not receive an order confirmation. You will also still get a shipping notification when the device ships out, even if you didn’t get an order confirmation email. -=== When does the phone ship? +### When does the phone ship? -For up-to-date information when the phone's shipping date is estimated, see the edits in the corresponding forum thread. +For up-to-date information when the phone’s shipping date is estimated, see the edits in the corresponding forum thread. -=== It is shipping day but I did not receive a shipping notification +### It is shipping day but I did not receive a shipping notification -For shipments with DHL the shipping notification is sent out as soon as the packet reached DHL's warehouse and scanned (it can take up to 24 hours after scanning after the shipment is added to DHL's database). For all other shipments (via Ascendia) the notification is sent out sometime after shipment. +For shipments with DHL the shipping notification is sent out as soon as the packet reached DHL’s warehouse and scanned (it can take up to 24 hours after scanning after the shipment is added to DHL’s database). For all other shipments (via Ascendia) the notification is sent out sometime after shipment. -=== When does my phone ship if I order now? +### When does my phone ship if I order now? -Orders made after Friday, 22nd May 2020 are shipped after the first bulk of pre-orders has been shipped. The exact date is not known yet due to various reasons, it may be a few weeks after the first bulk shipped. https://forum.pine64.org/showthread.php?tid=9942[The forum] will be edited with updated information and you will receive a shipping notification when the device was shipped. +Orders made after Friday, 22nd May 2020 are shipped after the first bulk of pre-orders has been shipped. The exact date is not known yet due to various reasons, it may be a few weeks after the first bulk shipped. [The forum](https://forum.pine64.org/showthread.php?tid=9942) will be edited with updated information and you will receive a shipping notification when the device was shipped. -=== What about import taxes? +### What about import taxes? Import taxes have to be paid by the buyer depending on the jurisdiction of the country of the buyer. Please check with your local laws if there are import taxes to pay and if so how to do the tax filing. -== Accessories +## Accessories -=== Protection +### Protection -==== Which screen protector should I use? +#### Which screen protector should I use? -Protecting your screen is important, especially for devices like the PinePhone that doesn't have access to the newest glass technology. -The Braveheart and Community Editions of the PinePhone comes with a plastic film screen protector installed, and PINE64 sells a tempered glass screen protector https://pine64.com/product/pinephone-tempered-glass-screen-protector/[in their store]. +Protecting your screen is important, especially for devices like the PinePhone that doesn’t have access to the newest glass technology. +The Braveheart and Community Editions of the PinePhone comes with a plastic film screen protector installed, and PINE64 sells a tempered glass screen protector [in their store](https://pine64.com/product/pinephone-tempered-glass-screen-protector/). -You can also buy a third-party screen protector, as the screen protectors for the iPhone 11 Pro Max/XS Max fit the PinePhone pretty well based on https://forum.pine64.org/showthread.php?tid=8458&pid=65409#pid65409[this] forum post. +You can also buy a third-party screen protector, as the screen protectors for the iPhone 11 Pro Max/XS Max fit the PinePhone pretty well based on [this](https://forum.pine64.org/showthread.php?tid=8458&pid=65409#pid65409) forum post. -=== Batteries +### Batteries -==== I want a replacement battery, which one should I buy? +#### I want a replacement battery, which one should I buy? Replacement batteries for US customers are available in the store. -Currently the PinePhone battery is known to be compatible with replacement batteries for the Samsung J700. Specifically, models "EB-BJ700BBC" and "EB-BJ700BBE" are compatible with all PinePhone models, and "EB-BJ700CBE" is compatible with Community Editions https://www.reddit.com/r/PINE64official/comments/kcof97/pinephone_replacement_battery_found_and_tested/gfrx4p2/?utm_source=reddit&utm_medium=web2x&context=3[after UBPorts] (due to plastic tabs on its bottom which only the newer phones https://forum.pine64.org/showthread.php?tid=11901[have tolerance for]). +Currently the PinePhone battery is known to be compatible with replacement batteries for the Samsung J700. Specifically, models "EB-BJ700BBC" and "EB-BJ700BBE" are compatible with all PinePhone models, and "EB-BJ700CBE" is compatible with Community Editions [after UBPorts](https://www.reddit.com/r/PINE64official/comments/kcof97/pinephone_replacement_battery_found_and_tested/gfrx4p2/?utm_source=reddit&utm_medium=web2x&context=3) (due to plastic tabs on its bottom which only the newer phones [have tolerance for](https://forum.pine64.org/showthread.php?tid=11901)). -=== External hardware +### External hardware -==== Will PINE64 sell other add-ons made for the PinePhone? +#### Will PINE64 sell other add-ons made for the PinePhone? -Yes, currently there is a keyboard case https://forum.pine64.org/showthread.php?tid=8537&pid=55396#pid55396[with similarities to the Psion 5] which includes an internal battery, and a https://www.pine64.org/2020/05/15/may-update-pinetab-pre-orders-pinephone-qi-charging-more/[Qi wireless charging] add-on planned, both of which PINE64 intends to directly sell. There is the potential for future add-ons such as a game pad, however that is currently just an idea and not in any way planned. \ No newline at end of file +Yes, currently there is a keyboard case [with similarities to the Psion 5](https://forum.pine64.org/showthread.php?tid=8537&pid=55396#pid55396) which includes an internal battery, and a [Qi wireless charging](https://www.pine64.org/2020/05/15/may-update-pinetab-pre-orders-pinephone-qi-charging-more/) add-on planned, both of which PINE64 intends to directly sell. There is the potential for future add-ons such as a game pad, however that is currently just an idea and not in any way planned. diff --git a/content/documentation/PinePhone/Further_information/Components.adoc b/content/documentation/PinePhone/Further_information/Components.adoc deleted file mode 100644 index 60189b34..00000000 --- a/content/documentation/PinePhone/Further_information/Components.adoc +++ /dev/null @@ -1,457 +0,0 @@ ---- -title: "Components" -draft: false -menu: - docs: - title: - parent: "PinePhone/Further_information" - identifier: "PinePhone/Further_information/Components" - weight: ---- - -[cols="1,1"] -|=== -| Component | Model - -| Touchscreen -| Goodix GT917S - -| Rear camera -| OmniVision OV5640 - -| Camera flash -| SGMICRO SGM3140 - -| Front camera -| GalaxyCore GC2145 - -| LCD -| Xingbangda XBD599 - -| WiFi -| Realtek RTL8723CS - -| Bluetooth -| Realtek RTL8723CS - -| Modem -| http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf[Quectel EG25-G] - -| GNSS/GPS -| http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf[Quectel EG25-G] - -| Magnetometer -| ST LIS3MDL - -| Ambient light / Proximity -| SensorTek STK3335 - -| Accelerometer / Gyroscope -| InvenSense MPU-6050 - -| Vibration motor -| Unknown model - -| Notification LED -| LED0603RGB - -| Volume buttons -| Buttons connected to the KEYADC - -| Power button -| X-Powers AXP803 - -| Battery fuel gauge -| X-Powers AXP803 -|=== - -== Components list - -The following list of components are found in the https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2b%20Released%20Schematic.pdf[schematic] for the PinePhone 1.2b. - -=== Abreviations used in schematic - -The following https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/electronics-circuit-symbols-overview.php[abbreviations] are used as the starting letter(s) to identify the components in the PinePhone schematics: - -* *ANT*: antenna -* *C*: https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/capacitors-polar-nonpolar-variable.php[capacitor] -* *D*: https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/diode-semiconductor.php[diode] -* *DU*: Only used in the "DU1", which is an integrated circuit for memory -* *ED*: Zener diode to protect against electrostatic discharge -* *FB*: https://en.wikipedia.org/wiki/Ferrite_bead[ferrite bead] -* *J*: https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/wires-switches-connectors.php[wire link] (i.e. a connector) -* *R*: https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/resistors-fixed-variable.php[resistor] -* *L*: https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/inductors-chokes-coils-transformers.php[inductor] -* *NC/*: not connected (i.e. the part probably isn't placed on the board, but there are circuits in the PCB for it) -* *Q*: transistor -* *SW*: switch -* *T*: test point -* *U*: integrated circuit (i.e. a silicon chip) -* *X*: crystal oscillator (used for clocks) - -=== P.4 LPDDR3 FPGA178 - -Note: The title of this schematic page should be changed from "LPDDR3 FPGA178" to "LPDDR3 FBGA178", because the RAM chip is a 178-pin fine pitch ball grid array (FBGA), not a field-programmable gate array (FPGA). - -DU1: - -* Artmem http://files.pine64.org/doc/datasheet/pinephone/ATL3A1632H12A_mobile_lpddr3_11x11.5_v1.0_1600.pdf[ATL3A1632H12A] 2GB 800MHz LPDDR3-1600 SDRAM, FBGA-178 11.0x11.5x0.93 mm -* Note: RAM will be clocked slower, since the Allwinner A64 only supports up to 3GB DDR3-1333 (666.5MHz) and doesn't specify the top supported LPDDR3 speed. - -=== P.5 CPU - -U1: - -* Allwinner http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf[A64] 1.2Ghz 4x Cortex-A53, 64-bit, superscalar, 32KB instruction & 32KB data L1 cache per core, 512KB L2 shared cache, ARM Mali-400 MP2 (Utgard) GPU, HDMI 1.4 (up to 4K@30), USB 2.0 with OTG, MIPI CSI, 4 channels in/out, 24-bit, 8-48 KHz audio, video encode: H.264 1080p@60, video decode: H.265 4K@30, H.265 1080p@120, H.264, MPEG1/2/4 / VP8 / AVS / AVS+ 1080p@60, FBGA-396 15x15 mm -* Note: Clocked at 1.152Ghz on the PinePhone. - -X501: - -* Axtal https://pdf1.alldatasheet.com/datasheet-pdf/view/228815/AXTAL/AXX3225/+Q2J83JVYUyCLcEbcvvzE+/datasheet.pdf[AXX3225] 24MHz ±10ppm quartz crystal oscillator in SMD package, 3.2x2.5 mm - -D500: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. - -X500: - -* Seiko Instruments Inc. (SII) https://www.sii.co.jp/en/quartz/files/2013/03/SC-32S_Leaflet_e20151217.pdf[SC32S] 32.768KHz crystal oscillator -* Note: Not clear if using the https://www.mouser.com/ProductDetail/Seiko-Instruments-Micro-Energy/SC32S-125PF20PPM?qs=3CPZD7qAgihedyqH7awUjg%3D%3D[SC32S-12.5PF20PPM] or the https://www.mouser.com/ProductDetail/Seiko-Semiconductors/SC32S-7PF20PPM?qs=3CPZD7qAgigZSR1ASVAS6w%3D%3D[SC32S-7PF20PPM] - -=== P.6 POWER - -ED600: - -* Will Semiconductor (WILLSEMI) https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. -* Note: This part is marked as optional in the schematic and may not be included. - -U600: - -* X-Powers https://raw.githubusercontent.com/OLIMEX/OLINUXINO/master/DOCUMENTS/A64-PDFs/AXP803_Datasheet_V1.0.pdf[AXP803] power management integrated circuit (PMIC) optimized for multi-core systems, li-ion battery fuel gauge, USB charger (up to 2.8A), QFN 68-pin, 8x8 mm - -Q600: - -* Will Semiconductor http://monitor.espec.ws/files/wpm1481_186.pdf[WPM1481] single P-channel, -12V, -5.5A, power MOSFET - -J600: - -* BA5924211-R battery connector -* Note: http://biz.everychina.com/ddream-r/z2eb2904-lateralpressure_ba5924211_r.html[Picture] shows this part as having 8 pins, but the schematic shows 6 pins. http://biz.everychina.com/ddream-r/z2eb2904-lateralpressure_ba5924211_r.html[One page] says that it is made by LateralPressure, but https://www.worldwayelec.com/pro/rohm-semiconductor/ba5924211-r/3528348[another] says it is made by ROHM. - -L606: - -* IND_252010 2.2uH-2A inductor -* Note: Maybe this is the TDK https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_power_vls252010hbu_en.pdf[VLS252010HBU]. - -U601: - -* LowPowerSemi https://datasheet.lcsc.com/szlcsc/2004281203_LOWPOWER-LP6226CB6F_C517054.pdf[LP6226CB6F] high efficiency boost DC/DC converter with 33V, 1.5A power MOSFET, SOT23-6 package - -D600: - -* On semiconductor https://www.onsemi.com/pub/Collateral/SS24-D.PDF[SS24] Schottky power rectifier, https://www.nexperia.com/packages/SOD123.html[SOD123] package - -=== P.7 NAND/eMMC - -U700: - -* Kimtigo http://files.pine64.org/doc/datasheet/pinephone/Kimtigo_fbga153_16_32_64_eMMC_datasheet_v1.3.pdf[KM110SS0016GxA-DDD00WT] 16GB eMMC 5.1 TLC NAND Flash memory, FBGA-153 11.5×13.0×1.0 mm. -* Note 1: The schematic says the package is BGA-169, but the Kimtigo documentation says it is FBGA-153. -* Note 2: The A64 only supports up to eMMC 5.0. -* Note 3: The schematic lists the part as KM110SS0016GxA-DDD00WT, but https://xnux.eu/devices/photos/pp-1.1.html[these photos] show that its variant, the KM111SS0016GxA-DDD00WT, is being used in the 16GB PinePhone. - -=== P.8 AUDIO - -ED800, ED801, ED802, ED803, ED804, ED805, ED806: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. - -U801: - -* Broadchip http://www.broadchip.com/upLoad/product/month_2003/202003191750413832.pdf[BCT4717ETB-TR] 4.0Ω, 300MHz bandwidth, dual bi-directional SPDT (single-pole/double-throw) analog switch - -J800: - -* EAROUTN-A64 receiver - -J801: - -* JA-3606-001AA 3.5mm audio jack - -Q801: - -* Toshiba https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV[SSM3K35MFV] field-effect transistor, silicon N-channel MOS type - -U800: - -* Shanghai awinic technology https://www.awinic.com/Cn/Index/pageView/catid/107/id/45.html[AW8737SCSR] high efficiency (80%), low noise (53μV), ultra-low distortion (0.008%), constant large volume, 7th generation class K audio amplifier, 1.6×1.68 mm CSP-14 package, 0.4mm pitch https://pdf1.alldatasheet.com/datasheet-pdf/view/1147555/AWINIC/AW8737SCSR/+014J7J8XvUpOKG+Gc..whdxee+/datasheet.pdf[datasheet] - -FB800, FB801: - -* 600ohm at 100MHz ferrite bead in a https://www.electronics-notes.com/articles/electronic_components/surface-mount-technology-smd-smt/packages.php[0402] package (https://uk.farnell.com/c/passive-components/emc-rfi-suppression/ferrites-ferrite-assortments/ferrite-beads?impedance-100mhz=600ohm[examples]) - -=== P.9 T-CADD/USB - -Q901, Q902, Q903: - -* Toshiba https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV[SSM3K35MFV] field-effect transistor, silicon N-channel MOS type - -ED900, ED901, ED902: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. - -J901: - -* SA-2202-112 25-pin Micro-SIM and TF slot - -=== P.10 CAMERA - -J1000: - -* T03-1025-FG01 27-pin connector to the rear camera. -* Note: The schematic says "GC2035-200W", which is a mistake because the rear camera is the OmniVision http://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf[OV6540]. - -J1001: - -* T03-1025-FG01 27-pin connector to the front camera. -* Note: The schematic says "GC2035-200W", which is a mistake because the rear camera is the GalaxyCore http://files.pine64.org/doc/datasheet/pinephone/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf[GC2145], not the GalaxyCore https://g2g9w6w7.stackpathcdn.com/pdf-down/G/C/2/GC2035-GalaxyCore.pdf[GC2035]. - -U1000: - -* Shanghai awinic technology https://pdf1.alldatasheet.com/datasheet-pdf/view/1147538/AWINIC/AW3641EDNR/+014J75AXvUpOKG+GczEDzOOae+/datasheet.pdf[AW3641EDNR] flash LED driver with programmable timer and PWM dimming torch mode, 1A, 8 current levels. - -=== P.11 LCM/CTP - -Note: "LCM/CTP" means "liquid crystal display monitor/capacitive touch panel". An LCM generally includes an LCD screen + LED backlight + PCB with the LCD controller + frame. - -J1100: - -* FPC24-PT05B, OK-24F-04 28-pin connector to the MIPI-DSI LCD - -LED2: - -* RGB LED - -J1101: - -* CON6-0.5, TP_6PIN-ZQ01 8-pin connector to the capacitive touch panel controller -* Note: The label says that the connector has 6-pins, but the schematic shows 8-pins. - -ED1100, ED1101, ED1102, ED1103: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. - -U1100: - -* Chipown http://www.datasheet39.com/download.php?id=924200[AP3127B025] step-up DC/DC converter series, white LED backlight driver, 6-pin SOT-23-6L package. - -=== P.12 SENSORS/MT/KEY - -J1200: - -* 8-pin connector to test points -ED1200, ED1201: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf[ESD5451X] 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. - -U1200: - -* STmicroelectronics https://www.st.com/en/mems-and-sensors/lis3mdl.html[LIS3MDL] ultra-low-power three-axis magnetometer, LGA-12 2.0x2.0x1.0 mm https://www.st.com/resource/en/datasheet/lis3mdl.pdf[datasheet] -* Note: The LIS3MDL is currently unavailable, so it https://www.pine64.org/2021/03/15/march-update/#comment-4273[has been replaced] in the PinePhone Beta Edition with the Voltafield AF8133L e-Compass, which is unlisted on the Voltafield web site, but the http://www.voltafield.com/products01.html[AF8133J] is listed. Presumably U1200 will be unpopulated and U1203 will be populated in the Beta Edition, since they appear to be alternatives. - -U1201: - -* SensorTek https://web.archive.org/web/20190601120915 / http://www.sensortek.com.tw/en/product/Proximity_Sensor_with_ALS.html[STK3311-A] proximity and ambient light sensor (large gap) with built-in infrared LED, DFN-8 3.94x2.36x1.35 mm https://cdn.datasheetspdf.com/pdf-down/S/T/K/STK3310-Sensortek.pdf[datasheet] - -U1202: - -* TDK InvenSense https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6050/[MPU6050] six-axis, low-power MEMS gyroscope and accelerometer, QFN-24 4x4x0.9 mm https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf[datasheet] - -U1203: - -* Asahi Kasei Microdevices (AKM) https://static6.arrow.com/aropdfconversion/19f6bc6e0891877d596c7b1da69df3d2ea4388a5/31ak09911.pdf[AK09911] 3-axis electronic compass IC with Hall sensor, 8-pin WL-CSP (BGA), 1.2×1.2×0.5 mm -* or Voltafield Technology Corp. (VTC) http://www.winforcetek.com/pdf/PD-DST-0011-00%20AF8133J%20V03.pdf[AF8133J] 3-axis electronic compass with proprietary anisotropic magneto resistive (AMR) technology, 8-pin WLCSP 1.2x1.2x0.5 mm -* Note: These parts appear to be alternatives to be used if the LIS3MDL is unavailable, so U1203 was probably unpopulated in BraveHeart and the Community Editions, but will be populated in the Beta Edition. - -U1204: - -* Bosch Sensortek https://datasheet.lcsc.com/szlcsc/1912111437_Bosch-Sensortec-BMI120_C437657.pdf[BMI120] 3-axis gyroscope and accelerometer, LGA-14 2.5x3.0x0.83 mm -* Note: Listed as "NC/BMI120", where "NC" probably means "not connected", so there may be circuits in the PCB for the part, but it is not placed on the board. This is probably an alternative to the TDK InvenSense MPU6050, in case it isn't available or costs too much. - -Q1200: - -* Toshiba https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV[SSM3K35MFV] field-effect transistor, silicon N-channel MOS type - -D1200: - -* Torex https://www.torexsemi.com/file/xbs104s14r/XBS104S14R.pdf[XBS104S14] Schottky barrier diode, 1A, 40V, SOD-123A package - -J1201: - -* 2-pin connector to a motor, 1x1.8 mm -* Note: Presumably this is a vibration motor. - -=== P.13 DIGITAL VIDEO - -J1300: - -* OK-50F-04 40-pin connector -* Note: This part is probably produced by Shenzhen Yaqi Technology Co., which is part of OCN in Taiwan, and uses the Archie brand name.< - -U1304: - -* Analogix https://www.analogix.com/en/system/files/AA-002281-PB-6-ANX7688_Product_Brief_0.pdf[ANX7688] HDMI to USB-C bridge with MUX, converts HDMI 2.0 to DisplayPort Alternate Mode, USB-C Power Delivery (PD), BGA-64. -* Note 1: The schematic lists this part as "ANX7688S", but it is unclear what the "S" at the end stands for. -* Note 2: xnux.eu provides https://xnux.eu/devices/feature/anx7688.html[more info] on the ANX7688, including flashing the firmware. - -U1300: - -* America Techcode Semiconductor http://techcodesemi.com/datasheet/TD6817.pdf[TD6817] 1.5MHz 2A synchronous step-down regulator dropout, SOT23-5 package -* or Diodes Incorporated https://media.digikey.com/pdf/Data%20Sheets/Diodes%20PDFs/AP3406.pdf[AP3406K-ADJTRG1] buck switching regulator IC positive adjustable 0.6V 650mA https://media.digikey.com/pdf/Data%20Sheets/Diodes%20PDFs/AP3406.pdf[datasheet] - -U1302: - -* LowPowerSemi https://cdn.datasheetspdf.com/pdf-down/L/P/W/LPW5206-LowPowerSemi.pdf[LPW5206H] USB power loading switch, N-channel MOSFET, SOT23-5 package - -U1303: - -* Texas Instruments https://www.ti.com/lit/ds/symlink/txb0104.pdf[TXB0104YZT] 4-bit bidirectional voltage-level translator with automatic direction sensing and ±15-kV ESD protection, 12-pin DSBGA 1.40×1.90 mm - -Q1300, Q1301, Q1302, Q1304, Q1305: - -* Toshiba https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV[SSM3K35MFV] field-effect transistor, silicon N-channel MOS type - -U1305, U1309: - -* Will Semiconductor https://pdf1.alldatasheet.com/datasheet-pdf/view/1140651/WILLSEMI/WS4621C/+014QJJ4XuHlLuHRMfdaDGDwO+/datasheet.pdf[WS4621C-1X1] 2A, 38 mΩ, 290nA quiescent current and 70nA standby current load switch, CSP-4L 1x1 mm. - -U1308: - -* Shanghai awinic technology https://pdf1.alldatasheet.com/datasheet-pdf/view/1147535/AWINIC/AW3632/+014J758XvUpOKG+GczEww+/datasheet.pdf[AW3632] high efficiency, low profile, fixed 5V output pump power supply, QFN-8 package - -X1300: - -* Mercury United Electronics https://rf.cdiweb.com/products/detail/x322500018p3020207060r-mercury-united-electronics-inc/71942/[X3225] 27.000 MHz crystal oscillator - -=== P.14 WIFI+BT - -U1400: - -* Realtek http://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf[RTL8723CS] 802.11 b/g/n, single-band (2.4 GHz), Bluetooth 4.0, with SDIO for WiFi and UART for Bluetooth, LGA-40 12x12x1.6 mm. - -X1400: - -* 24Mhz ±10ppm crystal oscillator - -D1400: - -* SXSEMI http://sxsemi.com/upfile/AU0511P1.pdf[AU0511P1] low capacitance ESD protection diode, SOD-882 - -ANT1400 - -* Antenna - -=== P.15 MODEM-4G - -U1500: - -* https://www.quectel.com/product/lte-eg25-g/[Quectel EG25-G] https://wiki.pine64.org/wiki/File:Quectel_EG25-G_LTE_Standard_Specification_V1.3.pdf GSM/UMTS/LTE cellular modem and GNSS (GPS/Galileo/GLONASS/BeiDou/QZSS, with A-GPS), LGA-144 9.0x32.0x2.4 mm - -U1502, 1503, 1504: - -* Texas Instruments https://www.ti.com/lit/ds/symlink/txb0104.pdf[TXB0104YZT] 4-bit bidirectional voltage-level translator with automatic direction sensing and ±15-kV ESD protection, 12-pin DSBGA 1.40×1.90 mm - -Q1501, Q1503, Q1504, Q1505: - -* Toshiba https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV[SSM3K35MFV] field-effect transistor, silicon N-channel MOS type - -J1500, J1502: - -* MRF004-P01A 4-pin connector - -Q1500: - -* Will Semiconductor http://monitor.espec.ws/files/wpm1481_186.pdf[WPM1481] single P-channel, -12V, -5.5A, power MOSFET -* Note: The documentation shows 6 pins, but the schematic shows 8 pins. - -=== Component Counts - -|=== -|Type of component |Main PCB |USB PCB - -| Antenna connectors (ANT_xxx_) | 6 | 4 - -| Capacitors (C_xxx_) | 296 | 16 - -| Diodes (D_xxx_) | 5 | 0 - -| Zener diodes (ED_xxx_) | 17 | 0 - -| Ferrite beads (FB_xxx_) | 6 | 0 - -| Wire links / connectors (J_xxx_) | 14 | 4 - -| Resistors (R_xxx_) | 222 | 0 - -| Inductors (L_xxx_) | 15 | 0 - -| Transistors (Q_xxx_) | 16 | 19* - -| Switches (SW_xxx_) | 1 | 0 - -| Test points (T_xxx_) | 27 | 3 - -| Integrated circuits (U/DU_xxx_) | 24† | 2 - -| Crystal oscillators (X_xxx_) | 5 | 0 - -| *Total without test points* | *627* | *45* - -| *Total with test points* | *654* | *48* -|=== - -Here is how the PinePhone compares with the Librem 5 in terms of components: - -|=== -|Type of component |Librem 5 main |Librem 5 USB |PinePhone main |PinePhone USB - -| Antenna connectors (ANT_xxx_) | 3 | 2 | 6 | 4 - -| Capacitors (C_xxx_) | 521 | 11 | 296 | 16 - -| Diodes (D/TVS/ED_xxx_) | 59 | 1 | 22 | 0 - -| Connectors (J/CON_xxx_) | 26 | 10 | 14 | 4 - -| Resistors (R/F_xxx_) | 348 | 8 | 222 | 0 - -| Inductors (L/FB_xxx_) | 79 | 7 | 21 | 0 - -| Transistors (Q_xxx_) | 17 | 0 | 16 | 19* - -| Switches (SW_xxx_) | 5 | 0 | 1 | 0 - -| Test points (T/TC/TP/TS/TV_xxx_) | 126 | 4 | 27 | 3 - -| Integrated circuits (U/DU_xxx_) | 65 | 2 | 24† | 2 - -| Crystal oscillators (Y/X_xxx_) | 10 | 0 | 5 | 0 - -| *Total without test points* |*1133*|*41*|*627*|*45* - -| *Total with test points* |*1259*|*45*|*654*|*48* -|=== - -* 18 parts for the PinePhone USB-C port are labeled as T_xxx_ in the schematic with the image of transistors, but it is possible that these are resistors and capacitors. - -† There are 26 U/DU_xxx_ listed in the PinePhone schematic, but the two extra are for an alternative magnetometer (U1200 / U1203) and an alternative gyroscope and accelerometer (U1202 / U1204) which are unpopulated. - -Source: https://forums.puri.sm/t/component-counts-in-the-librem-5-and-pinephone/11240[Amos Batto] - -=== Other components not in the schematics - -* SGMICRO http://www.sg-micro.com/uploads/soft/20190829/1567071622.pdf[SGM3140] 500mA buck/boost charge pump LED driver for camera flash and torch, TDFN-10 3x3x0.75 mm -* Note: The link:/documentation/PinePhone/Further_information/Components/[PinePhone page] lists the SGM3140, but the schematics contain the U1000: awinic AW3641EDNR, so it is unclear why the SGM3140 is needed. -* Goodix http://files.pine64.org/doc/datasheet/pinephone/GT917S-Datasheet.pdf[GT917S] touch controller -* Sitronix http://files.pine64.org/doc/datasheet/pinephone/ST7703_DS_v01_20160128.pdf[ST7703] MIPI LCD driver -* Xingbangda https://lkml.org/lkml/2020/6/16/1654[XBD599] 5.99″ IPS LCD, 720x1440 pixels, 16.7M colors, hardened glass \ No newline at end of file diff --git a/content/documentation/PinePhone/Further_information/Components.md b/content/documentation/PinePhone/Further_information/Components.md new file mode 100644 index 00000000..c00fcf62 --- /dev/null +++ b/content/documentation/PinePhone/Further_information/Components.md @@ -0,0 +1,390 @@ +--- +title: "Components" +draft: false +menu: + docs: + title: + parent: "PinePhone/Further_information" + identifier: "PinePhone/Further_information/Components" + weight: +--- + +| Component | Model | +| --- | --- | +| Touchscreen | Goodix GT917S | +| Rear camera | OmniVision OV5640 | +| Camera flash | SGMICRO SGM3140 | +| Front camera | GalaxyCore GC2145 | +| LCD | Xingbangda XBD599 | +| WiFi | Realtek RTL8723CS | +| Bluetooth | Realtek RTL8723CS | +| Modem | [Quectel EG25-G](http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf) | +| GNSS/GPS | [Quectel EG25-G](http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf) | +| Magnetometer | ST LIS3MDL | +| Ambient light / Proximity | SensorTek STK3335 | +| Accelerometer / Gyroscope | InvenSense MPU-6050 | +| Vibration motor | Unknown model | +| Notification LED | LED0603RGB | +| Volume buttons | Buttons connected to the KEYADC | +| Power button | X-Powers AXP803 | +| Battery fuel gauge | X-Powers AXP803 | + +## Components list + +The following list of components are found in the [schematic](https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2b%20Released%20Schematic.pdf) for the PinePhone 1.2b. + +### Abreviations used in schematic + +The following [abbreviations](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/electronics-circuit-symbols-overview.php) are used as the starting letter(s) to identify the components in the PinePhone schematics: + +* **ANT**: antenna +* **C**: [capacitor](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/capacitors-polar-nonpolar-variable.php) +* **D**: [diode](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/diode-semiconductor.php) +* **DU**: Only used in the "DU1", which is an integrated circuit for memory +* **ED**: Zener diode to protect against electrostatic discharge +* **FB**: [ferrite bead](https://en.wikipedia.org/wiki/Ferrite_bead) +* **J**: [wire link](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/wires-switches-connectors.php) (i.e. a connector) +* **R**: [resistor](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/resistors-fixed-variable.php) +* **L**: [inductor](https://www.electronics-notes.com/articles/analogue_circuits/circuits-symbols-diagrams/inductors-chokes-coils-transformers.php) +* **NC/**: not connected (i.e. the part probably isn’t placed on the board, but there are circuits in the PCB for it) +* **Q**: transistor +* **SW**: switch +* **T**: test point +* **U**: integrated circuit (i.e. a silicon chip) +* **X**: crystal oscillator (used for clocks) + +### P.4 LPDDR3 FPGA178 + +Note: The title of this schematic page should be changed from "LPDDR3 FPGA178" to "LPDDR3 FBGA178", because the RAM chip is a 178-pin fine pitch ball grid array (FBGA), not a field-programmable gate array (FPGA). + +DU1: + +* Artmem [ATL3A1632H12A](http://files.pine64.org/doc/datasheet/pinephone/ATL3A1632H12A_mobile_lpddr3_11x11.5_v1.0_1600.pdf) 2GB 800MHz LPDDR3-1600 SDRAM, FBGA-178 11.0x11.5x0.93 mm +* Note: RAM will be clocked slower, since the Allwinner A64 only supports up to 3GB DDR3-1333 (666.5MHz) and doesn’t specify the top supported LPDDR3 speed. + +### P.5 CPU + +U1: + +* Allwinner [A64](http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf) 1.2Ghz 4x Cortex-A53, 64-bit, superscalar, 32KB instruction & 32KB data L1 cache per core, 512KB L2 shared cache, ARM Mali-400 MP2 (Utgard) GPU, HDMI 1.4 (up to 4K@30), USB 2.0 with OTG, MIPI CSI, 4 channels in/out, 24-bit, 8-48 KHz audio, video encode: H.264 1080p@60, video decode: H.265 4K@30, H.265 1080p@120, H.264, MPEG1/2/4 / VP8 / AVS / AVS+ 1080p@60, FBGA-396 15x15 mm +* Note: Clocked at 1.152Ghz on the PinePhone. + +X501: + +* Axtal [AXX3225](https://pdf1.alldatasheet.com/datasheet-pdf/view/228815/AXTAL/AXX3225/+Q2J83JVYUyCLcEbcvvzE+/datasheet.pdf) 24MHz ±10ppm quartz crystal oscillator in SMD package, 3.2x2.5 mm + +D500: + +* Will Semiconductor [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. + +X500: + +* Seiko Instruments Inc. (SII) [SC32S](https://www.sii.co.jp/en/quartz/files/2013/03/SC-32S_Leaflet_e20151217.pdf) 32.768KHz crystal oscillator +* Note: Not clear if using the [SC32S-12.5PF20PPM](https://www.mouser.com/ProductDetail/Seiko-Instruments-Micro-Energy/SC32S-125PF20PPM?qs=3CPZD7qAgihedyqH7awUjg%3D%3D) or the [SC32S-7PF20PPM](https://www.mouser.com/ProductDetail/Seiko-Semiconductors/SC32S-7PF20PPM?qs=3CPZD7qAgigZSR1ASVAS6w%3D%3D) + +### P.6 POWER + +ED600: + +* Will Semiconductor (WILLSEMI) [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. +* Note: This part is marked as optional in the schematic and may not be included. + +U600: + +* X-Powers [AXP803](https://raw.githubusercontent.com/OLIMEX/OLINUXINO/master/DOCUMENTS/A64-PDFs/AXP803_Datasheet_V1.0.pdf) power management integrated circuit (PMIC) optimized for multi-core systems, li-ion battery fuel gauge, USB charger (up to 2.8A), QFN 68-pin, 8x8 mm + +Q600: + +* Will Semiconductor [WPM1481](http://monitor.espec.ws/files/wpm1481_186.pdf) single P-channel, -12V, -5.5A, power MOSFET + +J600: + +* BA5924211-R battery connector +* Note: [Picture](http://biz.everychina.com/ddream-r/z2eb2904-lateralpressure_ba5924211_r.html) shows this part as having 8 pins, but the schematic shows 6 pins. [One page](http://biz.everychina.com/ddream-r/z2eb2904-lateralpressure_ba5924211_r.html) says that it is made by LateralPressure, but [another](https://www.worldwayelec.com/pro/rohm-semiconductor/ba5924211-r/3528348) says it is made by ROHM. + +L606: + +* IND_252010 2.2uH-2A inductor +* Note: Maybe this is the TDK [VLS252010HBU](https://product.tdk.com/info/en/catalog/datasheets/inductor_commercial_power_vls252010hbu_en.pdf). + +U601: + +* LowPowerSemi [LP6226CB6F](https://datasheet.lcsc.com/szlcsc/2004281203_LOWPOWER-LP6226CB6F_C517054.pdf) high efficiency boost DC/DC converter with 33V, 1.5A power MOSFET, SOT23-6 package + +D600: + +* On semiconductor [SS24](https://www.onsemi.com/pub/Collateral/SS24-D.PDF) Schottky power rectifier, [SOD123](https://www.nexperia.com/packages/SOD123.html) package + +### P.7 NAND/eMMC + +U700: + +* Kimtigo [KM110SS0016GxA-DDD00WT](http://files.pine64.org/doc/datasheet/pinephone/Kimtigo_fbga153_16_32_64_eMMC_datasheet_v1.3.pdf) 16GB eMMC 5.1 TLC NAND Flash memory, FBGA-153 11.5×13.0×1.0 mm. +* Note 1: The schematic says the package is BGA-169, but the Kimtigo documentation says it is FBGA-153. +* Note 2: The A64 only supports up to eMMC 5.0. +* Note 3: The schematic lists the part as KM110SS0016GxA-DDD00WT, but [these photos](https://xnux.eu/devices/photos/pp-1.1.html) show that its variant, the KM111SS0016GxA-DDD00WT, is being used in the 16GB PinePhone. + +### P.8 AUDIO + +ED800, ED801, ED802, ED803, ED804, ED805, ED806: + +* Will Semiconductor [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. + +U801: + +* Broadchip [BCT4717ETB-TR](http://www.broadchip.com/upLoad/product/month_2003/202003191750413832.pdf) 4.0Ω, 300MHz bandwidth, dual bi-directional SPDT (single-pole/double-throw) analog switch + +J800: + +* EAROUTN-A64 receiver + +J801: + +* JA-3606-001AA 3.5mm audio jack + +Q801: + +* Toshiba [SSM3K35MFV](https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV) field-effect transistor, silicon N-channel MOS type + +U800: + +* Shanghai awinic technology [AW8737SCSR](https://www.awinic.com/Cn/Index/pageView/catid/107/id/45.html) high efficiency (80%), low noise (53μV), ultra-low distortion (0.008%), constant large volume, 7th generation class K audio amplifier, 1.6×1.68 mm CSP-14 package, 0.4mm pitch [datasheet](https://pdf1.alldatasheet.com/datasheet-pdf/view/1147555/AWINIC/AW8737SCSR/+014J7J8XvUpOKG+Gc..whdxee+/datasheet.pdf) + +FB800, FB801: + +* 600ohm at 100MHz ferrite bead in a [0402](https://www.electronics-notes.com/articles/electronic_components/surface-mount-technology-smd-smt/packages.php) package ([examples](https://uk.farnell.com/c/passive-components/emc-rfi-suppression/ferrites-ferrite-assortments/ferrite-beads?impedance-100mhz=600ohm)) + +### P.9 T-CADD/USB + +Q901, Q902, Q903: + +* Toshiba [SSM3K35MFV](https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV) field-effect transistor, silicon N-channel MOS type + +ED900, ED901, ED902: + +* Will Semiconductor [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. + +J901: + +* SA-2202-112 25-pin Micro-SIM and TF slot + +### P.10 CAMERA + +J1000: + +* T03-1025-FG01 27-pin connector to the rear camera. +* Note: The schematic says "GC2035-200W", which is a mistake because the rear camera is the OmniVision [OV6540](http://files.pine64.org/doc/datasheet/pinephone/OV5640_datasheet.pdf). + +J1001: + +* T03-1025-FG01 27-pin connector to the front camera. +* Note: The schematic says "GC2035-200W", which is a mistake because the rear camera is the GalaxyCore [GC2145](http://files.pine64.org/doc/datasheet/pinephone/GC2145%20CSP%20DataSheet%20release%20V1.0_20131201.pdf), not the GalaxyCore [GC2035](https://g2g9w6w7.stackpathcdn.com/pdf-down/G/C/2/GC2035-GalaxyCore.pdf). + +U1000: + +* Shanghai awinic technology [AW3641EDNR](https://pdf1.alldatasheet.com/datasheet-pdf/view/1147538/AWINIC/AW3641EDNR/+014J75AXvUpOKG+GczEDzOOae+/datasheet.pdf) flash LED driver with programmable timer and PWM dimming torch mode, 1A, 8 current levels. + +### P.11 LCM/CTP + +Note: "LCM/CTP" means "liquid crystal display monitor/capacitive touch panel". An LCM generally includes an LCD screen + LED backlight + PCB with the LCD controller + frame. + +J1100: + +* FPC24-PT05B, OK-24F-04 28-pin connector to the MIPI-DSI LCD + +LED2: + +* RGB LED + +J1101: + +* CON6-0.5, TP_6PIN-ZQ01 8-pin connector to the capacitive touch panel controller +* Note: The label says that the connector has 6-pins, but the schematic shows 8-pins. + +ED1100, ED1101, ED1102, ED1103: + +* Will Semiconductor [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. + +U1100: + +* Chipown [AP3127B025](http://www.datasheet39.com/download.php?id=924200) step-up DC/DC converter series, white LED backlight driver, 6-pin SOT-23-6L package. + +### P.12 SENSORS/MT/KEY + +J1200: + +* 8-pin connector to test points +ED1200, ED1201: +* Will Semiconductor [ESD5451X](https://pdf1.alldatasheet.com/datasheet-pdf/view/1136979/WILLSEMI/ESD5451X/+01_7-9BXuHlLuHRMflaL..hDk+/datasheet.pdf) 1-line, bi-directional, transient voltage suppressor, EDS protection up to ±30kV and 8A. + +U1200: + +* STmicroelectronics [LIS3MDL](https://www.st.com/en/mems-and-sensors/lis3mdl.html) ultra-low-power three-axis magnetometer, LGA-12 2.0x2.0x1.0 mm [datasheet](https://www.st.com/resource/en/datasheet/lis3mdl.pdf) +* Note: The LIS3MDL is currently unavailable, so it [has been replaced](https://www.pine64.org/2021/03/15/march-update/#comment-4273) in the PinePhone Beta Edition with the Voltafield AF8133L e-Compass, which is unlisted on the Voltafield web site, but the [AF8133J](http://www.voltafield.com/products01.html) is listed. Presumably U1200 will be unpopulated and U1203 will be populated in the Beta Edition, since they appear to be alternatives. + +U1201: + +* SensorTek https://web.archive.org/web/20190601120915 / [STK3311-A](http://www.sensortek.com.tw/en/product/Proximity_Sensor_with_ALS.html) proximity and ambient light sensor (large gap) with built-in infrared LED, DFN-8 3.94x2.36x1.35 mm [datasheet](https://cdn.datasheetspdf.com/pdf-down/S/T/K/STK3310-Sensortek.pdf) + +U1202: + +* TDK InvenSense [MPU6050](https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6050/) six-axis, low-power MEMS gyroscope and accelerometer, QFN-24 4x4x0.9 mm [datasheet](https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf) + +U1203: + +* Asahi Kasei Microdevices (AKM) [AK09911](https://static6.arrow.com/aropdfconversion/19f6bc6e0891877d596c7b1da69df3d2ea4388a5/31ak09911.pdf) 3-axis electronic compass IC with Hall sensor, 8-pin WL-CSP (BGA), 1.2×1.2×0.5 mm +* or Voltafield Technology Corp. (VTC) [AF8133J](http://www.winforcetek.com/pdf/PD-DST-0011-00%20AF8133J%20V03.pdf) 3-axis electronic compass with proprietary anisotropic magneto resistive (AMR) technology, 8-pin WLCSP 1.2x1.2x0.5 mm +* Note: These parts appear to be alternatives to be used if the LIS3MDL is unavailable, so U1203 was probably unpopulated in BraveHeart and the Community Editions, but will be populated in the Beta Edition. + +U1204: + +* Bosch Sensortek [BMI120](https://datasheet.lcsc.com/szlcsc/1912111437_Bosch-Sensortec-BMI120_C437657.pdf) 3-axis gyroscope and accelerometer, LGA-14 2.5x3.0x0.83 mm +* Note: Listed as "NC/BMI120", where "NC" probably means "not connected", so there may be circuits in the PCB for the part, but it is not placed on the board. This is probably an alternative to the TDK InvenSense MPU6050, in case it isn’t available or costs too much. + +Q1200: + +* Toshiba [SSM3K35MFV](https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV) field-effect transistor, silicon N-channel MOS type + +D1200: + +* Torex [XBS104S14](https://www.torexsemi.com/file/xbs104s14r/XBS104S14R.pdf) Schottky barrier diode, 1A, 40V, SOD-123A package + +J1201: + +* 2-pin connector to a motor, 1x1.8 mm +* Note: Presumably this is a vibration motor. + +### P.13 DIGITAL VIDEO + +J1300: + +* OK-50F-04 40-pin connector +* Note: This part is probably produced by Shenzhen Yaqi Technology Co., which is part of OCN in Taiwan, and uses the Archie brand name.< + +U1304: + +* Analogix [ANX7688](https://www.analogix.com/en/system/files/AA-002281-PB-6-ANX7688_Product_Brief_0.pdf) HDMI to USB-C bridge with MUX, converts HDMI 2.0 to DisplayPort Alternate Mode, USB-C Power Delivery (PD), BGA-64. +* Note 1: The schematic lists this part as "ANX7688S", but it is unclear what the "S" at the end stands for. +* Note 2: xnux.eu provides [more info](https://xnux.eu/devices/feature/anx7688.html) on the ANX7688, including flashing the firmware. + +U1300: + +* America Techcode Semiconductor [TD6817](http://techcodesemi.com/datasheet/TD6817.pdf) 1.5MHz 2A synchronous step-down regulator dropout, SOT23-5 package +* or Diodes Incorporated [AP3406K-ADJTRG1](https://media.digikey.com/pdf/Data%20Sheets/Diodes%20PDFs/AP3406.pdf) buck switching regulator IC positive adjustable 0.6V 650mA [datasheet](https://media.digikey.com/pdf/Data%20Sheets/Diodes%20PDFs/AP3406.pdf) + +U1302: + +* LowPowerSemi [LPW5206H](https://cdn.datasheetspdf.com/pdf-down/L/P/W/LPW5206-LowPowerSemi.pdf) USB power loading switch, N-channel MOSFET, SOT23-5 package + +U1303: + +* Texas Instruments [TXB0104YZT](https://www.ti.com/lit/ds/symlink/txb0104.pdf) 4-bit bidirectional voltage-level translator with automatic direction sensing and ±15-kV ESD protection, 12-pin DSBGA 1.40×1.90 mm + +Q1300, Q1301, Q1302, Q1304, Q1305: + +* Toshiba [SSM3K35MFV](https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV) field-effect transistor, silicon N-channel MOS type + +U1305, U1309: + +* Will Semiconductor [WS4621C-1X1](https://pdf1.alldatasheet.com/datasheet-pdf/view/1140651/WILLSEMI/WS4621C/+014QJJ4XuHlLuHRMfdaDGDwO+/datasheet.pdf) 2A, 38 mΩ, 290nA quiescent current and 70nA standby current load switch, CSP-4L 1x1 mm. + +U1308: + +* Shanghai awinic technology [AW3632](https://pdf1.alldatasheet.com/datasheet-pdf/view/1147535/AWINIC/AW3632/+014J758XvUpOKG+GczEww+/datasheet.pdf) high efficiency, low profile, fixed 5V output pump power supply, QFN-8 package + +X1300: + +* Mercury United Electronics [X3225](https://rf.cdiweb.com/products/detail/x322500018p3020207060r-mercury-united-electronics-inc/71942/) 27.000 MHz crystal oscillator + +### P.14 WIFI+BT + +U1400: + +* Realtek [RTL8723CS](http://files.pine64.org/doc/datasheet/pine64/RTL8723BS.pdf) 802.11 b/g/n, single-band (2.4 GHz), Bluetooth 4.0, with SDIO for WiFi and UART for Bluetooth, LGA-40 12x12x1.6 mm. + +X1400: + +* 24Mhz ±10ppm crystal oscillator + +D1400: + +* SXSEMI [AU0511P1](http://sxsemi.com/upfile/AU0511P1.pdf) low capacitance ESD protection diode, SOD-882 + +ANT1400 + +* Antenna + +### P.15 MODEM-4G + +U1500: + +* [Quectel EG25-G](https://www.quectel.com/product/lte-eg25-g/) https://wiki.pine64.org/wiki/File:Quectel_EG25-G_LTE_Standard_Specification_V1.3.pdf GSM/UMTS/LTE cellular modem and GNSS (GPS/Galileo/GLONASS/BeiDou/QZSS, with A-GPS), LGA-144 9.0x32.0x2.4 mm + +U1502, 1503, 1504: + +* Texas Instruments [TXB0104YZT](https://www.ti.com/lit/ds/symlink/txb0104.pdf) 4-bit bidirectional voltage-level translator with automatic direction sensing and ±15-kV ESD protection, 12-pin DSBGA 1.40×1.90 mm + +Q1501, Q1503, Q1504, Q1505: + +* Toshiba [SSM3K35MFV](https://toshiba.semicon-storage.com/info/docget.jsp?did=10004&prodName=SSM3K35MFV) field-effect transistor, silicon N-channel MOS type + +J1500, J1502: + +* MRF004-P01A 4-pin connector + +Q1500: + +* Will Semiconductor [WPM1481](http://monitor.espec.ws/files/wpm1481_186.pdf) single P-channel, -12V, -5.5A, power MOSFET +* Note: The documentation shows 6 pins, but the schematic shows 8 pins. + +### Component Counts + +| Type of component | Main PCB | USB PCB | +| --- | --- | --- | +| Antenna connectors (ANT_xxx_) | 6 | 4 | +| Capacitors (C_xxx_) | 296 | 16 | +| Diodes (D_xxx_) | 5 | 0 | +| Zener diodes (ED_xxx_) | 17 | 0 | +| Ferrite beads (FB_xxx_) | 6 | 0 | +| Wire links / connectors (J_xxx_) | 14 | 4 | +| Resistors (R_xxx_) | 222 | 0 | +| Inductors (L_xxx_) | 15 | 0 | +| Transistors (Q_xxx_) | 16 | 19* | +| Switches (SW_xxx_) | 1 | 0 | +| Test points (T_xxx_) | 27 | 3 | +| Integrated circuits (U/DU_xxx_) | 24† | 2 | +| Crystal oscillators (X_xxx_) | 5 | 0 | +| **Total without test points** | **627** | **45** | +| **Total with test points** | **654** | **48** | + +Here is how the PinePhone compares with the Librem 5 in terms of components: + +| Type of component | Librem 5 main | Librem 5 USB | PinePhone main | PinePhone USB | +| --- | --- | --- | --- | --- | +| Antenna connectors (ANT_xxx_) | 3 | 2 | 6 | 4 | +| Capacitors (C_xxx_) | 521 | 11 | 296 | 16 | +| Diodes (D/TVS/ED_xxx_) | 59 | 1 | 22 | 0 | +| Connectors (J/CON_xxx_) | 26 | 10 | 14 | 4 | +| Resistors (R/F_xxx_) | 348 | 8 | 222 | 0 | +| Inductors (L/FB_xxx_) | 79 | 7 | 21 | 0 | +| Transistors (Q_xxx_) | 17 | 0 | 16 | 19* | +| Switches (SW_xxx_) | 5 | 0 | 1 | 0 | +| Test points (T/TC/TP/TS/TV_xxx_) | 126 | 4 | 27 | 3 | +| Integrated circuits (U/DU_xxx_) | 65 | 2 | 24† | 2 | +| Crystal oscillators (Y/X_xxx_) | 10 | 0 | 5 | 0 | +| **Total without test points** | **1133** | **41** | **627** | **45** | +| **Total with test points** | **1259** | **45** | **654** | **48** | + +* 18 parts for the PinePhone USB-C port are labeled as T_xxx_ in the schematic with the image of transistors, but it is possible that these are resistors and capacitors. + +† There are 26 U/DU_xxx_ listed in the PinePhone schematic, but the two extra are for an alternative magnetometer (U1200 / U1203) and an alternative gyroscope and accelerometer (U1202 / U1204) which are unpopulated. + +Source: [Amos Batto](https://forums.puri.sm/t/component-counts-in-the-librem-5-and-pinephone/11240) + +### Other components not in the schematics + +* SGMICRO [SGM3140](http://www.sg-micro.com/uploads/soft/20190829/1567071622.pdf) 500mA buck/boost charge pump LED driver for camera flash and torch, TDFN-10 3x3x0.75 mm +* Note: The [PinePhone page](/documentation/PinePhone/Further_information/Components/) lists the SGM3140, but the schematics contain the U1000: awinic AW3641EDNR, so it is unclear why the SGM3140 is needed. +* Goodix [GT917S](http://files.pine64.org/doc/datasheet/pinephone/GT917S-Datasheet.pdf) touch controller +* Sitronix [ST7703](http://files.pine64.org/doc/datasheet/pinephone/ST7703_DS_v01_20160128.pdf) MIPI LCD driver +* Xingbangda [XBD599](https://lkml.org/lkml/2020/6/16/1654) 5.99″ IPS LCD, 720x1440 pixels, 16.7M colors, hardened glass diff --git a/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.adoc b/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.adoc deleted file mode 100644 index a5496eac..00000000 --- a/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.adoc +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "Replacement earpieces" -draft: false -hidden: true -menu: - docs: - title: - parent: "PinePhone/Hardware_fixes_and_mods" - identifier: "PinePhone/Hardware_fixes_and_mods/Replacement_earpieces" - weight: ---- - -The earpiece (or earpiece speaker) refers to the small speaker at the top of the **PinePhone** and **PinePhone Pro**. - -This part is not available to purchase from the PINE64 Store. However, it is possible to buy a replacement earpiece for another device, and install it in a PinePhone or PinePhone Pro. This documents earpieces that have been tested by the community, and verified to work. - -Note that the earpiece dimensions for both the PinePhone and PinePhone Pro are 12x6x2 mm. When looking into earpieces not found in this list, aim for these dimensions. - -|=== -| Earpiece | PinePhone | PinePhone Pro | Where to Buy - -| LG K8 2017 M200N -| Kind of ¹ -| Broken -| https://www.replacebase.co.uk/for-lg-k8-2017-m200n-replacement-ear-piece-speaker-oem[Replace Base] - -| Nokia 5 -| Works -| Works -| https://www.replacebase.co.uk/for-nokia-5-replacement-ear-piece-speaker-with-adhesive-oem[Replace Base] - -| Nokia 7 -| Works ² -| Works ² -| https://www.replacebase.co.uk/for-nokia-7-replacement-ear-piece-speaker-unit-module-oem[Replace Base] - -| Nokia X5 -| Works -| Works -| https://www.replacebase.co.uk/for-nokia-x5-replacement-earpiece-speaker-unit-oem[Replace Base] - -| OnePlus One -| Works -| Works -| https://www.ifixit.com/products/oneplus-one-earpiece-speaker[iFixit], https://www.replacebase.co.uk/oneplus-one-replacement-earpiece-speaker-original[Replace Base] - -| OnePlus X -| Works -| Works -| https://www.replacebase.co.uk/oneplus-x-replacement-earpiece-speaker-original[Replace Base] - -| PinePhone -| Works -| Works -| - -| Xiaomi Mi A1 -| Works -| Works -| https://www.replacebase.co.uk/for-xiaomi-mi-a1-replacement-ear-piece-speaker-oem[Replace Base] - -| Xiaomi Redmi Note 4 -| Works -| Works -| https://www.replacebase.co.uk/for-xiaomi-redmi-note-4-replacement-ear-piece-speaker-oem[Replace Base] -|=== - -Notes: - -¹ The earpiece is too thin, it can work with padding to keep the contacts together. - -² Audio playback is very low quality. - -== Incompatible earpieces - -The following devices are known to have replacement earpieces with dimensions too large to fit inside the PinePhone or PinePhone Pro. - -* Blackberry Classic Q20 -* HTC Desire 500 -* HTC M10 -* Huawei Honor 7A -* Huawei Mate 10 Pro -* Huawei Y7 Prime 2018 -* OnePlus 2 -* Oppo Reno 5 4G -* Sony Xperia X Compact -* Sony Xperia XA1 Ultra -* Sony Xperia XP X Performance -* Sony Xperia XZ \ No newline at end of file diff --git a/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.md b/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.md new file mode 100644 index 00000000..aa16db91 --- /dev/null +++ b/content/documentation/PinePhone/Hardware_fixes_and_mods/Replacement_earpieces.md @@ -0,0 +1,52 @@ +--- +title: "Replacement earpieces" +draft: false +hidden: true +menu: + docs: + title: + parent: "PinePhone/Hardware_fixes_and_mods" + identifier: "PinePhone/Hardware_fixes_and_mods/Replacement_earpieces" + weight: +--- + +The earpiece (or earpiece speaker) refers to the small speaker at the top of the ***PinePhone*** and ***PinePhone Pro***. + +This part is not available to purchase from the PINE64 Store. However, it is possible to buy a replacement earpiece for another device, and install it in a PinePhone or PinePhone Pro. This documents earpieces that have been tested by the community, and verified to work. + +Note that the earpiece dimensions for both the PinePhone and PinePhone Pro are 12x6x2 mm. When looking into earpieces not found in this list, aim for these dimensions. + +| Earpiece | PinePhone | PinePhone Pro | Where to Buy | +| --- | --- | --- | --- | +| LG K8 2017 M200N | Kind of ¹ | Broken | [Replace Base](https://www.replacebase.co.uk/for-lg-k8-2017-m200n-replacement-ear-piece-speaker-oem) | +| Nokia 5 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-nokia-5-replacement-ear-piece-speaker-with-adhesive-oem) | +| Nokia 7 | Works ² | Works ² | [Replace Base](https://www.replacebase.co.uk/for-nokia-7-replacement-ear-piece-speaker-unit-module-oem) | +| Nokia X5 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-nokia-x5-replacement-earpiece-speaker-unit-oem) | +| OnePlus One | Works | Works | [iFixit](https://www.ifixit.com/products/oneplus-one-earpiece-speaker), [Replace Base](https://www.replacebase.co.uk/oneplus-one-replacement-earpiece-speaker-original) | +| OnePlus X | Works | Works | [Replace Base](https://www.replacebase.co.uk/oneplus-x-replacement-earpiece-speaker-original) | +| PinePhone | Works | Works | | +| Xiaomi Mi A1 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-xiaomi-mi-a1-replacement-ear-piece-speaker-oem) | +| Xiaomi Redmi Note 4 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-xiaomi-redmi-note-4-replacement-ear-piece-speaker-oem) | + +Notes: + +¹ The earpiece is too thin, it can work with padding to keep the contacts together. + +² Audio playback is very low quality. + +## Incompatible earpieces + +The following devices are known to have replacement earpieces with dimensions too large to fit inside the PinePhone or PinePhone Pro. + +* Blackberry Classic Q20 +* HTC Desire 500 +* HTC M10 +* Huawei Honor 7A +* Huawei Mate 10 Pro +* Huawei Y7 Prime 2018 +* OnePlus 2 +* Oppo Reno 5 4G +* Sony Xperia X Compact +* Sony Xperia XA1 Ultra +* Sony Xperia XP X Performance +* Sony Xperia XZ diff --git a/content/documentation/PinePhone/Privacy_switches.adoc b/content/documentation/PinePhone/Privacy_switches.adoc deleted file mode 100644 index b5a1a2de..00000000 --- a/content/documentation/PinePhone/Privacy_switches.adoc +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Privacy switches" -draft: false -menu: - docs: - title: - parent: "PinePhone" - identifier: "PinePhone/Privacy_switches" - weight: 7 ---- - -{{< figure src="/documentation/images/PinePhone_Kill_Interruptors_de_Maquinari_del_PinePhone_4529.jpg" title="Picture of the privacy switches" width="320" >}} - -The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their "on" position is toward the top of the phone. - -[cols="1,1,1,1"] -|=== -| Number | Name | Explanation | Description - -| 1 -| Modem -| Pulls Q1501 gate up (FET killing modem power) -| "On" enables 2G/3G/4G communication and GNSS hardware, "off" disables it. - -| 2 -| WiFi / Bluetooth -| Pulls up CHIP_EN -| "On" enables WiFi and Bluetooth communication hardware, "off" disables it. - -| 3 -| Microphone -| Breaks microphone bias voltage from the SoC -| "On" enables audio input from on-board microphones (not 3.5 mm jack), "off" disables it. - -| 4 -| Rear camera -| Pulls up PWDN on OV5640 -| "On" enables the rear camera, "off" disables it. - -| 5 -| Front camera -| Pulls up PWDN on GC2145 -| "On" enables the front camera, "off" disables it. - -| 6 -| Headphone -| Pulls up IN2 on analog switch BCT4717ETB -| "On" enables audio input and output via the 3.5 mm audio jack, "off" switches the jack to hardware UART mode. -|=== - diff --git a/content/documentation/PinePhone/Privacy_switches.md b/content/documentation/PinePhone/Privacy_switches.md new file mode 100644 index 00000000..5e58adc6 --- /dev/null +++ b/content/documentation/PinePhone/Privacy_switches.md @@ -0,0 +1,23 @@ +--- +title: "Privacy switches" +draft: false +menu: + docs: + title: + parent: "PinePhone" + identifier: "PinePhone/Privacy_switches" + weight: 7 +--- + +{{< figure src="/documentation/images/PinePhone_Kill_Interruptors_de_Maquinari_del_PinePhone_4529.jpg" title="Picture of the privacy switches" width="320" >}} + +The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their "on" position is toward the top of the phone. + +| Number | Name | Explanation | Description | +| --- | --- | --- | --- | +| 1 | Modem | Pulls Q1501 gate up (FET killing modem power) | "On" enables 2G/3G/4G communication and GNSS hardware, "off" disables it. | +| 2 | WiFi / Bluetooth | Pulls up CHIP_EN | "On" enables WiFi and Bluetooth communication hardware, "off" disables it. | +| 3 | Microphone | Breaks microphone bias voltage from the SoC | "On" enables audio input from on-board microphones (not 3.5 mm jack), "off" disables it. | +| 4 | Rear camera | Pulls up PWDN on OV5640 | "On" enables the rear camera, "off" disables it. | +| 5 | Front camera | Pulls up PWDN on GC2145 | "On" enables the front camera, "off" disables it. | +| 6 | Headphone | Pulls up IN2 on analog switch BCT4717ETB | "On" enables audio input and output via the 3.5 mm audio jack, "off" switches the jack to hardware UART mode. | diff --git a/content/documentation/PinePhone/Software_tricks/Power_management.adoc b/content/documentation/PinePhone/Software_tricks/Power_management.adoc deleted file mode 100644 index 68c5d4a4..00000000 --- a/content/documentation/PinePhone/Software_tricks/Power_management.adoc +++ /dev/null @@ -1,440 +0,0 @@ ---- -title: "Power Management" -draft: false -hidden: true -menu: - docs: - title: - parent: "PinePhone/Software_tricks" - identifier: "PinePhone/Software_tricks/Power_management" - weight: ---- - -The data on this page is based on the the link:/documentation/PinePhone/Revisions/PinePhone_v1.1_-_Braveheart[PinePhone v1.1 - Braveheart]. - -== Regulators - -=== Current Assignments - -[cols="1,1,1,1,1"] -|=== -|Name/GPIO | Output Voltage | Can disable at runtime? | Can disable in suspend? | Consumers (internal/external separated by semicolon) - -| DCDC1 -| 3.3V -| No -| No (VCC-IO) -| VCC-EFUSE, VCC-IO, VCC-PC (VQMMC2), VCC-PD, VCC-USB; Modem [I2C, PCM, UART], Motor, Pogo I2C, UART0, VMMC0, VMMC2, WiFi CHIP_EN - -| DCDC2 -| DVFS -| No -| Yes -| VDD-CPUX - -| DCDC3 -| DVFS -| N/A -| N/A -| VDD-CPUX (polyphase with DCDC2) - -| DCDC4 -| N/A -| Yes -| Yes -| Not used - -| DCDC5 -| 1.2V -| No -| Yes (future) -| VCC-DRAM; DRAM - -| DCDC6 -| 1.1V -| No -| Yes (future) -| VDD-SYS - -| DC1SW -| N/A -| Yes -| Yes -| Not used - -| ALDO1 -| 2.8V -| Yes -| Yes -| VCC-PE; Camera AFVCC, Camera DOVDD, CSI I2C, Pogo I2C - -| ALDO2 -| 1.8V -| No -| No (VCC-PL) -| VCC-PL; Pogo INT - -| ALDO3 -| 3.0V -| No -| No (KEYADC) -| AVCC, KEYADC, VCC-PLL - -| DLDO1 -| 3.3V -| No -| No (ANX7688 AVDD33) -| HVCC, VCC-DSI; ANX7688 [AVDD33, HDMI_VT, I2C, ANX-V1.0 Enable, VCONN_EN Disable Pull-up], HDMI [DDC, HPD], Proximity LED, Sensor I2C, Sensor VDD - -| DLDO2 -| 1.8V? 3.3V? -| Yes -| Yes -| MIPI-DSI VIO - -| DLDO3 -| 2.8V -| Yes -| Yes -| Camera AVDD - -| DLDO4 -| 1.8V-3.3V -| Yes -| Yes -| VCC-PG; VQMMC1 - -| ELDO1 -| 1.8V -| No -| No (DRAM) -| CPVDD; DRAM - -| ELDO2 -| N/A -| Yes -| Yes -| Not used - -| ELDO3 -| 1.8V -| Yes -| Yes -| Camera DVDD - -| FLDO1 -| 1.2V -| Yes -| Yes -| HSIC-VCC (not used) - -| FLDO2 -| 1.1V -| No -| No (VDD-CPUS) -| VDD-CPUS - -| GPIO0-LDO -| 3.3V -| Yes -| Yes -| Backlight PWM, LCD, Proximity sensor VDD, Touchscreen [I2C, VCC] - -| GPIO1-LDO -| 1.8V -| No -| No (ANX7688 DVDD1V8) -| ANX7688 [AVDD1V8, DVDD1V8, CC, HDMI DDC, I2C, Power/Reset pull-up] - -| PD6 -| 5.0V -| Yes -| Yes -| USB OTG - -| PD8 -| 5.0V -| Yes -| Yes -| Pogo supply, USB OTG via PD6 - -| PD9 -| 5.0V -| Yes -| Yes -| VCONN (USB Type C) - -| PH10 -| PWM -| Yes -| Yes -| Backlight - -| PL7 -| VBAT -| Yes -| Yes -| Modem - -| ANX-V1.0 -| 1.0V -| Yes -| Yes -| ANX7688 [AVDD1V0, DVDD1V0] -|=== - -=== Suggested Regulator Hardware Changes - -==== ANX7688 - -. Move ANX7688 AVDD33 (the chip input only, not the other things connected to 3v3) and ANX7688 I2C Level Shift (3.3V side) from DLD01 to DCDC1, and ANX7688 VCONN_EN Disable Pull-up (R1355 and R1366) from DLDO1 to ANX1.8V -. [.line-through]#Move ANX7688 ANX1.8V from GPIO1-LDO to ALDO2# -. Move ANX7688 ANX-V1.0 Regulator Enable (R1352) from DLDO1 to a GPIO - -These are all medium priority. - -The result of these changes would be that: - -. The always-on part of the ANX7688 chip (AVDD33, DVDD1V8) will always be powered -. GPIO1-LDO only needs to be powered when a USB cable is detected, and is enough to power the rest of the chip (except HDMI) -. DLDO1 only needs to be enabled if the display pipeline or sensors are active, even if a USB cable is plugged in - -//// -==== Sensors - -. This may or may not be a good idea, so it's a very weak suggestion: Swap the VDD and LEDA inputs of the STK3311-A sensor, moving VDD to DLDO1 and LEDA to GPIO0-LDO. The sensor VDD needs to match the I2C voltage, and the LED driver should be on a separate power supply from the sensors. There is some concern, because GPIO0-LDO has a 100mA limit, but the proximity sensor should work properly at the lowest LED drive current (12.5mA). -//// - -=== Assignments after Suggested Changes - -Note: Only regulators that were modified are included here. - -[cols="1,1,1,1,1"] -|=== -|Name/GPIO|Output Voltage|Can disable at runtime?|Can disable in suspend?|Consumers (internal/external separated by semicolon) - -| DCDC1 -| 3.3V -| No -| No (VCC-IO) -| VCC-EFUSE, VCC-IO, VCC-PC (VQMMC2), VCC-PD, VCC-USB; ANX7688 [AVDD33, I2C], Modem [I2C, PCM, UART], Motor, Pogo I2C, UART0, VMMC0, VMMC2, WiFi CHIP_EN - -| ALDO2 -| 1.8V -| No -| No (VCC-PL) -| VCC-PL; ANX7688 [DVDD1V8], Pogo INT - -| DLDO1 -| 3.3V -| Yes -| Yes -| HVCC, VCC-DSI; ANX7688 [HDMI_VT], HDMI [DDC, HPD], Proximity sensor VDD, Sensor I2C, Sensor VDD - -| GPIO0-LDO -| 3.3V -| Yes -| Yes -| Backlight PWM, LCD, Proximity LED, Touchscreen [I2C, VCC] - -| GPIO1-LDO -| 1.8V -| Yes -| Yes -| ANX7688 [ANX-V1.0 Enable, AVDD1V8, CC, HDMI DDC, I2C, Power/Reset pull-up, VCONN_EN Disable Pull-up] -|=== - -=== Open Questions - -* How is ANX1.8V actually powered? from GPIO1-LDO (R1309) or PS (U1301) or both? -* Is DLDO2 supposed to be 1.8V or 3.3V? The schematic says both in different places. -** From LCD and LCD controller datasheets, this should be 1.8V. -* If DLDO2 is 3.3V, can we spread the HDMI/DSI/Sensors better across DLDO1 and DLDO2 so they can be more independent? -** Looks like this is N/A, because DLDO2 should be 1.8V. - -== GPIO - -=== Current Modem Pin Assignments - -Note: only pins relevant to power management are included in this table. - -|=== -|Pin|Signal Name|Description|Direction (as modem)|Needed in suspend?|Connected to - -| 1 -| **WAKEUP_IN** -| Drive low to wake up the modem -| I -| No -| PH7 (active high) - -| 2 -| **AP_READY** -| Drive high/low to signal the A64 is ready to receive URCs -| I -| No (if held) -| NC - -| 4 -| **W_DISABLE#** -| Drive low to enter Airplane Mode -| I -| No (if held/tristate) -| PH8 (active high) - -| 20 -| **RESET_N** -| Drive low to reset the modem -| I -| No (if held/tristate) -| PC4 (active high) - -| 21 -| **PWRKEY** -| Drive low to turn the modem on/off -| I -| No (if held/tristate) -| PB3 (active high) - -| 61 -| **STATUS** -| Open drain output, pulled low when the modem is on -| O -| No -| PB3 - -| 62 -| **RI** -| Pulled low to request host wakeup -| O -| Yes -| PB2 - -| 66 -| **DTR** -| Drive low to wake up the modem -| I -| No -| PL6 (active low) -|=== - -=== Current Port L Pin Assignments - -[cols="1,1,1,1,1"] -|=== -|Pin|Signal Name|Description|Direction|Needed in suspend? - -| PL0 -| **PMU-SCK** -| AXP803 I2C/RSB Clock -| O -| Yes - -| PL1 -| **PMU-SDA** -| AXP803 I2C/RSB Data -| I/O -| Yes - -| PL2 -| **WL-REG-ON** -| Not Connected -| N/A -| N/A - -| PL3 -| **WL-WAKE-AP** -| Wake-on-WLAN Interrupt -| I -| Yes - -| PL4 -| **BT-RST-N** -| Bluetooth Reset Control -| O -| No (if held) - -| PL5 -| **BT-WAKE-AP** -| Wake-on-BT Interrupt -| I -| Yes - -| PL6 -| **DTR** -| Modem DTR (Wakeup Request) -| O -| No - -| PL7 -| **4G-PWR-BAT** -| Modem Power Supply Control -| O -| No (if held) - -| PL8 -| **ANX7688-CABLE_DET** -| ANX7688 Cable Detection Interrupt -| I -| Yes - -| PL9 -| **ANX_RESET** -| ANX7688 Reset Control -| O -| No (if held) - -| PL10 -| **LCD-PWM** -| LCD Backlight PWM Brightness Control -| O -| No - -| PL11 -| **ANX7688-INT** -| ANX7688 Alert Interrupt -| I -| Yes - -| PL12 -| **POGO-INT** -| Pogo Pin Interrupt -| I -| Yes -|=== - -=== Pins Held During Suspend - -=== Pins Active During Suspend - -=== Suggested GPIO Hardware Changes - -. Connect **WL-REG-ON** (PL2) to **WL-PMU-EN** (WiFi). _bugfix_ -. Connect the LIS3MDL **DRDY** pin, not **INT** pin, to PB1. _bugfix_ -. Reconnect **LINEOUTN** to make the line output differential. -. Connect PH7 to **AP_READY** instead of **WAKEUP_IN**. Since the A64 needs to drive this pin high (no pull-up on the modem side), this uses the level shifter channel previously used by RI (U1503 channel 4). -. Swap **DTR** (was at PL6, now at PB2 with U1503 channel 3 level shift) and **RI** (was at PB2, now at PL6 with *no level shift*, but a pull-up to ALDO2 on the A64 side*). _partly a bugfix_ -. Connect the modem **PWRKEY** to PB3 only, not **STATUS** or DCDC1 (depopulate R1526). _bugfix_ -. Connect the modem **STATUS** to PH9. This is an open-drain signal, so it needs a pull-up on the A64 side. _bugfix_ -. Disconnect the modem I2C. The level shifter can be repurposed for the next change (modem debug UART). -. [.line-through]#Connect the modem debug UART TX/RX to PD0-1.# -. [.line-through]#Move the modem main UART TX/RX to PD2-3. Motor and CSI reset that are currently at PD2-3 would need to be moved elsewhere.# -. Connect both AXP803 **USB-DRVVBUS** (populate R1300) and ANX7688 **VBUS_CTRL** to **DRVVBUS** (in addition to PD6). -.. [.line-through]#Connecting to ANX7688 **VBUS_CTRL** would need a level shift to 1.8V.# -.. Alternatively, swap PL9 and PD6, so the level shift is not necessary, since PL9 is already a 1.8V logic level. -.. [.line-through]#Alternatively, do not connect ANX7688 **VBUS_CTRL**, and at least populate R1300 to connect AXP803 **USB-DRVVBUS**.# -. Reorient the transistors for **ANX_POWER** (PD10) and **ANX_RESET** (PL9) so they do not invert their input, and (more importantly) produce a low-level output by default. (Since PL9 is already at 1.8V, it may no longer need a transistor.) -. [.line-through]#Remove the transistors inverting **VCONN1_EN** and **VCONN2_EN**, and use a pull-up to **DVDD1V8** (that is really already present) instead of the pull-up to **3V3**.# - -*Note:* -Changes 1-7 and 11 are high priority. -Changes 12-13 are medium priority. -Changes 8-10 are low priority. - -* There should be at least one pin where the default value at boot changes, due to being pulled differently, for use in distinguishing the hardware revisions. In v1.1, PL6 reads 0 at boot. Since RI is an active-low interrupt, it needs a pull up. And it doesn't need any level translation. So that's our perfect opportunity. If PL6 reads low at boot, it's a v1.1 device; if PL6 reads high at boot, it's a v1.2 device. - -=== Open Questions - -* What exactly is the modem PWRKEY currently connected to? PB3? STATUS? DCDC1? -* Currently STATUS pin is connected to PWRKEY and to PB3. STATUS can't be read reliably since voltage divider from R1526 and R1517 places the STATUS signal at 0V or 0.5*Vcc-IO, which is unspecified input value according to A64 datasheet (Vih is 0.7*Vcc-IO, Vil is 0.3*Vcc-IO, the range in between is unspecified). - diff --git a/content/documentation/PinePhone/Software_tricks/Power_management.md b/content/documentation/PinePhone/Software_tricks/Power_management.md new file mode 100644 index 00000000..2ed61b16 --- /dev/null +++ b/content/documentation/PinePhone/Software_tricks/Power_management.md @@ -0,0 +1,153 @@ +--- +title: "Power Management" +draft: false +hidden: true +menu: + docs: + title: + parent: "PinePhone/Software_tricks" + identifier: "PinePhone/Software_tricks/Power_management" + weight: +--- + +The data on this page is based on the the [PinePhone v1.1 - Braveheart](/documentation/PinePhone/Revisions/PinePhone_v1.1_-_Braveheart). + +## Regulators + +### Current Assignments + +| Name/GPIO | Output Voltage | Can disable at runtime? | Can disable in suspend? | Consumers (internal/external separated by semicolon) | +| --- | --- | --- | --- | --- | +| DCDC1 | 3.3V | No | No (VCC-IO) | VCC-EFUSE, VCC-IO, VCC-PC (VQMMC2), VCC-PD, VCC-USB; Modem [I2C, PCM, UART], Motor, Pogo I2C, UART0, VMMC0, VMMC2, WiFi CHIP_EN | +| DCDC2 | DVFS | No | Yes | VDD-CPUX | +| DCDC3 | DVFS | N/A | N/A | VDD-CPUX (polyphase with DCDC2) | +| DCDC4 | N/A | Yes | Yes | Not used | +| DCDC5 | 1.2V | No | Yes (future) | VCC-DRAM; DRAM | +| DCDC6 | 1.1V | No | Yes (future) | VDD-SYS | +| DC1SW | N/A | Yes | Yes | Not used | +| ALDO1 | 2.8V | Yes | Yes | VCC-PE; Camera AFVCC, Camera DOVDD, CSI I2C, Pogo I2C | +| ALDO2 | 1.8V | No | No (VCC-PL) | VCC-PL; Pogo INT | +| ALDO3 | 3.0V | No | No (KEYADC) | AVCC, KEYADC, VCC-PLL | +| DLDO1 | 3.3V | No | No (ANX7688 AVDD33) | HVCC, VCC-DSI; ANX7688 [AVDD33, HDMI_VT, I2C, ANX-V1.0 Enable, VCONN_EN Disable Pull-up], HDMI [DDC, HPD], Proximity LED, Sensor I2C, Sensor VDD | +| DLDO2 | 1.8V? 3.3V? | Yes | Yes | MIPI-DSI VIO | +| DLDO3 | 2.8V | Yes | Yes | Camera AVDD | +| DLDO4 | 1.8V-3.3V | Yes | Yes | VCC-PG; VQMMC1 | +| ELDO1 | 1.8V | No | No (DRAM) | CPVDD; DRAM | +| ELDO2 | N/A | Yes | Yes | Not used | +| ELDO3 | 1.8V | Yes | Yes | Camera DVDD | +| FLDO1 | 1.2V | Yes | Yes | HSIC-VCC (not used) | +| FLDO2 | 1.1V | No | No (VDD-CPUS) | VDD-CPUS | +| GPIO0-LDO | 3.3V | Yes | Yes | Backlight PWM, LCD, Proximity sensor VDD, Touchscreen [I2C, VCC] | +| GPIO1-LDO | 1.8V | No | No (ANX7688 DVDD1V8) | ANX7688 [AVDD1V8, DVDD1V8, CC, HDMI DDC, I2C, Power/Reset pull-up] | +| PD6 | 5.0V | Yes | Yes | USB OTG | +| PD8 | 5.0V | Yes | Yes | Pogo supply, USB OTG via PD6 | +| PD9 | 5.0V | Yes | Yes | VCONN (USB Type C) | +| PH10 | PWM | Yes | Yes | Backlight | +| PL7 | VBAT | Yes | Yes | Modem | +| ANX-V1.0 | 1.0V | Yes | Yes | ANX7688 [AVDD1V0, DVDD1V0] | + +### Suggested Regulator Hardware Changes + +#### ANX7688 + +1. Move ANX7688 AVDD33 (the chip input only, not the other things connected to 3v3) and ANX7688 I2C Level Shift (3.3V side) from DLD01 to DCDC1, and ANX7688 VCONN_EN Disable Pull-up (R1355 and R1366) from DLDO1 to ANX1.8V +2. ~~Move ANX7688 ANX1.8V from GPIO1-LDO to ALDO2~~ +3. Move ANX7688 ANX-V1.0 Regulator Enable (R1352) from DLDO1 to a GPIO + +These are all medium priority. + +The result of these changes would be that: + +1. The always-on part of the ANX7688 chip (AVDD33, DVDD1V8) will always be powered +2. GPIO1-LDO only needs to be powered when a USB cable is detected, and is enough to power the rest of the chip (except HDMI) +3. DLDO1 only needs to be enabled if the display pipeline or sensors are active, even if a USB cable is plugged in + +### Assignments after Suggested Changes + +Note: Only regulators that were modified are included here. + +| Name/GPIO | Output Voltage | Can disable at runtime? | Can disable in suspend? | Consumers (internal/external separated by semicolon) | +| --- | --- | --- | --- | --- | +| DCDC1 | 3.3V | No | No (VCC-IO) | VCC-EFUSE, VCC-IO, VCC-PC (VQMMC2), VCC-PD, VCC-USB; ANX7688 [AVDD33, I2C], Modem [I2C, PCM, UART], Motor, Pogo I2C, UART0, VMMC0, VMMC2, WiFi CHIP_EN | +| ALDO2 | 1.8V | No | No (VCC-PL) | VCC-PL; ANX7688 [DVDD1V8], Pogo INT | +| DLDO1 | 3.3V | Yes | Yes | HVCC, VCC-DSI; ANX7688 [HDMI_VT], HDMI [DDC, HPD], Proximity sensor VDD, Sensor I2C, Sensor VDD | +| GPIO0-LDO | 3.3V | Yes | Yes | Backlight PWM, LCD, Proximity LED, Touchscreen [I2C, VCC] | +| GPIO1-LDO | 1.8V | Yes | Yes | ANX7688 [ANX-V1.0 Enable, AVDD1V8, CC, HDMI DDC, I2C, Power/Reset pull-up, VCONN_EN Disable Pull-up] | + +### Open Questions + +* How is ANX1.8V actually powered? from GPIO1-LDO (R1309) or PS (U1301) or both? +* Is DLDO2 supposed to be 1.8V or 3.3V? The schematic says both in different places. + * From LCD and LCD controller datasheets, this should be 1.8V. +* If DLDO2 is 3.3V, can we spread the HDMI/DSI/Sensors better across DLDO1 and DLDO2 so they can be more independent? + * Looks like this is N/A, because DLDO2 should be 1.8V. + +## GPIO + +### Current Modem Pin Assignments + +Note: only pins relevant to power management are included in this table. + +| Pin | Signal Name | Description | Direction (as modem) | Needed in suspend? | Connected to | +| --- | --- | --- | --- | --- | --- | +| 1 | ***WAKEUP_IN*** | Drive low to wake up the modem | I | No | PH7 (active high) | +| 2 | ***AP_READY*** | Drive high/low to signal the A64 is ready to receive URCs | I | No (if held) | NC | +| 4 | ***W_DISABLE#*** | Drive low to enter Airplane Mode | I | No (if held/tristate) | PH8 (active high) | +| 20 | ***RESET_N*** | Drive low to reset the modem | I | No (if held/tristate) | PC4 (active high) | +| 21 | ***PWRKEY*** | Drive low to turn the modem on/off | I | No (if held/tristate) | PB3 (active high) | +| 61 | ***STATUS*** | Open drain output, pulled low when the modem is on | O | No | PB3 | +| 62 | ***RI*** | Pulled low to request host wakeup | O | Yes | PB2 | +| 66 | ***DTR*** | Drive low to wake up the modem | I | No | PL6 (active low) | + +### Current Port L Pin Assignments + +| Pin | Signal Name | Description | Direction | Needed in suspend? | +| --- | --- | --- | --- | --- | +| PL0 | ***PMU-SCK*** | AXP803 I2C/RSB Clock | O | Yes | +| PL1 | ***PMU-SDA*** | AXP803 I2C/RSB Data | I/O | Yes | +| PL2 | ***WL-REG-ON*** | Not Connected | N/A | N/A | +| PL3 | ***WL-WAKE-AP*** | Wake-on-WLAN Interrupt | I | Yes | +| PL4 | ***BT-RST-N*** | Bluetooth Reset Control | O | No (if held) | +| PL5 | ***BT-WAKE-AP*** | Wake-on-BT Interrupt | I | Yes | +| PL6 | ***DTR*** | Modem DTR (Wakeup Request) | O | No | +| PL7 | ***4G-PWR-BAT*** | Modem Power Supply Control | O | No (if held) | +| PL8 | ***ANX7688-CABLE_DET*** | ANX7688 Cable Detection Interrupt | I | Yes | +| PL9 | ***ANX_RESET*** | ANX7688 Reset Control | O | No (if held) | +| PL10 | ***LCD-PWM*** | LCD Backlight PWM Brightness Control | O | No | +| PL11 | ***ANX7688-INT*** | ANX7688 Alert Interrupt | I | Yes | +| PL12 | ***POGO-INT*** | Pogo Pin Interrupt | I | Yes | + +### Pins Held During Suspend + +### Pins Active During Suspend + +### Suggested GPIO Hardware Changes + +1. Connect ***WL-REG-ON*** (PL2) to ***WL-PMU-EN*** (WiFi). _bugfix_ +2. Connect the LIS3MDL ***DRDY*** pin, not ***INT*** pin, to PB1. _bugfix_ +3. Reconnect ***LINEOUTN*** to make the line output differential. +4. Connect PH7 to ***AP_READY*** instead of ***WAKEUP_IN***. Since the A64 needs to drive this pin high (no pull-up on the modem side), this uses the level shifter channel previously used by RI (U1503 channel 4). +5. Swap ***DTR*** (was at PL6, now at PB2 with U1503 channel 3 level shift) and ***RI*** (was at PB2, now at PL6 with **no level shift**, but a pull-up to ALDO2 on the A64 side*). _partly a bugfix_ +6. Connect the modem ***PWRKEY*** to PB3 only, not ***STATUS*** or DCDC1 (depopulate R1526). _bugfix_ +7. Connect the modem ***STATUS*** to PH9. This is an open-drain signal, so it needs a pull-up on the A64 side. _bugfix_ +8. Disconnect the modem I2C. The level shifter can be repurposed for the next change (modem debug UART). +9. ~~Connect the modem debug UART TX/RX to PD0-1.~~ +10. ~~Move the modem main UART TX/RX to PD2-3. Motor and CSI reset that are currently at PD2-3 would need to be moved elsewhere.~~ +11. Connect both AXP803 ***USB-DRVVBUS*** (populate R1300) and ANX7688 ***VBUS_CTRL*** to ***DRVVBUS*** (in addition to PD6). + 1. ~~Connecting to ANX7688 ***VBUS_CTRL*** would need a level shift to 1.8V.~~ + 2. Alternatively, swap PL9 and PD6, so the level shift is not necessary, since PL9 is already a 1.8V logic level. + 3. ~~Alternatively, do not connect ANX7688 ***VBUS_CTRL****, and at least populate R1300 to connect AXP803 **USB-DRVVBUS***.~~ +12. Reorient the transistors for ***ANX_POWER*** (PD10) and ***ANX_RESET*** (PL9) so they do not invert their input, and (more importantly) produce a low-level output by default. (Since PL9 is already at 1.8V, it may no longer need a transistor.) +13. ~~Remove the transistors inverting ***VCONN1_EN*** and ***VCONN2_EN****, and use a pull-up to **DVDD1V8*** (that is really already present) instead of the pull-up to ***3V3***.~~ + +**Note:** +Changes 1-7 and 11 are high priority. +Changes 12-13 are medium priority. +Changes 8-10 are low priority. + +* There should be at least one pin where the default value at boot changes, due to being pulled differently, for use in distinguishing the hardware revisions. In v1.1, PL6 reads 0 at boot. Since RI is an active-low interrupt, it needs a pull up. And it doesn’t need any level translation. So that’s our perfect opportunity. If PL6 reads low at boot, it’s a v1.1 device; if PL6 reads high at boot, it’s a v1.2 device. + +### Open Questions + +* What exactly is the modem PWRKEY currently connected to? PB3? STATUS? DCDC1? +* Currently STATUS pin is connected to PWRKEY and to PB3. STATUS can’t be read reliably since voltage divider from R1526 and R1517 places the STATUS signal at 0V or 0.5*Vcc-IO, which is unspecified input value according to A64 datasheet (Vih is 0.7*Vcc-IO, Vil is 0.3*Vcc-IO, the range in between is unspecified). diff --git a/content/documentation/PinePhone_Pro/Development.adoc b/content/documentation/PinePhone_Pro/Development.md similarity index 65% rename from content/documentation/PinePhone_Pro/Development.adoc rename to content/documentation/PinePhone_Pro/Development.md index 22a7143e..e86c5024 100644 --- a/content/documentation/PinePhone_Pro/Development.adoc +++ b/content/documentation/PinePhone_Pro/Development.md @@ -11,30 +11,20 @@ aliases: - /documentation/PinePhone_Pro/Various/Development/ --- -This page documents development processes and provides links to resources to help prospective contributors get started. For an overview of the current software state see link:/documentation/PinePhone_Pro/Software/Software_state/[software state]. +This page documents development processes and provides links to resources to help prospective contributors get started. For an overview of the current software state see [software state](/documentation/PinePhone_Pro/Software/Software_state/). -== Upstreaming status +## Upstreaming status -|=== -| Function | Status | Component | Notes +| Function | Status | Component | Notes | +| --- | --- | --- | --- | +| Bootloader (u-boot) | Working. Not upstreamed. | | https://github.com/dreemurrs-embedded/Pine64-Arch/tree/master/PKGBUILDS/pine64/uboot-pinephonepro uses https://git.sr.ht/~martijnbraam/u-boot. | +| Modem | Working. Not upstreamed. | | Support in https://gitlab.com/mobian1/devices/eg25-manager and Megi’s kernel. | -| Bootloader (u-boot) -| Working. Not upstreamed. -| -| https://github.com/dreemurrs-embedded/Pine64-Arch/tree/master/PKGBUILDS/pine64/uboot-pinephonepro uses https://git.sr.ht/~martijnbraam/u-boot. +## Levinboot-based kernel development image -| Modem -| Working. Not upstreamed. -| -| Support in https://gitlab.com/mobian1/devices/eg25-manager and Megi's kernel. -|=== +This guide will help you get a comfortable environment for testing your kernel builds on Pinephone Pro. It assumes you either already know how to build or cross-build a Linux kernel for arm64, or if you have a way to get a pre-built kernel from somewhere. For a quick test that your setup works, you can use [megi’s pre-built kernels](https://xff.cz/kernels/). - -== Levinboot-based kernel development image - -This guide will help you get a comfortable environment for testing your kernel builds on Pinephone Pro. It assumes you either already know how to build or cross-build a Linux kernel for arm64, or if you have a way to get a pre-built kernel from somewhere. For a quick test that your setup works, you can use https://xff.cz/kernels/[megi's pre-built kernels]. - -Quick and easy way to get started with kernel development and testing is to use CrystalGamma's Levinboot patched with support for Pinephone Pro and 3-option boot selection using volume keys. https://xnux.eu/log/#049[You will be able to switch between kernels quickly without swapping uSD cards, which is necessary for painless kernel development experience.] +Quick and easy way to get started with kernel development and testing is to use CrystalGamma’s Levinboot patched with support for Pinephone Pro and 3-option boot selection using volume keys. [You will be able to switch between kernels quickly without swapping uSD cards, which is necessary for painless kernel development experience.](https://xnux.eu/log/#049) 1) Create a following partitioning scheme on a uSD card using `sfdisk`: @@ -53,7 +43,7 @@ name="sd-rootfs2" This can either be done interactively, or by saving the above to a file, like `format.txt`, and running `sfdisk /dev/ < format.txt` -2) Write Levinboot to `sd-lboot` partition using `dd`. You can get a pre-built and tested version https://xff.cz/kernels/pinephone-pro/[here] There are two options `levinboot-sd.img` and `levinboot-emmc.img` you can use either one of them for your `sd-lboot` partition. They differ in where they load the payloads from (either from SD or eMMC) and not in where they can be flashed to. For uSD card only workflow, you'll want `levinboot-sd.img`. +2) Write Levinboot to `sd-lboot` partition using `dd`. You can get a pre-built and tested version [here](https://xff.cz/kernels/pinephone-pro/) There are two options `levinboot-sd.img` and `levinboot-emmc.img` you can use either one of them for your `sd-lboot` partition. They differ in where they load the payloads from (either from SD or eMMC) and not in where they can be flashed to. For uSD card only workflow, you’ll want `levinboot-sd.img`. 3) Prepare payloads for Levinboot and copy them to appropriate partitions. Partition `sd-lpayload1` is used by default, `sd-lpayload2` when you hold a volume down key during powerup, and `sd-lpayload3` when you hold the volume up key. @@ -63,16 +53,16 @@ Preparing a payload involves getting a TF-A `bl31.elf` build, kernel `Image` bui BOOTOPTS=( console=tty1 - earlycon=uart8250,mmio32,0xff1a0000 - console=ttyS2,1500000n8 + earlycon=uart8250,mmio32,0xff1a0000 + console=ttyS2,1500000n8 - root=PARTLABEL=emmc-rootfs1 - rootfstype=f2fs - rootflags=fastboot - rootwait - rw + root=PARTLABEL=emmc-rootfs1 + rootfstype=f2fs + rootflags=fastboot + rootwait + rw - loglevel=7 + loglevel=7 ) BOOTOPTS="${BOOTOPTS[@]}" @@ -95,7 +85,6 @@ dd if=payload.img of=/dev/disk/by-partlabel/sd-lpayload1 bs=4M oflag=direct 5) Repeat steps 3 and 4 if you want either more kernel payloads, or more Linux distributions on the same uSD card. I recommend having at least some module-less working kernel in `sd-payload3` and perhaps a small userspace in `sd-rootfs1` with a pre-configured WiFi connection, that will allow you to always quickly recover if your development kernel fails to boot, just by pressing volume up key during boot and updating the the kernel in one of the primary payload partitions over WiFi. -== Resources - -* See link:https://xnux.eu/log/[megi's PinePhone Development Log] +## Resources +* See [megi’s PinePhone Development Log](https://xnux.eu/log/) diff --git a/content/documentation/PinePhone_Pro/Hardware/_index.adoc b/content/documentation/PinePhone_Pro/Hardware/_index.adoc deleted file mode 100644 index 80a46f58..00000000 --- a/content/documentation/PinePhone_Pro/Hardware/_index.adoc +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: "Hardware" -draft: false -menu: - docs: - title: - parent: "PinePhone_Pro" - identifier: "PinePhone_Pro/Hardware" - weight: 97 -aliases: - - /documentation/PinePhone_Pro/Hardware/Replacement_earpieces - - /documentation/PinePhone_Pro/Further_information/Components ---- - -:toc: - -== Components - -[cols="1,1"] -|=== -| Component | Model - -| Touchscreen -| Goodix GT917S - -| LCD -| Himax HX8394 compatible - -| Rear camera -| IMX258 - -| Front camera -| OV8858 - -| Camera flash -| AW3641EDNR - -| WiFi + Bluetooth -| https://www.azurewave.com/img/wireless-modules/AW_CM256SM_DS_Rev15_CYW.pdf[AzureWave AW-CM256SM] - -| Modem -| http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf[Quectel EG25-G] - -| GNSS/GPS -| http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf[Quectel EG25-G] - -| 3 Axis Magnetometer -| AF8133J - -| Geo Magnetic Sensor -| http://www.voltafield.com/products01.html[Voltafield AF8133J] - -| Ambient light / Proximity -| STK3311-A - -| Accelerometer / Gyroscope -| https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6500/[TDK MPU-6500] - -| Vibration motor -| - -| Notification LED -| LED0603RGB - -| Audio Codec -| ALC5616 and ALC5640 - -| Volume buttons -| Buttons connected to the KEYADC - -| Power button -| - -| Battery fuel gauge -| https://rockchip.fr/RK818%20datasheet%20V1.0.pdf[RK818] -|=== - - - -== Replacement earpieces - -The earpiece (or earpiece speaker) refers to the small speaker at the top of the **PinePhone** and **PinePhone Pro**. - -This part is not available to purchase from the PINE64 Store. However, it is possible to buy a replacement earpiece for another device, and install it in a PinePhone or PinePhone Pro. This documents earpieces that have been tested by the community, and verified to work. - -Note that the earpiece dimensions for both the PinePhone and PinePhone Pro are 12x6x2 mm. When looking into earpieces not found in this list, aim for these dimensions. - -[cols="1,1,1,1"] -|=== -| Earpiece | PinePhone | PinePhone Pro | Where to Buy - -| LG K8 2017 M200N -| Kind of ¹ -| Broken -| https://www.replacebase.co.uk/for-lg-k8-2017-m200n-replacement-ear-piece-speaker-oem[Replace Base] - -| Nokia 5 -| Works -| Works -| https://www.replacebase.co.uk/for-nokia-5-replacement-ear-piece-speaker-with-adhesive-oem[Replace Base] - -| Nokia 7 -| Works ² -| Works ² -| https://www.replacebase.co.uk/for-nokia-7-replacement-ear-piece-speaker-unit-module-oem[Replace Base] - -| Nokia X5 -| Works -| Works -| https://www.replacebase.co.uk/for-nokia-x5-replacement-earpiece-speaker-unit-oem[Replace Base] - -| OnePlus One -| Works -| Works -| https://www.ifixit.com/products/oneplus-one-earpiece-speaker[iFixit], https://www.replacebase.co.uk/oneplus-one-replacement-earpiece-speaker-original[Replace Base] - -| OnePlus X -| Works -| Works -| https://www.replacebase.co.uk/oneplus-x-replacement-earpiece-speaker-original[Replace Base] - -| PinePhone -| Works -| Works -| - -| Xiaomi Mi A1 -| Works -| Works -| https://www.replacebase.co.uk/for-xiaomi-mi-a1-replacement-ear-piece-speaker-oem[Replace Base] - -| Xiaomi Redmi Note 4 -| Works -| Works -| https://www.replacebase.co.uk/for-xiaomi-redmi-note-4-replacement-ear-piece-speaker-oem[Replace Base] -|=== - -Notes: - -¹ The earpiece is too thin, it can work with padding to keep the contacts together. - -² Audio playback is very low quality. - -== Incompatible earpieces - -The following devices are known to have replacement earpieces with dimensions too large to fit inside the PinePhone or PinePhone Pro. - -* Blackberry Classic Q20 -* HTC Desire 500 -* HTC M10 -* Huawei Honor 7A -* Huawei Mate 10 Pro -* Huawei Y7 Prime 2018 -* OnePlus 2 -* Oppo Reno 5 4G -* Sony Xperia X Compact -* Sony Xperia XA1 Ultra -* Sony Xperia XP X Performance -* Sony Xperia XZ \ No newline at end of file diff --git a/content/documentation/PinePhone_Pro/Hardware/_index.md b/content/documentation/PinePhone_Pro/Hardware/_index.md new file mode 100644 index 00000000..363daf60 --- /dev/null +++ b/content/documentation/PinePhone_Pro/Hardware/_index.md @@ -0,0 +1,79 @@ +--- +title: "Hardware" +draft: false +menu: + docs: + title: + parent: "PinePhone_Pro" + identifier: "PinePhone_Pro/Hardware" + weight: 97 +aliases: + - /documentation/PinePhone_Pro/Hardware/Replacement_earpieces + - /documentation/PinePhone_Pro/Further_information/Components +--- + +## Components + +| Component | Model | +| --- | --- | +| Touchscreen | Goodix GT917S | +| LCD | Himax HX8394 compatible | +| Rear camera | IMX258 | +| Front camera | OV8858 | +| Camera flash | AW3641EDNR | +| WiFi + Bluetooth | [AzureWave AW-CM256SM](https://www.azurewave.com/img/wireless-modules/AW_CM256SM_DS_Rev15_CYW.pdf) | +| Modem | [Quectel EG25-G](http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf) | +| GNSS/GPS | [Quectel EG25-G](http://static.abstore.pl/design/accounts/soyter/img/dokumentacje/quectel_eg25-g.pdf) | +| 3 Axis Magnetometer | AF8133J | +| Geo Magnetic Sensor | [Voltafield AF8133J](http://www.voltafield.com/products01.html) | +| Ambient light / Proximity | STK3311-A | +| Accelerometer / Gyroscope | [TDK MPU-6500](https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6500/) | +| Vibration motor | | +| Notification LED | LED0603RGB | +| Audio Codec | ALC5616 and ALC5640 | +| Volume buttons | Buttons connected to the KEYADC | +| Power button | | +| Battery fuel gauge | [RK818](https://rockchip.fr/RK818%20datasheet%20V1.0.pdf) | + +## Replacement earpieces + +The earpiece (or earpiece speaker) refers to the small speaker at the top of the ***PinePhone*** and ***PinePhone Pro***. + +This part is not available to purchase from the PINE64 Store. However, it is possible to buy a replacement earpiece for another device, and install it in a PinePhone or PinePhone Pro. This documents earpieces that have been tested by the community, and verified to work. + +Note that the earpiece dimensions for both the PinePhone and PinePhone Pro are 12x6x2 mm. When looking into earpieces not found in this list, aim for these dimensions. + +| Earpiece | PinePhone | PinePhone Pro | Where to Buy | +| --- | --- | --- | --- | +| LG K8 2017 M200N | Kind of ¹ | Broken | [Replace Base](https://www.replacebase.co.uk/for-lg-k8-2017-m200n-replacement-ear-piece-speaker-oem) | +| Nokia 5 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-nokia-5-replacement-ear-piece-speaker-with-adhesive-oem) | +| Nokia 7 | Works ² | Works ² | [Replace Base](https://www.replacebase.co.uk/for-nokia-7-replacement-ear-piece-speaker-unit-module-oem) | +| Nokia X5 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-nokia-x5-replacement-earpiece-speaker-unit-oem) | +| OnePlus One | Works | Works | [iFixit](https://www.ifixit.com/products/oneplus-one-earpiece-speaker), [Replace Base](https://www.replacebase.co.uk/oneplus-one-replacement-earpiece-speaker-original) | +| OnePlus X | Works | Works | [Replace Base](https://www.replacebase.co.uk/oneplus-x-replacement-earpiece-speaker-original) | +| PinePhone | Works | Works | | +| Xiaomi Mi A1 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-xiaomi-mi-a1-replacement-ear-piece-speaker-oem) | +| Xiaomi Redmi Note 4 | Works | Works | [Replace Base](https://www.replacebase.co.uk/for-xiaomi-redmi-note-4-replacement-ear-piece-speaker-oem) | + +Notes: + +¹ The earpiece is too thin, it can work with padding to keep the contacts together. + +² Audio playback is very low quality. + +## Incompatible earpieces + +The following devices are known to have replacement earpieces with dimensions too large to fit inside the PinePhone or PinePhone Pro. + +* Blackberry Classic Q20 +* HTC Desire 500 +* HTC M10 +* Huawei Honor 7A +* Huawei Mate 10 Pro +* Huawei Y7 Prime 2018 +* OnePlus 2 +* Oppo Reno 5 4G +* Sony Xperia X Compact +* Sony Xperia XA1 Ultra +* Sony Xperia XP X Performance +* Sony Xperia XZ diff --git a/content/documentation/PinePhone_Pro/Privacy_switches.adoc b/content/documentation/PinePhone_Pro/Privacy_switches.adoc deleted file mode 100644 index a9118f5c..00000000 --- a/content/documentation/PinePhone_Pro/Privacy_switches.adoc +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Privacy switches" -draft: false -menu: - docs: - title: - parent: "PinePhone_Pro" - identifier: "PinePhone_Pro/Privacy_switches" - weight: 6 ---- - -{{< figure src="/documentation/images/PinePhone_Kill_Interruptors_de_Maquinari_del_PinePhone_4529.jpg" title="Picture of the privacy switches" width="320" >}} - -The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their "on" position is toward the top of the phone. - -[cols="^1,^2,4"] -|=== -|Number|Name|Description - -| 1 -| Modem -| "On" enables 2G/3G/4G communication and GNSS hardware, "off" disables it. - -| 2 -| WiFi / Bluetooth -| "On" enables WiFi and Bluetooth communication hardware, "off" disables it. - -| 3 -| Microphone -| "On" enables audio input from on-board microphones (not 3.5 mm jack), "off" disables it. - -| 4 -| Rear camera -| "On" enables the rear camera, "off" disables it. - -| 5 -| Front camera -| "On" enables the front camera, "off" disables it. - -| 6 -| Headphone -| "On" enables audio input and output via the 3.5 mm audio jack, "off" switches the jack to hardware UART¹ mode. -|=== - -¹ Note: The baud rate may be 1500000 instead of 115200. - diff --git a/content/documentation/PinePhone_Pro/Privacy_switches.md b/content/documentation/PinePhone_Pro/Privacy_switches.md new file mode 100644 index 00000000..1b5a413e --- /dev/null +++ b/content/documentation/PinePhone_Pro/Privacy_switches.md @@ -0,0 +1,25 @@ +--- +title: "Privacy switches" +draft: false +menu: + docs: + title: + parent: "PinePhone_Pro" + identifier: "PinePhone_Pro/Privacy_switches" + weight: 6 +--- + +{{< figure src="/documentation/images/PinePhone_Kill_Interruptors_de_Maquinari_del_PinePhone_4529.jpg" title="Picture of the privacy switches" width="320" >}} + +The PinePhone features six switches that can be used to configure its hardware. They are numbered 1-6, with switch 1 located nearest to the modem. Their "on" position is toward the top of the phone. + +| Number | Name | Description | +| --- | --- | --- | +| 1 | Modem | "On" enables 2G/3G/4G communication and GNSS hardware, "off" disables it. | +| 2 | WiFi / Bluetooth | "On" enables WiFi and Bluetooth communication hardware, "off" disables it. | +| 3 | Microphone | "On" enables audio input from on-board microphones (not 3.5 mm jack), "off" disables it. | +| 4 | Rear camera | "On" enables the rear camera, "off" disables it. | +| 5 | Front camera | "On" enables the front camera, "off" disables it. | +| 6 | Headphone | "On" enables audio input and output via the 3.5 mm audio jack, "off" switches the jack to hardware UART¹ mode. | + +¹ Note: The baud rate may be 1500000 instead of 115200. diff --git a/content/documentation/PinePhone_Pro/Software/Software_state.adoc b/content/documentation/PinePhone_Pro/Software/Software_state.adoc index 6fe3e7c9..c4f6cb32 100644 --- a/content/documentation/PinePhone_Pro/Software/Software_state.adoc +++ b/content/documentation/PinePhone_Pro/Software/Software_state.adoc @@ -20,7 +20,9 @@ The following table lists the feature functionality status of the unaltered pre- * Matrix: https://app.element.io/#/room/#pinephone:matrix.org * Telegram: https://t.me/pinephone -TIP: The software is *written by the community*, any contributions towards the community projects are greatly appreciated! Please see "link:/documentation/Introduction/How_to_contribute[How to Contribute]" to learn about how to contribute to the software projects and "link:/documentation/Introduction/Where_to_report_bugs[Where to Report Bugs]" to learn about where to report bugs. +{{% admonition type="note" %}} +The software is *written by the community*, any contributions towards the community projects are greatly appreciated! Please see "link:/documentation/Introduction/How_to_contribute[How to Contribute]" to learn about how to contribute to the software projects and "link:/documentation/Introduction/Where_to_report_bugs[Where to Report Bugs]" to learn about where to report bugs. +{{% /admonition %}} [cols="2,2,1,1,4"] |=== diff --git a/content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.adoc b/content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.md similarity index 69% rename from content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.adoc rename to content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.md index b29d1d88..fa96b748 100644 --- a/content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.adoc +++ b/content/documentation/PinePower/Versions/120W_Desktop_Power_Supply.md @@ -13,7 +13,7 @@ menu: A 120W desktop power adapter. It features 1 USB-C port and 4 USB-A port. The 120W output is not per port, but total output power. This is calculated by combining the 65W USB-C, 3x15W USB-A and the 18W USB-A QC, making a total of 128W. The only difference between the US and EU edition is the supplied power cable. Every port, with exception of the wireless Q-charger, has a display, portraying the output voltage and amps. The display back light can be turned on and off by capacitive touch button, located on the top left side of the unit. -== General specifications +## General specifications Body: @@ -43,42 +43,17 @@ Connections: * 4x USB-A * 1x USB-C -== Power specifications - -[cols="1,1,1,1,1"] -|=== -|Output -|Protocol -|Version -|Max output power -|Power ranges - -| USB-C -| https://en.wikipedia.org/wiki/USB_hardware#USB_Power_Delivery_(USB_PD)[PD] -| ? -| 65W -| 5V3A, 9V3A, 12V3A, 15V3A, 20V3.25A - -| USB-A -| https://en.wikipedia.org/wiki/Quick_Charge[QC] -| 3.1 -| 18W -| 5V3A, 9V2A, 12V1.5A - -| USB-A -| USB -| ? -| 15W -| 5V3A - -| Wireless charger -| https://en.wikipedia.org/wiki/Qi_(standard)[Qi] -| 1.2 -| 10W -| - -|=== - -== Internals +## Power specifications + +| | | | | | +| --- | --- | --- | --- | --- | +| Output | Protocol | Version | Max output power | Power ranges | +| USB-C | [PD](https://en.wikipedia.org/wiki/USB_hardware#USB_Power_Delivery_(USB_PD)) | ? | 65W | 5V3A, 9V3A, 12V3A, 15V3A, 20V3.25A | +| USB-A | [QC](https://en.wikipedia.org/wiki/Quick_Charge) | 3.1 | 18W | 5V3A, 9V2A, 12V1.5A | +| USB-A | USB | ? | 15W | 5V3A | +| Wireless charger | [Qi](https://en.wikipedia.org/wiki/Qi_(standard)) | 1.2 | 10W | - | + +## Internals The power unit is not made to be disassembled, do so at your own risk. The front plate is secured with 4 tabs, that can be disengaged with a screwdriver. The complete assembly can be slid out, but do mind the same tab in the casing. The power button at the back of the case has a plug that can be disconnected from the main PCB. The wireless charging PCB has to be de-soldered, or forcefully removed from the inner casing, as it is glued to the top of the case. @@ -94,10 +69,10 @@ Some remarks: * This main PCB is marked as XR SEMI v1.1 * Two unmarked packages, control the display. * An antenna is connected on the display PCB, lining up with the 'lamp' symbol. This is the capacitive touch button to control the display back light. -* The 65W PD USB-C port is controlled by a http://www.hynetek.com/product/pdController/HUSB339/document/HUSB339_DS_EN_V1.2.pdf[HUSB339] controller, paired with a GOFORD G16 MOSFET. -* The other ports have a http://www.lshchip.com/pdf/Deep-pool/NDP1360KC_EN_Rev1.1.pdf[NDP1360KC] as final power converter. +* The 65W PD USB-C port is controlled by a [HUSB339](http://www.hynetek.com/product/pdController/HUSB339/document/HUSB339_DS_EN_V1.2.pdf) controller, paired with a GOFORD G16 MOSFET. +* The other ports have a [NDP1360KC](http://www.lshchip.com/pdf/Deep-pool/NDP1360KC_EN_Rev1.1.pdf) as final power converter. -== Certifications +## Certifications -* https://files.pine64.org/doc/cert/120W%20Desktop%20PinePower%20FCC%20Certificate-DL-20221129012C.pdf[120W PinePower Desktop Power Supply FCC Certificate] -* https://files.pine64.org/doc/cert/120W%20Desktop%20PinePower%20CE%20EMC%20Certificate-DL-20221129011C.pdf[120W PinePower Desktop Power Supply CE EMC Certificate] \ No newline at end of file +* [120W PinePower Desktop Power Supply FCC Certificate](https://files.pine64.org/doc/cert/120W%20Desktop%20PinePower%20FCC%20Certificate-DL-20221129012C.pdf) +* [120W PinePower Desktop Power Supply CE EMC Certificate](https://files.pine64.org/doc/cert/120W%20Desktop%20PinePower%20CE%20EMC%20Certificate-DL-20221129011C.pdf) diff --git a/content/documentation/PinePower/Versions/65W_GaN_Charger.adoc b/content/documentation/PinePower/Versions/65W_GaN_Charger.adoc deleted file mode 100644 index ede11a64..00000000 --- a/content/documentation/PinePower/Versions/65W_GaN_Charger.adoc +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: "65W GaN Charger" -draft: false -menu: - docs: - title: - parent: "PinePower/Versions" - identifier: "PinePower/Versions/65W_GaN_Charger" - weight: 1 ---- - -The PinePower is a small and compact palm size 65W wall socket power adapter. It features 2 USB-C ports and 1 USB-A port charger. https://en.wikipedia.org/wiki/Gallium_nitride[Gallium Nitride] technology ensures a small and light charger with high charging efficiency. It has a retractable US plug. - -== General specifications - -Body: - -* Dimensions: 74.8mm x 36.6mm x 32mm -* Weight: 130 grams -* Build: Plastic -* Color: Black - -Power: - -* Input: AC 100-240V 50/60Hz 1.5A Max -* Output: 65W -* Power switch - -Connections: - -* 240Vac input US plug, adapters for AU, EU, and UK, -* 1x USB-A -* 2x USB-C - -== Power specifications - -[cols="1,1,1,1,1"] -|=== -|Output -|Max output power -|Power ranges PD -|Power ranges QC -|Power ranges PPS - -| Single USB-C1 or C2 -| 65W -| 5V3A, 9V3A, 12V3A, 15V3A, 20V3.5A -| - -| 3.3-11V5A - -| Single USB-A -| 65W -| - -| QC3.0 4.5V5A, 5V4.5A, 9V3A, 12V3A, 20V3A -| - - -|USB-C1 & -USB-C2 combined -| -*45W -*18W -| -*5V3A, 9V3A, 12V3A, 15V3A -*5V3A, 9V2A, 12V1.5A -| - -| - - -| USB-C1 & -USB-A combined -| -*45W -*18W -| -*5V3A, 9V3A, 12V3A, 15V3A -*- -| -*- -*5V3A, 9V2A, 12V1.5A -| - - -|USB-C1 & -USB-C2 + USB-A combined -| -*45W -*15W -| -*5V3A, 9V3A, 12V3A, 15V3A -*5V3A -| - -| - -|=== - -== Internals - -_TBA_ - -== Certifications - -* https://files.pine64.org/doc/cert/65W%20PinePower%20FCC-SDO%20Certificate-LCSA110222005E.pdf[65W PinePower GaN Charger FCC Certificate] -* https://files.pine64.org/doc/cert/65W%20PinePower%20GaN%20Charger%20CE%20EMC%20Certificate-LCSA110222003E.pdf[65W PinePower GaN Charger CE EMC Certificate] -* https://files.pine64.org/doc/cert/65W%20PinePower%20GaN%20Charger%20CE%20LVD%20Certificate-LCSA110222004S.pdf[65W PinePower GaN Charger CE LVD Certificate] \ No newline at end of file diff --git a/content/documentation/PinePower/Versions/65W_GaN_Charger.md b/content/documentation/PinePower/Versions/65W_GaN_Charger.md new file mode 100644 index 00000000..53b2e0ab --- /dev/null +++ b/content/documentation/PinePower/Versions/65W_GaN_Charger.md @@ -0,0 +1,54 @@ +--- +title: "65W GaN Charger" +draft: false +menu: + docs: + title: + parent: "PinePower/Versions" + identifier: "PinePower/Versions/65W_GaN_Charger" + weight: 1 +--- + +The PinePower is a small and compact palm size 65W wall socket power adapter. It features 2 USB-C ports and 1 USB-A port charger. [Gallium Nitride](https://en.wikipedia.org/wiki/Gallium_nitride) technology ensures a small and light charger with high charging efficiency. It has a retractable US plug. + +## General specifications + +Body: + +* Dimensions: 74.8mm x 36.6mm x 32mm +* Weight: 130 grams +* Build: Plastic +* Color: Black + +Power: + +* Input: AC 100-240V 50/60Hz 1.5A Max +* Output: 65W +* Power switch + +Connections: + +* 240Vac input US plug, adapters for AU, EU, and UK, +* 1x USB-A +* 2x USB-C + +## Power specifications + +| | | | | | +| --- | --- | --- | --- | --- | +| Output | Max output power | Power ranges PD | Power ranges QC | Power ranges PPS | +| Single USB-C1 or C2 | 65W | 5V3A, 9V3A, 12V3A, 15V3A, 20V3.5A | - | 3.3-11V5A | +| Single USB-A | 65W | - | QC3.0 4.5V5A, 5V4.5A, 9V3A, 12V3A, 20V3A | - | +| USB-C1 & USB-C2 combined | *45W *18W | *5V3A, 9V3A, 12V3A, 15V3A *5V3A, 9V2A, 12V1.5A | - | - | +| USB-C1 & USB-A combined | *45W *18W | *5V3A, 9V3A, 12V3A, 15V3A *- | *- *5V3A, 9V2A, 12V1.5A | - | +| USB-C1 & USB-C2 + USB-A combined | *45W *15W | *5V3A, 9V3A, 12V3A, 15V3A *5V3A | - | - | + +## Internals + +_TBA_ + +## Certifications + +* [65W PinePower GaN Charger FCC Certificate](https://files.pine64.org/doc/cert/65W%20PinePower%20FCC-SDO%20Certificate-LCSA110222005E.pdf) +* [65W PinePower GaN Charger CE EMC Certificate](https://files.pine64.org/doc/cert/65W%20PinePower%20GaN%20Charger%20CE%20EMC%20Certificate-LCSA110222003E.pdf) +* [65W PinePower GaN Charger CE LVD Certificate](https://files.pine64.org/doc/cert/65W%20PinePower%20GaN%20Charger%20CE%20LVD%20Certificate-LCSA110222004S.pdf) diff --git a/content/documentation/PineTime/Development/Available_firmware_and_projects.adoc b/content/documentation/PineTime/Development/Available_firmware_and_projects.adoc deleted file mode 100644 index 050ad4a9..00000000 --- a/content/documentation/PineTime/Development/Available_firmware_and_projects.adoc +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: "Available firmware and projects" -draft: false -menu: - docs: - title: - parent: "PineTime/Development" - identifier: "PineTime/Development/Available_firmware_and_projects" - weight: ---- - - -[cols="1,1,1,1"] -|=== -||Project Homepage|Project Source|PineTime Implementations - -|FreeRTOS -|https://www.freertos.org -| https://sourceforge.net/projects/freertos/ -a|link:/documentation/PineTime/Software/InfiniTime[InfiniTime] (GitHub: https://github.com/JF002/Pinetime[JF002/Pinetime])+ -https://github.com/kaythe/pinetime-os[kaythe/pinetime-os] - - -|Zephyr -| https://www.zephyrproject.org -| https://github.com/zephyrproject-rtos/zephyr -a|https://github.com/najnesnaj/pinetime-zephyr[najnesnaj/pinetime-zephyr] + -https://github.com/SuperPrower/pinetime_zephyr_sample_fw[SuperPrower/pinetime_zephyr_sample_fw] + -https://github.com/Dejvino/pinetime-hermes-firmware[Dejvino/pinetime-hermes-firmware] + -https://github.com/endian-albin/pinetime-hypnos[endian-albin/pinetime-hypnos] + -https://zephyrlabs.github.io/Watchfaces/OmegaTime/[omegatime watchface] - - -|mynewt -| https://mynewt.apache.org/about/ -| https://github.com/apache/mynewt-core -|https://github.com/lupyuen/pinetime-rust-mynewt[lupyuen/pinetime-rust-mynewt](Discontinued by Creator) + -https://gitlab.com/caspermeijn/klok[caspermeijn/klok] - - -|MbedOS -| https://os.mbed.com -| https://github.com/ARMmbed/mbed-os -|https://github.com/sethitow/mbed-pinetime[sethitow/mbed-pinetime] + -https://github.com/geoffrey-vl/mbed-pinetime[geoffrey.vl/mbed-pinetime] - - -|RIOT -| http://riot-os.org/ -| https://github.com/RIOT-OS/RIOT/ -| https://github.com/bosmoment/PineTime-apps[bosmoment/PineTime-apps] - -|TinyGo -| https://tinygo.org -| https://github.com/tinygo-org/tinygo -| https://github.com/aykevl/go-smartwatch[aykevl/go-smartwatch] - -|wasp-os (MicroPython) -| https://wasp-os.readthedocs.io/ -| https://github.com/daniel-thompson/wasp-os -| https://wasp-os.readthedocs.io/en/latest/install.html#pine64-pinetime-developer-edition[WaspOS PineTime install guide] - -|Rust + RTFM -| https://rtfm.rs/ -| https://github.com/rtfm-rs/cortex-m-rtfm[rtfm-rs/cortex-m-rtfm] -| https://github.com/dbrgn/pinetime-rtfm/ - -|Bare Metal -| -| https://github.com/xriss/timecake + -https://github.com/Arc13/Pyrus -|https://github.com/xriss/timecake[xriss/timecake] + -https://github.com/Arc13/Pyrus[Arc13/Pyrus] - - -|AdaFruit bootloader -| -| https://github.com/adafruit/Adafruit_nRF52_Bootloader -| https://github.com/daniel-thompson/wasp-bootloader[daniel-thompson/wasp-bootloader] - -|Useful drivers -| -| https://github.com/sethitow/mbed-pinetime -| https://github.com/sethitow/mbed-pinetime/tree/master/drivers[https://github.com/sethitow/mbed-pinetime] -|=== - -[cols="1,1,1,1"] -|=== -||Project Homepage|Project Source|PineTime Implementations - -|Gadgetbridge (Android companion app) -| https://gadgetbridge.org/ -| https://codeberg.org/Freeyourgadget/Gadgetbridge -| InfiniTime support in mainline - -|Arduino -| https://youtu.be/4aFDjymXjOw -| https://github.com/atc1441/ATCwatch -| https://github.com/atc1441/ATCwatch - -|OTA Update Flasher / DaFlasher -| https://youtu.be/gUVEz-pxhgg -| https://github.com/atc1441/DaFlasherFiles -| https://github.com/atc1441/DaFlasherFiles - -|InfiniTime companion app for Linux -| https://github.com/alexr4535/siglo[alexr4535/siglo] -| -| - -|Wasp-os companion app for Linux -| https://github.com/Siroj42/wasp-companion[Siroj42/wasp-companion] -| -| - -|UI design proposal -| https://github.com/arteeh/pinetime[arteeh/pinetime] -| -| - -|Flashing app for Linux -| https://github.com/arteeh/pinetime-flasher[arteeh/pinetime-flasher] -| -| - -|Flashing app for Windows -| https://github.com/ZephyrLabs/PinetimeFlasher[ZephyrLabs/PinetimeFlasher] -| -| - -|ESP32 / ESP8266 SWD WebFlasher -| https://youtu.be/Iu6RoXRZxOk -| https://github.com/atc1441/ESP32_nRF52_SWD -| - -|InfiniTime companion daemon for Linux -| https://gitea.elara.ws/Elara6331/itd[Elara6331/ITD] -| -| - -|=== \ No newline at end of file diff --git a/content/documentation/PineTime/Development/Available_firmware_and_projects.md b/content/documentation/PineTime/Development/Available_firmware_and_projects.md new file mode 100644 index 00000000..e306d7f6 --- /dev/null +++ b/content/documentation/PineTime/Development/Available_firmware_and_projects.md @@ -0,0 +1,37 @@ +--- +title: "Available firmware and projects" +draft: false +menu: + docs: + title: + parent: "PineTime/Development" + identifier: "PineTime/Development/Available_firmware_and_projects" + weight: +--- + +| | Project Homepage | Project Source | PineTime Implementations | +| --- | --- | --- | --- | +| FreeRTOS | https://www.freertos.org | https://sourceforge.net/projects/freertos/ | [InfiniTime](/documentation/PineTime/Software/InfiniTime) (GitHub: [JF002/Pinetime](https://github.com/JF002/Pinetime))+ [kaythe/pinetime-os](https://github.com/kaythe/pinetime-os) | +| Zephyr | https://www.zephyrproject.org | https://github.com/zephyrproject-rtos/zephyr | [najnesnaj/pinetime-zephyr](https://github.com/najnesnaj/pinetime-zephyr)
[SuperPrower/pinetime_zephyr_sample_fw](https://github.com/SuperPrower/pinetime_zephyr_sample_fw)
[Dejvino/pinetime-hermes-firmware](https://github.com/Dejvino/pinetime-hermes-firmware)
[endian-albin/pinetime-hypnos](https://github.com/endian-albin/pinetime-hypnos)
[omegatime watchface](https://zephyrlabs.github.io/Watchfaces/OmegaTime/) | +| mynewt | https://mynewt.apache.org/about/ | https://github.com/apache/mynewt-core | [lupyuen/pinetime-rust-mynewt](https://github.com/lupyuen/pinetime-rust-mynewt)(Discontinued by Creator)
[caspermeijn/klok](https://gitlab.com/caspermeijn/klok) | +| MbedOS | https://os.mbed.com | https://github.com/ARMmbed/mbed-os | [sethitow/mbed-pinetime](https://github.com/sethitow/mbed-pinetime)
[geoffrey.vl/mbed-pinetime](https://github.com/geoffrey-vl/mbed-pinetime) | +| RIOT | http://riot-os.org/ | https://github.com/RIOT-OS/RIOT/ | [bosmoment/PineTime-apps](https://github.com/bosmoment/PineTime-apps) | +| TinyGo | https://tinygo.org | https://github.com/tinygo-org/tinygo | [aykevl/go-smartwatch](https://github.com/aykevl/go-smartwatch) | +| wasp-os (MicroPython) | https://wasp-os.readthedocs.io/ | https://github.com/daniel-thompson/wasp-os | [WaspOS PineTime install guide](https://wasp-os.readthedocs.io/en/latest/install.html#pine64-pinetime-developer-edition) | +| Rust + RTFM | https://rtfm.rs/ | [rtfm-rs/cortex-m-rtfm](https://github.com/rtfm-rs/cortex-m-rtfm) | https://github.com/dbrgn/pinetime-rtfm/ | +| Bare Metal | | https://github.com/xriss/timecake
https://github.com/Arc13/Pyrus | [xriss/timecake](https://github.com/xriss/timecake)
[Arc13/Pyrus](https://github.com/Arc13/Pyrus) | +| AdaFruit bootloader | | https://github.com/adafruit/Adafruit_nRF52_Bootloader | [daniel-thompson/wasp-bootloader](https://github.com/daniel-thompson/wasp-bootloader) | +| Useful drivers | | https://github.com/sethitow/mbed-pinetime | [https://github.com/sethitow/mbed-pinetime](https://github.com/sethitow/mbed-pinetime/tree/master/drivers) | + +| | Project Homepage | Project Source | PineTime Implementations | +| --- | --- | --- | --- | +| Gadgetbridge (Android companion app) | https://gadgetbridge.org/ | https://codeberg.org/Freeyourgadget/Gadgetbridge | InfiniTime support in mainline | +| Arduino | https://youtu.be/4aFDjymXjOw | https://github.com/atc1441/ATCwatch | https://github.com/atc1441/ATCwatch | +| OTA Update Flasher / DaFlasher | https://youtu.be/gUVEz-pxhgg | https://github.com/atc1441/DaFlasherFiles | https://github.com/atc1441/DaFlasherFiles | +| InfiniTime companion app for Linux | [alexr4535/siglo](https://github.com/alexr4535/siglo) | | | +| Wasp-os companion app for Linux | [Siroj42/wasp-companion](https://github.com/Siroj42/wasp-companion) | | | +| UI design proposal | [arteeh/pinetime](https://github.com/arteeh/pinetime) | | | +| Flashing app for Linux | [arteeh/pinetime-flasher](https://github.com/arteeh/pinetime-flasher) | | | +| Flashing app for Windows | [ZephyrLabs/PinetimeFlasher](https://github.com/ZephyrLabs/PinetimeFlasher) | | | +| ESP32 / ESP8266 SWD WebFlasher | https://youtu.be/Iu6RoXRZxOk | https://github.com/atc1441/ESP32_nRF52_SWD | | +| InfiniTime companion daemon for Linux | [Elara6331/ITD](https://gitea.elara.ws/Elara6331/itd) | | | diff --git a/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.adoc b/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.adoc deleted file mode 100644 index f9d2cd71..00000000 --- a/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.adoc +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Firmware versioning for companion apps" -draft: false -menu: - docs: - title: - parent: "PineTime/Software" - identifier: "PineTime/Software/Firmware_versioning_for_companion_apps" - weight: ---- - -BLE defines a standard service (Device Information Service, DIS) that allows BLE devices to expose information about them: hardware version, software version. - -Companion apps will use these information to detect which firmware (or fork of a firmware) is running on the Pinetime they are connected to. - -== How to use the Device Information Service to differentiate firmwares? - -We've briefly talked about this on the community chat and this proposal is the result of this discussion. This is a request for comments. - -Fields from the Device Information Service: -[cols="1,1,1"] -|=== -|Field -|Description -|Example value - -|Manufacturer name -|Manufacturer -|PINE64 - -|Model number -|Name of the device -|"PineTime", "P8" - -|Serial number -|Not needed by companion apps as they can use the BLE MAC address -| ? - -|Hardware revision -|Version of the hardware -|1.0a - -|Software revision -|Project name or fork name -|"InfiniTime", "InfiniTime-forkname", "Hypnos" - -|Firmware revision -|Version of the firmware -|"0.7.1" -|=== - diff --git a/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.md b/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.md new file mode 100644 index 00000000..404785de --- /dev/null +++ b/content/documentation/PineTime/Software/Firmware_versioning_for_companion_apps.md @@ -0,0 +1,29 @@ +--- +title: "Firmware versioning for companion apps" +draft: false +menu: + docs: + title: + parent: "PineTime/Software" + identifier: "PineTime/Software/Firmware_versioning_for_companion_apps" + weight: +--- + +BLE defines a standard service (Device Information Service, DIS) that allows BLE devices to expose information about them: hardware version, software version. + +Companion apps will use these information to detect which firmware (or fork of a firmware) is running on the Pinetime they are connected to. + +## How to use the Device Information Service to differentiate firmwares? + +We’ve briefly talked about this on the community chat and this proposal is the result of this discussion. This is a request for comments. + +Fields from the Device Information Service: +| | | | +| --- | --- | --- | +| Field | Description | Example value | +| Manufacturer name | Manufacturer | PINE64 | +| Model number | Name of the device | "PineTime", "P8" | +| Serial number | Not needed by companion apps as they can use the BLE MAC address | ? | +| Hardware revision | Version of the hardware | 1.0a | +| Software revision | Project name or fork name | "InfiniTime", "InfiniTime-forkname", "Hypnos" | +| Firmware revision | Version of the firmware | "0.7.1" | diff --git a/content/documentation/PineTime/Software/Reprogramming.adoc b/content/documentation/PineTime/Software/Reprogramming.adoc deleted file mode 100644 index e67182bd..00000000 --- a/content/documentation/PineTime/Software/Reprogramming.adoc +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: "Reprogramming the PineTime" -draft: false -menu: - docs: - title: - parent: "PineTime/Software" - identifier: "PineTime/Software/Reprogramming" - weight: ---- - -== Introduction - -The PineTime Dev Kit comes with the back not glued down to allow it to be easily reprogrammed, however the kit does not include an hardware programmer/debugger. - -Before you can use your debugger/programmer, you probably have to link:/documentation/PineTime/Further_information/Devkit_wiring[wire up your pinetime]. Heavily recommended you read this first. - -There is a bewildering variety of different hardware programmers available but whatever programmer you have there are only a few tasks you will have to learn about: - -* Unlocking the device *Note: PineTime watches shipped after 20 Sep 2020 do not require unlocking. They are shipped unlocked.* -* Uploading new software -* Running a debugger - -All of these are described in this article. - -Unlocking the device is a one-time action that is needed to enable the debug port and provide full access to the device. Unlocking the device will erase all existing software from the internal flash. - -== SWD Pinout - -See link:/documentation/PineTime/Further_information/Devkit_wiring[Devkit wiring] - -== nrfjprog (for Segger JLink) - -The following steps have been tested with the Segger JLink embedded in the https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK[NRF52-DK development board]. - -=== Hookup - -Connect the Pinetime SWD pins to the debugger (P20 on NRF52-DK) - -[cols="1,1"] -|=== -|Pinetime -|JLink - -|GND -|GND - -|SWDCLK -|SWDCLK - -|SWDIO -|SWDIO - -|VCC (3.3V) -|VTG (target detect) -|=== - -=== Unlocking the FLASH - -Unlocking the device and erase the memory. - -*You need to execute this step only once, to remove the read protection on the memory. Note that it will erase the whole flash memory of the MCU|* : - - nrfjprog -f NRF52 --recover - -=== Uploading new software - -1. Program the BLE softdevice (if needed by the firmware). Replace PATH_TO_NRF_SDK by the path where you unzipped the https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK[NRF52 SDK] : - - nrfjprog -f NRF52 --program /PATH_TO_NRF_SDK/components/softdevice/s132/hex/s132_nrf52_6.1.1_softdevice.hex --sectorerase - -2. Program the firmware (replace firmware.hex by the actual filename of the firmware): - - nrfjprog -f NRF52 --program firmware.hex --sectorerase - -3. Reset and run the new firmware: - - nrfjprog -f NRF52 --reset - -== OpenOCD - -OpenOCD, the Open On-Chip Debugger supports multiple different adapters. You can read more about it here: http://openocd.org/ - -=== Adapters - -These examples allow you to use telnet to issue futher commands to the devkit. Using them you can connect to _127.0.0.1_ (_localhost_) port _4444_ using telnet and invoke OpenOCD commands. GDB should also be available on port _3333_. - -You can simplify your life by creating a configuration file that contains the interface, transport, target and speed configuration. Things like CLion also need one to work properly. - -If you aren't using the latest version of OpenOCD, you might need to substitute things in these examples with older syntax (e.g. instead of _adapter speed_ it's _adapter_khz_). - -==== CMSIS-DAP - -This is a generic specification that is supported by a bunch of different hardware, things such as DAPLink also use it. - -Issue this command to initialize a connection to the devkit: - - openocd \ - -c 'source [find interface/cmsis-dap.cfg]' \ - -c 'transport select swd' \ - -c 'source [find target/nrf52.cfg]' \ - -c 'adapter speed 8000' \ - -c 'init' - -==== JLink - -Start OpenOCD: - - openocd \ - -c 'source [find interface/jlink.cfg]' \ - -c 'transport select swd' \ - -c 'source [find target/nrf52.cfg]' \ - -c 'adapter speed 8000' \ - -c 'init' - -==== Raspberry Pi - - openocd \ - -c 'source bcm2835spi' \ - -c 'bcm2835spi_speed 31200' \ - -c 'source [find target/nrf52.cfg]' \ - -c 'init' - -==== STLink - -Connect PineTime SWD Pins to ST-Link v2 as follows: - -[cols="1,1"] -|=== -|PineTime -|ST-Link - -|GND -|GND - -|SWDCLK -|SWDCLK - -|SWDIO -|SWDIO - -|VCC (3.3V) -|3.3V -|=== - -{{< figure src="/documentation/images/pinetime-stlink.jpg" width="400" >}} - -Note that only the bottom row of pins on ST-Link are used. - -To flash PineTime with ST-Link on Linux and macOS, use https://github.com/lupyuen/pinetime-updater/blob/master/README.md[PineTime Updater] - -link:/documentation/PineTime/FAQ[*ST-Link can't be used to remove nRF52 flash protection*] - -=== Unlocking the device - -If you need to disable access port protection then you can do this using the following commands below. - -This can be done in two ways: - -Appending this to OpenOCD command line: - - -c 'nrf52.dap apreg 1 0x04' -c 'nrf52.dap apreg 1 0x04 0x01' -c 'nrf52.dap apreg 1 0x04' - -Or by using the telnet connection, just type in _telnet localhost 4444_ and then you can issue commands to OpenOCD: - -Note: _Unlocking the device to remove access port protection will erase the contents of flash._ - - telnet localhost 4444 - Trying 127.0.0.1... - Connected to localhost. - Escape character is '^]'. - Open On-Chip Debugger - > nrf52.dap apreg 1 0x04 - 0x00000000 - > nrf52.dap apreg 1 0x04 0x01 - > nrf52.dap apreg 1 0x04 - 0x00000001 - -(If the _nrf52.dap_ command cannot be found, try just _dap_ instead.) - -=== Uploading new software - -Just issue this command, replace _code.hex_ with your own (and cmsis-dap.cfg with an appropriate adapter). - - openocd \ - -c 'source [find interface/cmsis-dap.cfg]' \ - -c 'transport select swd' \ - -c 'source [find target/nrf52.cfg]' \ - -c 'init' \ - -c 'halt' \ - -c 'nrf5 mass_erase' \ - -c 'program code.hex verify' \ - -c 'reset' \ - -c 'exit' - -== Black Magic Probe - -BlackMagic Probe is an JTAG/SWD adapter with open-source firmware, allowing for it to be ported to a multitude of different boards. One of it's defining features is lack of need for intermediate software such as OpenOCD - one would just need to connect to the GDB server running on the chip and proceed with debugging. For more information, refer to https://github.com/blacksphere/blackmagic/wiki[wiki]. - -=== Native adapters - -The native adapters are the official Black Magic family of debug adapters, including the original Black Magic Probe and the Black Magic Probe Mini. By buying the official hardware you are supporting the continued development of the Black Magic Probe software. - -Providing your native adapter is running up-to-date firmware then it can be used to program your PineTime. - -=== STM32 (Blue Pill) - -It is possible to flash a popular development board based on STM32F103C8T6 microcontroller, known as Blue Pill, to make a BlackMagic Probe device. For example, one may follow instructions in https://forum.pine64.org/showthread.php?tid=8816&pid=57095#pid57095[forum post] or https://gist.github.com/darnel/dac1370d057e176386ca4026418abc2b[gist] (mac os). Also, it is possible to use SWD pins on the board to flash other devices, instead using arbitrary pins on the board itself. See https://buger.dread.cz/black-magic-probe-bmp-on-bluepill-stm32f103c8-minimum-system-development-board.html[this link] for more detals. - -=== Other hardware - -The Black Magic Probe firmware can be run on a variety of host devices. See https://github.com/blacksphere/blackmagic/wiki/Debugger-Hardware[BMP Debugger Hardware] for more information. - -=== Using the BMP to flash the PineTime - -Refer to the BMP https://github.com/blacksphere/blackmagic/wiki/Useful-GDB-commands[wiki] for the full description of commands. -Overall, the process on Linux is like following. (/dev/ttyBmpGdb is a symlink created by the udev rule). It's useful to create a gdb script file (or .gdbinit) with following commands: - - target extended-remote /dev/ttyBmpGdb - monitor swdp_scan - attach 1 - file %firmware file% - -Then one may use *load* command to flash the firmware, *compare-sections* to verify the upload, or *monitor erase_mass* to erase the firmware. - -Then, proceed with debugging as normal. - -== External links and additional tutorials - -* https://github.com/jlukanc1/pinetime-boot-flasher -* https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html -* https://blog.dbrgn.ch/2020/5/16/nrf52-unprotect-flash-jlink-openocd/ -* https://medium.com/@ly.lee/openocd-on-raspberry-pi-better-with-swd-on-spi-7dea9caeb590 -* https://medium.com/@ly.lee/build-and-flash-rust-mynewt-firmware-for-pinetime-smart-watch-5e14259c55 - diff --git a/content/documentation/PineTime/Software/Reprogramming.md b/content/documentation/PineTime/Software/Reprogramming.md new file mode 100644 index 00000000..ec9ef840 --- /dev/null +++ b/content/documentation/PineTime/Software/Reprogramming.md @@ -0,0 +1,212 @@ +--- +title: "Reprogramming the PineTime" +draft: false +menu: + docs: + title: + parent: "PineTime/Software" + identifier: "PineTime/Software/Reprogramming" + weight: +--- + +## Introduction + +The PineTime Dev Kit comes with the back not glued down to allow it to be easily reprogrammed, however the kit does not include an hardware programmer/debugger. + +Before you can use your debugger/programmer, you probably have to [wire up your pinetime](/documentation/PineTime/Further_information/Devkit_wiring). Heavily recommended you read this first. + +There is a bewildering variety of different hardware programmers available but whatever programmer you have there are only a few tasks you will have to learn about: + +* Unlocking the device **Note: PineTime watches shipped after 20 Sep 2020 do not require unlocking. They are shipped unlocked.** +* Uploading new software +* Running a debugger + +All of these are described in this article. + +Unlocking the device is a one-time action that is needed to enable the debug port and provide full access to the device. Unlocking the device will erase all existing software from the internal flash. + +## SWD Pinout + +See [Devkit wiring](/documentation/PineTime/Further_information/Devkit_wiring) + +## nrfjprog (for Segger JLink) + +The following steps have been tested with the Segger JLink embedded in the [NRF52-DK development board](https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK). + +### Hookup + +Connect the Pinetime SWD pins to the debugger (P20 on NRF52-DK) + +| | | +| --- | --- | +| Pinetime | JLink | +| GND | GND | +| SWDCLK | SWDCLK | +| SWDIO | SWDIO | +| VCC (3.3V) | VTG (target detect) | + +### Unlocking the FLASH + +Unlocking the device and erase the memory. + +**You need to execute this step only once, to remove the read protection on the memory. Note that it will erase the whole flash memory of the MCU|** : + + nrfjprog -f NRF52 --recover + +### Uploading new software + +1. Program the BLE softdevice (if needed by the firmware). Replace PATH_TO_NRF_SDK by the path where you unzipped the [NRF52 SDK](https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK) : + + nrfjprog -f NRF52 --program /PATH_TO_NRF_SDK/components/softdevice/s132/hex/s132_nrf52_6.1.1_softdevice.hex --sectorerase +2. Program the firmware (replace firmware.hex by the actual filename of the firmware): + + nrfjprog -f NRF52 --program firmware.hex --sectorerase +3. Reset and run the new firmware: + + nrfjprog -f NRF52 --reset + +## OpenOCD + +OpenOCD, the Open On-Chip Debugger supports multiple different adapters. You can read more about it here: http://openocd.org/ + +### Adapters + +These examples allow you to use telnet to issue futher commands to the devkit. Using them you can connect to _127.0.0.1_ (_localhost_) port _4444_ using telnet and invoke OpenOCD commands. GDB should also be available on port _3333_. + +You can simplify your life by creating a configuration file that contains the interface, transport, target and speed configuration. Things like CLion also need one to work properly. + +If you aren’t using the latest version of OpenOCD, you might need to substitute things in these examples with older syntax (e.g. instead of _adapter speed_ it’s _adapter_khz_). + +#### CMSIS-DAP + +This is a generic specification that is supported by a bunch of different hardware, things such as DAPLink also use it. + +Issue this command to initialize a connection to the devkit: + + openocd \ + -c 'source [find interface/cmsis-dap.cfg]' \ + -c 'transport select swd' \ + -c 'source [find target/nrf52.cfg]' \ + -c 'adapter speed 8000' \ + -c 'init' + +#### JLink + +Start OpenOCD: + + openocd \ + -c 'source [find interface/jlink.cfg]' \ + -c 'transport select swd' \ + -c 'source [find target/nrf52.cfg]' \ + -c 'adapter speed 8000' \ + -c 'init' + +#### Raspberry Pi + + openocd \ + -c 'source bcm2835spi' \ + -c 'bcm2835spi_speed 31200' \ + -c 'source [find target/nrf52.cfg]' \ + -c 'init' + +#### STLink + +Connect PineTime SWD Pins to ST-Link v2 as follows: + +| | | +| --- | --- | +| PineTime | ST-Link | +| GND | GND | +| SWDCLK | SWDCLK | +| SWDIO | SWDIO | +| VCC (3.3V) | 3.3V | + +{{< figure src="/documentation/images/pinetime-stlink.jpg" width="400" >}} + +Note that only the bottom row of pins on ST-Link are used. + +To flash PineTime with ST-Link on Linux and macOS, use [PineTime Updater](https://github.com/lupyuen/pinetime-updater/blob/master/README.md) + +[**ST-Link can’t be used to remove nRF52 flash protection**](/documentation/PineTime/FAQ) + +### Unlocking the device + +If you need to disable access port protection then you can do this using the following commands below. + +This can be done in two ways: + +Appending this to OpenOCD command line: + + -c 'nrf52.dap apreg 1 0x04' -c 'nrf52.dap apreg 1 0x04 0x01' -c 'nrf52.dap apreg 1 0x04' + +Or by using the telnet connection, just type in _telnet localhost 4444_ and then you can issue commands to OpenOCD: + +Note: _Unlocking the device to remove access port protection will erase the contents of flash._ + + telnet localhost 4444 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + Open On-Chip Debugger + > nrf52.dap apreg 1 0x04 + 0x00000000 + > nrf52.dap apreg 1 0x04 0x01 + > nrf52.dap apreg 1 0x04 + 0x00000001 + +(If the _nrf52.dap_ command cannot be found, try just _dap_ instead.) + +### Uploading new software + +Just issue this command, replace _code.hex_ with your own (and cmsis-dap.cfg with an appropriate adapter). + + openocd \ + -c 'source [find interface/cmsis-dap.cfg]' \ + -c 'transport select swd' \ + -c 'source [find target/nrf52.cfg]' \ + -c 'init' \ + -c 'halt' \ + -c 'nrf5 mass_erase' \ + -c 'program code.hex verify' \ + -c 'reset' \ + -c 'exit' + +## Black Magic Probe + +BlackMagic Probe is an JTAG/SWD adapter with open-source firmware, allowing for it to be ported to a multitude of different boards. One of it’s defining features is lack of need for intermediate software such as OpenOCD - one would just need to connect to the GDB server running on the chip and proceed with debugging. For more information, refer to [wiki](https://github.com/blacksphere/blackmagic/wiki). + +### Native adapters + +The native adapters are the official Black Magic family of debug adapters, including the original Black Magic Probe and the Black Magic Probe Mini. By buying the official hardware you are supporting the continued development of the Black Magic Probe software. + +Providing your native adapter is running up-to-date firmware then it can be used to program your PineTime. + +### STM32 (Blue Pill) + +It is possible to flash a popular development board based on STM32F103C8T6 microcontroller, known as Blue Pill, to make a BlackMagic Probe device. For example, one may follow instructions in [forum post](https://forum.pine64.org/showthread.php?tid=8816&pid=57095#pid57095) or [gist](https://gist.github.com/darnel/dac1370d057e176386ca4026418abc2b) (mac os). Also, it is possible to use SWD pins on the board to flash other devices, instead using arbitrary pins on the board itself. See [this link](https://buger.dread.cz/black-magic-probe-bmp-on-bluepill-stm32f103c8-minimum-system-development-board.html) for more detals. + +### Other hardware + +The Black Magic Probe firmware can be run on a variety of host devices. See [BMP Debugger Hardware](https://github.com/blacksphere/blackmagic/wiki/Debugger-Hardware) for more information. + +### Using the BMP to flash the PineTime + +Refer to the BMP [wiki](https://github.com/blacksphere/blackmagic/wiki/Useful-GDB-commands) for the full description of commands. +Overall, the process on Linux is like following. (/dev/ttyBmpGdb is a symlink created by the udev rule). It’s useful to create a gdb script file (or .gdbinit) with following commands: + + target extended-remote /dev/ttyBmpGdb + monitor swdp_scan + attach 1 + file %firmware file% + +Then one may use **load** command to flash the firmware, **compare-sections** to verify the upload, or **monitor erase_mass** to erase the firmware. + +Then, proceed with debugging as normal. + +## External links and additional tutorials + +* https://github.com/jlukanc1/pinetime-boot-flasher +* https://blog.aegrel.ee/absniffer-cmsis-dap-sniffer.html +* https://blog.dbrgn.ch/2020/5/16/nrf52-unprotect-flash-jlink-openocd/ +* https://medium.com/@ly.lee/openocd-on-raspberry-pi-better-with-swd-on-spi-7dea9caeb590 +* https://medium.com/@ly.lee/build-and-flash-rust-mynewt-firmware-for-pinetime-smart-watch-5e14259c55 diff --git a/content/documentation/Pinebook_Pro/Features/Internal_layout.adoc b/content/documentation/Pinebook_Pro/Features/Internal_layout.adoc deleted file mode 100644 index d455d5f5..00000000 --- a/content/documentation/Pinebook_Pro/Features/Internal_layout.adoc +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: "Internal layout" -draft: false -menu: - docs: - title: - parent: "Pinebook_Pro/Features" - identifier: "Pinebook_Pro/Features/Internal_layout" - weight: ---- - -== 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). - -{{< figure src="/documentation/images/PBPL_S.jpg" width="500" >}} - -== Key Internal Parts - -[cols="1,1,1,1"] -|=== -|+ Numbered parts classification and description -|Number -|Type -|Descriptor - -|scope=row | 1 -| Component | RK3399 System-On-Chip - -|scope=row | 2 -| Socket | PCIe x4 slot for optional NVMe adapter - -|scope=row | 3 -| Socket | Speakers socket - -|scope=row | 4 -| Socket | Touchpad socket - -|scope=row | 5 -| Component | Left speaker - -|scope=row | 6 -| Connector | Power bridge connector - -|scope=row | 7 -| Socket | Keyboard Socket - -|scope=row | 8 -| Component | Optional NVMe SSD adapter - -|scope=row | 9 -| Switch | UART/Audio switch - enables serial console UART via headphone jack - -|scope=row | 10 -| Socket | Power bridge socket - -|scope=row | 11 -| Socket | Battery socket - -|scope=row | 12 -| Component | Touchpad - -|scope=row | 13 -| Component | Battery - -|scope=row | 14 -| Component | Right speaker - -|scope=row | 15 -| Socket | MicroSD card slot - -|scope=row | 16 -| Socket | Headphone / serial console UART jack - -|scope=row | 17 -| Socket | USB 2.0 Type A - -|scope=row | 18 -| Socket | Daughterboard-to-mainboard ribbon cable socket - -|scope=row | 19 -| Cable | Daughterboard-to-mainboard ribbon cable - -|scope=row | 20 -| Component | microphone - -|scope=row | 21 -| Component | LPDDR4 RAM - -|scope=row | 22 -| Socket | Mainboard-to-daughterboard ribbon cable socket - -|scope=row | 23 -| Socket | Microphone socket - -|scope=row | 24 -| Switch | Switch to hardware disable eMMC - -|scope=row | 25 -| Antenna | BT/WiFI antenna - -|scope=row | 26 -| Component | eMMC flash memory module - -|scope=row | 27 -| Component |BT/WiFi module chip - -|scope=row | 28 -| Buttons | Reset and recovery buttons - -|scope=row | 29 -| Component | SPI flash storage - -|scope=row | 30 -| Socket | eDP LCD socket - -|scope=row | 31 -| Socket | Power in barrel socket - -|scope=row | 32 -| Socket | USB 3.0 Type A - -|scope=row | 33 -| Socket | USB 3.0 Type C -|=== - -== Smallboard detailed picture - -{{< figure src="/documentation/images/Pinebook_pro_smallboard.jpg" width="600" >}} - diff --git a/content/documentation/Pinebook_Pro/Features/Internal_layout.md b/content/documentation/Pinebook_Pro/Features/Internal_layout.md new file mode 100644 index 00000000..0462fcb4 --- /dev/null +++ b/content/documentation/Pinebook_Pro/Features/Internal_layout.md @@ -0,0 +1,68 @@ +--- +title: "Internal layout" +draft: false +menu: + docs: + title: + parent: "Pinebook_Pro/Features" + identifier: "Pinebook_Pro/Features/Internal_layout" + weight: +--- + +## 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). + +{{< figure src="/documentation/images/PBPL_S.jpg" width="500" >}} + +## Key Internal Parts + +| 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 + +{{< figure src="/documentation/images/Pinebook_pro_smallboard.jpg" width="600" >}} diff --git a/content/documentation/Pinebook_Pro/Keyboard/_index.adoc b/content/documentation/Pinebook_Pro/Keyboard/_index.md similarity index 68% rename from content/documentation/Pinebook_Pro/Keyboard/_index.adoc rename to content/documentation/Pinebook_Pro/Keyboard/_index.md index 8fded4c3..8f7cf4a4 100644 --- a/content/documentation/Pinebook_Pro/Keyboard/_index.adoc +++ b/content/documentation/Pinebook_Pro/Keyboard/_index.md @@ -14,82 +14,53 @@ The Pinebook Pro is available in two keyboard configurations: ISO and ANSI. Both The keyboard firmware binary can be flashed from userspace using the provided open source utility. {{< admonition type="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 link:/documentation/Pinebook_Pro/Further_information/Schematics_and_certifications/[top layer silkscreen of the main board]. It is located under the keyboard flat flexible cable. + 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](https://reddit.com/r/PINE64official/comments/loq4db/very_disappointed/). The keyboard IC corresponds to _U23_ on the [top layer silkscreen of the main board](/documentation/Pinebook_Pro/Further_information/Schematics_and_certifications/). It is located under the keyboard flat flexible cable. {{< /admonition >}} -Documentation for the keyboard can be found in link:/documentation/Pinebook_Pro/Further_information/Datasheets/[Datasheets for Components and Peripherals] and details regarding the assembly can be found under link:/documentation/Pinebook_Pro/Keyboard/Assembly[Keyboard assembly]. +Documentation for the keyboard can be found in [Datasheets for Components and Peripherals](/documentation/Pinebook_Pro/Further_information/Datasheets/) and details regarding the assembly can be found under [Keyboard assembly](/documentation/Pinebook_Pro/Keyboard/Assembly). -== Typing special characters +## 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. -[cols="1,1"] -|=== -|Character|Key combination/sequence +| 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` + `)` | -|Ä, Ö, Ü, ä, ö, ü -|`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 +## 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 -[cols="1,1,1,1"] -|=== -|Combination|Effect|Description|Notes - -| PINE64 logo key+F10 -| Microphone Privacy switch -| CAPs lock LED blinks. 2 blinks = enabled, 3 blinks = disabled -| +**Privacy switch function and description** -| 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 link:https://forum.pine64.org/showthread.php?tid=8313&pid=52645#pid52645[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. -|=== +| 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](https://forum.pine64.org/showthread.php?tid=8313&pid=52645#pid52645)). | +| 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. | {{< admonition type="note" >}} Press the PINE64 logo key plus F10/F11/F12 for 3 seconds {{< /admonition >}} -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. +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 +## 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. +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: +Here’s what the replacement keyboard looks like: {{< figure src="/documentation/images/Pinebook_Pro_new_keyboard-front.jpg" width="300" >}} {{< figure src="/documentation/images/Pinebook_Pro_new_keyboard-front.jpg" width="300" >}} -_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 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. @@ -127,7 +98,7 @@ _Step 5_: Detach microphone, speakers, and antenna. {{< figure src="/documentation/images/Pinebook_Pro_microphone_removed.jpg" title="One of the Pinebook Pro microphones after removal" width="300" >}} -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. +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. @@ -137,16 +108,16 @@ At this point, the mainboard and daughterboards should be removed. When unscrewe _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. +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. {{< figure src="/documentation/images/Pinebook_Pro_new_keyboard-detached-display.jpg" width="300" >}} {{< figure src="/documentation/images/Pinebook_Pro_new_keyboard-detached-display2.jpg" width="300" >}} _Step 8_: Try not to break your touchpad -*NOTE This section really feels like you're going to break something.* +**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. +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. @@ -162,7 +133,7 @@ In the new keyboard shell put the touchpad back where it was, hopefully the glue _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. +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. @@ -192,5 +163,4 @@ _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. - +_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. diff --git a/content/documentation/Pinebook_Pro/Software/Debian_installer.adoc b/content/documentation/Pinebook_Pro/Software/Debian_installer.adoc deleted file mode 100644 index 68e0e2cd..00000000 --- a/content/documentation/Pinebook_Pro/Software/Debian_installer.adoc +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: "Debian Installer" -draft: false -menu: - docs: - title: - parent: "Pinebook_Pro/Software" - identifier: "Pinebook_Pro/Software/Debian_installer" - weight: ---- - -* This is an image creator and Debian installer that runs from an existing Linux OS and installs Debian Bullseye -** Installer can configure an encrypted rootfs and provides a choice of desktops, including the default Debian desktop based on Gnome 3 -** Strict adoption of upstream Debian packages (with exception of kernel and bootloaders) in order to provide a clean upgrade path as Bullseye matures -* Download at: https://github.com/daniel-thompson/pinebook-pro-debian-installer/ -* Pull requests welcome but for discussion and support please use https://forum.pine64.org/showthread.php?tid=8487[the forum topic]. - -== Features - -[cols="1,1,1"] -|=== -| | Feature -| | Status -| | Notes - -| Install to micro SD card -| Works -| Automatically expands to use all available space - -| Install to eMMC -| Works -| Automatically adapts for 64GB and 128GB models - -| Full disk encryption -| Works -| Run installer with `CRYPT=yes`. Requires kernel support and this support is missing in the original factory kernel so it it not possible to install a LUKS filesystem from the factory distro. You can make a temporary unencrypted install with this installer and then use the temporary OS to perform a full encypted install. - -| Wifi -| Works -| Issues have been reported with WPA2 networks [https://forum.pine64.org/showthread.php?tid=8822] - -| Firefox -| Works -| - -| VLC -| Works -| - -| Fn+ keys -| Work -| After updating mesa to 20.0.7-1 -|=== - -== Current issues - -[cols="1,1,1,1,1"] -|=== -| | Issue -| | Category -| | Status -| | Workaround -| | Notes - -| `cdn-dp fec00000.dp: Direct firmware load for rockchip/dptx.bin failed with error -2` -| Debian issue https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857054 -| If having FDE, it fails to load at boot as the firmware is not included in initramfs -| Include the dptx.bin firmware in the initramfs -| See https://forum.pine64.org/showthread.php?tid=8487&pid=57202#pid57202 - -| Bluetooth doesn't work - bluetooth hci1: Direct firmware load for brcm/BCM4345C5.hcd failed with error -2 -| -| -| Copy those firmware https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware to /lib/firmware/brcm/. After that, Bluetooth works fine. -| It seems some firmware is missing. See https://forum.pine64.org/showthread.php?tid=8731&pid=57525#pid57525 - -| Suspend doesn't work properly, when lid is closed, the laptops gets hot and dramatically dry the battery -| -| -| Install is preconfigured to use suspend-to-idle instead. This offers some power savings compared to normal running but suspend should only be used for short periods. -| `# echo deep > /sys/power/mem_sleep` PBP simply doesn't wake up after 'deep' sleep. - -| Often very slow to wake from suspend: 30-60 seconds. -| Forum thread https://forum.pine64.org/showthread.php?tid=8822 -| -| Sometimes pressing the power key helps wake it up. Set this key to not trigger sleep/shutdown in the Desktop Environment config. -| - -| Brightness keys don't work. -| -| -| Add this file [https://github.com/ayufan-rock64/linux-package/blob/a18e3fb8a1eb9d8e5a1b8af030d41823befa3aff/root-pinebookpro/etc/udev/hwdb.d/10-usb-kbd.hwdb] to /etc/udev/hwdb.d/, run - sudo systemd-hwdb update - sudo udevadm trigger -|=== - diff --git a/content/documentation/Pinebook_Pro/Software/Debian_installer.md b/content/documentation/Pinebook_Pro/Software/Debian_installer.md new file mode 100644 index 00000000..b0eaa6a8 --- /dev/null +++ b/content/documentation/Pinebook_Pro/Software/Debian_installer.md @@ -0,0 +1,37 @@ +--- +title: "Debian Installer" +draft: false +menu: + docs: + title: + parent: "Pinebook_Pro/Software" + identifier: "Pinebook_Pro/Software/Debian_installer" + weight: +--- + +* This is an image creator and Debian installer that runs from an existing Linux OS and installs Debian Bullseye + * Installer can configure an encrypted rootfs and provides a choice of desktops, including the default Debian desktop based on Gnome 3 + * Strict adoption of upstream Debian packages (with exception of kernel and bootloaders) in order to provide a clean upgrade path as Bullseye matures +* Download at: https://github.com/daniel-thompson/pinebook-pro-debian-installer/ +* Pull requests welcome but for discussion and support please use [the forum topic](https://forum.pine64.org/showthread.php?tid=8487). + +## Features + +| Feature | Status | Notes | +| --- | --- | --- | +| Install to micro SD card | Works | Automatically expands to use all available space | +| Install to eMMC | Works | Automatically adapts for 64GB and 128GB models | +| Full disk encryption | Works | Run installer with `CRYPT=yes`. Requires kernel support and this support is missing in the original factory kernel so it it not possible to install a LUKS filesystem from the factory distro. You can make a temporary unencrypted install with this installer and then use the temporary OS to perform a full encypted install. | +| Wifi | Works | Issues have been reported with WPA2 networks [https://forum.pine64.org/showthread.php?tid=8822] | +| Firefox | Works | | +| VLC | Works | | +| Fn+ keys | Work | After updating mesa to 20.0.7-1 | + +## Current issues + +|Issue|Category|Status|Workaround|Notes| +| --- | --- | --- | --- | --- | +| `cdn-dp fec00000.dp: Direct firmware load for rockchip/dptx.bin failed with error -2` | Debian issue https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857054 | If having FDE, it fails to load at boot as the firmware is not included in initramfs | Include the dptx.bin firmware in the initramfs | See https://forum.pine64.org/showthread.php?tid=8487&pid=57202#pid57202 | +| Bluetooth doesn’t work bluetooth hci1: Direct firmware load for brcm/BCM4345C5.hcd failed with error -2 | | | Copy those firmware https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware to /lib/firmware/brcm/. After that, Bluetooth works fine. | It seems some firmware is missing. See https://forum.pine64.org/showthread.php?tid=8731&pid=57525#pid57525 | +| Suspend doesn’t work properly, when lid is closed, the laptops gets hot and dramatically dry the battery | | | Install is preconfigured to use suspend-to-idle instead. This offers some power savings compared to normal running but suspend should only be used for short periods. | `# echo deep > /sys/power/mem_sleep` PBP simply doesn’t wake up after 'deep' sleep. | +| Often very slow to wake from suspend: 30-60 seconds. | Forum thread https://forum.pine64.org/showthread.php?tid=8822 | | Sometimes pressing the power key helps wake it up. Set this key to not trigger sleep/shutdown in the Desktop Environment config. | | diff --git a/content/documentation/Pinecil/Development_projects.adoc b/content/documentation/Pinecil/Development_projects.adoc deleted file mode 100644 index f68ce4f9..00000000 --- a/content/documentation/Pinecil/Development_projects.adoc +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Development projects" -draft: false -menu: - docs: - title: - parent: "Pinecil" - identifier: "Pinecil/Development_projects" - weight: ---- - -|=== -|Author |Project Homepage |Description |Supported - -| Ben Brown (https://github.com/Ralim?tab=repositories[ralimtek]) -| https://ralim.github.io/IronOS/[Ralim's IronOS] -| Official Pinecil firmware -| BL706, GD32VF103TB, Stm32f103 - -| Marek Kraus https://github.com/gamelaster[gamiee/gamelaster] -| https://github.com/pine64/blisp[Blisp V2 Flasher] -| CLI Updater for Pinecil V2, BL70x MCU -| Windows, Linux, Mac - -| Marek Kraus https://github.com/gamelaster[gamiee/gamelaster] -| https://github.com/pine64/pine64_updater[Pinecil V1 Flasher] -| Pinecil V1 GUI Updater -| Windows, Mac - -| Arkaitz Goni Hedger https://github.com/Spagett1?tab=repositories[spagett1] -| https://github.com/Laar3/PineFlash[PineFlash] -| Pinecil V1 GUI Updater -| Linux, Mac - -| https://github.com/builder555[Builder555] -| https://github.com/builder555/PineSAM[BLE PineSAM] -| Bluetooth LE Settings & temperature control from any browser -| Cross-platform, runs local script to control Pinecil from PC or phone. - -| https://github.com/joric?tab=repositories[Joric] (iamjoric) -| https://joric.github.io/pinecil/[BLE browser API] -| https://github.com/joric/pinecil/wiki[Bluetooth LE Graph] -| Windows, Linux, Android browsers that support BLE GATT - -| Tom W (https://github.com/TomW1605[TomW1605]) & https://github.com/ithinkido?tab=repositories[ithinkido] -| https://github.com/TomW1605/esphome_pinecilv2_ble[BLE V2 + ESP32] -| Bluetooth LE V2 data => ESP32 BLE+Wifi => Home Assist display -| Cross Platform - -| Bouffalo Lab -| https://dev.bouffalolab.com/download[B-Lab Dev Cube ] -| MCU vendor GUI for Dev -| BL70x, BL60x, others (does not work for Pinecil V2) - -| Alvin Wong -| https://github.com/alvinhochun/gd32vf103-pinecil-demo-rs[Rust code on GD32VF103] -| Rust code demos for Pinecil V1 -| GD32VF103TB -|=== - -TIP: Note: Bluetooth (BLE) apps require upgrading Pinecil V2 to IronOS *2.21* or newer https://github.com/Ralim/IronOS/releases/[firmware here]. - diff --git a/content/documentation/Pinecil/Development_projects.md b/content/documentation/Pinecil/Development_projects.md new file mode 100644 index 00000000..de983cfb --- /dev/null +++ b/content/documentation/Pinecil/Development_projects.md @@ -0,0 +1,26 @@ +--- +title: "Development projects" +draft: false +menu: + docs: + title: + parent: "Pinecil" + identifier: "Pinecil/Development_projects" + weight: +--- + +| Author | Project Homepage | Description | Supported | +| --- | --- | --- | --- | +| Ben Brown ([ralimtek](https://github.com/Ralim?tab=repositories)) | [Ralim’s IronOS](https://ralim.github.io/IronOS/) | Official Pinecil firmware | BL706, GD32VF103TB, Stm32f103 | +| Marek Kraus [gamiee/gamelaster](https://github.com/gamelaster) | [Blisp V2 Flasher](https://github.com/pine64/blisp) | CLI Updater for Pinecil V2, BL70x MCU | Windows, Linux, Mac | +| Marek Kraus [gamiee/gamelaster](https://github.com/gamelaster) | [Pinecil V1 Flasher](https://github.com/pine64/pine64_updater) | Pinecil V1 GUI Updater | Windows, Mac | +| Arkaitz Goni Hedger [spagett1](https://github.com/Spagett1?tab=repositories) | [PineFlash](https://github.com/Laar3/PineFlash) | Pinecil V1 GUI Updater | Linux, Mac | +| [Builder555](https://github.com/builder555) | [BLE PineSAM](https://github.com/builder555/PineSAM) | Bluetooth LE Settings & temperature control from any browser | Cross-platform, runs local script to control Pinecil from PC or phone. | +| [Joric](https://github.com/joric?tab=repositories) (iamjoric) | [BLE browser API](https://joric.github.io/pinecil/) | [Bluetooth LE Graph](https://github.com/joric/pinecil/wiki) | Windows, Linux, Android browsers that support BLE GATT | +| Tom W ([TomW1605](https://github.com/TomW1605)) & [ithinkido](https://github.com/ithinkido?tab=repositories) | [BLE V2 + ESP32](https://github.com/TomW1605/esphome_pinecilv2_ble) | Bluetooth LE V2 data => ESP32 BLE+Wifi => Home Assist display | Cross Platform | +| Bouffalo Lab | [B-Lab Dev Cube ](https://dev.bouffalolab.com/download) | MCU vendor GUI for Dev | BL70x, BL60x, others (does not work for Pinecil V2) | +| Alvin Wong | [Rust code on GD32VF103](https://github.com/alvinhochun/gd32vf103-pinecil-demo-rs) | Rust code demos for Pinecil V1 | GD32VF103TB | + +{{% admonition type="note" %}} +Bluetooth (BLE) apps require upgrading Pinecil V2 to IronOS **2.21** or newer [firmware here](https://github.com/Ralim/IronOS/releases/). +{{% /admonition %}} diff --git a/content/documentation/Pinecil/Power_supplies/Watts.adoc b/content/documentation/Pinecil/Power_supplies/Watts.md similarity index 58% rename from content/documentation/Pinecil/Power_supplies/Watts.adoc rename to content/documentation/Pinecil/Power_supplies/Watts.md index 3c9c73a5..26199991 100644 --- a/content/documentation/Pinecil/Power_supplies/Watts.adoc +++ b/content/documentation/Pinecil/Power_supplies/Watts.md @@ -11,33 +11,26 @@ menu: Generally, a higher power charger is better; a 20V power supply will give better performance than a 15V charger. The Pinecil needs a minimum of 3 amps and will work with higher amps charger. However, do not exceed the volts rating for V1 and V2 models or damage to components could occur (see the side of the Pinecil handle for the maximum volts). -== Power Chart +## Power Chart -|=== -|Type |Volts |/ |Tip Ω |= |Amps |* |Volts |= |Watts +| Type | Volts | / | Tip Ω | = | Amps | * | Volts | = | Watts | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| USB-C PD3.0 | 20V | / | 8.0 Ω | = | 2.5A | * | 20V | = | **50W** | +| USB-C PD3.0 | 20V | / | 6.2 Ω | = | 3.2A | * | 20V | = | **64W** | +| DC Barrel | 24V | / | 8.0 Ω | = | 3.0A | * | 24V | = | **72W** | +| DC Barrel | 24V | / | 6.2 Ω | = | 3.8A | * | 24V | = | **92W** | +| **EPR PD3.1 | 28V | / | 8.0 Ω | = | 3.5A | * | 28V | = | *98W** | +| **EPR PD3.1 | 28V | / | 6.2 Ω | = | 4.5A | * | 28V | = | *126W** | -| USB-C PD3.0 | 20V | / | 8.0 Ω | = | 2.5A | * | 20V | = | *50W* - -| USB-C PD3.0 | 20V | / | 6.2 Ω | = | 3.2A | * | 20V | = | *64W* - -| DC Barrel | 24V | / | 8.0 Ω | = | 3.0A | * | 24V | = | *72W* - -| DC Barrel | 24V | / | 6.2 Ω | = | 3.8A | * | 24V | = | *92W* - -| *EPR PD3.1 | 28V | / | 8.0 Ω | = | 3.5A | * | 28V | = | *98W* - -| *EPR PD3.1 | 28V | / | 6.2 Ω | = | 4.5A | * | 28V | = | *126W* -|=== - -== Power Notes +## Power Notes * PINE64 officially states the Pinecil V2 will support up to 24V-88W. Tentatively, the V2 also _unofficially_ supports 28V-140W EPR/PD3.1 USB-C chargers with certified EPR 240W USB-C cables. * DC barrel power is 24V-5A maximum on V2. This allows headroom for higher spikes that happen in DC bricks or off-brand bench supplies. It is _not a smart charger_ like a USB-C charger which uses chips to negotiate with devices like the Pinecil. -* https://ralim.github.io/IronOS/#getting-started[Ralim's IronOS firmware] works with the PD3.1 protocol (EPR 28V-140W chargers) on Pinecil V2. +* [Ralim’s IronOS firmware](https://ralim.github.io/IronOS/#getting-started) works with the PD3.1 protocol (EPR 28V-140W chargers) on Pinecil V2. * EPR USB-C is new to the market in 2022. The first wave of these smart chargers are 28V/140W, are more expensive, and require a PD 3.1/240W cable to fully allow the 28V power to V2. * EPR is backwards compatible for all USB-C devices. EPR chargers/cables can be used for everything else USB-C as well. * Pinecil is not a USB-C tester: when the _detailed screen_ is enabled on Pinecil, note it shows estimates and are at best +-10%. The watts shown on _detailed_ mode are a big picture number for convenience and debugging various chargers used. It is not going to be as accurate as an external tester. Use external metering for comparisons or testing (external testers also cause a small reduction in Watts). -== QC Chargers +## QC Chargers -Many Quick Charge or QC3 phone chargers are *not recommended* as Pinecil V2 is rated for a _minimum of 3 Amps_ or more to work properly (see https://pine64.com/product/pinecil-smart-mini-portable-soldering-iron/[Pine Store Official rating] on power ports). Most QC 12V phone chargers are only 1.5 Amps, this will lead to `Thermal Runaway` or `Undervoltage` messages because of weak power (older QC2 type is not supported in the IronOS firmware at all). \ No newline at end of file +Many Quick Charge or QC3 phone chargers are **not recommended** as Pinecil V2 is rated for a _minimum of 3 Amps_ or more to work properly (see [Pine Store Official rating](https://pine64.com/product/pinecil-smart-mini-portable-soldering-iron/) on power ports). Most QC 12V phone chargers are only 1.5 Amps, this will lead to `Thermal Runaway` or `Undervoltage` messages because of weak power (older QC2 type is not supported in the IronOS firmware at all). diff --git a/content/documentation/Pinedio/Gateway.adoc b/content/documentation/Pinedio/Gateway.md similarity index 58% rename from content/documentation/Pinedio/Gateway.adoc rename to content/documentation/Pinedio/Gateway.md index ba325e40..0866104d 100644 --- a/content/documentation/Pinedio/Gateway.adoc +++ b/content/documentation/Pinedio/Gateway.md @@ -12,50 +12,27 @@ menu: The gateway will be available in two variants - indoor and outdoor. All that is known about the outdoor unit is that it will have "an aluminum, rugged and water resistant case". The indoor unit consists of a PINE A64-LTS, fitted with a purpose built hat (adapter) which uses a LoRa module by RakWireless. The chipset used is the SX1303, and the module via the SPI interface. There are two external connections on the enclosure for the GPS and loRa antenna. -== Connections +## Connections * GPS is connected to UART2 on the A64 board * SX1303 on SPI0 -[cols="1,1,1"] -|=== -|RAK5146 module -|PI-2 connector -|PINE A64-LTS +| | | | +| --- | --- | --- | +| RAK5146 module | PI-2 connector | PINE A64-LTS | +| SX1303 SPI | Pin 19 = MOSI / PC0
Pin 21 = MISO/PC1
Pin23 = CLK/PC2
Pin24 = CS/PC3 | SPI0 (/dev/spidev0.0) | +| SX1303 RESET | Pin 11 = GPIO17/PC7 | GPIO71 (/sys/class/gpio/gpio71) | +| GPS UART | Pin 8 = TX/
Pin 10 = RX | UART2 (/dev/ttyS2) | +| GPS RESET | Pin 33 = GPIO13/PC5 | GPIO69 (/sys/class/gpio/gpio69) | +| GPS Standby | Pin 35 = GPIO19/PC9 | GPIO73 (/sys/class/gpio/gpio73) | -|SX1303 SPI -|Pin 19 = MOSI / PC0 + -Pin 21 = MISO/PC1 + -Pin23 = CLK/PC2 + -Pin24 = CS/PC3 -|SPI0 (/dev/spidev0.0) - -|SX1303 RESET -|Pin 11 = GPIO17/PC7 -|GPIO71 (/sys/class/gpio/gpio71) - -|GPS UART -|Pin 8 = TX/ + -Pin 10 = RX -|UART2 (/dev/ttyS2) - -|GPS RESET -|Pin 33 = GPIO13/PC5 -|GPIO69 (/sys/class/gpio/gpio69) - -|GPS Standby -|Pin 35 = GPIO19/PC9 -|GPIO73 (/sys/class/gpio/gpio73) -|=== - -== Pictures +## Pictures {{< figure src="/documentation/images/Blog-april-InsideLoRaGateway.jpg" >}} {{< figure src="/documentation/images/Blog-april-InsideLoRaGateway2.jpeg" >}} {{< figure src="/documentation/images/Discord-lora-gateway-20210413_143615.jpg" >}} {{< figure src="/documentation/images/Discord-lora-gateway-20210413_1435271.jpg" >}} -== Operating systems - -The Pinedio Gateway carries the A64-LTS board. The link:/documentation/SOPINE/Software[SOPINE releases] are also compatible based on the RAM specifications. +## Operating systems +The Pinedio Gateway carries the A64-LTS board. The [SOPINE releases](/documentation/SOPINE/Software) are also compatible based on the RAM specifications. diff --git a/content/documentation/Quartz64/Software/Building_U-Boot.adoc b/content/documentation/Quartz64/Software/Building_U-Boot.md similarity index 55% rename from content/documentation/Quartz64/Software/Building_U-Boot.adoc rename to content/documentation/Quartz64/Software/Building_U-Boot.md index 870137ae..6b5a3ab2 100644 --- a/content/documentation/Quartz64/Software/Building_U-Boot.adoc +++ b/content/documentation/Quartz64/Software/Building_U-Boot.md @@ -9,80 +9,68 @@ menu: weight: --- -This article guides you through compiling U-Boot for a **Quartz64** and **SOQuartz** device. +This article guides you through compiling U-Boot for a ***Quartz64*** and ***SOQuartz*** device. -== Prerequisites +## Prerequisites You will need either an x86 machine with an aarch64 cross-compiler installed, or an existing aarch64 system. You will also need the device tree compiler dtc, python3 (including setuptools and pyelftools), swig, GNU make and git. -=== Arch Linux +### Arch Linux On an x86_64 Arch Linux system, you can install the required dependencies with: - pacman -S --needed base-devel aarch64-linux-gnu-gcc aarch64-linux-gnu-binutils git dtc python-setuptools swig python-pyelftools + pacman -S --needed base-devel aarch64-linux-gnu-gcc aarch64-linux-gnu-binutils git dtc python-setuptools swig python-pyelftools -=== Debian +### Debian On an x86_64 Debian (or derivates such as Ubuntu) system, you can install the required dependencies with: - apt install device-tree-compiler build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu make python3 python3-dev libssl-dev python3-pyelftools python3-setuptools swig git + apt install device-tree-compiler build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu make python3 python3-dev libssl-dev python3-pyelftools python3-setuptools swig git -== Fetching the repositories +## Fetching the repositories Use git to clone the mainline U-Boot repository into the directory _u-boot_: - git clone https://source.denx.de/u-boot/u-boot.git + git clone https://source.denx.de/u-boot/u-boot.git You can use `git checkout _tagname_` inside the _u-boot_ directory to check out a specific git tag (release), you can list all of them with `git tag -l` (but do keep in mind we only have device support since v2023.10). Then, also use git to clone the rockchip firmware binaries repository into the directory _rkbin_: - git clone https://github.com/rockchip-linux/rkbin.git + git clone https://github.com/rockchip-linux/rkbin.git -== Setting up your environment +## Setting up your environment Next, we need to set two environment variables: `ROCKCHIP_TPL` for the DRAM init binary, and `BL31` for the ARM Trusted Firmware binary. - cd u-boot - export ROCKCHIP_TPL="$(ls ../rkbin/bin/rk35/rk3566_ddr_1056MHz_v*.bin | sort | tail -n1)" - export BL31="$(ls ../rkbin/bin/rk35/rk3568_bl31_v*.elf | sort | tail -n1)" + cd u-boot + export ROCKCHIP_TPL="$(ls ../rkbin/bin/rk35/rk3566_ddr_1056MHz_v*.bin | sort | tail -n1)" + export BL31="$(ls ../rkbin/bin/rk35/rk3568_bl31_v*.elf | sort | tail -n1)" -== Configuring U-Boot +## Configuring U-Boot First, we need to use the right default config for our device. Please choose _defconfig_ from the following table depending on your device: -|=== -| Board | defconfig - -| Quartz64 Model A -| `quartz64-a-rk3566_defconfig` - -| Quartz64 Model B -| `quartz64-b-rk3566_defconfig` - -| SOQuartz on Model A -| `soquartz-model-a-rk3566_defconfig` - -| SOQuartz on Blade -| `soquartz-blade-rk3566_defconfig` - -| SOQuartz on CM4 I/O Board -| `soquartz-cm4-rk3566_defconfig` -|=== +| Board | defconfig | +| --- | --- | +| Quartz64 Model A | `quartz64-a-rk3566_defconfig` | +| Quartz64 Model B | `quartz64-b-rk3566_defconfig` | +| SOQuartz on Model A | `soquartz-model-a-rk3566_defconfig` | +| SOQuartz on Blade | `soquartz-blade-rk3566_defconfig` | +| SOQuartz on CM4 I/O Board | `soquartz-cm4-rk3566_defconfig` | In the _u-boot_ directory with your environment variables set, run: -[subs="quotes"] ----- +``` make CROSS_COMPILE=aarch64-linux-gnu- _defconfig_ ----- +``` with _defconfig_ being the value from the previous table. -== Building U-Boot +## Building U-Boot In the _u-boot_ directory, after configuring, and with your environment variables set, run: - make CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) + make CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) -This will output a _u-boot-rockchip.bin_, which is your freshly built SPL+U-Boot combined image. \ No newline at end of file +This will output a _u-boot-rockchip.bin_, which is your freshly built SPL+U-Boot combined image. diff --git a/content/documentation/ROCK64/Software/_index.adoc b/content/documentation/ROCK64/Software/_index.adoc deleted file mode 100644 index 0e303f7d..00000000 --- a/content/documentation/ROCK64/Software/_index.adoc +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Software" -draft: false -menu: - docs: - title: - parent: "ROCK64" - identifier: "ROCK64/Software" - weight: 2 ---- - -* link:Releases[Releases] -* link:MAC_address[MAC address] - -OS build Installation Guide and tools: - -* https://files.pine64.org/doc/rock64/guide/ROCK64_Installing_Android_To_eMMC.pdf[Guide to install stock Android build to eMMC module] -* https://files.pine64.org/doc/rock64/tools/SD_Firmware_Tool._v1.46.zip[Tools to burn Android build into a bootable microSD card] -* https://files.pine64.org/doc/rock64/tools/AndroidTool_Release_v2.38.zip[Tools that allows developer flash image into eMMC's Loader/Parameter/Misc/Kernal/Boot/Recovery/System/Backup partition] -* https://files.pine64.org/doc/rock64/tools/DriverAssitant_v4.5.zip[Windows ADB driver package] - -[cols="1,1,1,1"] -|=== -| Requirement | GNU/Linux | Android/Linux | Kodi/Linux - -| 2160p 30Hz 8bit h264/h265/vp8 -| partial? https://forum.pine64.org/showthread.php?tid=4861&pid=32474#pid32474[1] -| yes -| yes - -| UI using GPU -| no -| yes -| yes - -| Youtube -| no -| yes -| no - -| vp9 / mpeg4 / mpeg2 / 10bit HDR / YCbCr -| no -| yes? -| yes - -|=== \ No newline at end of file diff --git a/content/documentation/ROCK64/Software/_index.md b/content/documentation/ROCK64/Software/_index.md new file mode 100644 index 00000000..04bb7d1f --- /dev/null +++ b/content/documentation/ROCK64/Software/_index.md @@ -0,0 +1,27 @@ +--- +title: "Software" +draft: false +menu: + docs: + title: + parent: "ROCK64" + identifier: "ROCK64/Software" + weight: 2 +--- + +* [Releases](Releases) +* [MAC address](MAC_address) + +OS build Installation Guide and tools: + +* [Guide to install stock Android build to eMMC module](https://files.pine64.org/doc/rock64/guide/ROCK64_Installing_Android_To_eMMC.pdf) +* [Tools to burn Android build into a bootable microSD card](https://files.pine64.org/doc/rock64/tools/SD_Firmware_Tool._v1.46.zip) +* [Tools that allows developer flash image into eMMC’s Loader/Parameter/Misc/Kernal/Boot/Recovery/System/Backup partition](https://files.pine64.org/doc/rock64/tools/AndroidTool_Release_v2.38.zip) +* [Windows ADB driver package](https://files.pine64.org/doc/rock64/tools/DriverAssitant_v4.5.zip) + +| Requirement | GNU/Linux | Android/Linux | Kodi/Linux | +| --- | --- | --- | --- | +| 2160p 30Hz 8bit h264/h265/vp8 | partial? [1](https://forum.pine64.org/showthread.php?tid=4861&pid=32474#pid32474) | yes | yes | +| UI using GPU | no | yes | yes | +| Youtube | no | yes | no | +| vp9 / mpeg4 / mpeg2 / 10bit HDR / YCbCr | no | yes? | yes | diff --git a/content/documentation/ROCKPro64/Board/Features.adoc b/content/documentation/ROCKPro64/Board/Features.adoc deleted file mode 100644 index 497d27d0..00000000 --- a/content/documentation/ROCKPro64/Board/Features.adoc +++ /dev/null @@ -1,296 +0,0 @@ ---- -title: "Features" -draft: false -menu: - docs: - title: - parent: "ROCKPro64/Board" - identifier: "ROCKPro64/Board/Features" - weight: ---- - -This section outlines the most important characteristics of the board and its components. - -== SoC and Memory Specification - -The ROCKPro64 is based on the Rockchip RK3399. - -=== CPU Architecture - -* 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-a53[Quad-core Cortex-A53 up to 1.5GHz CPU] -* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU -* Cortex-A72: -** 1-4x Symmetrical Multiprocessing (SMP) within a single processor cluster, and multiple coherent SMP processor clusters through AMBA 5 CHI or AMBA 4 ACE technology -** AArch64 for 64-bit support and new architectural features -** L1 cache 48KB Icache and 32KB Dcache for each A72 -** L2 cache 1024KB for big cluster -** DSP & SIMD extensions -** VFPv4 floating point -** Hardware virtualization support -* Cortex-A53: -** L1 cache 32KB Icache and 32KB Dcache for each A53 -** L2 cache 512KB for little cluster -* Full implementation of the ARM architecture v8-A instruction set -* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation -* ARMv8 Cryptography Extensions -* In-order pipeline with symmetric dual-issue of most instructions -* Include VFP v3 hardware to support single and double-precision operations -* TrustZone technology support -* Full CoreSight debug solution -* One isolated voltage domain to support DVFS - -=== GPU Architecture - -* 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 provides stunning visuals for UHD content. -* Frequency: 650MHz -* 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™. - -=== System Memory - -* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB. -* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot). - -== Display - -* Dual VOP: one supports resolutions up to 4096x2160 and https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression[AFBC]; the other supports resolutions up to 2560x1600 -* Dual channel MIPI-DSI (4 lanes per channel) -* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR -* Digital Video port up to 4Kp60 -* DisplayPort 1.2 (4 lanes, up to 4K 60Hz) -* Supports Rec.2020 and conversion to Rec.709 - -== Video - -* Digital Video output up to 4K@60Hz -* 4K HDR @ 30fps -* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps -* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps -* VP9, up to 4Kx2K @ 60fps -* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps -* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps -* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps -* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps -* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps - -== Audio - -* 3.5mm Phone Jack -* 3-pin S/PDIF header -* Audio via Digital Video port - -== Camera - -* Dual MIPI CSI, dual ISP, maximum input resolution of 13M pixels - -== Network - -* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3 -* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional) - -== Storage - -* microSD - bootable, supports SDHC and SDXC -* eMMC - bootable (optional eMMC module) -* 1x USB 3.0 host port -* 1x USB Type-C OTG port with alternate mode DP output -* 2x USB 2.0 dedicated host port - -== Expansion Ports - -* 2x20 pins "Pi2" GPIO header -* PCI Express 2.1 x4 (four full-duplex lanes) open-ended port, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207[limited] to the Gen1 speed - -== Working Features - -[cols="2,1,1,1,1,2,2,2"] -|=== -| Feature/Option | Android | Android Version | Linux | Linux Version | Test/Verify Steps | Notes | Product Link - -| PINE64 LCD Touchscreen (Screen/Touch) -| Yes/Yes -| -| No/No -| -| -| Maybe https://github.com/avafinger/pine64-touchscreen[this] will help get this working? -| https://pine64.com/?product=7-lcd-touch-screen-panel[7-inch LCD Touch Screen Panel] - -| Wireless -ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old) -ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new) -| Yes/Yes -| -| No/Yes* -| -| For the "new" ROCKPro64 WIFI module: Verified with Manjaro ARM (kernel 6.2.5). A config file ("firmware file") is needed at `/lib/firmware/brcm/brcmfmac43455-sdio.txt`. -| In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons. On Manjaro ARM (kernel 6.2.5), WIFI seems to be stable with the firmware file. On a 5GHz network (802.11AC), it is possible to get about 120Mbps using the "new" ROCKPro64 WIFI module. -| https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module/[ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module] - -| USB OTG -| -| -| -| -| Configure ip on usb0: ifconfig usb0 169.169.222.222 and run iperf, you should likely see about 200-300MB/s -| link:/documentation/ROCKPro64/Getting_started/#otg_mode[ROCKPro64] -| - -| USB Mass Storage USB2/USB3 -| Yes/yes -| -| Yes/Yes -| -| -| -| - -| Dedicated Fan Power (pwm1) -| -| -| Yes -| -| -| You might want to use https://github.com/tuxd3v/ats[ATS]. -| - -| GPIO pins (raw or via RPI python scripts) -| -| -| -| -| -| Check out https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2[what Frank Mankel has done]. -| - -| MIPI CSI Camera 1 and 2 -| -| -| -| -| -| -| - -| eDP -| -| -| -| -| -| -| - -| HDMI Audio -| Yes -| 7.1.2 -| Yes -| 4.4.132-1083 - 4.4.138-1100 -| -| Stopped working in 4.4.154.1105. Ayufan is looking into it. This is working in Manjaro ARM (kernel 6.2.5). Select the `Analog Output (Built-in Audio Stereo)` option in the audio output device selection window (either use `pavucontrol` or the volume button in the KDE desktop). Despite the slightly misleading name, audio does go through the HDMI port. See here for details: https://forum.manjaro.org/t/no-hdmi-audio-on-rockpro64/25595/2. -| - -| 3.5mm Audio/Mic -| -| -| -| -| -| -| - -| USB-C Host -| -| -| -| -| -| -| - -| Display via USB-C -| Yes -| 7.x and 8.x -| -| -| -| eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x -| - -| ROCKPro64 PLAYBOX ENCLOSURE -| N/A -| -| N/A -| -| N/A -| Ventilation does not exist, thus requires manual changes to add venting. Case should be modified to account power adapter not being centered in cut holes. Opening the case once close without modifying it first is nearly impossible without special tools. Graphene heatsink is included and does well for Linux but not Android. -| https://pine64.com/?product=rockpro64-playbox-enclosure[ROCKPro64 Playbox Enclosure] - -| ROCKPro64 30mm Tall Profile Heatsink -| N/A -| -| N/A -| -| N/A -| -| https://pine64.com/product/rockpro64-30mm-tall-profile-heatsink/[ROCKPro64 30 mm Tall-Profile Heatsink] - -| ROCKPro64 20mm Mid Profile Heatsink -| N/A -| -| N/A -| -| N/A -| -| https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink[ROCKPro64 20 mm Mid-Profile Heatsink] - -| Fan For ROCKPro64 20mm Mid Profile Heatsink -| N/A -| -| N/A -| -| N/A -| You might want to use https://github.com/tuxd3v/fanctl[fanctl] to control the fan while keeping your CPU cool -| https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink[Fan For ROCKPro64 20 mm Mid-Profile Heatsink] - -| HDMI output 4K@60Hz -| -| -| -| -| -| -| - -| PCI Express 2.1 -| -| -| -| -| -| The PCI Express interface of the RK3399 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207[is limited] to the Gen1 speed. As a result, some installed PCI Express devices may operate with degraded performance, such as M.2 SSDs that support fewer than four PCI Express lanes, installed using an adapter like https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card/[this one]. -| - -| Real Time Clock (RTC) battery backup -| -| -| -| -| -| -| https://pine64.com/product/rtc-backup-battery-holder-cr-2032/[RTC Backup Battery Holder CR2032] - -| Boot from USB/PXE -| -| -| -| -| -| -| -|=== - -RockChip themselves have tables of supported features at 4.4 and mainline kernel versions http://opensource.rock-chips.com/wiki_Status_Matrix[in their wiki here]. - diff --git a/content/documentation/ROCKPro64/Board/Features.md b/content/documentation/ROCKPro64/Board/Features.md new file mode 100644 index 00000000..e1b6eaa6 --- /dev/null +++ b/content/documentation/ROCKPro64/Board/Features.md @@ -0,0 +1,131 @@ +--- +title: "Features" +draft: false +menu: + docs: + title: + parent: "ROCKPro64/Board" + identifier: "ROCKPro64/Board/Features" + weight: +--- + +This section outlines the most important characteristics of the board and its components. + +## SoC and Memory Specification + +The ROCKPro64 is based on the Rockchip RK3399. + +### CPU Architecture + +* [Dual-core Cortex-A72 up to 2.0GHz CPU](https://developer.arm.com/products/processors/cortex-a/cortex-a72) +* [Quad-core Cortex-A53 up to 1.5GHz CPU](https://developer.arm.com/products/processors/cortex-a/cortex-a53) +* big.LITTLE architecture: Dual Cortex-A72 + Quad Cortex-A53, 64-bit CPU +* Cortex-A72: + * 1-4x Symmetrical Multiprocessing (SMP) within a single processor cluster, and multiple coherent SMP processor clusters through AMBA 5 CHI or AMBA 4 ACE technology + * AArch64 for 64-bit support and new architectural features + * L1 cache 48KB Icache and 32KB Dcache for each A72 + * L2 cache 1024KB for big cluster + * DSP & SIMD extensions + * VFPv4 floating point + * Hardware virtualization support +* Cortex-A53: + * L1 cache 32KB Icache and 32KB Dcache for each A53 + * L2 cache 512KB for little cluster +* Full implementation of the ARM architecture v8-A instruction set +* ARM Neon Advanced SIMD (single instruction, multiple data) support for accelerated media and signal processing computation +* ARMv8 Cryptography Extensions +* In-order pipeline with symmetric dual-issue of most instructions +* Include VFP v3 hardware to support single and double-precision operations +* TrustZone technology support +* Full CoreSight debug solution +* One isolated voltage domain to support DVFS + +### GPU Architecture + +* [ARM Mali-T860MP4 Quad-core GPU](https://developer.arm.com/products/graphics-and-multimedia/mali-gpus/mali-t860-and-mali-t880-gpus) +* The highest performance GPUs built on Arm Mali’s famous Midgard architecture, the Mali-T860 GPU is designed for complex graphics use cases and provides stunning visuals for UHD content. +* Frequency: 650MHz +* 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™. + +### System Memory + +* LPDDR4 RAM Memory Variants: Dual Channels 2GB and 4GB. +* Storage Memory: 128Mb built-in SPI Flash memory (as at August 2018 only support for USB boot). + +## Display + +* Dual VOP: one supports resolutions up to 4096x2160 and [AFBC](https://www.arm.com/why-arm/technologies/graphics-technologies/arm-frame-buffer-compression); the other supports resolutions up to 2560x1600 +* Dual channel MIPI-DSI (4 lanes per channel) +* eDP 1.3 (4 lanes with 10.8Gbps) to support displays, with PSR +* Digital Video port up to 4Kp60 +* DisplayPort 1.2 (4 lanes, up to 4K 60Hz) +* Supports Rec.2020 and conversion to Rec.709 + +## Video + +* Digital Video output up to 4K@60Hz +* 4K HDR @ 30fps +* H.264/AVC Base/Main/High/High10 profile @ level 5.1; up to 4Kx2K @ 60fps +* H.265/HEVC Main/Main10 profile @ level 5.1 High-tier; up to 4Kx2K @ 60fps +* VP9, up to 4Kx2K @ 60fps +* MPEG-1, ISO/IEC 11172-2, up to 1080P @ 60fps +* MPEG-2, ISO/IEC 13818-2, SP@ML, MP@HL, up to 1080P @ 60fps +* MPEG-4, ISO/IEC 14496-2, SP@L0-3, ASP@L0-5, up to 1080P @ 60fps +* VC-1, SP@ML, MP@HL, AP@L0-3, up to 1080P @ 60fps +* MVC is supported based on H.264 or H.265, up to 1080P @ 60fps + +## Audio + +* 3.5mm Phone Jack +* 3-pin S/PDIF header +* Audio via Digital Video port + +## Camera + +* Dual MIPI CSI, dual ISP, maximum input resolution of 13M pixels + +## Network + +* 10/100/1000Mbps Ethernet - Capable of pushing 941 MBit/s in iperf3 +* Wi-Fi 802.11 ac/a/b/g/n with Bluetooth 4.01 (old version with 2x2) / Bluetooth 5 (new version with 1x1) (optional) + +## Storage + +* microSD - bootable, supports SDHC and SDXC +* eMMC - bootable (optional eMMC module) +* 1x USB 3.0 host port +* 1x USB Type-C OTG port with alternate mode DP output +* 2x USB 2.0 dedicated host port + +## Expansion Ports + +* 2x20 pins "Pi2" GPIO header +* PCI Express 2.1 x4 (four full-duplex lanes) open-ended port, [limited](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207) to the Gen1 speed + +## Working Features + +| Feature/Option | Android | Android Version | Linux | Linux Version | Test/Verify Steps | Notes | Product Link | +| --- | --- | --- | --- | --- | --- | --- | --- | +| PINE64 LCD Touchscreen (Screen/Touch) | Yes/Yes | | No/No | | | Maybe [this](https://github.com/avafinger/pine64-touchscreen) will help get this working? | [7-inch LCD Touch Screen Panel](https://pine64.com/?product=7-lcd-touch-screen-panel) | +| Wireless ROCKPro64 2×2 MIMO Dual Band WiFi 802.11AC / Bluetooth 4.2 Module (old) ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module (new) | Yes/Yes | | No/Yes* | | For the "new" ROCKPro64 WIFI module: Verified with Manjaro ARM (kernel 6.2.5). A config file ("firmware file") is needed at `/lib/firmware/brcm/brcmfmac43455-sdio.txt`. | In 0.7.9 Ayufan linux releases this is deliberately disabled for stability reasons. On Manjaro ARM (kernel 6.2.5), WIFI seems to be stable with the firmware file. On a 5GHz network (802.11AC), it is possible to get about 120Mbps using the "new" ROCKPro64 WIFI module. | [ROCKPro64 1x1 Dual Band WiFi 802.11AC / Bluetooth 5.0 Module](https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module/) | +| USB OTG | | | | | Configure ip on usb0: ifconfig usb0 169.169.222.222 and run iperf, you should likely see about 200-300MB/s | [ROCKPro64](/documentation/ROCKPro64/Getting_started/#otg_mode) | | +| USB Mass Storage USB2/USB3 | Yes/yes | | Yes/Yes | | | | | +| Dedicated Fan Power (pwm1) | | | Yes | | | You might want to use [ATS](https://github.com/tuxd3v/ats). | | +| GPIO pins (raw or via RPI python scripts) | | | | | | Check out [what Frank Mankel has done](https://forum.frank-mankel.org/topic/292/rockpro64-rp64-gpio/2). | | +| MIPI CSI Camera 1 and 2 | | | | | | | | +| eDP | | | | | | | | +| HDMI Audio | Yes | 7.1.2 | Yes | 4.4.132-1083 - 4.4.138-1100 | | Stopped working in 4.4.154.1105. Ayufan is looking into it. This is working in Manjaro ARM (kernel 6.2.5). Select the `Analog Output (Built-in Audio Stereo)` option in the audio output device selection window (either use `pavucontrol` or the volume button in the KDE desktop). Despite the slightly misleading name, audio does go through the HDMI port. See here for details: https://forum.manjaro.org/t/no-hdmi-audio-on-rockpro64/25595/2. | | +| 3.5mm Audio/Mic | | | | | | | | +| USB-C Host | | | | | | | | +| Display via USB-C | Yes | 7.x and 8.x | | | | eDP via USB-C per tillim. No sound on Android 7.x. Sound does work on Android 8.x | | +| ROCKPro64 PLAYBOX ENCLOSURE | N/A | | N/A | | N/A | Ventilation does not exist, thus requires manual changes to add venting. Case should be modified to account power adapter not being centered in cut holes. Opening the case once close without modifying it first is nearly impossible without special tools. Graphene heatsink is included and does well for Linux but not Android. | [ROCKPro64 Playbox Enclosure](https://pine64.com/?product=rockpro64-playbox-enclosure) | +| ROCKPro64 30mm Tall Profile Heatsink | N/A | | N/A | | N/A | | [ROCKPro64 30 mm Tall-Profile Heatsink](https://pine64.com/product/rockpro64-30mm-tall-profile-heatsink/) | +| ROCKPro64 20mm Mid Profile Heatsink | N/A | | N/A | | N/A | | [ROCKPro64 20 mm Mid-Profile Heatsink](https://pine64.com/?product=rockpro64-20mm-mid-profile-heatsink) | +| Fan For ROCKPro64 20mm Mid Profile Heatsink | N/A | | N/A | | N/A | You might want to use [fanctl](https://github.com/tuxd3v/fanctl) to control the fan while keeping your CPU cool | [Fan For ROCKPro64 20 mm Mid-Profile Heatsink](https://pine64.com/?product=fan-for-rockpro64-20mm-mid-profile-heatsink) | +| HDMI output 4K@60Hz | | | | | | | | +| PCI Express 2.1 | | | | | | The PCI Express interface of the RK3399 [is limited](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=712fa1777207) to the Gen1 speed. As a result, some installed PCI Express devices may operate with degraded performance, such as M.2 SSDs that support fewer than four PCI Express lanes, installed using an adapter like [this one](https://pine64.com/product/rockpro64-pci-e-x4-to-m-2-ngff-nvme-ssd-interface-card/). | | +| Real Time Clock (RTC) battery backup | | | | | | | [RTC Backup Battery Holder CR2032](https://pine64.com/product/rtc-backup-battery-holder-cr-2032/) | +| Boot from USB/PXE | | | | | | | | + +RockChip themselves have tables of supported features at 4.4 and mainline kernel versions [in their wiki here](http://opensource.rock-chips.com/wiki_Status_Matrix). diff --git a/content/documentation/ROCKPro64/Board/GPIOs.adoc b/content/documentation/ROCKPro64/Board/GPIOs.adoc deleted file mode 100644 index a0617f8e..00000000 --- a/content/documentation/ROCKPro64/Board/GPIOs.adoc +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: "GPIOs" -draft: false -menu: - docs: - title: - parent: "ROCKPro64/Board" - identifier: "ROCKPro64/Board/GPIOs" - weight: ---- - -== GPIO Pins - -[cols=">3,^1,^1,<3"] -|=== -| Assigned To | Pin Nr. | Pin Nr. | Assigned To - -| 3.3 V -| 1 -| 2 -| 5 V - -| GPIO1_C4 (I2C8_SDA) ^a^ -| 3 -| 4 -| 5 V - -| GPIO1_C5 (I2C8_SCL) ^a^ -| 5 -| 6 -| GND - -| GPIO4_D0 (CPU_GPCLK) -| 7 -| 8 -| GPIO4_C4 (UART2_TX) - -| GND -| 9 -| 10 -| GPIO4_C3 (UART2_RX) - -| GPIO1_C6 -| 11 -| 12 -| GPIO3_D0 (I2S0_CLK) - -| GPIO1_C2 -| 13 -| 14 -| GND - -| GPIO1_A1 -| 15 -| 16 -| GPIO1_A4 - -| 3.3 V -| 17 -| 18 -| GPIO4_C5 [SPDIF] - -| [UART4_TX] GPIO1_B0 (SPI1_TXD) -| 19 -| 20 -| GND - -| [UART4_RX] GPIO1_A7 (SPI1_RXD) -| 21 -| 22 -| GPIO4_D1 - -| GPIO1_B1 (SPI1_CLK) -| 23 -| 24 -| GPIO1_B2 (SPI1_CSN0) - -| GND -| 25 -| 26 -| GPIO1_B5 - -| GPIO1_B3 (I2C4_SDA) -| 27 -| 28 -| GPIO1_B4 (I2C4_SCL) - -| GPIO4_D3 -| 29 -| 30 -| GND - -| GPIO4_D4 -| 31 -| 32 -| GPIO3_D4 (I2S0_SDI1SDO3) - -| GPIO3_D5 (I2S0_SDI2SDO2) -| 33 -| 34 -| GND - -| GPIO3_D2 (I2S0_LRCKTX) -| 35 -| 36 -| GPIO3_D6 (I2S0_SDI3SDO1) - -| GPIO3_D1 (I2S0_LRCKRX) -| 37 -| 38 -| GPIO3_D3 (I2S0_SDI0) - -| GND -| 39 -| 40 -| GPIO3_D7 (I2S0_SDO0) -|=== - -Notes: - -* pulled high to 3.3V through 2.2kOhm resistor - -== Linux /dev/gpiochip Assignments - -[cols="1,1,1"] -|=== -| Pin Nr. | Chip | Line - -| 3 | 1 | 20 -| 5 | 1 | 21 -| 7 | 4 | 24 -| 8 | 4 | 20 -| 10 | 4 | 19 -| 11 | 1 | 22 -| 12 | 3 | 24 -| 13 | 1 | 18 -| 15 | 1 | 1 -| 16 | 1 | 4 -| 18 | 4 | 21 -| 19 | 1 | 8 -| 21 | 1 | 7 -| 22 | 4 | 25 -| 23 | 1 | 9 -| 24 | 1 | 10 -| 26 | 1 | 13 -| 27 | 1 | 11 -| 28 | 1 | 12 -| 29 | 4 | 27 -| 31 | 4 | 28 -| 32 | 3 | 28 -| 33 | 3 | 29 -| 35 | 3 | 26 -| 36 | 3 | 30 -| 37 | 3 | 25 -| 38 | 3 | 27 -| 40 | 3 | 31 - -|=== - -On Linux, using the new `/dev/gpiochip` API, the `_n_` in `GPIO_n___XX_` appears to correlate to the number of the `/dev/gpiochip_n_`, and the `_XX_` to the definition `RK_P_XX_` of lines in `include/dt-bindings/pinctrl/rockchip.h` of the Linux kernel source. Having these named in the dts would be nice. - -You can use https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/[libgpiod] to drive them, and test them with the included tools (`gpioinfo`, `gpioset`, ...) - -For example, `gpioset 4 25=1` (run as root) would turn pin 22 on. Do beware that poking the wrong GPIO pin can lock up your system. - -The conversion table at right is also available as a https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5[C header file]. diff --git a/content/documentation/ROCKPro64/Board/GPIOs.md b/content/documentation/ROCKPro64/Board/GPIOs.md new file mode 100644 index 00000000..fbebab19 --- /dev/null +++ b/content/documentation/ROCKPro64/Board/GPIOs.md @@ -0,0 +1,80 @@ +--- +title: "GPIOs" +draft: false +menu: + docs: + title: + parent: "ROCKPro64/Board" + identifier: "ROCKPro64/Board/GPIOs" + weight: +--- + +## GPIO Pins + +| Assigned To | Pin Nr. | Pin Nr. | Assigned To | +| --: | :-: | :-: | :-- | +| 3.3 V | 1 | 2 | 5 V | +| GPIO1_C4 (I2C8_SDA) ^a^ | 3 | 4 | 5 V | +| GPIO1_C5 (I2C8_SCL) ^a^ | 5 | 6 | GND | +| GPIO4_D0 (CPU_GPCLK) | 7 | 8 | GPIO4_C4 (UART2_TX) | +| GND | 9 | 10 | GPIO4_C3 (UART2_RX) | +| GPIO1_C6 | 11 | 12 | GPIO3_D0 (I2S0_CLK) | +| GPIO1_C2 | 13 | 14 | GND | +| GPIO1_A1 | 15 | 16 | GPIO1_A4 | +| 3.3 V | 17 | 18 | GPIO4_C5 [SPDIF] | +| [UART4_TX] GPIO1_B0 (SPI1_TXD) | 19 | 20 | GND | +| [UART4_RX] GPIO1_A7 (SPI1_RXD) | 21 | 22 | GPIO4_D1 | +| GPIO1_B1 (SPI1_CLK) | 23 | 24 | GPIO1_B2 (SPI1_CSN0) | +| GND | 25 | 26 | GPIO1_B5 | +| GPIO1_B3 (I2C4_SDA) | 27 | 28 | GPIO1_B4 (I2C4_SCL) | +| GPIO4_D3 | 29 | 30 | GND | +| GPIO4_D4 | 31 | 32 | GPIO3_D4 (I2S0_SDI1SDO3) | +| GPIO3_D5 (I2S0_SDI2SDO2) | 33 | 34 | GND | +| GPIO3_D2 (I2S0_LRCKTX) | 35 | 36 | GPIO3_D6 (I2S0_SDI3SDO1) | +| GPIO3_D1 (I2S0_LRCKRX) | 37 | 38 | GPIO3_D3 (I2S0_SDI0) | +| GND | 39 | 40 | GPIO3_D7 (I2S0_SDO0) | + +Notes: + +* pulled high to 3.3V through 2.2kOhm resistor + +## Linux /dev/gpiochip Assignments + +| Pin Nr. | Chip | Line | +| --- | --- | --- | +| 3 | 1 | 20 | +| 5 | 1 | 21 | +| 7 | 4 | 24 | +| 8 | 4 | 20 | +| 10 | 4 | 19 | +| 11 | 1 | 22 | +| 12 | 3 | 24 | +| 13 | 1 | 18 | +| 15 | 1 | 1 | +| 16 | 1 | 4 | +| 18 | 4 | 21 | +| 19 | 1 | 8 | +| 21 | 1 | 7 | +| 22 | 4 | 25 | +| 23 | 1 | 9 | +| 24 | 1 | 10 | +| 26 | 1 | 13 | +| 27 | 1 | 11 | +| 28 | 1 | 12 | +| 29 | 4 | 27 | +| 31 | 4 | 28 | +| 32 | 3 | 28 | +| 33 | 3 | 29 | +| 35 | 3 | 26 | +| 36 | 3 | 30 | +| 37 | 3 | 25 | +| 38 | 3 | 27 | +| 40 | 3 | 31 | + +On Linux, using the new `/dev/gpiochip` API, the `_n_` in `GPIO_n___XX_` appears to correlate to the number of the `/dev/gpiochip_n_`, and the `_XX_` to the definition `RK_P_XX_` of lines in `include/dt-bindings/pinctrl/rockchip.h` of the Linux kernel source. Having these named in the dts would be nice. + +You can use [libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/) to drive them, and test them with the included tools (`gpioinfo`, `gpioset`, ...) + +For example, `gpioset 4 25=1` (run as root) would turn pin 22 on. Do beware that poking the wrong GPIO pin can lock up your system. + +The conversion table at right is also available as a [C header file](https://gist.github.com/CounterPillow/fe066655bf2d929148fe6eb3f15b1dd5). diff --git a/content/documentation/ROCKPro64/Board/Layout.adoc b/content/documentation/ROCKPro64/Board/Layout.md similarity index 59% rename from content/documentation/ROCKPro64/Board/Layout.adoc rename to content/documentation/ROCKPro64/Board/Layout.md index 3f162aad..15961f53 100644 --- a/content/documentation/ROCKPro64/Board/Layout.adoc +++ b/content/documentation/ROCKPro64/Board/Layout.md @@ -13,7 +13,7 @@ menu: {{< figure src="/documentation/images/FLIR_20220619_125451_686.jpg" width="230" >}} {{< figure src="/documentation/images/ROCKPro64_annotated.jpg" width="500" >}} -== Main Chips +## Main Chips * RK3399 system-on-chip (1) * LPDDR4 SDRAM 1 (18) @@ -24,7 +24,7 @@ menu: * ES8316 Sound Codec (on rear of board) * The heatsink mounting holes around the RK3399 are 59 mm apart -== Switches +## Switches The Power button (11, SW3): is the same as on your mobile phone - press and release after about 1 second to power on. Press and hold for about 3 seconds to power off. @@ -32,64 +32,37 @@ The Reset button (10, SW901): performs a reset. The Recover button (28, SW900): used to enter maskrom mode. -== Connectors, Sockets and Headers - -[cols="1,1,1,1,2"] -|=== -|Diagram | Schematic designator | Silkscreen label | Number of pins | Description - -| 2 | U39 | PI-2-bus | 40 | Pi-2 bus - -| 4 | J8 | +FAN- | 2 | PWM controlled fan header - -| 5 | J10 | SPDIF | 3 | SPDIF header - -| 6 | U6 | +RTC- | 2 | RTC battery backup header - -| 7 | U31 | Wifi-BT | 16 | SDIO WIFI/BT module-MIMO 2 - -| 8 | USB3 | | 9 | USB-3 and USB Type C - -| 9 | USB1 | | 2×4 | Dual USB-2 - -| 12 | IR1 | IR | 3 | infrared receiver socket - -| 13 | J16 | Headphone+mic | 4 | Headphone + mic 3.5mm jack - -| - | CON16 | GND PWR RST GND | 4 | Power & reset, unpopulated header near Headphone jack - -| 14 | U29 | EMMC | 34 | eMMC connector (Note: Some datasheets indicate a low supported number of mating cycles.) - -| 14* | J13 | | 13 | TF-card, a.k.a. microSD (* under 14 on the bottom side) - -| 15 | U30 | | 14 | SDIO WIFI/BT module-MIMO 1 - -| 16 | SW4 | | 2 | Jumper to link:#disable_emmc[Disable eMMC] - -| 19 | J15 | PCI | 64 | PCI-express X4 socket - -| 20 | J21 | DSI | 30 | DSI - -| 21 | J22 | EDP | 30 | LCD EDP - -| 22 | CON1 | TP | 6 | touch panel connector - -| 23 | CON15 | | 4 | DC out for SATA disk cable (direct connect from DC-IN) - -| 24 | J11 | DC-IN | 2 | Power input, positive tip; 12V/3A (minimum) recommended - -| 25 | U32 | | 8 | 8P8C (often referred to as 'RJ45') - -| 26 | J14 | | 19 | HDMI - -| 27 | J17 | MIPI CAM | 32 | MIPI-1 - -| 29 | J19 | MIPI CAM | 32 | MIPI-2 - -| 30 | J18 | CIF | 26 | CIF -|=== - -== LEDs +## Connectors, Sockets and Headers + +| Diagram | Schematic designator | Silkscreen label | Number of pins | Description | +| --- | --- | --- | --- | --- | +| 2 | U39 | PI-2-bus | 40 | Pi-2 bus | +| 4 | J8 | +FAN- | 2 | PWM controlled fan header | +| 5 | J10 | SPDIF | 3 | SPDIF header | +| 6 | U6 | +RTC- | 2 | RTC battery backup header | +| 7 | U31 | Wifi-BT | 16 | SDIO WIFI/BT module-MIMO 2 | +| 8 | USB3 | | 9 | USB-3 and USB Type C | +| 9 | USB1 | | 2×4 | Dual USB-2 | +| 12 | IR1 | IR | 3 | infrared receiver socket | +| 13 | J16 | Headphone+mic | 4 | Headphone + mic 3.5mm jack | +| - | CON16 | GND PWR RST GND | 4 | Power & reset, unpopulated header near Headphone jack | +| 14 | U29 | EMMC | 34 | eMMC connector (Note: Some datasheets indicate a low supported number of mating cycles.) | +| 14* | J13 | | 13 | TF-card, a.k.a. microSD (* under 14 on the bottom side) | +| 15 | U30 | | 14 | SDIO WIFI/BT module-MIMO 1 | +| 16 | SW4 | | 2 | Jumper to [Disable eMMC](#disable_emmc) | +| 19 | J15 | PCI | 64 | PCI-express X4 socket | +| 20 | J21 | DSI | 30 | DSI | +| 21 | J22 | EDP | 30 | LCD EDP | +| 22 | CON1 | TP | 6 | touch panel connector | +| 23 | CON15 | | 4 | DC out for SATA disk cable (direct connect from DC-IN) | +| 24 | J11 | DC-IN | 2 | Power input, positive tip; 12V/3A (minimum) recommended | +| 25 | U32 | | 8 | 8P8C (often referred to as 'RJ45') | +| 26 | J14 | | 19 | HDMI | +| 27 | J17 | MIPI CAM | 32 | MIPI-1 | +| 29 | J19 | MIPI CAM | 32 | MIPI-2 | +| 30 | J18 | CIF | 26 | CIF | + +## LEDs A green LED next to the 12V input barrel connector will light as long as there is 12V applied to the connector. (Even if the RockPro64 is powered off.) @@ -99,11 +72,11 @@ A red LED behind the reset button is DIY - it is lit for example if the board is Yellow and green LEDs on the LAN socket behave in a standard way. -== Jumpers +## Jumpers They are used for boot device selection, as described in the following section. -=== Disable eMMC +### Disable eMMC There is an unlabelled (on the PCB silk-screen) 2-pin jumper (16) between the eMMC socket (14) and the SPI chip (17). It is designated as SW4 on the schematic diagram under "Board Information, Schematics and Certifications". The default condition is OPEN (no jumper). It is useful for controlling the boot as follows: @@ -114,28 +87,18 @@ The possible combinations are summarised in the table below. * 1 = present * 0 = not present -|=== -|µSD |eMMC |SW4 |boot from - -| 0 | 0 | 0 | unsupported - -| 0 | 0 | 1 | unsupported - -| 0 | 1 | 0 | eMMC - -| 0 | 1 | 1 | unsupported - -| 1 | 0 | 0 | SDCard - -| 1 | 0 | 1 | SDCard - -| 1 | 1 | 0 | eMMC - -| 1 | 1 | 1 | SDCard -|=== - -=== Disable SPI (while booting) - -There is a second possibility to jumper your ROCKPro64: If you mess-up your SPI and are unable to boot, jumpering pins 23 (CLK) and 25 pin (GND) on the PI-2-bus header will disable the SPI as a boot device. (This was taken from the IRC logs, 09 August 2018 @ 17:23) You have to remove the jumper 2 seconds after having started your RP64 (before the white LED turns ON) otherwise the SPI will be missing and you won't be able to flash it. -Ayufan images contain (at the moment) only one script for the SPI and the RP64, it's "rockpro64_reset_spi_flash". Other SPI scripts are dedicated to the R64 (as it is written on the name) and it will mess-up your RP64 SPI if you use them. - +| µSD | eMMC | SW4 | boot from | +| --- | --- | --- | --- | +| 0 | 0 | 0 | unsupported | +| 0 | 0 | 1 | unsupported | +| 0 | 1 | 0 | eMMC | +| 0 | 1 | 1 | unsupported | +| 1 | 0 | 0 | SDCard | +| 1 | 0 | 1 | SDCard | +| 1 | 1 | 0 | eMMC | +| 1 | 1 | 1 | SDCard | + +### Disable SPI (while booting) + +There is a second possibility to jumper your ROCKPro64: If you mess-up your SPI and are unable to boot, jumpering pins 23 (CLK) and 25 pin (GND) on the PI-2-bus header will disable the SPI as a boot device. (This was taken from the IRC logs, 09 August 2018 @ 17:23) You have to remove the jumper 2 seconds after having started your RP64 (before the white LED turns ON) otherwise the SPI will be missing and you won’t be able to flash it. +Ayufan images contain (at the moment) only one script for the SPI and the RP64, it’s "rockpro64_reset_spi_flash". Other SPI scripts are dedicated to the R64 (as it is written on the name) and it will mess-up your RP64 SPI if you use them. diff --git a/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.adoc b/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.adoc deleted file mode 100644 index 56808c1e..00000000 --- a/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.adoc +++ /dev/null @@ -1,415 +0,0 @@ ---- -title: "Hardware compatibility" -draft: false -menu: - docs: - title: - parent: "ROCKPro64/Hardware" - identifier: "ROCKPro64/Hardware/Hardware_compatibility" - weight: 2 ---- - -Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not. - -== Hardware compatibility -=== PCIe devices - -[cols="1,1,1,1,1,3,1"] -|=== -h| Type -h| Make/Model -h| Hardware IDs -h| Kernel -h| Result -h| Notes -h| Tester - -| NIC -| Intel I350 Dual Port -| -| Mainline-5.4 -| good -| SR-IOV fails -| - -| NIC -| Intel I350 Quad Port -| -| -| ? -| -| - -| NIC -| Intel X520 Dual Port -| 8086:10fb -| Mainline-5.6 -| good -| SR-IOV fails -| - -| NIC -| Intel X550-T2 Dual Port -| 8086:1563 -| 5.15.0-trunk-arm64 (Debian) -| good -| netperf throughput in FW mode, 20 streams: between 4136-6613mb/s across use cases. -| - -| NIC -| Intel 82571EB Dual Port (HP NC360T) -| -| Mainline-5.6 -| crash -| kernel crash on boot -| - -| NIC -| Intel 82575EB Dual Port (AOC-SG-I2) -| -| Mainline-5.10 -| crash -| kernel crash on boot -| - -| NIC -| Intel 82575/82576 -| 8086:1521 -| OpenWrt 21.02-rc1 ; 5.4.111-1 -| good -| opkg: kmod-igb; https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02[OpenWrt 21.02-rc1] 5.4.111-1; ~92.8 KB; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters. -| - -| NIC -| Aquantia 10GBps AQC107 -| 1d6a:07b1 -| Mainline 5.16 -| good -| Works perfectly out of the box. -| - -| GPU -| nVidia GTX-645 -| -| Mainline-5.4 -| crash -| BAR size too small, triggers PCIe error handling bug -| - -| PCIe Switch -| PCIE-EUX1-04 Ver.002 -| -| Mainline-5.4 -| good -| -| - -| SATA Controller -| ASM1062 4-Port -| -| Mainline-5.6 -| good -| tested only with one disk attached -| - -| SATA Controller -| ASM1062 (rev 02) 4-Port -| 1d87:0100 -| Ayufan-4.4.190 -| good -| tested with four disks, 3 in raid 5 -| - -| SATA Controller -| IOCrest (Same as Syba?) SI-PEX40063 4-port, Marvell 88SE9235 chip -| 1b4b:9235 -| Debian unstable 5.7, 5.8 -| good -| Tested with two disks. SATA errors occurred with a WD Red drive in a cheap enclosure; resolved by connecting the same drive directly to the card. -| - -| SATA Controller -| Ziyituod SATA Card ASM 1062+1093 6-Port -| 1b21:0625 -| Mainline-4.4 (armbian) -| good -| tested with 6 disks -| - -| SATA Controller -| BEYMEI RAID 4-Port, Marvell 88SE9230 chip -| 1b4b:9230 -| Ayufan-5.6.0-1137 -| good -| Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'" -| - -| SATA Controller -| BEYIMEI SATA Card 6-Port, ASM1166 chip -| -| 5.10.0-16-arm64 (Debian) -| good -| Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN. -| - -| SATA Controller -| PCE8SAT-A02 VER006S + -2 Lanes, 8-Port, ASM1166 chip + -Odd because chip got only 6 ports? -| 1b21:1166 -| 6.1.50-current-rockchip64 + -Armbian 23.8.1 Bookworm -| unstable -| Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system *and* RAID. Hotplug does not work. -| User:JPT - -| SATA Controller -| BEYIMEI SATA Card 2-Port, ASM1062 chip -| 1b21:0612 -| 5.10.0-19-arm64 (Debian) -| good -| Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing) -| - -| SATA Controller -| QNINE 4-Port, Marvell 88SE9215 chip -| -| Ayufan-5.6.0-1137 -| very slow -| Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors -| - -| SATA Controller -| DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller -| 197b:0585 -| 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) -| good, but… -| Tested with 3 disks, two in RAID1, one standalone. -u-boot-rockchip_2023.07 cannot initialize the controller to boot off it. -| User:Lrissman + -User:ChriChri - -| Host Bus Adapter -| LSI SAS 9211-4i + -SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes -| 1000:0070 -| Ayufan-4.4.197 -| good -| tested with four disks attached -| - -| Host Bus Adapter -| Fujitsu SAS MEGARAID LSI 2008B2 + -SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes -| TODO -| 6.1.50-current-rockchip64 + -Armbian 23.8.1 Bookworm -| TODO -| needs special MicroSAS cables. Must be flashed to HBA mode? + -ordered, not yet received -| User JPT - -| USB Controller -| ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller -| 1b21:1242 -| Mainline-5.15.0-rc5 -| good -| -| - -| DTMB Quad Tuner -| TBS Technologies -| TSS6514 -| Mainline-5.10.21 -| good -| TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming -| - -| DVB-T2/C Quad Tuner -| TBS Technologies -| TBS6205 -| 5.10.0-16-arm64 (Debian) -| good -| Working well with Tvheadend -| - -| DVB-S2 Dual Tuner -| Digital Devices -| Octopus CI S2 Pro -| 6.1.42-rockchip64 (armbian) -| good -| All features are working flawlessly with the latest drivers from Digital Devices -| -|=== - -=== NVMe SSD drives - -[cols="1,1,1,1,1,1,1,1,1"] -|=== -h| Type -h| Make/Model -h| Size -h| Hardware IDs -h| Kernel -h| Result -h| Notes -h| Power options + -Active only -h| Save power setting? - -| NVMe -| Samsung 970 Evo -| 500 GB -| -| Mainline 5.6 -| good -| - -| defaults -| defaults - -| NVMe -| Samsung 960 Evo -| 500 GB -| 144d:a804 -| Mainline 5.13-rc4 -| doesn't work -| Likely due to 64/32 BAR mismatch issue on Linux 5.11+ -| defaults -| defaults -|=== - -=== USB hardware - -[cols="1,1,1,1,1,1,1"] -|=== -h| Type -h| Make/Model -h| Hardware IDs -h| Kernel -h| Result -h| Notes -h| Tester - -| Zigbee Bridge -| Conbee II -| 1cf1:0030 -| 6.1.50-current-rockchip64 + -Armbian 23.8.1 Bookworm -| good -| seems to work fine -| User JPT -|=== - -=== USB C alternate mode DP - -Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won't work for video. - -[cols="1,1,1,1,1,1"] -|=== -h| Type -h| Make/Model -h| Hardware IDs -h| Kernel -h| Result -h| Notes - -| -| -| -| -| -| -|=== - - -=== eMMC / SD drives - -[cols="1,1,1,1,1,1,1,1"] -|=== -h| Type -h| Make/Model -h| Hardware IDs -h| Kernel -h| Read Speed -h| Write Speed -h| Result -h| Notes - -| -| -| -| -| -| -| -| -|=== - -=== Other hardware - -[cols="1,1,1,1,1,1"] -|=== -h| Type -h| Make/Model -h| Hardware IDs -h| Kernel -h| Result -h| Notes - -| -| -| -| -| -| -|=== - -== Limitations - -=== Older firmware overwrites actively used memory - -Some people get system freeze when: - -* use SATA disk with ROCKPro64 PCIe card (maybe on newer PCIe card ASM1062 vs ASM1061) -* or do read or write 4GB to the flash (not using PCIe) - -If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort. - -Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. - -People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually. - -The latest u-boot can boot the rockpro64 without any blobs from rockchip. - -Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands: - -Prerequisite packages (Debian/Ubuntu): `device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make` - - git clone https://github.com/ARM-software/arm-trusted-firmware.git atf - make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31 - git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot - cd u-boot/ - git checkout v2020.01-rc5 - make rockpro64-rk3399_defconfig - BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- - -Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC) - - sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64 - sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 - sync - -=== PCIe Controller Hardware Error Handling Bug - -There is an issue with the rk3399 pcie controller that is currently unmitigated: - -* link:https://lore.kernel.org/linux-pci/CAMdYzYoTwjKz4EN8PtD5pZfu3+SX+68JL+dfvmCrSnLL=K6Few%40mail.gmail.com/[LKML Original Thread] -* https://lkml.org/lkml/2020/4/6/320[LKML Additional Information] - -The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message. - -The error type is determined by which cpu cluster handles the message. - -=== Virtualization - -The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine. \ No newline at end of file diff --git a/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.md b/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.md new file mode 100644 index 00000000..e88ebdaf --- /dev/null +++ b/content/documentation/ROCKPro64/Hardware/Hardware_compatibility.md @@ -0,0 +1,127 @@ +--- +title: "Hardware compatibility" +draft: false +menu: + docs: + title: + parent: "ROCKPro64/Hardware" + identifier: "ROCKPro64/Hardware/Hardware_compatibility" + weight: 2 +--- + +Please contribute to the hardware compatibility page, which lists hardware which has been tested with the rockpro64, whether successful or not. + +## Hardware compatibility +### PCIe devices + +| Type | Make/Model | Hardware IDs | Kernel | Result | Notes | Tester | +| --- | --- | --- | --- | --- | --- | --- | +| NIC | Intel I350 Dual Port | | Mainline-5.4 | good | SR-IOV fails | | +| NIC | Intel I350 Quad Port | | | ? | | | +| NIC | Intel X520 Dual Port | 8086:10fb | Mainline-5.6 | good | SR-IOV fails | | +| NIC | Intel X550-T2 Dual Port | 8086:1563 | 5.15.0-trunk-arm64 (Debian) | good | netperf throughput in FW mode, 20 streams: between 4136-6613mb/s across use cases. | | +| NIC | Intel 82571EB Dual Port (HP NC360T) | | Mainline-5.6 | crash | kernel crash on boot | | +| NIC | Intel 82575EB Dual Port (AOC-SG-I2) | | Mainline-5.10 | crash | kernel crash on boot | | +| NIC | Intel 82575/82576 | 8086:1521 | OpenWrt 21.02-rc1 ; 5.4.111-1 | good | opkg: kmod-igb; [OpenWrt 21.02-rc1](https://wiki.pine64.org/wiki/ROCKPro64_Software_Release#OpenWrt_21.02) 5.4.111-1; ~92.8 KB; Kernel modules for Intel(R) 82575/82576 PCI-Express Gigabit Ethernet adapters. | | +| NIC | Aquantia 10GBps AQC107 | 1d6a:07b1 | Mainline 5.16 | good | Works perfectly out of the box. | | +| GPU | nVidia GTX-645 | | Mainline-5.4 | crash | BAR size too small, triggers PCIe error handling bug | | +| PCIe Switch | PCIE-EUX1-04 Ver.002 | | Mainline-5.4 | good | | | +| SATA Controller | ASM1062 4-Port | | Mainline-5.6 | good | tested only with one disk attached | | +| SATA Controller | ASM1062 (rev 02) 4-Port | 1d87:0100 | Ayufan-4.4.190 | good | tested with four disks, 3 in raid 5 | | +| SATA Controller | IOCrest (Same as Syba?) SI-PEX40063 4-port, Marvell 88SE9235 chip | 1b4b:9235 | Debian unstable 5.7, 5.8 | good | Tested with two disks. SATA errors occurred with a WD Red drive in a cheap enclosure; resolved by connecting the same drive directly to the card. | | +| SATA Controller | Ziyituod SATA Card ASM 1062+1093 6-Port | 1b21:0625 | Mainline-4.4 (armbian) | good | tested with 6 disks | | +| SATA Controller | BEYMEI RAID 4-Port, Marvell 88SE9230 chip | 1b4b:9230 | Ayufan-5.6.0-1137 | good | Tested with 3 disks in RAID 5. I added pci=nomsi to /boot/extlinux/extlinux.conf kernel parameters and an udev rule before the disks were recognized: ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b4b", ATTR{device}=="0x9230", RUN+="/bin/bash -c 'echo %k > /sys/bus/pci/drivers/ahci/bind'" | | +| SATA Controller | BEYIMEI SATA Card 6-Port, ASM1166 chip | | 5.10.0-16-arm64 (Debian) | good | Tested with 4 disks. Built 2 separate software RAID-1 arrays without errors. Performance seems good enough for a NAS on gigabit LAN. | | +| SATA Controller | PCE8SAT-A02 VER006S
2 Lanes, 8-Port, ASM1166 chip
Odd because chip got only 6 ports? | 1b21:1166 | 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm | unstable | Tested with 3 disks in SW-RAID 5. After 10 hours of burn in test one disk dropped from system **and** RAID. Hotplug does not work. | User:JPT | +| SATA Controller | BEYIMEI SATA Card 2-Port, ASM1062 chip | 1b21:0612 | 5.10.0-19-arm64 (Debian) | good | Using with 2 SSDs in a software RAID-1 array (~190MB/sec for reading and writing) | | +| SATA Controller | QNINE 4-Port, Marvell 88SE9215 chip | | Ayufan-5.6.0-1137 | very slow | Tested with 3 disks in RAID 5. Top speeds were around 50 MiB/s but quickly dropped to below 2 MiB/s due to SATA CRC errors | | +| SATA Controller | DELOCK 90498, JMicron Technology Corp. JMB58x AHCI SATA controller | 197b:0585 | 5.18.0-0.bpo.1-arm64 (Debian bullseye + backports) | good, but… | Tested with 3 disks, two in RAID1, one standalone. u-boot-rockchip_2023.07 cannot initialize the controller to boot off it. | User:Lrissman
User:ChriChri | +| Host Bus Adapter | LSI SAS 9211-4i
SAS2008 chip, 4-Port SAS/SATA, PCI 2.0, 8 lanes | 1000:0070 | Ayufan-4.4.197 | good | tested with four disks attached | | +| Host Bus Adapter | Fujitsu SAS MEGARAID LSI 2008B2
SAS2008 chip, 8-Port SAS/SATA, PCI 2.0, 8 lanes | TODO | 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm | TODO | needs special MicroSAS cables. Must be flashed to HBA mode?
ordered, not yet received | User JPT | +| USB Controller | ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller | 1b21:1242 | Mainline-5.15.0-rc5 | good | | | +| DTMB Quad Tuner | TBS Technologies | TSS6514 | Mainline-5.10.21 | good | TV -> LAN streaming server, 7W idle, 8-10W with one FHD channel streaming | | +| DVB-T2/C Quad Tuner | TBS Technologies | TBS6205 | 5.10.0-16-arm64 (Debian) | good | Working well with Tvheadend | | +| DVB-S2 Dual Tuner | Digital Devices | Octopus CI S2 Pro | 6.1.42-rockchip64 (armbian) | good | All features are working flawlessly with the latest drivers from Digital Devices | | + +### NVMe SSD drives + +| Type | Make/Model | Size | Hardware IDs | Kernel | Result | Notes | Power options
Active only | Save power setting? | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| NVMe | Samsung 970 Evo | 500 GB | | Mainline 5.6 | good | - | defaults | defaults | +| NVMe | Samsung 960 Evo | 500 GB | 144d:a804 | Mainline 5.13-rc4 | doesn’t work | Likely due to 64/32 BAR mismatch issue on Linux 5.11+ | defaults | defaults | + +### USB hardware + +| Type | Make/Model | Hardware IDs | Kernel | Result | Notes | Tester | +| --- | --- | --- | --- | --- | --- | --- | +| Zigbee Bridge | Conbee II | 1cf1:0030 | 6.1.50-current-rockchip64
Armbian 23.8.1 Bookworm | good | seems to work fine | User JPT | + +### USB C alternate mode DP + +Note that only USB C alternate mode Display Port will pass video. Any HDMI, DVI or VGA port must be converted internally by the device from Display Port - or the device won’t work for video. + +| Type | Make/Model | Hardware IDs | Kernel | Result | Notes | +| --- | --- | --- | --- | --- | --- | +| | | | | | | + +### eMMC / SD drives + +| Type | Make/Model | Hardware IDs | Kernel | Read Speed | Write Speed | Result | Notes | +| --- | --- | --- | --- | --- | --- | --- | --- | +| | | | | | | | | + +### Other hardware + +| Type | Make/Model | Hardware IDs | Kernel | Result | Notes | +| --- | --- | --- | --- | --- | --- | +| | | | | | | + +## Limitations + +### Older firmware overwrites actively used memory + +Some people get system freeze when: + +* use SATA disk with ROCKPro64 PCIe card (maybe on newer PCIe card ASM1062 vs ASM1061) +* or do read or write 4GB to the flash (not using PCIe) + +If you connect the serial console you will see a Linux kernel oops: (a)synchronous external abort. + +Both issues are in fact the same software BUG. There is no hardware problem. Currently, most OS do use uboot with a rockpro blob FW which use memory that Linux kernel is not aware of. + +People are currently fixing this BUG, but it may take some time. In the mean time, you can fix it manually. + +The latest u-boot can boot the rockpro64 without any blobs from rockchip. + +Install first arm-none-eabi-gcc and aarch64-linux-gnu-gcc compiler, then run the following commands: + +Prerequisite packages (Debian/Ubuntu): `device-tree-compiler python gcc-arm-non-eabi flex bison gcc-aarch64-linux-gnu gcc make` + + git clone https://github.com/ARM-software/arm-trusted-firmware.git atf + make -C atf CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31 + git clone https://gitlab.denx.de/u-boot/u-boot.git u-boot + cd u-boot/ + git checkout v2020.01-rc5 + make rockpro64-rk3399_defconfig + BL31=../atf/build/rk3399/release/bl31/bl31.elf make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- + +Which gives you idbloader.img and u-boot.itb. Copy them to the rockpro64, and run the following: (Or put your SD card into your PC) + + sudo dd if=idbloader.img of=/dev/mmcblk0 seek=64 + sudo dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 + sync + +### PCIe Controller Hardware Error Handling Bug + +There is an issue with the rk3399 pcie controller that is currently unmitigated: + +* [LKML Original Thread](https://lore.kernel.org/linux-pci/CAMdYzYoTwjKz4EN8PtD5pZfu3+SX+68JL+dfvmCrSnLL=K6Few%40mail.gmail.com/) +* [LKML Additional Information](https://lkml.org/lkml/2020/4/6/320) + +The rk3399 pcie controller throws either a synchronous abort or a SError when a pcie device sends an unknown message. + +The error type is determined by which cpu cluster handles the message. + +### Virtualization + +The PCIe controller on the rk3399 is not behind an IOMMU. This means it is not possible to safely pass through PCIe devices to a virtual machine. diff --git a/content/documentation/SOPINE/Pins_and_GPIOs.adoc b/content/documentation/SOPINE/Pins_and_GPIOs.adoc deleted file mode 100644 index 17060933..00000000 --- a/content/documentation/SOPINE/Pins_and_GPIOs.adoc +++ /dev/null @@ -1,963 +0,0 @@ ---- -title: "Pins and GPIOs" -draft: false -menu: - docs: - title: - parent: "SOPINE" - identifier: "SOPINE/Pins_and_GPIOs" - weight: 2 ---- - -:toc: - -== GPIO Alternate Functions Table - -This is table of all available GPIOs on SOPine with their alternate functions. - -For more information about GPIOs, check the http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf[Allwinner A64 Datasheet] section _4.2 GPIO Multiplexing Functions_ and section _4.3 Detailed Pin/Signal Description_ - -|=== -|Pin name |Linux |SOPine Pin |Direction |Default Function |Default Pull |Function 2 |Function 3 |Function 4 |Function 5 |Function 6 |SOPine Name - -|PB0 -| GPIO32 | 35 | I/O | DIS | Z | UART2_TX | | JTAG_MS0 | | PB_EINT0 | PB0-UART2_TX - -|PB1 -| GPIO33 | 75 | I/O | DIS | Z | UART2_RX | | JTAG_CK0 | SIM_PWREN | PB_EINT1 | PB1-UART2_RX - -|PB2 -| GPIO34 | 36 | I/O | DIS | Z | UART2_RTS | | JTAG_DO0 | SIM_VPPEN | PB_EINT2 | PB2 - -|PB3 -| GPIO35 | 30 | I/O | DIS | Z | UART2_CTS | I2S0_MCLK | JTAG_DI0 | SIM_VPPPP | PB_EINT3 | PB3-I3S_MCLK - -|PB4 -| GPIO36 | 28 | I/O | DIS | Z | AIF2_SYNC | PCM0_SYNC | | SIM_CLK | PB_EINT4 | PB4-I2S_SYNC - -|PB5 -| GPIO37 | 27 | I/O | DIS | Z | AIF2_BCLK | PCM0_BCLK | | SIM_DATA | PB_EINT5 | PB5-I2S_BCLK - -|PB6 -| GPIO38 | 39 | I/O | DIS | Z | AIF2_DOUT | PCM0_DOUT | | SIM_RST | PB_EINT6 | PB6-I2S_DOUT - -|PB7 -| GPIO39 | 29 | I/O | DIS | Z | AIF2_DIN | PCM0_DIN | | SIM_DET | PB_EINT7 | PB7-I2S_DIN - -|PB8 -| GPIO40 | 34 | I/O | DIS | Z | | | UART0_TX | | PB_EINT8 | PB8 - -|PB9 -| GPIO41 | 33 | I/O | DIS | Z | | | UART0_RX | | PB_EINT9 | PB9 - -|PC0 -| GPIO64 | 134 | I/O | DIS | Z | NAND_WE | | SPI0_MOSI | | | PC0-SPIO_MOSI - -|PC1 -| GPIO65 | 150 | I/O | DIS | Z | NAND_ALE | SDC2_DS | SPI0_MISO | | | PC1-SPIO_MISO - -|PC2 -| GPIO66 | 142 | I/O | DIS | Z | NAND_CLE | | SPI0_CLK | | | PC2-SPIO_CLK - -|PC3 -| GPIO67 | 148 | I/O | DIS | Pull-Up | NAND_CE1 | | SPI0_CS | | | PC3-SPIO_CS - -|PC4 -| GPIO68 | 135 | I/O | DIS | Pull-Up | NAND_CE0 | | | | | PC4 - -|PC5 -| GPIO69 | 25 | I/O | DIS | Z | NAND_RE | SDC2_CLK | | | | PC5 - -|PC6 -| GPIO70 | 154 | I/O | DIS | Pull-Up | NAND_RB0 | SDC2_CMD | | | | PC6 - -|PC7 -| GPIO71 | 132 | I/O | DIS | Pull-Up | NAND_RB1 | | | | | PC7 - -|PC8 -| GPIO72 | 130 | I/O | DIS | Z | NAND_DQ0 | SDC2_D0 | | | | PC8 - -|PC9 -| GPIO73 | 153 | I/O | DIS | Z | NAND_DQ1 | SDC2_D1 | | | | PC9 - -|PC10 -| GPIO74 | 156 | I/O | DIS | Z | NAND_DQ2 | SDC2_D2 | | | | PC10 - -|PC11 -| GPIO75 | 165 | I/O | DIS | Z | NAND_DQ3 | SDC2_D3 | | | | PC11 - -|PC12 -| GPIO76 | 146 | I/O | DIS | Z | NAND_DQ4 | SDC2_D4 | | | | PC12 - -|PC13 -| GPIO77 | 157 | I/O | DIS | Z | NAND_DQ5 | SDC2_D5 | | | | PC13 - -|PC14 -| GPIO78 | 155 | I/O | DIS | Z | NAND_DQ6 | SDC2_D6 | | | | PC14 - -|PC15 -| GPIO79 | 133 | I/O | DIS | Z | NAND_DQ7 | SDC2_D7 | | | | PC15 - -|PC16 -| GPIO80 | 144 | I/O | DIS | Z | NAND_DQS | SDC2_RST | | | | PC16 - -|PD0 -| GPIO96 | 60 | I/O | DIS | Z | LCD_D2 | UART3_TX | SPI1_CS | CCIR_CLK | | PD0-SPI1_CS - -|PD1 -| GPIO97 | 49 | I/O | DIS | Z | LCD_D3 | UART3_RX | SPI1_CLK | CCIR_DE | | PD1-SPI1_CLK - -|PD2 -| GPIO98 | 57 | I/O | DIS | Z | LCD_D4 | UART4_TX | SPI1_MOSI | CCIR_HSYNC | | PD2-SPI1_MOSI - -|PD3 -| GPIO99 | 61 | I/O | DIS | Z | LCD_D5 | UART4_RX | SPI1_MISO | CCIR_VSYNC | | PD3-SPI1_MISO - -|PD4 -| GPIO100 | 52 | I/O | DIS | Z | LCD_D6 | UART4_RTS | | CCIR_D0 | | PD4-UART4_RTS - -|PD5 -| GPIO101 | 44 | I/O | DIS | Z | LCD_D7 | UART4_CTS | | CCIR_D1 | | PD5-UART4_CTS - -|PD6 -| GPIO102 | 45 | I/O | DIS | Z | LCD_D10 | | | CCIR_D2 | | PD6 - -|PD7 -| GPIO103 | 40 | I/O | DIS | Z | LCD_D11 | | | CCIR_D3 | | PD7 - -|PD8 -| GPIO104 | 73 | I/O | DIS | Z | LCD_D12 | | RGMII_RXD3/RMII_NULL | CCIR_D4 | | GRXD3 - -|PD9 -| GPIO105 | 83 | I/O | DIS | Z | LCD_D13 | | RGMII_RXD2/RMII_NULL | CCIR_D5 | | GRXD2 - -|PD10 -| GPIO106 | 51 | I/O | DIS | Z | LCD_D14 | | RGMII_RXD1/RMII_RXD1 | | | RMII-RXD1 - -|PD11 -| GPIO107 | 48 | I/O | DIS | Z | LCD_D15 | | RGMII_RXD0/RMII_RXD0 | | | RMII-RXD0 - -|PD12 -| GPIO108 | 91 | I/O | DIS | Z | LCD_D18 | LVDS_VP0 | RGMII_RXCK/RMII_NULL | | | GRXCK - -|PD13 -| GPIO109 | 89 | I/O | DIS | Z | LCD_D19 | LVDS_VN0 | RGMII_RXCT/RMII_CRS_DV | | | RMII-CRS-DV - -|PD14 -| GPIO110 | 87 | I/O | DIS | Z | LCD_D20 | LVDS_VP1 | RGMII_NULL/RMII_RXER | | | RMII-RXER - -|PD15 -| GPIO111 | 80 | I/O | DIS | Z | LCD_D21 | LVDS_VN1 | RGMII_TXD3/RMII_NULL | CCIR_D6 | | GTXD3 - -|PD16 -| GPIO112 | 82 | I/O | DIS | Z | LCD_D22 | LVDS_VP2 | RGMII_TXD2/RMII_NULL | CCIR_D7 | | GTXD2 - -|PD17 -| GPIO113 | 78 | I/O | DIS | Z | LCD_D23 | LVDS_VN2 | RGMII_TXD1/RMII_TXD1 | | | RMII-TXD1 - -|PD18 -| GPIO114 | 85 | I/O | DIS | Z | LCD_CLK | LVDS_VPC | RGMII_TXD0/RMII_TXD0 | | | RMII-TXD0 - -|PD19 -| GPIO115 | 79 | I/O | DIS | Z | LCD_DE | LVDS_VNC | RGMII_TXCK/RMII_TXCK | | | RMII-TXCK - -|PD20 -| GPIO116 | 47 | I/O | DIS | Z | LCD_HSYNC | LVDS_VP3 | RGMII_TXCTL/RMII_TXEN | | | RMII-TXEN - -|PD21 -| GPIO117 | 74 | I/O | DIS | Z | LCD_VSYNC | LVDS_VN3 | RGMII_CLKINRMII_NULL | | | GCLKIN - -|PD22 -| GPIO118 | 53 | I/O | DIS | Z | PWM0 | | MDC | | | RMII-MDC - -|PD23 -| GPIO119 | 76 | I/O | DIS | Z | | | MDIO | | | RMII-MDIO - -|PD24 -| GPIO120 | 50 | I/O | DIS | Z | | | | | | LCD-RST - -|PE0 -| GPIO128 | 58 | I/O | DIS | Z | CSI_PCLK | | TS_CLK | | | CSI-PCLK - -|PE1 -| GPIO129 | 102 | I/O | DIS | Z | CSI_MCLK | | TS_ERR | | | CSI-MCLK - -|PE2 -| GPIO130 | 100 | I/O | DIS | Z | CSI_HSYNC | | TS_SYNC | | | CSI-HSYNC - -|PE3 -| GPIO131 | 101 | I/O | DIS | Z | CSI_VSYNC | | TS_DVLD | | | CSI-VSYNC - -|PE4 -| GPIO132 | 95 | I/O | DIS | Z | CSI_D0 | | TS_D0 | | | CSI-D0 - -|PE5 -| GPIO133 | 54 | I/O | DIS | Z | CSI_D1 | | TS_D1 | | | CSI-D1 - -|PE6 -| GPIO134 | 96 | I/O | DIS | Z | CSI_D2 | | TS_D2 | | | CSI-D2 - -|PE7 -| GPIO135 | 65 | I/O | DIS | Z | CSI_D3 | | TS_D3 | | | CSI-D3 - -|PE8 -| GPIO136 | 105 | I/O | DIS | Z | CSI_D4 | | TS_D4 | | | CSI-D4 - -|PE9 -| GPIO137 | 59 | I/O | DIS | Z | CSI_D5 | | TS_D5 | | | CSI-D5 - -|PE10 -| GPIO138 | 107 | I/O | DIS | Z | CSI_D6 | | TS_D6 | | | CSI-D6 - -|PE11 -| GPIO139 | 111 | I/O | DIS | Z | CSI_D7 | | TS_D7 | | | CSI-D7 - -|PE12 -| GPIO140 | 98 | I/O | DIS | Z | CSI_SCK | | | | | CSI-SCK - -|PE13 -| GPIO141 | 113 | I/O | DIS | Z | CSI_SDA | | | | | CSI-SDA - -|PE16 -| GPIO144 | 92 | I/O | DIS | Z | | | | | | CSI-RST-F - -|PE17 -| GPIO145 | 109 | I/O | DIS | Z | | | | | | CSI-STBY-F - -|PG0 -| GPIO192 | 72 | I/O | DIS | Z | SDC1_CLK | | | | PG_EINT0 | WL-SDIO-CLK - -|PG1 -| GPIO193 | 108 | I/O | DIS | Z | SDC1_CMD | | | | PG_EINT1 | WL-SDIO-CMD - -|PG2 -| GPIO194 | 63 | I/O | DIS | Z | SDC1_D0 | | | | PG_EINT2 | WL-SDIO-D0 - -|PG3 -| GPIO195 | 110 | I/O | DIS | Z | SDC1_D1 | | | | PG_EINT3 | WL-SDIO-D1 - -|PG4 -| GPIO196 | 106 | I/O | DIS | Z | SDC1_D2 | | | | PG_EINT4 | WL-SDIO-D2 - -|PG5 -| GPIO197 | 112 | I/O | DIS | Z | SDC1_D3 | | | | PG_EINT5 | WL-SDIO-D3 - -|PG6 -| GPIO198 | 90 | I/O | DIS | Z | UART1_TX | | | | PG_EINT6 | BT-UART-RX - -|PG7 -| GPIO199 | 119 | I/O | DIS | Z | UART1_RX | | | | PG_EINT7 | BT-UART-TX - -|PG8 -| GPIO200 | 88 | I/O | DIS | Z | UART1_RTS | | | | PG_EINT8 | BT-UART-CTS - -|PG9 -| GPIO201 | 117 | I/O | DIS | Z | UART1_CTS | | | | PG_EINT9 | BT-UART-RTS - -|PG10 -| GPIO202 | 99 | I/O | DIS | Z | AIF3_SYNC | PCM1_SYNC | | | PG_EINT10 | BT-PCM-SYNC - -|PG11 -| GPIO203 | 86 | I/O | DIS | Z | AIF3_BCLK | PCM1_BCLK | | | PG_EINT11 | BT-PCM-CLK - -|PG12 -| GPIO204 | 120 | I/O | DIS | Z | AIF3_DOUT | PCM1_DOUT | | | PG_EINT12 | BT-PCM-DIN - -|PG13 -| GPIO205 | 97 | I/O | DIS | Z | AIF3_DIN | PCM1_DIN | | | PG_EINT13 | BT-PCM-DOUT - -|PH0 -| GPIO224 | 43 | I/O | DIS | Z | I2C0_SCL | | | | PH_EINT0 | TP-SCK - -|PH1 -| GPIO225 | 46 | I/O | DIS | Z | I2C0_SDA | | | | PH_EINT1 | TP-SDA - -|PH2 -| GPIO226 | 62 | I/O | DIS | Z | I2C1_SCL | | | | PH_EINT2 | PH2-TW1_SCK - -|PH3 -| GPIO227 | 37 | I/O | DIS | Z | I2C1_SDA | | | | PH_EINT3 | PH3-TW1_SDA - -|PH4 -| GPIO228 | 64 | I/O | DIS | Z | UART3_TX | | | | PH_EINT4 | TP-INT - -|PH5 -| GPIO229 | 68 | I/O | DIS | Z | UART3_RX | | | | PH_EINT5 | PH5 - -|PH6 -| GPIO230 | 66 | I/O | DIS | Z | UART3_RTS | | | | PH_EINT6 | PH6 - -|PH7 -| GPIO231 | 71 | I/O | DIS | Z | UART3_CTS | | | | PH_EINT7 | PH7 - -|PH8 -| GPIO232 | 38 | I/O | DIS | Z | OWA_OUT | | | | PH_EINT8 | PH8-OWA_OUT - -|PH9 -| GPIO233 | 77 | I/O | DIS | Z | | | | | PH_EINT9 | PH9 - -|PH10 -| GPIO234 | 26 | I/O | DIS | Z | MIC_CLK | | | | PH_EINT10 | LCD-BL-EN - -|PH11 -| GPIO235 | 67 | I/O | DIS | Z | MIC_DATA | | | | PH_EINT11 | CTP-RST - -|PL2 -| GPIO354 | 21 | I/O | DIS | Z | S_UART_TX | | | | S_PL_EINT2 | WL-REG-ON - -|PL3 -| GPIO355 | 23 | I/O | DIS | Z | S_UART_RX | | | | S_PL_EINT3 | WL-WAKE-AP - -|PL4 -| GPIO356 | 14 | I/O | DIS | Z | S_JTAG_MS | | | | S_PL_EINT4 | BT-RST-N - -|PL5 -| GPIO357 | 18 | I/O | DIS | Z | S_JTAG_CK | | | | S_PL_EINT5 | BT-WAKE-AP - -|PL6 -| GPIO358 | 16 | I/O | DIS | Z | S_JTAG_DO | | | | S_PL_EINT6 | AP-WAKE-BT - -|PL7 -| GPIO359 | 24 | I/O | DIS | Z | S_JTAG_DI | | | | S_PL_EINT7 | PL7 - -|PL8 -| GPIO360 | 15 | I/O | DIS | Z | S_I2C_CLK | | | | S_PL_EINT8 | PL8-S_TWI_SCK - -|PL9 -| GPIO361 | 17 | I/O | DIS | Z | S_I2C_SDA | | | | S_PL_EINT9 | PL9-S_TWI_SDA - -|PL10 -| GPIO362 | 166 | I/O | DIS | Z | S_PWM | | | | S_PL_EINT10 | PL10-S_PWM - -|PL11 -| GPIO363 | 13 | I/O | DIS | Z | S_CIR_RX | | | | S_PL_EINT11 | PL11-IR_RX -|=== - - -== Pin Assignment Table - -This table contains Pin Assignment of SOPine Edge Finger. For more information about peripherals, GPIOs, powering see: - -* https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf[Allwinner A64 Datasheet] section *4.2 GPIO Multiplexing Functions* and section *4.3 Detailed Pin/Signal Description* -* https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf|AXP803[Power Management Unit Datasheet] - -For Edge Finger view, see: - -* https://wiki.pine64.org/wiki/File:SOPine_Pin_Assigment_0.9.pdf[Edge Finger Pin Assignment Table] -* https://forum.pine64.org/showthread.php?tid=8058[forum.pine64.org: a PDF mapping the pins from the A64 chip itself, to the gold-fingers on the SO-DIMM edge, to the multiple connectors on the baseboard and on the clusterboard, attached to this forum post.] - -|=== -|SOPine Pin |SOPine Name |Allwinner name |Allwinner category |Ball |Type |Description - -|1 -| HBIAS | HBIAS | AUDIO_CODEC | D13 | AO | Master Analog Headphone Bias Voltage Output - -|2 -| EAROUT_P | EAROUTP | AUDIO_CODEC | B13 | AO | Earpiece Amplifier Positive Differential Output - -|3 -| HPOUTL | HPOUTL | AUDIO_CODEC | C13 | AO | Headphone Output Left Channel - -|4 -| EAROUT_N | EAROUTN | AUDIO_CODEC | A13 | AO | Earpiece Amplifier Negative Differential Output - -|5 -| HPOUTR | HPOUTR | AUDIO_CODEC | C12 | AO | Headphone Output Right Channel - -|6 -| HS-MIC | MIC-DET | AUDIO_CODEC | B10 | AI | Headphone MIC Detect - -|7 -| GND | GND | POWER | ? | G | - -|8 -| GND | GND | POWER | ? | G | - -|9 -| MIC2N | MICIN2N | AUDIO_CODEC | A17 | AI | Microphone Negative Input 2 - -|10 -| HPOUTFB | HP-FB | AUDIO_CODEC | C10 | AI | Headphone Common Reference Feedback Input - -|11 -| MIC2P | MICIN2P | AUDIO_CODEC | B17 | AI | Microphone Positive Input 2 - -|12 -| KEYADC | KEYADC | ADC | A16 | AI | ADC input for key - -|13 -| GPIO363 | PL11 | GPIO | PL11 | GPIO | General Purpose Input Output #363 - -|14 -| GPIO356 | PL4 | GPIO | PL4 | GPIO | General Purpose Input Output #356 - -|15 -| GPIO360 | PL8 | GPIO | PL8 | GPIO | General Purpose Input Output #360 - -|16 -| GPIO358 | PL6 | GPIO | PL6 | GPIO | General Purpose Input Output #358 - -|17 -| GPIO361 | PL9 | GPIO | PL9 | GPIO | General Purpose Input Output #361 - -|18 -| GPIO357 | PL5 | GPIO | PL5 | GPIO | General Purpose Input Output #357 - -|19 -| GND | GND | POWER | ? | G | - -|20 -| GND | GND | POWER | ? | G | - -|21 -| GPIO354 | PL2 | GPIO | PL2 | GPIO | General Purpose Input Output #354 - -|22 -| HP-DET | HP-DET | AUDIO_CODEC | D11 | AI | Headphone Detect - -|23 -| GPIO355 | PL3 | GPIO | PL3 | GPIO | General Purpose Input Output #355 - -|24 -| GPIO359 | PL7 | GPIO | PL7 | GPIO | General Purpose Input Output #359 - -|25 -| GPIO69 | PC5 | GPIO | PC5 | GPIO | General Purpose Input Output #69 - -|26 -| GPIO234 | PH10 | GPIO | PH10 | GPIO | General Purpose Input Output #234 - -|27 -| GPIO37 | PB5 | GPIO | PB5 | GPIO | General Purpose Input Output #37 - -|28 -| GPIO36 | PB4 | GPIO | PB4 | GPIO | General Purpose Input Output #36 - -|29 -| GPIO39 | PB7 | GPIO | PB7 | GPIO | General Purpose Input Output #39 - -|30 -| GPIO35 | PB3 | GPIO | PB3 | GPIO | General Purpose Input Output #35 - -|31 -| GND | GND | POWER | ? | G | - -|32 -| GND | GND | POWER | ? | G | - -|33 -| GPIO41 | PB9 | GPIO | PB9 | GPIO | General Purpose Input Output #41 - -|34 -| GPIO40 | PB8 | GPIO | PB8 | GPIO | General Purpose Input Output #40 - -|35 -| GPIO32 | PB0 | GPIO | PB0 | GPIO | General Purpose Input Output #32 - -|36 -| GPIO34 | PB2 | GPIO | PB2 | GPIO | General Purpose Input Output #34 - -|37 -| GPIO227 | PH3 | GPIO | PH3 | GPIO | General Purpose Input Output #227 - -|38 -| GPIO232 | PH8 | GPIO | PH8 | GPIO | General Purpose Input Output #232 - -|39 -| GPIO38 | PB6 | GPIO | PB6 | GPIO | General Purpose Input Output #38 - -|40 -| GPIO103 | PD7 | GPIO | PD7 | GPIO | General Purpose Input Output #103 - -|41 -| GND | GND | POWER | ? | G | - -|42 -| GND | GND | POWER | ? | G | - -|43 -| GPIO224 | PH0 | GPIO | PH0 | GPIO | General Purpose Input Output #224 - -|44 -| GPIO101 | PD5 | GPIO | PD5 | GPIO | General Purpose Input Output #101 - -|45 -| GPIO102 | PD6 | GPIO | PD6 | GPIO | General Purpose Input Output #102 - -|46 -| GPIO225 | PH1 | GPIO | PH1 | GPIO | General Purpose Input Output #225 - -|47 -| GPIO116 | PD20 | GPIO | PD20 | GPIO | General Purpose Input Output #116 - -|48 -| GPIO107 | PD11 | GPIO | PD11 | GPIO | General Purpose Input Output #107 - -|49 -| GPIO97 | PD1 | GPIO | PD1 | GPIO | General Purpose Input Output #97 - -|50 -| GPIO120 | PD24 | GPIO | PD24 | GPIO | General Purpose Input Output #120 - -|51 -| GPIO106 | PD10 | GPIO | PD10 | GPIO | General Purpose Input Output #106 - -|52 -| GPIO100 | PD4 | GPIO | PD4 | GPIO | General Purpose Input Output #100 - -|53 -| GPIO118 | PD22 | GPIO | PD22 | GPIO | General Purpose Input Output #118 - -|54 -| GPIO133 | PE5 | GPIO | PE5 | GPIO | General Purpose Input Output #133 - -|55 -| GND | GND | POWER | ? | G | - -|56 -| GND | GND | POWER | ? | G | - -|57 -| GPIO98 | PD2 | GPIO | PD2 | GPIO | General Purpose Input Output #98 - -|58 -| GPIO128 | PE0 | GPIO | PE0 | GPIO | General Purpose Input Output #128 - -|59 -| GPIO137 | PE9 | GPIO | PE9 | GPIO | General Purpose Input Output #137 - -|60 -| GPIO96 | PD0 | GPIO | PD0 | GPIO | General Purpose Input Output #96 - -|61 -| GPIO99 | PD3 | GPIO | PD3 | GPIO | General Purpose Input Output #99 - -|62 -| GPIO226 | PH2 | GPIO | PH2 | GPIO | General Purpose Input Output #226 - -|63 -| GPIO194 | PG2 | GPIO | PG2 | GPIO | General Purpose Input Output #194 - -|64 -| GPIO228 | PH4 | GPIO | PH4 | GPIO | General Purpose Input Output #228 - -|65 -| GPIO135 | PE7 | GPIO | PE7 | GPIO | General Purpose Input Output #135 - -|66 -| GPIO230 | PH6 | GPIO | PH6 | GPIO | General Purpose Input Output #230 - -|67 -| GPIO235 | PH11 | GPIO | PH11 | GPIO | General Purpose Input Output #235 - -|68 -| GPIO229 | PH5 | GPIO | PH5 | GPIO | General Purpose Input Output #229 - -|69 -| GND | GND | POWER | ? | G | - -|70 -| GND | GND | POWER | ? | G | - -|71 -| GPIO231 | PH7 | GPIO | PH7 | GPIO | General Purpose Input Output #231 - -|72 -| GPIO192 | PG0 | GPIO | PG0 | GPIO | General Purpose Input Output #192 - -|73 -| GPIO104 | PD8 | GPIO | PD8 | GPIO | General Purpose Input Output #104 - -|74 -| GPIO117 | PD21 | GPIO | PD21 | GPIO | General Purpose Input Output #117 - -|75 -| GPIO33 | PB1 | GPIO | PB1 | GPIO | General Purpose Input Output #33 - -|76 -| GPIO119 | PD23 | GPIO | PD23 | GPIO | General Purpose Input Output #119 - -|77 -| GPIO233 | PH9 | GPIO | PH9 | GPIO | General Purpose Input Output #233 - -|78 -| GPIO113 | PD17 | GPIO | PD17 | GPIO | General Purpose Input Output #113 - -|79 -| GPIO115 | PD19 | GPIO | PD19 | GPIO | General Purpose Input Output #115 - -|80 -| GPIO111 | PD15 | GPIO | PD15 | GPIO | General Purpose Input Output #111 - -|81 -| GND | GND | POWER | ? | G | - -|82 -| GPIO112 | PD16 | GPIO | PD16 | GPIO | General Purpose Input Output #112 - -|83 -| GPIO105 | PD9 | GPIO | PD9 | GPIO | General Purpose Input Output #105 - -|84 -| GND | GND | POWER | ? | G | - -|85 -| GPIO114 | PD18 | GPIO | PD18 | GPIO | General Purpose Input Output #114 - -|86 -| GPIO203 | PG11 | GPIO | PG11 | GPIO | General Purpose Input Output #203 - -|87 -| GPIO110 | PD14 | GPIO | PD14 | GPIO | General Purpose Input Output #110 - -|88 -| GPIO200 | PG8 | GPIO | PG8 | GPIO | General Purpose Input Output #200 - -|89 -| GPIO109 | PD13 | GPIO | PD13 | GPIO | General Purpose Input Output #109 - -|90 -| GPIO198 | PG6 | GPIO | PG6 | GPIO | General Purpose Input Output #198 - -|91 -| GPIO108 | PD12 | GPIO | PD12 | GPIO | General Purpose Input Output #108 - -|92 -| GPIO144 | PE16 | GPIO | PE16 | GPIO | General Purpose Input Output #144 - -|93 -| GND | GND | POWER | ? | G | - -|94 -| GND | GND | POWER | ? | G | - -|95 -| GPIO132 | PE4 | GPIO | PE4 | GPIO | General Purpose Input Output #132 - -|96 -| GPIO134 | PE6 | GPIO | PE6 | GPIO | General Purpose Input Output #134 - -|97 -| GPIO205 | PG13 | GPIO | PG13 | GPIO | General Purpose Input Output #205 - -|98 -| GPIO140 | PE12 | GPIO | PE12 | GPIO | General Purpose Input Output #140 - -|99 -| GPIO202 | PG10 | GPIO | PG10 | GPIO | General Purpose Input Output #202 - -|100 -| GPIO130 | PE2 | GPIO | PE2 | GPIO | General Purpose Input Output #130 - -|101 -| GPIO131 | PE3 | GPIO | PE3 | GPIO | General Purpose Input Output #131 - -|102 -| GPIO129 | PE1 | GPIO | PE1 | GPIO | General Purpose Input Output #129 - -|103 -| GND | GND | POWER | ? | G | - -|104 -| GND | GND | POWER | ? | G | - -|105 -| GPIO136 | PE8 | GPIO | PE8 | GPIO | General Purpose Input Output #136 - -|106 -| GPIO196 | PG4 | GPIO | PG4 | GPIO | General Purpose Input Output #196 - -|107 -| GPIO138 | PE10 | GPIO | PE10 | GPIO | General Purpose Input Output #138 - -|108 -| GPIO193 | PG1 | GPIO | PG1 | GPIO | General Purpose Input Output #193 - -|109 -| GPIO145 | PE17 | GPIO | PE17 | GPIO | General Purpose Input Output #145 - -|110 -| GPIO195 | PG3 | GPIO | PG3 | GPIO | General Purpose Input Output #195 - -|111 -| GPIO139 | PE11 | GPIO | PE11 | GPIO | General Purpose Input Output #139 - -|112 -| GPIO197 | PG5 | GPIO | PG5 | GPIO | General Purpose Input Output #197 - -|113 -| GPIO141 | PE13 | GPIO | PE13 | GPIO | General Purpose Input Output #141 - -|114 -| GND | GND | POWER | ? | G | - -|115 -| GND | GND | POWER | ? | G | - -|116 -| DSI-D1P | MDSI-D1P | MIPI_DSI | P22 | AO | MIPI DSI Positive Differential Data Line 1 - -|117 -| GPIO201 | PG9 | GPIO | PG9 | GPIO | General Purpose Input Output #201 - -|118 -| DSI-D1N | MDSI-D1N | MIPI_DSI | R22 | AO | MIPI DSI Negative Differential Data Line 1 - -|119 -| GPIO199 | PG7 | GPIO | PG7 | GPIO | General Purpose Input Output #199 - -|120 -| GPIO204 | PG12 | GPIO | PG12 | GPIO | General Purpose Input Output #204 - -|121 -| DSI-D0P | MDSI-D0P | MIPI_DSI | T22 | AO | MIPI DSI Positive Differential Data Line 0 - -|122 -| DSI-D3P | MDSI-D3P | MIPI_DSI | L23 | AO | MIPI DSI Positive Differential Data Line 3 - -|123 -| DSI-D0N | MDSI-D0N | MIPI_DSI | T23 | AO | MIPI DSI Negative Differential Data Line 0 - -|124 -| DSI-D3N | MDSI-D3N | MIPI_DSI | L22 | AO | MIPI DSI Negative Differential Data Line 3 - -|125 -| GND | GND | POWER | ? | G | - -|126 -| DSI-D2P | MDSI-D2P | MIPI_DSI | M22 | AO | MIPI DSI Positive Differential Data Line 2 - -|127 -| DSI-CKP | MDSI-CKP | MIPI_DSI | N23 | AO | MIPI DSI Positive Differential Clock Line - -|128 -| DSI-D2N | MDSI-D2N | MIPI_DSI | N22 | AO | MIPI DSI Negative Differential Data Line 2 - -|129 -| DSI-CKN | MDSI-CKN | MIPI_DSI | P23 | AO | MIPI DSI Negative Differential Clock Line - -|130 -| GPIO72 | PC8 | GPIO | PC8 | GPIO | General Purpose Input Output #72 - -|131 -| GND | GND | POWER | ? | G | - -|132 -| GPIO71 | PC7 | GPIO | PC7 | GPIO | General Purpose Input Output #71 - -|133 -| GPIO79 | PC15 | GPIO | PC15 | GPIO | General Purpose Input Output #79 - -|134 -| GPIO64 | PC0 | GPIO | PC0 | GPIO | General Purpose Input Output #64 - -|135 -| GPIO68 | PC4 | GPIO | PC4 | GPIO | General Purpose Input Output #68 - -|136 -| VIDEO-HTX0P | HTX0P | HDMI | G22 | AO | HDMI Positive Differential Data Line 0 - -|137 -| GND | GND | POWER | ? | G | - -|138 -| VIDEO-HTX0N | HTX0N | HDMI | G23 | AO | HDMI Negative Differential Data Line 0 - -|139 -| VIDEO-HTX2N | HTX2N | HDMI | E22 | AO | HDMI Negative Differential Data Line 2 - -|140 -| GND | GND | POWER | ? | G | - -|141 -| VIDEO-HTX2P | HTX2P | HDMI | D23 | AO | HDMI Positive Differential Data Line 2 - -|142 -| GPIO66 | PC2 | GPIO | PC2 | GPIO | General Purpose Input Output #66 - -|143 -| VIDEO-HTX1P | HTX1P | HDMI | E23 | AO | HDMI Positive Differential Data Line 1 - -|144 -| GPIO80 | PC16 | GPIO | PC16 | GPIO | General Purpose Input Output #80 - -|145 -| VIDEO-HTX1N | HTX1N | HDMI | F22 | AO | HDMI Negative Differential Data Line 1 - -|146 -| GPIO76 | PC12 | GPIO | PC12 | GPIO | General Purpose Input Output #76 - -|147 -| GND | GND | POWER | ? | G | - -|148 -| GPIO67 | PC3 | GPIO | PC3 | GPIO | General Purpose Input Output #67 - -|149 -| VIDEO-TXCN | HTXCN | HDMI | H23 | AO | HDMI Negative Differential Clock Line - -|150 -| GPIO65 | PC1 | GPIO | PC1 | GPIO | General Purpose Input Output #65 - -|151 -| VIDEO-TXCP | HTXCP | HDMI | H22 | AO | HDMI Positive Differential Clock Line - -|152 -| GND | GND | POWER | ? | G | - -|153 -| GPIO73 | PC9 | GPIO | PC9 | GPIO | General Purpose Input Output #73 - -|154 -| GPIO70 | PC6 | GPIO | PC6 | GPIO | General Purpose Input Output #70 - -|155 -| GPIO78 | PC14 | GPIO | PC14 | GPIO | General Purpose Input Output #78 - -|156 -| GPIO74 | PC10 | GPIO | PC10 | GPIO | General Purpose Input Output #74 - -|157 -| GPIO77 | PC13 | GPIO | PC13 | GPIO | General Purpose Input Output #77 - -|158 -| USB1-DP | USB1-DP | USB | B23 | A I/O | USB 1 Data Positive - -|159 -| GND | GND | POWER | ? | G | - -|160 -| USB1-DM | USB1-DM | USB | C22 | A I/O | USB 1 Data Negative - -|161 -| VIDEO-SCL | HSCL | HDMI | G21 | I/O | HDMI DDC Clock - -|162 -| GND | GND | POWER | ? | G | - -|163 -| VIDEO-SDA | HSDA | HDMI | E20 | I/O | HDMI DDC Data - -|164 -| VIDEO-HPD | HHPD | HDMI | E21 | I/O | HDMI Hot Plug Detection - -|165 -| GPIO75 | PC11 | GPIO | PC11 | GPIO | General Purpose Input Output #75 - -|166 -| GPIO362 | PL10 | GPIO | PL10 | GPIO | General Purpose Input Output #362 - -|167 -| VIDEO-CEC | HCEC | HDMI | F21 | I/O | HDMI CEC - -|168 -| PWR_ON | PWRON | PMU | 60 | I | Power On-Off key input - -|169 -| GND | GND | POWER | ? | G | - -|170 -| NC | | | | | - -|171 -| USB0-DP | USB0-DP | USB | A22 | A I/O | USB 0 Data Positive - -|172 -| DCDC1 | DCDC1 | POWER | ? | P | 3.3V from DCDC for eMMC, LEDs and other external devices with higher power consumption - -|173 -| USB0-DM | USB0-DM | USB | B22 | A I/O | USB 0 Data Negative - -|174 -| GPIO0-LDO | GPIO0 | POWER | ? | P | 3.3V@100mA from LDO for Capacitive Touch Screen I2C interface as pull-up and other purposes with low power consumption - -|175 -| CHG_LED | CHGLED | OTHER | 53 | O | Charger status indication - -|176 -| ALDO1 | ALDO1 | POWER | ? | P | 2.8V@500mA from LDO for CSI Camera and other 2.8V based devices with low power consumption - -|177 -| RESET | RESET | OTHER | ? | I | Pin for restarting of device, ground pin to perform device reset - -|178 -| NC | | | | | - -|179 -| NC | | | | | - -|180 -| DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet - -|181 -| ELDO3 | ELDO3 | POWER | ? | P | 1.8V@200mA from LDO for CSI Camera and other 1.8V based devices with low power consumption - -|182 -| DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet - -|183 -| DLDO3 | DLDO3 | POWER | ? | P | 2.8V@300mA from LDO for CSI Camera and other 2.8V based devices with low power consumption - -|184 -| DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet - -|185 -| VCC-WIFI | DLDO4 | POWER | ? | P | 3.3V@500mA from LDO for WiFi, Bluetooth and other 3.3V based devices - -|186 -| NC | | | | | - -|187 -| DC1-SW | DC1-SW | POWER | ? | P | 3.3V from DCDC for LCD and Ethernet (RGMII, RMII so GMAC and EMAC) and other 3.3V based devices - -|188 -| USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU - -|189 -| DLDO2 | DLDO2 | POWER | ? | P | Probably 1.8V@400mA (some sources indicate 3.3V) from DCDC for MIPI and other 1.8V based devices - -|190 -| USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU - -|191 -| DLDO1 | DLDO1 | POWER | ? | P | 3.3V@500mA from LDO for HDMI, MIPI DSI and other 3.3V based devices - -|192 -| USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU - -|193 -| VCC-WIFI-IO | DLDO4 | POWER | ? | P | 3.3V@500mA from LDO for WiFi, Bluetooth and other 3.3V based devices - -|194 -| NC | | | | | - -|195 -| NC | | | | | - -|196 -| BATT_SENSOR | TS | PMU | ? | I | Battery Temperature Sensor Input - -|197 -| VRTC | VCC-RTC | PMU | ? | O | Output pin of RTLCDO (NOT SURE) - -|198 -| NC | | | | | - -|199 -| PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source - -|200 -| VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery - -|201 -| PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source - -|202 -| VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery - -|203 -| PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source - -|204 -| VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery -|=== \ No newline at end of file diff --git a/content/documentation/SOPINE/Pins_and_GPIOs.md b/content/documentation/SOPINE/Pins_and_GPIOs.md new file mode 100644 index 00000000..2ec1a816 --- /dev/null +++ b/content/documentation/SOPINE/Pins_and_GPIOs.md @@ -0,0 +1,342 @@ +--- +title: "Pins and GPIOs" +draft: false +menu: + docs: + title: + parent: "SOPINE" + identifier: "SOPINE/Pins_and_GPIOs" + weight: 2 +--- + +## GPIO Alternate Functions Table + +This is table of all available GPIOs on SOPine with their alternate functions. + +For more information about GPIOs, check the [Allwinner A64 Datasheet](http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf) section _4.2 GPIO Multiplexing Functions_ and section _4.3 Detailed Pin/Signal Description_ + +| Pin name | Linux | SOPine Pin | Direction | Default Function | Default Pull | Function 2 | Function 3 | Function 4 | Function 5 | Function 6 | SOPine Name | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| PB0 | GPIO32 | 35 | I/O | DIS | Z | UART2_TX | | JTAG_MS0 | | PB_EINT0 | PB0-UART2_TX | +| PB1 | GPIO33 | 75 | I/O | DIS | Z | UART2_RX | | JTAG_CK0 | SIM_PWREN | PB_EINT1 | PB1-UART2_RX | +| PB2 | GPIO34 | 36 | I/O | DIS | Z | UART2_RTS | | JTAG_DO0 | SIM_VPPEN | PB_EINT2 | PB2 | +| PB3 | GPIO35 | 30 | I/O | DIS | Z | UART2_CTS | I2S0_MCLK | JTAG_DI0 | SIM_VPPPP | PB_EINT3 | PB3-I3S_MCLK | +| PB4 | GPIO36 | 28 | I/O | DIS | Z | AIF2_SYNC | PCM0_SYNC | | SIM_CLK | PB_EINT4 | PB4-I2S_SYNC | +| PB5 | GPIO37 | 27 | I/O | DIS | Z | AIF2_BCLK | PCM0_BCLK | | SIM_DATA | PB_EINT5 | PB5-I2S_BCLK | +| PB6 | GPIO38 | 39 | I/O | DIS | Z | AIF2_DOUT | PCM0_DOUT | | SIM_RST | PB_EINT6 | PB6-I2S_DOUT | +| PB7 | GPIO39 | 29 | I/O | DIS | Z | AIF2_DIN | PCM0_DIN | | SIM_DET | PB_EINT7 | PB7-I2S_DIN | +| PB8 | GPIO40 | 34 | I/O | DIS | Z | | | UART0_TX | | PB_EINT8 | PB8 | +| PB9 | GPIO41 | 33 | I/O | DIS | Z | | | UART0_RX | | PB_EINT9 | PB9 | +| PC0 | GPIO64 | 134 | I/O | DIS | Z | NAND_WE | | SPI0_MOSI | | | PC0-SPIO_MOSI | +| PC1 | GPIO65 | 150 | I/O | DIS | Z | NAND_ALE | SDC2_DS | SPI0_MISO | | | PC1-SPIO_MISO | +| PC2 | GPIO66 | 142 | I/O | DIS | Z | NAND_CLE | | SPI0_CLK | | | PC2-SPIO_CLK | +| PC3 | GPIO67 | 148 | I/O | DIS | Pull-Up | NAND_CE1 | | SPI0_CS | | | PC3-SPIO_CS | +| PC4 | GPIO68 | 135 | I/O | DIS | Pull-Up | NAND_CE0 | | | | | PC4 | +| PC5 | GPIO69 | 25 | I/O | DIS | Z | NAND_RE | SDC2_CLK | | | | PC5 | +| PC6 | GPIO70 | 154 | I/O | DIS | Pull-Up | NAND_RB0 | SDC2_CMD | | | | PC6 | +| PC7 | GPIO71 | 132 | I/O | DIS | Pull-Up | NAND_RB1 | | | | | PC7 | +| PC8 | GPIO72 | 130 | I/O | DIS | Z | NAND_DQ0 | SDC2_D0 | | | | PC8 | +| PC9 | GPIO73 | 153 | I/O | DIS | Z | NAND_DQ1 | SDC2_D1 | | | | PC9 | +| PC10 | GPIO74 | 156 | I/O | DIS | Z | NAND_DQ2 | SDC2_D2 | | | | PC10 | +| PC11 | GPIO75 | 165 | I/O | DIS | Z | NAND_DQ3 | SDC2_D3 | | | | PC11 | +| PC12 | GPIO76 | 146 | I/O | DIS | Z | NAND_DQ4 | SDC2_D4 | | | | PC12 | +| PC13 | GPIO77 | 157 | I/O | DIS | Z | NAND_DQ5 | SDC2_D5 | | | | PC13 | +| PC14 | GPIO78 | 155 | I/O | DIS | Z | NAND_DQ6 | SDC2_D6 | | | | PC14 | +| PC15 | GPIO79 | 133 | I/O | DIS | Z | NAND_DQ7 | SDC2_D7 | | | | PC15 | +| PC16 | GPIO80 | 144 | I/O | DIS | Z | NAND_DQS | SDC2_RST | | | | PC16 | +| PD0 | GPIO96 | 60 | I/O | DIS | Z | LCD_D2 | UART3_TX | SPI1_CS | CCIR_CLK | | PD0-SPI1_CS | +| PD1 | GPIO97 | 49 | I/O | DIS | Z | LCD_D3 | UART3_RX | SPI1_CLK | CCIR_DE | | PD1-SPI1_CLK | +| PD2 | GPIO98 | 57 | I/O | DIS | Z | LCD_D4 | UART4_TX | SPI1_MOSI | CCIR_HSYNC | | PD2-SPI1_MOSI | +| PD3 | GPIO99 | 61 | I/O | DIS | Z | LCD_D5 | UART4_RX | SPI1_MISO | CCIR_VSYNC | | PD3-SPI1_MISO | +| PD4 | GPIO100 | 52 | I/O | DIS | Z | LCD_D6 | UART4_RTS | | CCIR_D0 | | PD4-UART4_RTS | +| PD5 | GPIO101 | 44 | I/O | DIS | Z | LCD_D7 | UART4_CTS | | CCIR_D1 | | PD5-UART4_CTS | +| PD6 | GPIO102 | 45 | I/O | DIS | Z | LCD_D10 | | | CCIR_D2 | | PD6 | +| PD7 | GPIO103 | 40 | I/O | DIS | Z | LCD_D11 | | | CCIR_D3 | | PD7 | +| PD8 | GPIO104 | 73 | I/O | DIS | Z | LCD_D12 | | RGMII_RXD3/RMII_NULL | CCIR_D4 | | GRXD3 | +| PD9 | GPIO105 | 83 | I/O | DIS | Z | LCD_D13 | | RGMII_RXD2/RMII_NULL | CCIR_D5 | | GRXD2 | +| PD10 | GPIO106 | 51 | I/O | DIS | Z | LCD_D14 | | RGMII_RXD1/RMII_RXD1 | | | RMII-RXD1 | +| PD11 | GPIO107 | 48 | I/O | DIS | Z | LCD_D15 | | RGMII_RXD0/RMII_RXD0 | | | RMII-RXD0 | +| PD12 | GPIO108 | 91 | I/O | DIS | Z | LCD_D18 | LVDS_VP0 | RGMII_RXCK/RMII_NULL | | | GRXCK | +| PD13 | GPIO109 | 89 | I/O | DIS | Z | LCD_D19 | LVDS_VN0 | RGMII_RXCT/RMII_CRS_DV | | | RMII-CRS-DV | +| PD14 | GPIO110 | 87 | I/O | DIS | Z | LCD_D20 | LVDS_VP1 | RGMII_NULL/RMII_RXER | | | RMII-RXER | +| PD15 | GPIO111 | 80 | I/O | DIS | Z | LCD_D21 | LVDS_VN1 | RGMII_TXD3/RMII_NULL | CCIR_D6 | | GTXD3 | +| PD16 | GPIO112 | 82 | I/O | DIS | Z | LCD_D22 | LVDS_VP2 | RGMII_TXD2/RMII_NULL | CCIR_D7 | | GTXD2 | +| PD17 | GPIO113 | 78 | I/O | DIS | Z | LCD_D23 | LVDS_VN2 | RGMII_TXD1/RMII_TXD1 | | | RMII-TXD1 | +| PD18 | GPIO114 | 85 | I/O | DIS | Z | LCD_CLK | LVDS_VPC | RGMII_TXD0/RMII_TXD0 | | | RMII-TXD0 | +| PD19 | GPIO115 | 79 | I/O | DIS | Z | LCD_DE | LVDS_VNC | RGMII_TXCK/RMII_TXCK | | | RMII-TXCK | +| PD20 | GPIO116 | 47 | I/O | DIS | Z | LCD_HSYNC | LVDS_VP3 | RGMII_TXCTL/RMII_TXEN | | | RMII-TXEN | +| PD21 | GPIO117 | 74 | I/O | DIS | Z | LCD_VSYNC | LVDS_VN3 | RGMII_CLKINRMII_NULL | | | GCLKIN | +| PD22 | GPIO118 | 53 | I/O | DIS | Z | PWM0 | | MDC | | | RMII-MDC | +| PD23 | GPIO119 | 76 | I/O | DIS | Z | | | MDIO | | | RMII-MDIO | +| PD24 | GPIO120 | 50 | I/O | DIS | Z | | | | | | LCD-RST | +| PE0 | GPIO128 | 58 | I/O | DIS | Z | CSI_PCLK | | TS_CLK | | | CSI-PCLK | +| PE1 | GPIO129 | 102 | I/O | DIS | Z | CSI_MCLK | | TS_ERR | | | CSI-MCLK | +| PE2 | GPIO130 | 100 | I/O | DIS | Z | CSI_HSYNC | | TS_SYNC | | | CSI-HSYNC | +| PE3 | GPIO131 | 101 | I/O | DIS | Z | CSI_VSYNC | | TS_DVLD | | | CSI-VSYNC | +| PE4 | GPIO132 | 95 | I/O | DIS | Z | CSI_D0 | | TS_D0 | | | CSI-D0 | +| PE5 | GPIO133 | 54 | I/O | DIS | Z | CSI_D1 | | TS_D1 | | | CSI-D1 | +| PE6 | GPIO134 | 96 | I/O | DIS | Z | CSI_D2 | | TS_D2 | | | CSI-D2 | +| PE7 | GPIO135 | 65 | I/O | DIS | Z | CSI_D3 | | TS_D3 | | | CSI-D3 | +| PE8 | GPIO136 | 105 | I/O | DIS | Z | CSI_D4 | | TS_D4 | | | CSI-D4 | +| PE9 | GPIO137 | 59 | I/O | DIS | Z | CSI_D5 | | TS_D5 | | | CSI-D5 | +| PE10 | GPIO138 | 107 | I/O | DIS | Z | CSI_D6 | | TS_D6 | | | CSI-D6 | +| PE11 | GPIO139 | 111 | I/O | DIS | Z | CSI_D7 | | TS_D7 | | | CSI-D7 | +| PE12 | GPIO140 | 98 | I/O | DIS | Z | CSI_SCK | | | | | CSI-SCK | +| PE13 | GPIO141 | 113 | I/O | DIS | Z | CSI_SDA | | | | | CSI-SDA | +| PE16 | GPIO144 | 92 | I/O | DIS | Z | | | | | | CSI-RST-F | +| PE17 | GPIO145 | 109 | I/O | DIS | Z | | | | | | CSI-STBY-F | +| PG0 | GPIO192 | 72 | I/O | DIS | Z | SDC1_CLK | | | | PG_EINT0 | WL-SDIO-CLK | +| PG1 | GPIO193 | 108 | I/O | DIS | Z | SDC1_CMD | | | | PG_EINT1 | WL-SDIO-CMD | +| PG2 | GPIO194 | 63 | I/O | DIS | Z | SDC1_D0 | | | | PG_EINT2 | WL-SDIO-D0 | +| PG3 | GPIO195 | 110 | I/O | DIS | Z | SDC1_D1 | | | | PG_EINT3 | WL-SDIO-D1 | +| PG4 | GPIO196 | 106 | I/O | DIS | Z | SDC1_D2 | | | | PG_EINT4 | WL-SDIO-D2 | +| PG5 | GPIO197 | 112 | I/O | DIS | Z | SDC1_D3 | | | | PG_EINT5 | WL-SDIO-D3 | +| PG6 | GPIO198 | 90 | I/O | DIS | Z | UART1_TX | | | | PG_EINT6 | BT-UART-RX | +| PG7 | GPIO199 | 119 | I/O | DIS | Z | UART1_RX | | | | PG_EINT7 | BT-UART-TX | +| PG8 | GPIO200 | 88 | I/O | DIS | Z | UART1_RTS | | | | PG_EINT8 | BT-UART-CTS | +| PG9 | GPIO201 | 117 | I/O | DIS | Z | UART1_CTS | | | | PG_EINT9 | BT-UART-RTS | +| PG10 | GPIO202 | 99 | I/O | DIS | Z | AIF3_SYNC | PCM1_SYNC | | | PG_EINT10 | BT-PCM-SYNC | +| PG11 | GPIO203 | 86 | I/O | DIS | Z | AIF3_BCLK | PCM1_BCLK | | | PG_EINT11 | BT-PCM-CLK | +| PG12 | GPIO204 | 120 | I/O | DIS | Z | AIF3_DOUT | PCM1_DOUT | | | PG_EINT12 | BT-PCM-DIN | +| PG13 | GPIO205 | 97 | I/O | DIS | Z | AIF3_DIN | PCM1_DIN | | | PG_EINT13 | BT-PCM-DOUT | +| PH0 | GPIO224 | 43 | I/O | DIS | Z | I2C0_SCL | | | | PH_EINT0 | TP-SCK | +| PH1 | GPIO225 | 46 | I/O | DIS | Z | I2C0_SDA | | | | PH_EINT1 | TP-SDA | +| PH2 | GPIO226 | 62 | I/O | DIS | Z | I2C1_SCL | | | | PH_EINT2 | PH2-TW1_SCK | +| PH3 | GPIO227 | 37 | I/O | DIS | Z | I2C1_SDA | | | | PH_EINT3 | PH3-TW1_SDA | +| PH4 | GPIO228 | 64 | I/O | DIS | Z | UART3_TX | | | | PH_EINT4 | TP-INT | +| PH5 | GPIO229 | 68 | I/O | DIS | Z | UART3_RX | | | | PH_EINT5 | PH5 | +| PH6 | GPIO230 | 66 | I/O | DIS | Z | UART3_RTS | | | | PH_EINT6 | PH6 | +| PH7 | GPIO231 | 71 | I/O | DIS | Z | UART3_CTS | | | | PH_EINT7 | PH7 | +| PH8 | GPIO232 | 38 | I/O | DIS | Z | OWA_OUT | | | | PH_EINT8 | PH8-OWA_OUT | +| PH9 | GPIO233 | 77 | I/O | DIS | Z | | | | | PH_EINT9 | PH9 | +| PH10 | GPIO234 | 26 | I/O | DIS | Z | MIC_CLK | | | | PH_EINT10 | LCD-BL-EN | +| PH11 | GPIO235 | 67 | I/O | DIS | Z | MIC_DATA | | | | PH_EINT11 | CTP-RST | +| PL2 | GPIO354 | 21 | I/O | DIS | Z | S_UART_TX | | | | S_PL_EINT2 | WL-REG-ON | +| PL3 | GPIO355 | 23 | I/O | DIS | Z | S_UART_RX | | | | S_PL_EINT3 | WL-WAKE-AP | +| PL4 | GPIO356 | 14 | I/O | DIS | Z | S_JTAG_MS | | | | S_PL_EINT4 | BT-RST-N | +| PL5 | GPIO357 | 18 | I/O | DIS | Z | S_JTAG_CK | | | | S_PL_EINT5 | BT-WAKE-AP | +| PL6 | GPIO358 | 16 | I/O | DIS | Z | S_JTAG_DO | | | | S_PL_EINT6 | AP-WAKE-BT | +| PL7 | GPIO359 | 24 | I/O | DIS | Z | S_JTAG_DI | | | | S_PL_EINT7 | PL7 | +| PL8 | GPIO360 | 15 | I/O | DIS | Z | S_I2C_CLK | | | | S_PL_EINT8 | PL8-S_TWI_SCK | +| PL9 | GPIO361 | 17 | I/O | DIS | Z | S_I2C_SDA | | | | S_PL_EINT9 | PL9-S_TWI_SDA | +| PL10 | GPIO362 | 166 | I/O | DIS | Z | S_PWM | | | | S_PL_EINT10 | PL10-S_PWM | +| PL11 | GPIO363 | 13 | I/O | DIS | Z | S_CIR_RX | | | | S_PL_EINT11 | PL11-IR_RX | + +## Pin Assignment Table + +This table contains Pin Assignment of SOPine Edge Finger. For more information about peripherals, GPIOs, powering see: + +* [Allwinner A64 Datasheet](https://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf) section **4.2 GPIO Multiplexing Functions** and section **4.3 Detailed Pin/Signal Description** +* [Power Management Unit Datasheet](https://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf|AXP803) + +For Edge Finger view, see: + +* [Edge Finger Pin Assignment Table](https://wiki.pine64.org/wiki/File:SOPine_Pin_Assigment_0.9.pdf) +* [forum.pine64.org: a PDF mapping the pins from the A64 chip itself, to the gold-fingers on the SO-DIMM edge, to the multiple connectors on the baseboard and on the clusterboard, attached to this forum post.](https://forum.pine64.org/showthread.php?tid=8058) + +| SOPine Pin | SOPine Name | Allwinner name | Allwinner category | Ball | Type | Description | +| --- | --- | --- | --- | --- | --- | --- | +| 1 | HBIAS | HBIAS | AUDIO_CODEC | D13 | AO | Master Analog Headphone Bias Voltage Output | +| 2 | EAROUT_P | EAROUTP | AUDIO_CODEC | B13 | AO | Earpiece Amplifier Positive Differential Output | +| 3 | HPOUTL | HPOUTL | AUDIO_CODEC | C13 | AO | Headphone Output Left Channel | +| 4 | EAROUT_N | EAROUTN | AUDIO_CODEC | A13 | AO | Earpiece Amplifier Negative Differential Output | +| 5 | HPOUTR | HPOUTR | AUDIO_CODEC | C12 | AO | Headphone Output Right Channel | +| 6 | HS-MIC | MIC-DET | AUDIO_CODEC | B10 | AI | Headphone MIC Detect | +| 7 | GND | GND | POWER | ? | G | | +| 8 | GND | GND | POWER | ? | G | | +| 9 | MIC2N | MICIN2N | AUDIO_CODEC | A17 | AI | Microphone Negative Input 2 | +| 10 | HPOUTFB | HP-FB | AUDIO_CODEC | C10 | AI | Headphone Common Reference Feedback Input | +| 11 | MIC2P | MICIN2P | AUDIO_CODEC | B17 | AI | Microphone Positive Input 2 | +| 12 | KEYADC | KEYADC | ADC | A16 | AI | ADC input for key | +| 13 | GPIO363 | PL11 | GPIO | PL11 | GPIO | General Purpose Input Output #363 | +| 14 | GPIO356 | PL4 | GPIO | PL4 | GPIO | General Purpose Input Output #356 | +| 15 | GPIO360 | PL8 | GPIO | PL8 | GPIO | General Purpose Input Output #360 | +| 16 | GPIO358 | PL6 | GPIO | PL6 | GPIO | General Purpose Input Output #358 | +| 17 | GPIO361 | PL9 | GPIO | PL9 | GPIO | General Purpose Input Output #361 | +| 18 | GPIO357 | PL5 | GPIO | PL5 | GPIO | General Purpose Input Output #357 | +| 19 | GND | GND | POWER | ? | G | | +| 20 | GND | GND | POWER | ? | G | | +| 21 | GPIO354 | PL2 | GPIO | PL2 | GPIO | General Purpose Input Output #354 | +| 22 | HP-DET | HP-DET | AUDIO_CODEC | D11 | AI | Headphone Detect | +| 23 | GPIO355 | PL3 | GPIO | PL3 | GPIO | General Purpose Input Output #355 | +| 24 | GPIO359 | PL7 | GPIO | PL7 | GPIO | General Purpose Input Output #359 | +| 25 | GPIO69 | PC5 | GPIO | PC5 | GPIO | General Purpose Input Output #69 | +| 26 | GPIO234 | PH10 | GPIO | PH10 | GPIO | General Purpose Input Output #234 | +| 27 | GPIO37 | PB5 | GPIO | PB5 | GPIO | General Purpose Input Output #37 | +| 28 | GPIO36 | PB4 | GPIO | PB4 | GPIO | General Purpose Input Output #36 | +| 29 | GPIO39 | PB7 | GPIO | PB7 | GPIO | General Purpose Input Output #39 | +| 30 | GPIO35 | PB3 | GPIO | PB3 | GPIO | General Purpose Input Output #35 | +| 31 | GND | GND | POWER | ? | G | | +| 32 | GND | GND | POWER | ? | G | | +| 33 | GPIO41 | PB9 | GPIO | PB9 | GPIO | General Purpose Input Output #41 | +| 34 | GPIO40 | PB8 | GPIO | PB8 | GPIO | General Purpose Input Output #40 | +| 35 | GPIO32 | PB0 | GPIO | PB0 | GPIO | General Purpose Input Output #32 | +| 36 | GPIO34 | PB2 | GPIO | PB2 | GPIO | General Purpose Input Output #34 | +| 37 | GPIO227 | PH3 | GPIO | PH3 | GPIO | General Purpose Input Output #227 | +| 38 | GPIO232 | PH8 | GPIO | PH8 | GPIO | General Purpose Input Output #232 | +| 39 | GPIO38 | PB6 | GPIO | PB6 | GPIO | General Purpose Input Output #38 | +| 40 | GPIO103 | PD7 | GPIO | PD7 | GPIO | General Purpose Input Output #103 | +| 41 | GND | GND | POWER | ? | G | | +| 42 | GND | GND | POWER | ? | G | | +| 43 | GPIO224 | PH0 | GPIO | PH0 | GPIO | General Purpose Input Output #224 | +| 44 | GPIO101 | PD5 | GPIO | PD5 | GPIO | General Purpose Input Output #101 | +| 45 | GPIO102 | PD6 | GPIO | PD6 | GPIO | General Purpose Input Output #102 | +| 46 | GPIO225 | PH1 | GPIO | PH1 | GPIO | General Purpose Input Output #225 | +| 47 | GPIO116 | PD20 | GPIO | PD20 | GPIO | General Purpose Input Output #116 | +| 48 | GPIO107 | PD11 | GPIO | PD11 | GPIO | General Purpose Input Output #107 | +| 49 | GPIO97 | PD1 | GPIO | PD1 | GPIO | General Purpose Input Output #97 | +| 50 | GPIO120 | PD24 | GPIO | PD24 | GPIO | General Purpose Input Output #120 | +| 51 | GPIO106 | PD10 | GPIO | PD10 | GPIO | General Purpose Input Output #106 | +| 52 | GPIO100 | PD4 | GPIO | PD4 | GPIO | General Purpose Input Output #100 | +| 53 | GPIO118 | PD22 | GPIO | PD22 | GPIO | General Purpose Input Output #118 | +| 54 | GPIO133 | PE5 | GPIO | PE5 | GPIO | General Purpose Input Output #133 | +| 55 | GND | GND | POWER | ? | G | | +| 56 | GND | GND | POWER | ? | G | | +| 57 | GPIO98 | PD2 | GPIO | PD2 | GPIO | General Purpose Input Output #98 | +| 58 | GPIO128 | PE0 | GPIO | PE0 | GPIO | General Purpose Input Output #128 | +| 59 | GPIO137 | PE9 | GPIO | PE9 | GPIO | General Purpose Input Output #137 | +| 60 | GPIO96 | PD0 | GPIO | PD0 | GPIO | General Purpose Input Output #96 | +| 61 | GPIO99 | PD3 | GPIO | PD3 | GPIO | General Purpose Input Output #99 | +| 62 | GPIO226 | PH2 | GPIO | PH2 | GPIO | General Purpose Input Output #226 | +| 63 | GPIO194 | PG2 | GPIO | PG2 | GPIO | General Purpose Input Output #194 | +| 64 | GPIO228 | PH4 | GPIO | PH4 | GPIO | General Purpose Input Output #228 | +| 65 | GPIO135 | PE7 | GPIO | PE7 | GPIO | General Purpose Input Output #135 | +| 66 | GPIO230 | PH6 | GPIO | PH6 | GPIO | General Purpose Input Output #230 | +| 67 | GPIO235 | PH11 | GPIO | PH11 | GPIO | General Purpose Input Output #235 | +| 68 | GPIO229 | PH5 | GPIO | PH5 | GPIO | General Purpose Input Output #229 | +| 69 | GND | GND | POWER | ? | G | | +| 70 | GND | GND | POWER | ? | G | | +| 71 | GPIO231 | PH7 | GPIO | PH7 | GPIO | General Purpose Input Output #231 | +| 72 | GPIO192 | PG0 | GPIO | PG0 | GPIO | General Purpose Input Output #192 | +| 73 | GPIO104 | PD8 | GPIO | PD8 | GPIO | General Purpose Input Output #104 | +| 74 | GPIO117 | PD21 | GPIO | PD21 | GPIO | General Purpose Input Output #117 | +| 75 | GPIO33 | PB1 | GPIO | PB1 | GPIO | General Purpose Input Output #33 | +| 76 | GPIO119 | PD23 | GPIO | PD23 | GPIO | General Purpose Input Output #119 | +| 77 | GPIO233 | PH9 | GPIO | PH9 | GPIO | General Purpose Input Output #233 | +| 78 | GPIO113 | PD17 | GPIO | PD17 | GPIO | General Purpose Input Output #113 | +| 79 | GPIO115 | PD19 | GPIO | PD19 | GPIO | General Purpose Input Output #115 | +| 80 | GPIO111 | PD15 | GPIO | PD15 | GPIO | General Purpose Input Output #111 | +| 81 | GND | GND | POWER | ? | G | | +| 82 | GPIO112 | PD16 | GPIO | PD16 | GPIO | General Purpose Input Output #112 | +| 83 | GPIO105 | PD9 | GPIO | PD9 | GPIO | General Purpose Input Output #105 | +| 84 | GND | GND | POWER | ? | G | | +| 85 | GPIO114 | PD18 | GPIO | PD18 | GPIO | General Purpose Input Output #114 | +| 86 | GPIO203 | PG11 | GPIO | PG11 | GPIO | General Purpose Input Output #203 | +| 87 | GPIO110 | PD14 | GPIO | PD14 | GPIO | General Purpose Input Output #110 | +| 88 | GPIO200 | PG8 | GPIO | PG8 | GPIO | General Purpose Input Output #200 | +| 89 | GPIO109 | PD13 | GPIO | PD13 | GPIO | General Purpose Input Output #109 | +| 90 | GPIO198 | PG6 | GPIO | PG6 | GPIO | General Purpose Input Output #198 | +| 91 | GPIO108 | PD12 | GPIO | PD12 | GPIO | General Purpose Input Output #108 | +| 92 | GPIO144 | PE16 | GPIO | PE16 | GPIO | General Purpose Input Output #144 | +| 93 | GND | GND | POWER | ? | G | | +| 94 | GND | GND | POWER | ? | G | | +| 95 | GPIO132 | PE4 | GPIO | PE4 | GPIO | General Purpose Input Output #132 | +| 96 | GPIO134 | PE6 | GPIO | PE6 | GPIO | General Purpose Input Output #134 | +| 97 | GPIO205 | PG13 | GPIO | PG13 | GPIO | General Purpose Input Output #205 | +| 98 | GPIO140 | PE12 | GPIO | PE12 | GPIO | General Purpose Input Output #140 | +| 99 | GPIO202 | PG10 | GPIO | PG10 | GPIO | General Purpose Input Output #202 | +| 100 | GPIO130 | PE2 | GPIO | PE2 | GPIO | General Purpose Input Output #130 | +| 101 | GPIO131 | PE3 | GPIO | PE3 | GPIO | General Purpose Input Output #131 | +| 102 | GPIO129 | PE1 | GPIO | PE1 | GPIO | General Purpose Input Output #129 | +| 103 | GND | GND | POWER | ? | G | | +| 104 | GND | GND | POWER | ? | G | | +| 105 | GPIO136 | PE8 | GPIO | PE8 | GPIO | General Purpose Input Output #136 | +| 106 | GPIO196 | PG4 | GPIO | PG4 | GPIO | General Purpose Input Output #196 | +| 107 | GPIO138 | PE10 | GPIO | PE10 | GPIO | General Purpose Input Output #138 | +| 108 | GPIO193 | PG1 | GPIO | PG1 | GPIO | General Purpose Input Output #193 | +| 109 | GPIO145 | PE17 | GPIO | PE17 | GPIO | General Purpose Input Output #145 | +| 110 | GPIO195 | PG3 | GPIO | PG3 | GPIO | General Purpose Input Output #195 | +| 111 | GPIO139 | PE11 | GPIO | PE11 | GPIO | General Purpose Input Output #139 | +| 112 | GPIO197 | PG5 | GPIO | PG5 | GPIO | General Purpose Input Output #197 | +| 113 | GPIO141 | PE13 | GPIO | PE13 | GPIO | General Purpose Input Output #141 | +| 114 | GND | GND | POWER | ? | G | | +| 115 | GND | GND | POWER | ? | G | | +| 116 | DSI-D1P | MDSI-D1P | MIPI_DSI | P22 | AO | MIPI DSI Positive Differential Data Line 1 | +| 117 | GPIO201 | PG9 | GPIO | PG9 | GPIO | General Purpose Input Output #201 | +| 118 | DSI-D1N | MDSI-D1N | MIPI_DSI | R22 | AO | MIPI DSI Negative Differential Data Line 1 | +| 119 | GPIO199 | PG7 | GPIO | PG7 | GPIO | General Purpose Input Output #199 | +| 120 | GPIO204 | PG12 | GPIO | PG12 | GPIO | General Purpose Input Output #204 | +| 121 | DSI-D0P | MDSI-D0P | MIPI_DSI | T22 | AO | MIPI DSI Positive Differential Data Line 0 | +| 122 | DSI-D3P | MDSI-D3P | MIPI_DSI | L23 | AO | MIPI DSI Positive Differential Data Line 3 | +| 123 | DSI-D0N | MDSI-D0N | MIPI_DSI | T23 | AO | MIPI DSI Negative Differential Data Line 0 | +| 124 | DSI-D3N | MDSI-D3N | MIPI_DSI | L22 | AO | MIPI DSI Negative Differential Data Line 3 | +| 125 | GND | GND | POWER | ? | G | | +| 126 | DSI-D2P | MDSI-D2P | MIPI_DSI | M22 | AO | MIPI DSI Positive Differential Data Line 2 | +| 127 | DSI-CKP | MDSI-CKP | MIPI_DSI | N23 | AO | MIPI DSI Positive Differential Clock Line | +| 128 | DSI-D2N | MDSI-D2N | MIPI_DSI | N22 | AO | MIPI DSI Negative Differential Data Line 2 | +| 129 | DSI-CKN | MDSI-CKN | MIPI_DSI | P23 | AO | MIPI DSI Negative Differential Clock Line | +| 130 | GPIO72 | PC8 | GPIO | PC8 | GPIO | General Purpose Input Output #72 | +| 131 | GND | GND | POWER | ? | G | | +| 132 | GPIO71 | PC7 | GPIO | PC7 | GPIO | General Purpose Input Output #71 | +| 133 | GPIO79 | PC15 | GPIO | PC15 | GPIO | General Purpose Input Output #79 | +| 134 | GPIO64 | PC0 | GPIO | PC0 | GPIO | General Purpose Input Output #64 | +| 135 | GPIO68 | PC4 | GPIO | PC4 | GPIO | General Purpose Input Output #68 | +| 136 | VIDEO-HTX0P | HTX0P | HDMI | G22 | AO | HDMI Positive Differential Data Line 0 | +| 137 | GND | GND | POWER | ? | G | | +| 138 | VIDEO-HTX0N | HTX0N | HDMI | G23 | AO | HDMI Negative Differential Data Line 0 | +| 139 | VIDEO-HTX2N | HTX2N | HDMI | E22 | AO | HDMI Negative Differential Data Line 2 | +| 140 | GND | GND | POWER | ? | G | | +| 141 | VIDEO-HTX2P | HTX2P | HDMI | D23 | AO | HDMI Positive Differential Data Line 2 | +| 142 | GPIO66 | PC2 | GPIO | PC2 | GPIO | General Purpose Input Output #66 | +| 143 | VIDEO-HTX1P | HTX1P | HDMI | E23 | AO | HDMI Positive Differential Data Line 1 | +| 144 | GPIO80 | PC16 | GPIO | PC16 | GPIO | General Purpose Input Output #80 | +| 145 | VIDEO-HTX1N | HTX1N | HDMI | F22 | AO | HDMI Negative Differential Data Line 1 | +| 146 | GPIO76 | PC12 | GPIO | PC12 | GPIO | General Purpose Input Output #76 | +| 147 | GND | GND | POWER | ? | G | | +| 148 | GPIO67 | PC3 | GPIO | PC3 | GPIO | General Purpose Input Output #67 | +| 149 | VIDEO-TXCN | HTXCN | HDMI | H23 | AO | HDMI Negative Differential Clock Line | +| 150 | GPIO65 | PC1 | GPIO | PC1 | GPIO | General Purpose Input Output #65 | +| 151 | VIDEO-TXCP | HTXCP | HDMI | H22 | AO | HDMI Positive Differential Clock Line | +| 152 | GND | GND | POWER | ? | G | | +| 153 | GPIO73 | PC9 | GPIO | PC9 | GPIO | General Purpose Input Output #73 | +| 154 | GPIO70 | PC6 | GPIO | PC6 | GPIO | General Purpose Input Output #70 | +| 155 | GPIO78 | PC14 | GPIO | PC14 | GPIO | General Purpose Input Output #78 | +| 156 | GPIO74 | PC10 | GPIO | PC10 | GPIO | General Purpose Input Output #74 | +| 157 | GPIO77 | PC13 | GPIO | PC13 | GPIO | General Purpose Input Output #77 | +| 158 | USB1-DP | USB1-DP | USB | B23 | A I/O | USB 1 Data Positive | +| 159 | GND | GND | POWER | ? | G | | +| 160 | USB1-DM | USB1-DM | USB | C22 | A I/O | USB 1 Data Negative | +| 161 | VIDEO-SCL | HSCL | HDMI | G21 | I/O | HDMI DDC Clock | +| 162 | GND | GND | POWER | ? | G | | +| 163 | VIDEO-SDA | HSDA | HDMI | E20 | I/O | HDMI DDC Data | +| 164 | VIDEO-HPD | HHPD | HDMI | E21 | I/O | HDMI Hot Plug Detection | +| 165 | GPIO75 | PC11 | GPIO | PC11 | GPIO | General Purpose Input Output #75 | +| 166 | GPIO362 | PL10 | GPIO | PL10 | GPIO | General Purpose Input Output #362 | +| 167 | VIDEO-CEC | HCEC | HDMI | F21 | I/O | HDMI CEC | +| 168 | PWR_ON | PWRON | PMU | 60 | I | Power On-Off key input | +| 169 | GND | GND | POWER | ? | G | | +| 170 | NC | | | | | | +| 171 | USB0-DP | USB0-DP | USB | A22 | A I/O | USB 0 Data Positive | +| 172 | DCDC1 | DCDC1 | POWER | ? | P | 3.3V from DCDC for eMMC, LEDs and other external devices with higher power consumption | +| 173 | USB0-DM | USB0-DM | USB | B22 | A I/O | USB 0 Data Negative | +| 174 | GPIO0-LDO | GPIO0 | POWER | ? | P | 3.3V@100mA from LDO for Capacitive Touch Screen I2C interface as pull-up and other purposes with low power consumption | +| 175 | CHG_LED | CHGLED | OTHER | 53 | O | Charger status indication | +| 176 | ALDO1 | ALDO1 | POWER | ? | P | 2.8V@500mA from LDO for CSI Camera and other 2.8V based devices with low power consumption | +| 177 | RESET | RESET | OTHER | ? | I | Pin for restarting of device, ground pin to perform device reset | +| 178 | NC | | | | | | +| 179 | NC | | | | | | +| 180 | DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet | +| 181 | ELDO3 | ELDO3 | POWER | ? | P | 1.8V@200mA from LDO for CSI Camera and other 1.8V based devices with low power consumption | +| 182 | DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet | +| 183 | DLDO3 | DLDO3 | POWER | ? | P | 2.8V@300mA from LDO for CSI Camera and other 2.8V based devices with low power consumption | +| 184 | DCIN | ACIN | POWER | ? | P | 5V input, but probably can be more, look at the AXP803 datasheet | +| 185 | VCC-WIFI | DLDO4 | POWER | ? | P | 3.3V@500mA from LDO for WiFi, Bluetooth and other 3.3V based devices | +| 186 | NC | | | | | | +| 187 | DC1-SW | DC1-SW | POWER | ? | P | 3.3V from DCDC for LCD and Ethernet (RGMII, RMII so GMAC and EMAC) and other 3.3V based devices | +| 188 | USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU | +| 189 | DLDO2 | DLDO2 | POWER | ? | P | Probably 1.8V@400mA (some sources indicate 3.3V) from DCDC for MIPI and other 1.8V based devices | +| 190 | USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU | +| 191 | DLDO1 | DLDO1 | POWER | ? | P | 3.3V@500mA from LDO for HDMI, MIPI DSI and other 3.3V based devices | +| 192 | USBVBUS | USBVBUS | POWER | ? | P | 5V for powering and charging PMU | +| 193 | VCC-WIFI-IO | DLDO4 | POWER | ? | P | 3.3V@500mA from LDO for WiFi, Bluetooth and other 3.3V based devices | +| 194 | NC | | | | | | +| 195 | NC | | | | | | +| 196 | BATT_SENSOR | TS | PMU | ? | I | Battery Temperature Sensor Input | +| 197 | VRTC | VCC-RTC | PMU | ? | O | Output pin of RTLCDO (NOT SURE) | +| 198 | NC | | | | | | +| 199 | PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source | +| 200 | VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery | +| 201 | PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source | +| 202 | VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery | +| 203 | PS | IPSOUT | POWER | 55 | P | 3.5V-5V@3A System power source | +| 204 | VBAT | VBAT | POWER | ? | P | 3.5-4.2V power input from battery | diff --git a/content/documentation/Unsorted/Supported_displays.adoc b/content/documentation/Unsorted/Supported_displays.adoc deleted file mode 100644 index 108effc1..00000000 --- a/content/documentation/Unsorted/Supported_displays.adoc +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: "Supported Displays" -draft: false -menu: - docs: - title: - parent: "Unsorted" - identifier: "Unsorted/Supported_displays" - weight: ---- - -{{< admonition type="important" >}} - Contribute to it by looking for MIPI-DSI panels in `drivers/gpu/drm/panel/` and filling out the table from their data sheets -{{< /admonition >}} - -== MIPI-DSI Displays - -*MIPI-DSI Displays* are displays that follow the MIPI-DSI standard. Such displays can be connected to various PINE64 Single Board Computers. - -=== MIPI Channels and Lanes - -The MIPI Lanes number is given in a format of `channels`×`lanes`. Before buying one, make sure that your SBC has enough channels and lanes to drive the display! - -* *ROCKPro64:* 2×4 -* *Quartz64 Model A:* 1×4 -* *Quartz64 Model B:* 1×2 -* *SOQuartz:* 1×4 + 1×2 - -=== Displays With Mainline Drivers - -These displays have free and open-source drivers in the main Linux kernel tree. - -|=== -| Manufacturer -| Part Number -| Size -| Resolution -| Panel Technology -| MIPI Lanes - -| Feiyang -| **FY07024DI26A30-D** -| 7.0" -| data-sort-value="614400" | 1024×600 -| TN? -| data-sort-value="4" | 1×4 - -| Sharp -| **LQ101R1SX01** -| 10.1" -| data-sort-value="4096000" | 2560×1600 -| TN? -| data-sort-value="8" | 2×4 - -| Sharp -| **LS060T1SX01** -| 6.0" -| data-sort-value="2073600" | 1080×1920 -| ? -| data-sort-value="4" | 1×4 -|=== - -== LVDS Displays - -*LVDS Displays* are displays that follow the LVDS standard. - -=== LVDS Hardware Support - -Only Quartz64 Model A seems to support LVDS panels. - -=== Displays and Timings - -TBD \ No newline at end of file diff --git a/content/documentation/Unsorted/Supported_displays.md b/content/documentation/Unsorted/Supported_displays.md new file mode 100644 index 00000000..77f8591a --- /dev/null +++ b/content/documentation/Unsorted/Supported_displays.md @@ -0,0 +1,76 @@ +--- +title: "Supported Displays" +draft: false +menu: + docs: + title: + parent: "Unsorted" + identifier: "Unsorted/Supported_displays" + weight: +--- + +{{< admonition type="important" >}} + Contribute to it by looking for MIPI-DSI panels in `drivers/gpu/drm/panel/` and filling out the table from their data sheets +{{< /admonition >}} + +## MIPI-DSI Displays + +**MIPI-DSI Displays** are displays that follow the MIPI-DSI standard. Such displays can be connected to various PINE64 Single Board Computers. + +### MIPI Channels and Lanes + +The MIPI Lanes number is given in a format of `channels`×`lanes`. Before buying one, make sure that your SBC has enough channels and lanes to drive the display! + +* **ROCKPro64:** 2×4 +* **Quartz64 Model A:** 1×4 +* **Quartz64 Model B:** 1×2 +* **SOQuartz:** 1×4 + 1×2 + +### Displays With Mainline Drivers + +These displays have free and open-source drivers in the main Linux kernel tree. + +| | +| --- | +| Manufacturer | +| Part Number | +| Size | +| Resolution | +| Panel Technology | +| MIPI Lanes | +| Feiyang | +| ***FY07024DI26A30-D*** | +| 7.0" | +| data-sort-value="614400" | +| 1024×600 | +| TN? | +| data-sort-value="4" | +| 1×4 | +| Sharp | +| ***LQ101R1SX01*** | +| 10.1" | +| data-sort-value="4096000" | +| 2560×1600 | +| TN? | +| data-sort-value="8" | +| 2×4 | +| Sharp | +| ***LS060T1SX01*** | +| 6.0" | +| data-sort-value="2073600" | +| 1080×1920 | +| ? | +| data-sort-value="4" | +| 1×4 | + +## LVDS Displays + +**LVDS Displays** are displays that follow the LVDS standard. + +### LVDS Hardware Support + +Only Quartz64 Model A seems to support LVDS panels. + +### Displays and Timings + +TBD diff --git a/themes/pinetheme/assets/css/style.css b/themes/pinetheme/assets/css/style.css index adc56524..828020a9 100644 --- a/themes/pinetheme/assets/css/style.css +++ b/themes/pinetheme/assets/css/style.css @@ -848,7 +848,6 @@ table { margin-top: 1rem; margin-bottom: 1rem; border: 1px solid #dee2e6; - table-layout: fixed; } table td,