PinePhonev1x » History » Revision 46
Revision 45 (Denis 'GNUtoo' Carikli, 02/22/2020 03:27 PM) → Revision 46/69 (Denis 'GNUtoo' Carikli, 09/04/2020 01:59 AM)
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]. | TODO:
* How supported is the AT support?
* How supported is the QMI the protocol?
* 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: <pre><MoeIcenowy> The Wi-Fi changed to RTL8723CS (this chip also does BT), which needs non-free firmware to be feed</pre>
fn4. From #replicant channel on Freenode: <pre><MoeIcenowy> The GNSS should be also done by EG25-G</pre>
fn5. From #replicant channel on Freenode: <pre><MoeIcenowy> The OV5640 camera doesn't need firmware and its driver is mainlined</pre>
fn6. From #replicant channel on Freenode: <pre><MoeIcenowy> The boot order is strictly MicroSD->eMMC, which is set in the A64's boot ROM</pre>
fn7. From #replicant channel on Freenode: <pre><MoeIcenowy> 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)</pre>
fn8. From #replicant channel on Freenode: <pre><MoeIcenowy> https://github.com/ARM-software/arm-trusted-firmware</pre>
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: <pre>
01:48 <adjtm> GNUtoo, lukasz confirmed me that the lcd doesn't require proprietary firmware to be uploaded
01:49 <adjtm> the conversation between pine64 staff about the lcd that someone posted on irc was probably before deciding in
the last lcd</pre>
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