h1. PinePhone The prototype version of PinePhone is already in the hands of developers and a new batch is shipping in January 2020[12], hardware won't change much from now on. |_. Feature |_. Hardware |_. Comments |_. TODO | | System on a chip | Allwinner A64 Quad Core[9] | * The bootloader should be fully free software[7] including ARM Trusted Firmware[8]. * The code should be upstream already[7]. | TODO: * Look at the code. | | GPU | Mali 400 MP2 GPU[1] | * A "pipe" driver is in Linux since 5.2 * Has (very early) support in Mesa. | TODO: * Regularly check kernel and Mesa status. | | Modem |/2. Quectel EG-25G[1] with[2] worldwide bands[4] | * The EG-25G is an international version of the EC25. * Runs GNU/Linux[18]. * USB connection for data and I2S connection for audio[18]. * Audio connected to both PCM interfaces on the A64[14]. * PCM audio still experimental: sending to the modem works fine, receiving produces mangled samples[14]. * AT support commands look unusable[20], so we need to use QMI which is way more robust anyway. | TODO: * What's the similarity with the EC-25? | | GNSS[1]: GPS, GPS-A, GLONASS[4] | | | WiFi |/2. RTL8723cs[3] | * Requires a nonfree loadable firmware[3]. * Connected via SDIO[18]. | | | Bluetooth: 4.0, A2DP[1] | * Requires a nonfree firmware[3]. * Connected via UART[18]. | TODO: * Check if it really requires that firmware or if it has some ROM code that could be used? | | USB – C[1] (Power, Data and Video Out) | |* USB 2.0[9] * Serial console is only available in the headphone connector (activated by the 6th contact on the dipswitch[10])| | | RAM | 2GB of LPDDR3 RAM | * Initialized by u-boot SPL[18]. | TODO: * Check if it meets [[HardwareRequirements|Android 9 requirements]] | | Main Camera | Single OmniVision OV6540, 5MP, 1/4″, LED Flash[1] | * Mainline driver[5] * No firmware required[5] * There's an optional non-free firmware for the auto-focus[18]. | | | Selfie Camera | Single GC2035[1], 2MP, f/2.8, 1/5″ | | | | Storage | Bootable microSD slot[1] 16GB eMMC[1] | * Boot order: microSD -> eMMC[6]| | | Sensors accelerator, gyro, proximity, compass, barometer, ambient light[1] | | | TODO: * Which chips are used? | | LCD panel and touchscreen | 5.95″ LCD 1440×720 18:9 aspect ratio (hardened glass) | Probably works with free software[11]. | | | Power Management IC (PMIC) | AXP803[13] | | | | Power Management coprocessor | AR100[15] | * The proprietary firmware can be replaced with Crust[16]. * Allows deep power-saving modes and later wake-up. * Use case: receive signal from modem to wake-up device[17]. | | h2. Downstream reference code *Downstream arm-trusted-firmware*: https://gitlab.com/pine64-org/arm-trusted-firmware *Downstream Linux*: https://gitlab.com/pine64-org/linux *Downstream u-boot*: https://gitlab.com/pine64-org/u-boot *Downstream utguard*: https://gitlab.com/pine64-org/mali-utgard-driver Other projects: * They is a fork of Linux's sunxi-next through MoeIcenowy, downstream projects such as UBports and postmarketOs gather efforts there for future upstreaming. h2. Upstream status h3. Linux Current Linux upstreaming path looks like this: pine64 -> sunxi-next -> linux-next -> torvalds Patches relevant to all A64 devices should be directly sent to sunxi-next. Patches only relevant to PinePhone should be sent to pine64. Status: * "The DTS":https://gitlab.com/pine64-org/linux/-/raw/pine64-kernel-5.4.y/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dts needs to be cleaned up, the reference to non-upstream drivers (like the LCD panel) removed, and sent upstream. The patch adding the DTS has a signed-off-by. Sending it upstream could enable to fully upstream the u-boot port. * The panel driver is not upstream * The Modem PCM audio is not upstream * The SOC (and devices?) power management is not upstream * The "fix for the A64 timer":https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c950ca8c35eeb32224a63adc47e12f9e226da241 "is in Linux 5.1":https://linux-sunxi.org/Linux_mainlining_effort#Merged_into_5.1 and seem to be good enough to make it reliable including for userspace. The result is just a timer that is a bit less precise and slower. h3. U-boot The "u-boot patch that adds the pinephone":https://gitlab.com/pine64-org/u-boot/-/commit/f405aa95e7717b4772e6a9cc75e859be075dda54 consist of just a DTS and a defconfig file. * The dts probably needs to be upstreamed in Linux first. * The patch has no signed-off-by but the configuration can be re-done * The dts comes from Linux which patch has proper signed-off-by and attribution h2. Hardware kill switches The PinePhone has 6 hardware switches[19] that allow turning on/off different hardware components: modem, WiFi/Bluetooth, microphone, rear camera, front camera and headphones. Unfortunately these are located under the back cover, which needs to be taken out to operate them. h2. Schematics "PinePhone Brave Heart Schematic":http://files.pine64.org/doc/PinePhone/PinePhone_Schematic_v1.1_20191031.pdf "PinePhone Brave Heart Changes (vs prototype units)":http://files.pine64.org/doc/PinePhone/PinePhone_BraveHeart_edition_version_1.1_change_list.pdf "PinePhone Exploded Diagram of Brave Heart edition PinePhones":http://files.pine64.org/doc/PinePhone/PinePhone_Exploded_Diagram_ver_1.0.pdf h2. References fn1. Some specifications are available at the "device page":https://www.pine64.org/pinephone/ and "wiki page":https://wiki.pine64.org/index.php/PinePhone. fn2. PinePhone discussion in Replicant's mailing list: https://lists.osuosl.org/pipermail/replicant/2019-July/001997.html fn3. From #replicant channel on Freenode:
 The Wi-Fi changed to RTL8723CS (this chip also does BT), which needs non-free firmware to be feed
