Project

General

Profile

PinePhonev1x » History » Version 58

dl lud, 06/18/2024 04:09 PM
Re-order downstream repos

1 24 Denis 'GNUtoo' Carikli
h1. PinePhone
2 1 Denis 'GNUtoo' Carikli
3 51 dl lud
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":https://wiki.pine64.org/index.php/PinePhone
4 1 Denis 'GNUtoo' Carikli
5 51 dl lud
h2. Components overview
6
7 28 dl lud
|_. Feature |_. Hardware |_. Comments |_. TODO |
8 42 dl lud
| System on a chip | Allwinner A64 Quad Core[9] | * The bootloader should be fully free software[7] including ARM Trusted Firmware[8].
9 1 Denis 'GNUtoo' Carikli
* The code should be upstream already[7]. | TODO:
10 23 Denis 'GNUtoo' Carikli
* Look at the code. |
11 42 dl lud
| GPU | Mali 400 MP2 GPU[1] | * A "pipe" driver is in Linux since 5.2
12 51 dl lud
* Has support in Mesa. | |
13 1 Denis 'GNUtoo' Carikli
| Modem |/2. Quectel EG-25G[1] with[2] worldwide bands[4] | * The EG-25G is an international version of the EC25.
14 39 dl lud
* Runs GNU/Linux[18].
15
* USB connection for data and I2S connection for audio[18].
16 29 dl lud
* Audio connected to both PCM interfaces on the A64[14].
17 49 Denis 'GNUtoo' Carikli
* PCM audio still experimental: sending to the modem works fine, receiving produces mangled samples[14]. 
18
* AT support commands look unusable[20], so we need to use QMI which is way more robust anyway. | TODO:
19 1 Denis 'GNUtoo' Carikli
* What's the similarity with the EC-25? |
20 50 Denis 'GNUtoo' Carikli
| GNSS[1]: GPS, GPS-A, GLONASS[4] | * It's part of the modem
21
                                    * Its NMEA protocol variant is already supported by GNU/Linux's gpsd[21]
22
                                    * The range is too poor to be usable due to the antenna design[22] |
23 42 dl lud
| WiFi |/2. RTL8723cs[3] | * Requires a nonfree loadable firmware[3].
24 52 dl lud
* Connected via SDIO[18]. |/2. TODO:
25 54 dl lud
* Check if firmware is provided under GPLv2 within the Linux driver as "happened in similar chips":https://libreplanet.org/wiki/Group:Hardware/Computers/e-readers/Kobo/Aura_H2O_Edition_2#Firmwares. |
26 52 dl lud
| Bluetooth: 4.0, A2DP[1] | * Requires a nonfree firmware[3].
27
* Connected via UART[18]. |
28 1 Denis 'GNUtoo' Carikli
| USB – C[1] (Power, Data and Video Out) | |* USB 2.0[9]
29 39 dl lud
* Serial console is only available in the headphone connector (activated by the 6th contact on the dipswitch[10])| |
30 51 dl lud
| RAM | 2 or 3 GB of LPDDR3 RAM | * Initialized by u-boot SPL[18]. | |
31 39 dl lud
| Main Camera | Single OmniVision OV6540, 5MP, 1/4″, LED Flash[1] | * Mainline driver[5]
32
* No firmware required[5]
33
* There's an optional non-free firmware for the auto-focus[18]. | |
34
| Selfie Camera | Single GC2035[1], 2MP, f/2.8, 1/5″ | | |
35 44 dl lud
| Storage | Bootable microSD slot[1]
36
 16GB eMMC[1] | * Boot order: microSD -> eMMC[6]| |
