- A64 SoC
- 4-core Cortex-A53 1.1GHz
- 2GiB RAM
- USB OTG
- 6" display
- 2× camera
- EG25-G modem
I usually abbreviate PinePhone as PP.
Hardware quirks can be found on this page https://wiki.pine64.org/…-_Braveheart
Feature/driver support matrix
This information reflects the status of my kernel tree at: https://megous.com/git/linux/log/?…
You can click on each feature's name to see more details and ways to use the feature on PP from userspace.
|User interface input|
|Power key||works||can be configured via PMIC to react more quickly to key press to power on the device|
|Volume buttons||works||Can be also used from bootloader to affect boot script decisions (with a patch)|
|Touch panel||works||touch panel has a lag. it's normal, but possible to avoid in SW by using prediction techniques|
|Accelerometer/Gyro||works||as IIO device|
|Magnetometer||works||interrupts are routed incorrectly on the board, and need to be disable, so the sensor can really only be used with external triggers|
|Light/proximity sensor||works||as IIO device|
|Front Camera – GC2145||wip||missing controls, I'm working on a driver|
|Back Camera – OV5640||partial||missing autofocus, limited resolution/framerate settings, some controls misbehave, the mainline driver is not very reliable, i2c addresses of both cameras are the same so they conflict and can't be powered on at the same time|
|User interface output|
|Display panel||works||the driver needs some cleanup/optimization, the panel power should be maybe turned off, when the panel is suspended (for now we just ask the panel nicely to enter low power state, but keep the power on)|
|Display panel backlight||works||needs some optimization in DTS to have evenly spread and more brightness levels|
|Audio||works||Codec was recently (2020–02–07) much improved by smaeul to support complex HW mixing of audio from bluetooth and the modem.|
|RGB LEDs||works||via a LED class driver|
|Flash LED||not tested||not implemented, but easy to control via GPIO/sysfs (z3ntu works on a driver)|
|Vibration motor||works||(as EV_FF input device)|
|Modem Voice Calls||works||Calling works with special apps, some general distros already support basic calling features.|
|GPS||works||works via a modem|
|WiFi||works||old messy driver from 2014, I have a port of a newer version from 2017 to 5.5, power management with old driver sucks|
|USB-OTG Peripheral||works, but slow||sunxi musb driver doesn't implement DMA, throughtput is limited to ~12MiB/s and high CPU load, but it's possible to export block devices as USB storage devices over USB, and make PP emulate other USB gadgets (network card, etc.)|
|USB-OTG Host||wip||via work in progress
|USB-OTG DP Alt mode||wip||should
eventually work automagically without much driver support via the above metioned
|POGO pins||untested||should just work (it's a regular i2c interface, that's supported by existing drivers), though see braveheart quirks signal's voltage = 3.3V, power voltage = 5V|
|eMMC||works||read speed is about 85MiB/s max in Linux. patches for u-boot to make it as fast during bootloader stage exist too|
|microSD||works||read speed is about 23MiB/s max in Linux. patches for u-boot to make it as fast during bootloader stage exist too|
|CPU hotplug||works||via ATF PSCI|
|Thermal regulation||works||CPU frequency throttling happens at 70°C by default. May be too much for some people. Configurable.|
|PMIC||some bugs||after poweroff from Linux, PMIC still consumes around ~5–7mA, drains the battery in 10 days. workarounds are probably possible (via double shutdown in bootloader), root cause is unknown|
|Battery/USB power||works, mostly||PP needs a good power supply AND USB cable (2A+, phone takes 700mA during use + up to another 1.2A for charging), missing config for OCV table in PMIC, skewed capacity reporting, charging is not enabled to 4.35V yet|
|Other (internal SoC features, etc.)|
|CSI Camera Interface||works / OOT||multi-camera support works and is well tested|
|Display engine||some bugs||display engine driver has some bugs when atomic modesetting uses multiple planes and scaling, patches exist, good enough for general use|
|DE2 Rotation Engine||works / OOT||Works with a demo app (camera and display are oriented differently, so rotation of frames is needed to get the correct orientation for preview)|
|Video H.264 Decoding/Encoding||untested||should work, support is mainline, I haven't tested it|
|Mali GPU||untested||should work, support is mainline, I haven't tested it|
My publicly available work
- I'm collecting information about PinePhone's driver status, what's missing, known issues, and how to use the PinePhone hardware from Linux on this website.
- I've been designing and [testing]() audio codec routing setup for voice calling and prepared a sound „card“ controls documentation for A64 codec driver. I also wrote voice call audio routing setup app.
- I'm implementing GC2145 (front camera) driver.
- I'm maintaining a Linux kernel tree with the collection of the latest patches from all around the internet that are relevant to PP + my own driver work.
- I'm providing easy to use binary builds for my Linux kernel tree
- I've implemented support for multiple cameras to the sun6i-csi driver, so that PP kernel can support multiple cameras.
- I've implemented optimizations for u-boot for faster boot times (DDR support and DMA support for eMMC/SD drivers in u-boot), dcache support for aarch64 version of SPL, and many other smaller improvements.
Private work I'm doing with PinePhone
- I wrote a boot menu app (youtube video)
- I tested and debugged the new image rotation driver from Jernej via my specialized camera app
- I wrote a specialized bootloader for extremely fast boot times (down to ~500ms) (it will be available at https://megous.com/git/pp-boot).
- I'm writing a voice calling UI app
Current status of my PinePhone
Some of the things I've optimized my PinePhone software for:
- Booting to Arch Linux and being accessible on WiFi in ~5 seconds
- Booting to my custom init process, initializing the system and running my UI app in ~1 second
- Highly optimized work with cameras: image capture, rotation and scaling at 30FPS (everything done with offloading of hard work from CPU, with CPU load at 0–1%)
- It can make phone calls with good audio, but UI is still lacking