Difference between revisions of "PINE64 PinePhone (pine64-pinephone)"

From postmarketOS
Jump to: navigation, search
m (Installation: fix)
(Installation: clarification)
Line 55: Line 55:
  
 
postmarketOS can be installed onto the eMMC by booting a Linux distribution on the phone first and doing the installation process via pmbootstrap on the phone directly:
 
postmarketOS can be installed onto the eMMC by booting a Linux distribution on the phone first and doing the installation process via pmbootstrap on the phone directly:
 +
 +
{{note|'''Note:''' This requires sufficient space on the microSD, partitions created from images using dd need to be resized.}}
  
 
# Install [[Installing pmbootstrap|pmbootstrap]] and its dependencies on the phone on any Linux distribution booted via the microSD card
 
# Install [[Installing pmbootstrap|pmbootstrap]] and its dependencies on the phone on any Linux distribution booted via the microSD card
 
# Follow the [[Installation guide|Installation Guide]] until "Installation and flashing"
 
# Follow the [[Installation guide|Installation Guide]] until "Installation and flashing"
 
# Run "pmbootstrap install --sdcard=/dev/mmcblk(...)"
 
# Run "pmbootstrap install --sdcard=/dev/mmcblk(...)"
 
{{note|'''Note:''' Do not try to install from the demo image, the space of the partition in the demo image is limited. }}
 
  
 