37 26 Andrés D
| Sensors accelerator, gyro, proximity, compass, barometer, ambient light[1] | | | TODO:
38 42 dl lud
* Which chips are used? |
39 28 dl lud
| LCD panel and touchscreen | 5.95″ LCD 1440×720
40 42 dl lud
18:9 aspect ratio (hardened glass) | Probably works with free software[11]. | |
41 36 dl lud
| Power Management IC (PMIC) | AXP803[13] | | |
42
| Power Management coprocessor | AR100[15] | * The proprietary firmware can be replaced with Crust[16].
43 38 dl lud
* Allows deep power-saving modes and later wake-up.
44 30 dl lud
* Use case: receive signal from modem to wake-up device[17]. | |
45
46 45 Denis 'GNUtoo' Carikli
h2. Downstream reference code
47 1 Denis 'GNUtoo' Carikli
48
*Downstream Linux*: -https://gitlab.com/pine64-org/linux- https://xff.cz/git/linux pp-x.xx branches (mirror: https://codeberg.org/megi/linux)
49 58 dl lud
*Downstream u-boot*: -https://gitlab.com/pine64-org/u-boot- (can now use upstream)
50
*Downstream arm-trusted-firmware*: https://gitlab.com/pine64-org/arm-trusted-firmware
51 45 Denis 'GNUtoo' Carikli
52
h2. Upstream status
53
54
h3. Linux
55
56 56 dl lud
Current upstreaming work is being led by Ondřej Jirman (aka "megi"): "megi's PinePhone Development Log":https://xnux.eu/log/index.html.
57
Previous upstreaming work was done at "PINE64's GitLab":https://gitlab.com/pine64-org/linux/.
58
59
Current upstreaming path looks like this: megi -> sunxi-next -> linux-next -> torvalds
60 45 Denis 'GNUtoo' Carikli
Patches relevant to all A64 devices should be directly sent to sunxi-next.
61 56 dl lud
Patches only relevant to PinePhone may be sent to megi
62 45 Denis 'GNUtoo' Carikli
63 56 dl lud
Status: "megi's feature/driver support matrix":https://xnux.eu/devices/pine64-pinephone.html#toc-feature-driver-support-matrix
64 45 Denis 'GNUtoo' Carikli
65
h3. U-boot
66
67
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. 
68
* The dts probably needs to be upstreamed in Linux first.
69
* The patch has no signed-off-by but the configuration can be re-done
70
* The dts comes from Linux which patch has proper signed-off-by and attribution
71 40 dl lud
72
h2. Hardware kill switches
73
74
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.
75 41 dl lud
76
h2. Schematics
77
78 53 dl lud
All listed at "PinePhone board information, schematics and certifications on PINE64 wiki":https://wiki.pine64.org/index.php/PinePhone#PinePhone_board_information,_schematics_and_certifications.
79 3 Denis 'GNUtoo' Carikli
80 32 dl lud
h2. References
81 1 Denis 'GNUtoo' Carikli
82 28 dl lud
fn1. Some specifications are available at the "device page":https://www.pine64.org/pinephone/ and "wiki page":https://wiki.pine64.org/index.php/PinePhone.
83 4 Denis 'GNUtoo' Carikli
84 34 dl lud
fn2. PinePhone discussion in Replicant's mailing list: https://lists.osuosl.org/pipermail/replicant/2019-July/001997.html
85 18 Denis 'GNUtoo' Carikli
86 34 dl lud
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>
87 1 Denis 'GNUtoo' Carikli
88 34 dl lud
fn4. From #replicant channel on Freenode: <pre><MoeIcenowy> The GNSS should be also done by EG25-G</pre>
89 1 Denis 'GNUtoo' Carikli
90 34 dl lud
fn5. From #replicant channel on Freenode: <pre><MoeIcenowy> The OV5640 camera doesn't need firmware and its driver is mainlined</pre>
91 1 Denis 'GNUtoo' Carikli
92 34 dl lud
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>
93 1 Denis 'GNUtoo' Carikli
94
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>
95 47 Denis 'GNUtoo' Carikli
need
96 25 Andrés D
fn8. From #replicant channel on Freenode: <pre><MoeIcenowy> https://github.com/ARM-software/arm-trusted-firmware</pre>
97 1 Denis 'GNUtoo' Carikli
98
fn9. Allwinner A64 Datasheet: http://files.pine64.org/doc/datasheet/pine64/A64_Datasheet_V1.1.pdf
99 25 Andrés D
100 27 Denis 'GNUtoo' Carikli
fn10. PostmarketOS Pinephone page: https://wiki.postmarketos.org/wiki/PINE64_PinePhone_(pine64-pinephone)#Serial_console
101
102
fn11. From #replicant channel on Freenode: <pre>
103 1 Denis 'GNUtoo' Carikli
01:48 <adjtm> GNUtoo, lukasz confirmed me that the lcd doesn't require proprietary firmware to be uploaded
104
01:49 <adjtm> the conversation between pine64 staff about the lcd that someone posted on irc was probably before deciding in
105 28 dl lud
               the last lcd</pre>
106 1 Denis 'GNUtoo' Carikli
107
fn13. From Xalius on "PINE64 IRC":https://forum.pine64.org/showthread.php?tid=892. Details at: https://linux-sunxi.org/AXP803
108 29 dl lud
109 1 Denis 'GNUtoo' Carikli
fn14. From Xalius.
110 36 dl lud
111
fn15. https://linux-sunxi.org/AR100
112
113
fn16. https://github.com/crust-firmware/crust
114
115 39 dl lud
fn17. From Xalius.
116
117 40 dl lud
fn18. PinePhone Misconceptions: https://www.pine64.org/2020/01/24/setting-the-record-straight-pinephone-misconceptions/
118 1 Denis 'GNUtoo' Carikli
119
fn19. PinePhone at PINE64 wiki: https://wiki.pine64.org/index.php/PinePhone#Killswitch_configuration
120 47 Denis 'GNUtoo' Carikli
121 1 Denis 'GNUtoo' Carikli
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.
122 50 Denis 'GNUtoo' Carikli
123
fn21. I tested it myself with gpsd + some configuration on top of a mobian image
124
125
fn22. Once a complete fix is acquired, just going under some trees in a town makes you loose the signal. Beside that a fix requires obtimal conditions, like to have good visibility of the sky. And as usual it takes a long time to acquire the first time. In general to make GPS work fine with free software we typically need the best GPS chips available as even if we manage to make AGPS work, we don't have free software supl services to make the first fix faster. The Openmoko Freerunner had working AGPS and it only used it to save and inject back the GPS data for faster fixes, but that data is only valid for a limited time period.