fn4. From #replicant channel on Freenode:
 The GNSS should be also done by EG25-G
fn5. From #replicant channel on Freenode:
 The OV5640 camera doesn't need firmware and its driver is mainlined
fn6. From #replicant channel on Freenode:
 The boot order is strictly MicroSD->eMMC, which is set in the A64's boot ROM
fn7. From #replicant channel on Freenode:
 The bootloader (U-Boot SPL + ATF + U-Boot) is free software, all mainlined now (and the downstream dirty U-Boot cannot boot upstream Linux kernel)
need fn8. From #replicant channel on Freenode:
 https://github.com/ARM-software/arm-trusted-firmware
fn9. Allwinner A64 Datasheet: http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf fn10. PostmarketOS Pinephone page: https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Serial_console fn11. From #replicant channel on Freenode:
01:48  GNUtoo, lukasz confirmed me that the lcd doesn't require proprietary firmware to be uploaded
01:49  the conversation between pine64 staff about the lcd that someone posted on irc was probably before deciding in
               the last lcd
fn12. PINE64 December 2019 Update: https://www.pine64.org/2019/12/05/december-update-thank-you-for-2019/ fn13. From Xalius on "PINE64 IRC":https://forum.pine64.org/showthread.php?tid=892. Details at: https://linux-sunxi.org/AXP803 fn14. From Xalius. fn15. https://linux-sunxi.org/AR100 fn16. https://github.com/crust-firmware/crust fn17. From Xalius. fn18. PinePhone Misconceptions: https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/ fn19. PinePhone at PINE64 wiki: https://wiki.pine64.org/index.php/PinePhone#Killswitch_configuration fn20. According to Pavel Machek, "there is no RING indication on the AT side":https://pavelmachek.livejournal.com/143504.html ("archive":https://web.archive.org/web/20210913155020/https://pavelmachek.livejournal.com/143504.html) so we might be required to use QMI. QMI is probably a better long term solution anyway.