PinePhonev1x » History » Revision 67
« Previous |
Revision 67/69
(diff)
| Next »
dl lud, 06/24/2024 05:56 PM
Fix acronysm.
PinePhone¶
The PinePhone is an AllWinner A64 based smartphone designed and produced by PINE64 that strives to be compatible with fully free software. It is documented in detail at PINE64's wiki
Components overview¶
Feature | Hardware | Comments | TODO |
---|---|---|---|
System on a chip | Allwinner A64 Quad Core9 | * The bootloader should be fully free software7 including ARM Trusted Firmware8. * The code should be upstream already7. |
TODO: * Look at the code. |
GPU | Mali 400 MP2 GPU1 | * A "pipe" driver is in Linux since 5.2 * Has support in Mesa. |
|
Modem | Quectel EG-25G1 with2 worldwide bands4 | * The EG-25G is an international version of the EC25. * Runs GNU/Linux18. * USB connection for data and I2S connection for audio18. * Audio connected to both PCM interfaces on the A6414. * PCM audio still experimental: sending to the modem works fine, receiving produces mangled samples14. * AT support commands look unusable20, so we need to use QMI which is way more robust anyway. |
TODO: * What's the similarity with the EC-25? |
GNSS1: GPS, GPS-A, GLONASS4 | * Part of the modem. * It's NMEA protocol variant is already supported by GNU/Linux's gpsd21. * The reception is too weak to be usable due to poor antenna design. |
||
WiFi | RTL8723cs3 | * Requires a nonfree loadable firmware3. * Connected via SDIO18. |
TODO: * Check if firmware is provided under GPLv2 within the Linux driver as happened in similar chips. |
Bluetooth: 4.0, A2DP1 | * Requires a nonfree firmware3. * Connected via UART18. |
||
USB – C1 (Power, Data and Video Out) | * USB 2.09 * Serial console is only available in the headphone connector (activated by the 6th contact on the dipswitch10) |
||
RAM | 2 or 3 GB of LPDDR3 RAM | * Initialized by u-boot SPL18. | |
Main Camera | Single OmniVision OV6540, 5MP, 1/4″, LED Flash1 | * Mainline driver5 * No firmware required5 * There's an optional non-free firmware for the auto-focus18. |
|
Selfie Camera | Single GC20351, 2MP, f/2.8, 1/5″ | ||
Storage | Bootable microSD slot1 16GB eMMC1 |
* Boot order: microSD -> eMMC6 | |
Sensors accelerator, gyro, proximity, compass, barometer, ambient light1 | TODO: * Which chips are used? |
||
LCD panel and touchscreen | 5.95″ LCD 1440×720 18:9 aspect ratio (hardened glass) |
Probably works with free software11. | |
Power Management IC (PMIC) | AXP80313 | ||
Power Management coprocessor | AR10015 | * The proprietary firmware can be replaced with Crust16. * Allows deep power-saving modes and later wake-up. * Use case: receive signal from modem to wake-up device17. |
Downstream reference code¶
Downstream Linux: https://gitlab.com/pine64-org/linux https://xff.cz/git/linux pp-x.xx branches (mirror: https://codeberg.org/megi/linux)
Downstream u-boot: https://gitlab.com/pine64-org/u-boot (can now use upstream)
Downstream arm-trusted-firmware: https://gitlab.com/pine64-org/arm-trusted-firmware
Upstream status¶
Linux¶
Current upstreaming work is being led by Ondřej Jirman (aka "megi"): megi's PinePhone Development Log.
megi publishes kernels after each release with the not-yet-upstreamed patches rebased on top. The commit log thus serves as the best available "to upstream" list: example for Linux 6.10
A now (2024) outdated status can be seen at: megi's feature/driver support matrix.
Current upstreaming path looks like this: megi -> sunxi-next -> linux-next -> torvalds
Patches relevant to all A64 devices should be directly sent to sunxi-next.
Patches only relevant to PinePhone may be sent to megi
Previous upstreaming work was done at PINE64's GitLab.
U-Boot¶
PinePhone support was upstreamed on November 2020
Audio routing¶
Check megi's Audio on PinePhone.
Hardware kill switches¶
The PinePhone has 6 hardware switches19 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.
Poor GPS/GNSS reception¶
There are many reports of poor GPS reception on the PinePhone. The official cause is the small antenna in the PinePhone and the suggested fix is to use Assisted GPS (A-GPS), also known as Assisted GNSS (A-GNSS).
A-GNSS has already been added into Mobian's eg25-manager and there is also a proof of concept script available.
Unfortunately, A-GNSS alone, will not solve the full issue we are experiencing. A-GNSS can only improve the Time To First Fix (TTFF). On GNUtoo's tests with the PinePhone, after the first fix was acquired, just going under some trees in a town sufficed to loose the signal. This hints that, besides being small, the GNSS antenna may suffer some design fault.
On top of that, A-GNSS's most demanded feature, downloading the almanac and ephemeris data from a Secure User Plane Location (SUPL) server to speed up the TTFF, cannot be implemented in Replicant. There exists no SUPL server running free software that we know of.
The Openmoko Freerunner had working A-GNSS and used it only to save and inject back the almanac data, e.g. for faster fixes after closing and opening a navigation app in a short time interval. Unfortunately the almanac and ephemeris data is only valid for a limited period.
In general to make GPS work fine with free software we need the best GPS chips available. What's inside the PinePhone does not seem to be up to par. More testing and tweaking is needed though.
Schematics¶
All listed at PinePhone board information, schematics and certifications on PINE64 wiki.
References¶
1 Some specifications are available at the device page and wiki page.
2 PinePhone discussion in Replicant's mailing list: https://lists.osuosl.org/pipermail/replicant/2019-July/001997.html
3 From #replicant channel on Freenode:
<MoeIcenowy> The Wi-Fi changed to RTL8723CS (this chip also does BT), which needs non-free firmware to be feed
4 From #replicant channel on Freenode:
<MoeIcenowy> The GNSS should be also done by EG25-G
5 From #replicant channel on Freenode:
<MoeIcenowy> The OV5640 camera doesn't need firmware and its driver is mainlined
6 From #replicant channel on Freenode:
<MoeIcenowy> The boot order is strictly MicroSD->eMMC, which is set in the A64's boot ROM
7 From #replicant channel on Freenode:
<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)
8 From #replicant channel on Freenode:
<MoeIcenowy> https://github.com/ARM-software/arm-trusted-firmware
9 Allwinner A64 Datasheet: http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf
10 PostmarketOS Pinephone page: https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Serial_console
11 From #replicant channel on Freenode:
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
13 From Xalius on PINE64 IRC. Details at: https://linux-sunxi.org/AXP803
14 From Xalius.
15 https://linux-sunxi.org/AR100
16 https://github.com/crust-firmware/crust
17 From Xalius.
18 PinePhone Misconceptions: https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/
19 PinePhone at PINE64 wiki: https://wiki.pine64.org/index.php/PinePhone#Killswitch_configuration
20 According to Pavel Machek, there is no RING indication on the AT side (archive) so we might be required to use QMI. QMI is probably a better long term solution anyway.
21 GNUtoo tested it with gpsd + some configuration on top of a Mobian image.
Updated by dl lud 6 months ago · 67 revisions