Installing postmarketOS on the eMMC directly from a computer via FEL is also supported. This requires the user to [https://linux-sunxi.org/FEL#Triggering_FEL_mode enable FEL mode], the [https://wiki.pine64.org/index.php/NOOB#Flashing_to_eMMC_using_FEL_.28Allwinner_A64_Devices_Only.29 boot-tools] to mount the eMMC as mass storage are currently however not compatible.
 
Installing postmarketOS on the eMMC directly from a computer via FEL is also supported. This requires the user to [https://linux-sunxi.org/FEL#Triggering_FEL_mode enable FEL mode], the [https://wiki.pine64.org/index.php/NOOB#Flashing_to_eMMC_using_FEL_.28Allwinner_A64_Devices_Only.29 boot-tools] to mount the eMMC as mass storage are currently however not compatible.

Revision as of 18:29, 13 February 2020

Find and report PinePhone related issues here. Keep in mind, that postmarketOS is currently in alpha state. Join the chat if you have questions.

PINE64 PinePhone
A PinePhone with a case
A PinePhone with a case
Manufacturer PINE64
Name PinePhone
Codename pine64-pinephone
Released 2019
Original software Linux 5.3.0
Hardware
Chipset Allwinner A64
CPU 4x 1152 MHz Cortex-A53
GPU Mali 400
Memory 2 GB
Architecture aarch64
Non-Android based device
Features
USB Networking
Works
Flashing
Unavailable
Touchscreen
Works
Display
Works
WiFi
Works
Xwayland
Works
FDE
Broken
Mainline
Works
Battery
Works
3D Acceleration
Works
Accelerometer
Works
Audio
Works
Bluetooth
Partial
Camera
Partial
GPS
Works
Mobile data
Works
SMS
Partial
Calls
Partial
USB OTG
Broken



The PinePhone is a smartphone by PINE64. The postmarketOS vendor and device names are "pine64" and "pinephone" respectively. The back panel can be lifted off by pulling at the notch on the bottom-right corner of the phone. This exposes the battery, microSD and SIM slots, and dipswitches. It comes with a 3000mAh battery and uses the same form-factor as the Samsung J7 for replacement.

Contributors

Installation

The PinePhone will boot to the microSD card first if it's bootable, or the eMMC if not.

The recommended installation procedure is installing to a microSD card by following the Installation Guide and to pass "--sdcard=/dev/(...)" to "pmbootstrap install".

postmarketOS can be installed onto the eMMC by booting a Linux distribution on the phone first and doing the installation process via pmbootstrap on the phone directly:

Note: This requires sufficient space on the microSD, partitions created from images using dd need to be resized.
  1. Install pmbootstrap and its dependencies on the phone on any Linux distribution booted via the microSD card
  2. Follow the Installation Guide until "Installation and flashing"
  3. Run "pmbootstrap install --sdcard=/dev/mmcblk(...)"

Installing postmarketOS on the eMMC directly from a computer via FEL is also supported. This requires the user to enable FEL mode, the boot-tools to mount the eMMC as mass storage are currently however not compatible.

Serial console

The PinePhone has a serial port in the headphone connector, it's activated by the 6th contact on the dipswitch. If the switch is on then the headphone connector is in audio mode, if it's off then it's in UART mode.

The uart is 115200n8

The pinout for the serial connector on the headphone jack is:

  • Tip: RX
  • Ring: TX
  • Sleeve: GND

The serial connection is 3.3V

You can also buy the debug cable from PINE64 Store The store cable uses a 4 ring plug, as seen in the PDF, but a 3 ring plug works just as well.

PinePhone-main-board.jpg

Hardware switches

There's a 6 contact dipswitch on the back of the phone underneath the back cover. The 6 switches are for enableing/disableing hardware components. The switch has tiny numbers 1-6 beneath the contacts, moving the contact up sets that contact on.

# Off On
1 Modem disabled Modem enabled
2 Wifi/BT disabled Wifi/BT enabled
3 Microphone disabled Microphone enabled
4 Rear camera disabled Rear camera enabled
5 Front camera disabled Front camera enabled
6 Headphone UART mode Headphone audio mode

Expansion port

There is a 2x3 grid of pogo pins on the back of the PinePhone for connecting a back cover with extra hardware like an extended battery case or a keyboard case. The pinout for this connector:

Interrupt I2C I2C
3v3 usb 5v gnd

the USB5v line is meant to charge the phone and the 3v3 is to power peripherals to the phone. The I2C and interrupt lines have pull-ups on the phone side.

Components

Component Model Driver
Touchscreen Goodix TOUCHSCREEN_GOODIX
Rear camera OmniVision OV5640 VIDEO_OV5640
Camera flash SGMICRO SGM3140 LEDS_SGM3140
Front camera GalaxyCore GC2145 Nope
LCD Xingbangda XBD599 CONFIG_DRM_PANEL_XINGBANGDA_XBD599
WiFi Realtek RTL8723CS RTL8723CS
Bluetooth Realtek RTL8723CS BT_HCIUART_RTL
Modem Quectel EC25-E USB_NET_QMI_WWAN
GNSS/GPS Quectel EC25-G CONFIG_USB_SERIAL_OPTION
Magnetometer ST LIS3MDL IIO_ST_MAGN_3AXIS
Ambient light / Proximity SensorTek STK3335 STK3310
Sixaxis InvenSense MPU-6050 INV_MPU6050_I2C
Vibration motor  ? INPUT_GPIO_VIBRA
Notification LED LED0603RGB LEDS_GPIO
Volume buttons Buttons connected to the KEYADC KEYBOARD_SUN4I_LRADC
Power button X-Powers AXP803 INPUT_AXP20X_PEK
Battery fuel gauge X-Powers AXP803 BATTERY_AXP20X


Cameras

The cameras both share the csi-0 bus. Currently only the rear camera (OV5640) has mainline linux support.

It's also not clear how the camera switching would work on the software side, the current issue is that the sunxi csi driver doesn't support multiple camera endpoints.

The camera hardware pipeline is controlled with /dev/media1 and media-ctl, the result is on /dev/video1

pinephone:~# media-ctl -d /dev/media1 --set-v4l2 '"ov5640 2-003c":0[fmt:UYVY8_2X8/1280x720]'
pinephone:~# ffmpeg -s 1280x720 -f video4linux2 -i /dev/video1 -vframes 1 selfie.jpg

PinePhone-rearcam-dev.png

Camera Flash

The camera flash consist out of a SG Micro SGM3140 "500mA Buck/Boost Charge Pump LED Driver" and a EHP-C04 LED.

The driver supports Flash and Torch mode, the first being brighter but only for about 300ms, when it switches to Torch mode. Torch mode is lower brightness but can be turned on continuously.

# Turn on Flash, wait 0.3s, turn off
echo 1 > /sys/class/leds/sgm3140-flash/flash_strobe
sleep 0.3
echo 0 > /sys/class/leds/sgm3140-flash/flash_strobe
# Turn on Torch
echo 1 > /sys/class/leds/sgm3140-flash/brightness
# Turn off Torch
echo 0 > /sys/class/leds/sgm3140-flash/flash_strobe


WiFi

The wifi uses the rtl8723cs driver and is functional. There is still an issue with the driver not reloading correctly when the SoC is put into suspend mode, this can be worked around by reloading the kernel module:

pinephone:~# sudo rmmod 8723cs
pinephone:~# sudo modprobe 8723cs

Bluetooth

The bluetooth connection is handled by the wifi chipset. It is functional but there is no integration in Plasma Mobile yet. To pair a bluetooth device start the bluetoothd service and use bluetoothctl to connect.

pinephone:~# sudo service bluetoothd start
pinephone:~# bluetoothctl
# scan on
[NEW] 00:11:22:33:44:55
# pair 00:11:22:33:44:55

Modem

Receiving and sending text messages works, The calls work but there are some issues left with the audio routing. Mobile data is functional.

To bring up mobile data run the following commands:

pinephone:~# sudo apk add py3-dbus
pinephone:~# sudo pip3 install ofonoctl
pinephone:~# ofonoctl wan --connect --append-dns

Sensors

All sensors work and are accessible as Industrial I/O (iio) devices in Linux. To query the data you can cat the files in `/sys/bus/iio/` to make the kernel module query the sensors

pinephone:~# cat /sys/bus/iio/devices/iio\:device0/name
mpu6050
pinephone:~# cat /sys/bus/iio/devices/iio\:device0/in_accel_z_raw
-17594
pinephone:~# echo "Verified gravity still exists"

RGB Led

# Activate LED
echo 1 > /sys/class/leds/$COLOR/brightness
# Deactivate LED
echo 0 > /sys/class/leds/$COLOR/brightness

You may turn on and off the blue led by issuing:

# echo 1 > /sys/devices/platform/leds/leds/pinephone\:blue\:user/brightness
# echo 0 > /sys/devices/platform/leds/leds/pinephone\:blue\:user/brightness

Make sure you run these commands as root (sudo -i), sudo echo 1 > /sys/devices/platform/leds/leds/pinephone\:blue\:user/brightness, won't work.

Audio

Speakers

Sound output should work after unmuting AIF1 Slot 0 digital

Start by making sure alsa-utils are installed:

$ sudo apk add alsa-utils

You may use amixer, or alsamixer to unmute the required channels, and to control the volume. Test the sound output by issuing:

$ speaker-test -c3

See also