xnux.eu - site map - news

PINE64 PinePhone


I usually abbreviate PinePhone as PP.

Work in progress

I keep current infromation about my PinePhone related kernel and other development adventures in my PinePhone Development Log.

Board photos

Some hi-res board photographs of PinePhone:

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.

Feature Status Notes
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
Accelerome­ter/Gyro works as IIO device
Magnetometer works interrupts are routed incorrectly on the board, and need to be disabled, so the sensor can really only be used with external triggers (1.0–1.1), works correcly on 1.2
Light/proxi­mity sensor works as IIO device
Front Camera – GC2145 works missing some controls, I wrote a driver that's ava­ilable in my cam tree
Back Camera – OV5640 partial missing autofocus, limited resolution/fra­merate 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
Display panel backlight works the lowest PWM duty cycle for backlight to work may vary between devices (may need per-device calibration)
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 works The driver is mainline, DTS changes will be in 5.9. When booting from eMMC the LED flashes for a second.
Vibration motor works (as EV_FF input device)
Wireless connectivity
Modem Voice Calls works Calling works with special apps, most distros already support making calls.
Modem data works
Bluetooth works
GPS works works via a modem
WiFi works Old messy driver from 2014. I have ported a newer version from 2017 to mainline kernel. Power management still sucks. Realtek doesn't seem to support this chip anymore. All the drivers I can find, even precompiled ones for windows are at most from 2017.
Wired connectivity
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-C Dual Role works/hw broken I've implemented a driver in my pp-5.7 branch, based on the Martijn Braam's work. All the current PP variants (1.0–1.2) have a major issue, that prevents CC pins from working correctly. It's therefore not possible to perform any kind of negotiation and communication over the CC pins. It's not fixable in SW, other than via a manual selection of power and data roles by the user. There's a HW mod that you can do to fix CC pins from being hogged by the VCONN switches by removing the switches. See the howto, or video from adnidor. After this HW mod, you'll be able to use USB-C peripherals that don't need VCONN (hubs, etc.) with the driver in my tree.
USB-OTG DP Alt mode works/hw broken HW on Pinephone 1.0 and 1.2 is broken, see above. With HW fix and USB-C HDMI dock/cable, HDMI out works.
POGO pins untested should just work (it's a regular i2c interface, that's sup­ported by existing drivers), though see braveheart quirks signal's vol­tage = 3.3V, power voltage = 5V
eMMC works read speed is about 85–88MiB/s max in Linux (somewhat slower on 32GiB variant – ~65MiB/s) 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
Power/thermal management
CPU hotplug works via ATF PSCI
System suspend works Suspend works with crust SCP (incl. DRAM self-refresh), achieves ~110mW (130mW with modem enabled and sleeping)
Thermal regulation works CPU frequency throttling happens at 70°C by default. May be too much for some people. It's confi­gurable in sysfs.
PMIC some bugs After poweroff PP 1.0 and 1.1 still consume around ~20–30mA (this is fixed on 1.2). This drains the battery in ~2 days. Samuel Holland discovered that this is fixable by desoldering U1301 and shorting R1309. I've made a quick howto on how to do it.
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). Type-C chargers only work after Linux boot and don't cooperate automatically (or well) with the PMIC.
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 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 Deco­ding/Encoding works works with Kwiboo's ffmpeg
Mali GPU works It works with mesa/master and the driver in Linux 5.7. I've tested it with chromium and electron with a --use-gl=egl command line option, and it makes both faster.

My publicly available work

Private work I'm doing with PinePhone

Current status of my PinePhone

Some of the things I've optimized my PinePhone software for: